diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/controlFlow/impl/ControlFlowBuilder.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/controlFlow/impl/ControlFlowBuilder.java index 371b7785fc82..e5b3c25e257b 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/controlFlow/impl/ControlFlowBuilder.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/controlFlow/impl/ControlFlowBuilder.java @@ -1114,6 +1114,15 @@ public class ControlFlowBuilder extends GroovyRecursiveElementVisitor { public void visitTypeDefinition(final GrTypeDefinition typeDefinition) { if (!(typeDefinition instanceof GrAnonymousClassDefinition)) return; + final Set vars = collectUsedVariableWithoutInitialization(typeDefinition); + + for (String var : vars) { + addNodeAndCheckPending(new ReadWriteVariableInstruction(var, typeDefinition, READ)); + } + addNodeAndCheckPending(new InstructionImpl(typeDefinition)); + } + + private static Set collectUsedVariableWithoutInitialization(GrTypeDefinition typeDefinition) { final Set vars = new HashSet(); typeDefinition.acceptChildren(new GroovyRecursiveElementVisitor() { private void collectVars(Instruction[] flow) { @@ -1146,11 +1155,7 @@ public class ControlFlowBuilder extends GroovyRecursiveElementVisitor { collectVars(block.getControlFlow()); } }); - - for (String var : vars) { - addNodeAndCheckPending(new ReadWriteVariableInstruction(var, typeDefinition, READ)); - } - addNodeAndCheckPending(new InstructionImpl(typeDefinition)); + return vars; } public void visitVariable(GrVariable variable) {