== Why is this an issue?

The repetition of a unary operator is usually a typo. The second operator invalidates the first one in most cases:

[source,java]
----
int i = 1;

int j = - - -i;  // Noncompliant: equivalent to "-i"
int k = ~~~i;    // Noncompliant: equivalent to "~i"
int m = + +i;    // Noncompliant: equivalent to "i"

boolean b = false;
boolean c = !!!b;   // Noncompliant
----

On the other hand, while repeating the increment and decrement operators is technically correct, it obfuscates the meaning:

[source,java]
----
int i = 1;
int j = ++ ++i;  // Noncompliant
int k = i-- --; // Noncompliant
----

Using ``+=`` or ``-=`` improves readability:

[source,java]
----
int i = 1;
i += 2;
int j = i;
int k = i;
i -=2;
----

This rule raises an issue for repetitions of ``++!++``, ``++~++``, ``++-++``, ``{plus}``, prefix increments ``{plus}{plus}`` and prefix decrements ``--``.

=== Exceptions

Overflow handling for GWT compilation using ``++~~++`` is ignored.

ifdef::env-github,rspecator-view[]

'''
== Implementation Specification
(visible only on this page)

include::../message.adoc[]

'''
== Comments And Links
(visible only on this page)

include::../comments-and-links.adoc[]

endif::env-github,rspecator-view[]
