diff --git a/java/typeMigration/src/com/intellij/refactoring/typeMigration/intentions/ConvertFieldToAtomicIntention.java b/java/typeMigration/src/com/intellij/refactoring/typeMigration/intentions/ConvertFieldToAtomicIntention.java index e640d861db36..24200700c39f 100644 --- a/java/typeMigration/src/com/intellij/refactoring/typeMigration/intentions/ConvertFieldToAtomicIntention.java +++ b/java/typeMigration/src/com/intellij/refactoring/typeMigration/intentions/ConvertFieldToAtomicIntention.java @@ -148,7 +148,6 @@ public class ConvertFieldToAtomicIntention extends PsiElementBaseIntentionAction else if (var instanceof PsiField) { ((PsiField)var).setInitializer(newInitializer); } - JavaCodeStyleManager.getInstance(var.getProject()).shortenClassReferences(var.getInitializer()); } modifierList.setModifierProperty(PsiModifier.FINAL, true); @@ -219,7 +218,7 @@ public class ConvertFieldToAtomicIntention extends PsiElementBaseIntentionAction @Override public boolean isAvailable(@NotNull Project project, Editor editor, @NotNull PsiElement element) { - return myContext.isValid(); + return getVariable(element) != null; } @Override diff --git a/java/typeMigration/testData/intentions/atomic/afterInLambdasAtWrite.java b/java/typeMigration/testData/intentions/atomic/afterInLambdasAtWrite.java new file mode 100644 index 000000000000..36775351cf01 --- /dev/null +++ b/java/typeMigration/testData/intentions/atomic/afterInLambdasAtWrite.java @@ -0,0 +1,21 @@ +// "Convert to atomic" "true" + +import java.util.concurrent.atomic.AtomicInteger; +import java.util.function.*; + +public class InLambdas +{ + public void test() + { + AtomicInteger x = new AtomicInteger(); + // Also active at write point if it causes a compilation error + Runnable r1 = () -> x.getAndIncrement(); + Runnable r2 = () -> x.addAndGet(2); + Runnable r3 = () -> x.updateAndGet(v -> v * 2); + Runnable r4 = () -> x.set(5); + System.out.println(x.updateAndGet(v -> v / 3)); + IntSupplier s = () -> { + return x.updateAndGet(v -> v * 2); + }; + } +} \ No newline at end of file diff --git a/java/typeMigration/testData/intentions/atomic/beforeInLambdasAtWrite.java b/java/typeMigration/testData/intentions/atomic/beforeInLambdasAtWrite.java new file mode 100644 index 000000000000..0a5ddd64b3c2 --- /dev/null +++ b/java/typeMigration/testData/intentions/atomic/beforeInLambdasAtWrite.java @@ -0,0 +1,20 @@ +// "Convert to atomic" "true" + +import java.util.function.*; + +public class InLambdas +{ + public void test() + { + int x = 0; + // Also active at write point if it causes a compilation error + Runnable r1 = () -> x++; + Runnable r2 = () -> x+=2; + Runnable r3 = () -> x*=2; + Runnable r4 = () -> x = 5; + System.out.println(x /= 3); + IntSupplier s = () -> { + return x *= 2; + }; + } +} \ No newline at end of file