mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
extract method: don't mark final if used in anonymous but effectively final in java 8 (IDEA-165642)
This commit is contained in:
+1
-1
@@ -1169,7 +1169,7 @@ public class ExtractMethodProcessor implements MatchProvider {
|
||||
}
|
||||
});
|
||||
}
|
||||
else {
|
||||
else if (!PsiUtil.isLanguageLevel8OrHigher(method)){
|
||||
method.accept(new JavaRecursiveElementVisitor() {
|
||||
@Override public void visitReferenceExpression(PsiReferenceExpression expression) {
|
||||
final PsiElement resolved = expression.resolve();
|
||||
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
class Box {
|
||||
private void test(String str1, String str2) {
|
||||
Data data = <selection>new Data() {
|
||||
@Override
|
||||
public String getA() {
|
||||
return str1;
|
||||
}
|
||||
@Override
|
||||
public String getB() {
|
||||
return str2;
|
||||
}
|
||||
}</selection>;
|
||||
System.out.println(data);
|
||||
}
|
||||
|
||||
static interface Data {
|
||||
String getA();
|
||||
String getB();
|
||||
}
|
||||
}
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
class Box {
|
||||
private void test(String str1, String str2) {
|
||||
Data data = newMethod(str1, str2);
|
||||
System.out.println(data);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private Data newMethod(String str1, String str2) {
|
||||
return new Data() {
|
||||
@Override
|
||||
public String getA() {
|
||||
return str1;
|
||||
}
|
||||
@Override
|
||||
public String getB() {
|
||||
return str2;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
static interface Data {
|
||||
String getA();
|
||||
String getB();
|
||||
}
|
||||
}
|
||||
@@ -904,6 +904,10 @@ public class ExtractMethodTest extends LightCodeInsightTestCase {
|
||||
checkResultByFile(BASE_PATH + getTestName(false) + "_after.java");
|
||||
}
|
||||
|
||||
public void testDontMakeParametersFinalDueToUsagesInsideAnonymous() throws Exception {
|
||||
doTest();
|
||||
}
|
||||
|
||||
private void doTestDisabledParam() throws PrepareFailedException {
|
||||
final CodeStyleSettings settings = CodeStyleSettingsManager.getSettings(getProject());
|
||||
settings.ELSE_ON_NEW_LINE = true;
|
||||
|
||||
Reference in New Issue
Block a user