StreamToLoop: VoidBlockLambdaFunctionHelper: recreate body if invalid (fixes EA-97022 - PIEAE: CompositePsiElement.getContainingFile)

This commit is contained in:
Tagir Valeev
2017-02-17 11:11:23 +07:00
parent 8efc44d6f6
commit 4230df9ede
3 changed files with 17 additions and 0 deletions

View File

@@ -667,6 +667,9 @@ abstract class FunctionHelper {
void transform(StreamToLoopReplacementContext context, String... argumentValues) {
super.transform(context, argumentValues);
if(!myBody.isValid()) {
myBody = ((PsiLambdaExpression)context.createExpression("()->"+myBody.getText())).getBody();
}
List<PsiReturnStatement> returns = getReturns(myBody);
String continueStatement = "continue;";
returns.forEach(ret -> ret.replace(context.createStatement(continueStatement)));

View File

@@ -74,4 +74,11 @@ public class Main {
}
System.out.println(count);
}
void test(List<String> list) {
for (String x : list) {
if (x.isEmpty()) continue;
System.out.println(x);
}
}
}

View File

@@ -48,4 +48,11 @@ public class Main {
System.out.println("In flatmap: "+l);
})).count());
}
void test(List<String> list) {
list.forEach(x -> {
if(x.isEmpty()) return;
System.out.println(x);
});
}
}