mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Atomic conversion: support in void lambdas
This commit is contained in:
+4
-1
@@ -206,7 +206,10 @@ public class AtomicConversionRule extends TypeConversionRule {
|
||||
final PsiJavaToken signToken = ((PsiAssignmentExpression)context).getOperationSign();
|
||||
final IElementType operationSign = signToken.getTokenType();
|
||||
final String sign = signToken.getText();
|
||||
if (parent instanceof PsiExpressionStatement) {
|
||||
boolean voidContext = parent instanceof PsiExpressionStatement ||
|
||||
(parent instanceof PsiLambdaExpression && PsiType.VOID.equals(LambdaUtil.getFunctionalInterfaceReturnType(
|
||||
(PsiFunctionalExpression)parent)));
|
||||
if (voidContext) {
|
||||
if (operationSign == JavaTokenType.EQ) {
|
||||
final PsiExpression lExpression = ((PsiAssignmentExpression)context).getLExpression();
|
||||
if (lExpression instanceof PsiReferenceExpression) {
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
// "Convert to atomic" "true"
|
||||
public class InLambdas
|
||||
{
|
||||
public void test()
|
||||
{
|
||||
AtomicInteger x = new AtomicInteger(0);
|
||||
Runnable r1 = () -> x.getAndIncrement();
|
||||
Runnable r2 = () -> x.addAndGet(2);
|
||||
Runnable r3 = () -> x.updateAndGet(v -> v * 2);
|
||||
Runnable r4 = () -> x.set(5);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
// "Convert to atomic" "true"
|
||||
public class InLambdas
|
||||
{
|
||||
public void test()
|
||||
{
|
||||
int <caret>x = 0;
|
||||
Runnable r1 = () -> x++;
|
||||
Runnable r2 = () -> x+=2;
|
||||
Runnable r3 = () -> x*=2;
|
||||
Runnable r4 = () -> x = 5;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user