diff --git a/src/main/java/org/antlr/intellij/plugin/psi/LexerRuleRefNode.java b/src/main/java/org/antlr/intellij/plugin/psi/LexerRuleRefNode.java index 3c8145d1..1ab42b10 100644 --- a/src/main/java/org/antlr/intellij/plugin/psi/LexerRuleRefNode.java +++ b/src/main/java/org/antlr/intellij/plugin/psi/LexerRuleRefNode.java @@ -1,5 +1,6 @@ package org.antlr.intellij.plugin.psi; +import com.intellij.psi.PsiElement; import com.intellij.psi.PsiReference; import com.intellij.psi.tree.IElementType; @@ -10,6 +11,16 @@ public LexerRuleRefNode(IElementType type, CharSequence text) { @Override public PsiReference getReference() { + if (isDeclaration()) { + return null; + } return new GrammarElementRef(this, getText()); } + + private boolean isDeclaration() { + PsiElement parent = getParent(); + return parent instanceof LexerRuleSpecNode + || parent instanceof TokenSpecNode + || parent instanceof ChannelSpecNode; + } } diff --git a/src/main/java/org/antlr/intellij/plugin/psi/ParserRuleRefNode.java b/src/main/java/org/antlr/intellij/plugin/psi/ParserRuleRefNode.java index a01c0bda..9dfd7e74 100644 --- a/src/main/java/org/antlr/intellij/plugin/psi/ParserRuleRefNode.java +++ b/src/main/java/org/antlr/intellij/plugin/psi/ParserRuleRefNode.java @@ -10,6 +10,13 @@ public ParserRuleRefNode(IElementType type, CharSequence text) { @Override public PsiReference getReference() { + if (isDeclaration()) { + return null; + } return new GrammarElementRef(this, getText()); } + + private boolean isDeclaration() { + return getParent() instanceof ParserRuleSpecNode; + } } diff --git a/src/test/java/org/antlr/intellij/plugin/psi/GrammarElementRefTest.java b/src/test/java/org/antlr/intellij/plugin/psi/GrammarElementRefTest.java index c106fc01..141546c6 100644 --- a/src/test/java/org/antlr/intellij/plugin/psi/GrammarElementRefTest.java +++ b/src/test/java/org/antlr/intellij/plugin/psi/GrammarElementRefTest.java @@ -16,24 +16,24 @@ public class GrammarElementRefTest extends LightPlatformCodeInsightFixtureTestCase { public void testFindUsagesOfLexerRule() { Collection ruleUsages = myFixture.testFindUsages("SimpleGrammar.g4"); - assertEquals(4, ruleUsages.size()); + assertEquals(3, ruleUsages.size()); } public void testFindUsagesOfParserRule() { Collection ruleUsages = myFixture.testFindUsages("SimpleGrammar2.g4"); - assertEquals(2, ruleUsages.size()); + assertEquals(1, ruleUsages.size()); } public void testHighlightUsagesOfLexerRule() { RangeHighlighter[] usages = myFixture.testHighlightUsages("SimpleGrammar.g4"); - assertEquals(5, usages.length); + assertEquals(4, usages.length); } public void testHighlightUsagesOfParserRule() { RangeHighlighter[] usages = myFixture.testHighlightUsages("SimpleGrammar2.g4"); - assertEquals(3, usages.length); + assertEquals(2, usages.length); } public void testReferenceToLexerRule() {