diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/findUsages/GrHighlightExitPointHandler.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/findUsages/GrHighlightExitPointHandler.java index 41f7511bdda8..0324b0aba2fe 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/findUsages/GrHighlightExitPointHandler.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/findUsages/GrHighlightExitPointHandler.java @@ -67,11 +67,16 @@ public class GrHighlightExitPointHandler extends HighlightUsagesHandlerBaseturn closure.returnType + } + } +} +''', 'throw new IOException()', 'return closure.returnType') + } + + void testReturnPoint2() { + doTest('''\ +private static getWorldType(stepFile) { + final worldType //unused + if (som) throw new IOException() + + for (statement in stepFile.statements) { + if (statement instanceof String && isWorldDeclaration(statement)) { + final closure = getClosureArg(statement) + return closure.returnType + } + } + 2 +} +''', 'throw new IOException()', 'return closure.returnType', '2') + } + + private void doTest(final String text, final String... usages) { + myFixture.configureByText('_.groovy', text) + HighlightUsagesHandlerBase handler = HighlightUsagesHandler.createCustomHandler(myFixture.editor, myFixture.file); + assertNotNull(handler); + List targets = handler.targets; + assertEquals(1, targets.size()); + assertEquals("return", targets.get(0).getText()); + + handler.computeUsages(targets); + List readUsages = handler.readUsages; + assertEquals(usages.length, readUsages.size()); + + final List textUsages = readUsages.collect { fileTextOfRange(it) } + assertSameElements(Arrays.asList(usages), textUsages) + } + + protected String fileTextOfRange(TextRange textRange) { + return myFixture.file.text.substring(textRange.startOffset, textRange.endOffset); + } +}