Removed FileObject arguments from the ANTLR Parser listeners
diff --git a/java/languages.antlr/src/org/netbeans/modules/languages/antlr/AntlrParserResult.java b/java/languages.antlr/src/org/netbeans/modules/languages/antlr/AntlrParserResult.java
index 90d0cda..f903eeb 100644
--- a/java/languages.antlr/src/org/netbeans/modules/languages/antlr/AntlrParserResult.java
+++ b/java/languages.antlr/src/org/netbeans/modules/languages/antlr/AntlrParserResult.java
@@ -59,17 +59,17 @@
if (! finished) {
FileObject fo = getSnapshot().getSource().getFileObject();
T parser = createParser(getSnapshot());
- parser.addErrorListener(createErrorListener(fo));
+ parser.addErrorListener(createErrorListener());
parser.addParseListener(createFoldListener());
- parser.addParseListener(createReferenceListener(fo));
- parser.addParseListener(createImportListener(fo));
- parser.addParseListener(createStructureListener(fo));
+ parser.addParseListener(createReferenceListener());
+ parser.addParseListener(createImportListener());
+ parser.addParseListener(createStructureListener());
parser.addParseListener(createOccurancesListener());
evaluateParser(parser);
// Start a second parsing phase for checking;
parser = createParser(getSnapshot());
- parser.addParseListener(createCheckReferences(fo));
+ parser.addParseListener(createCheckReferences());
evaluateParser(parser);
finished = true;
}
@@ -104,18 +104,22 @@
}
}
+ protected final FileObject getFileObject() {
+ return getSnapshot().getSource().getFileObject();
+ }
+
protected abstract T createParser(Snapshot snapshot);
protected abstract void evaluateParser(T parser);
- protected abstract ParseTreeListener createReferenceListener(FileObject source);
- protected abstract ParseTreeListener createImportListener(FileObject source);
+ protected abstract ParseTreeListener createReferenceListener();
+ protected abstract ParseTreeListener createImportListener();
protected abstract ParseTreeListener createFoldListener();
- protected abstract ParseTreeListener createStructureListener(FileObject source);
+ protected abstract ParseTreeListener createStructureListener();
protected abstract ParseTreeListener createOccurancesListener();
- protected abstract ParseTreeListener createCheckReferences(FileObject source);
+ protected abstract ParseTreeListener createCheckReferences();
- protected ANTLRErrorListener createErrorListener(FileObject source) {
+ protected ANTLRErrorListener createErrorListener() {
return new BaseErrorListener() {
@Override
public void syntaxError(Recognizer<?, ?> recognizer, Object offendingSymbol, int line, int charPositionInLine, String msg, RecognitionException e) {
@@ -124,7 +128,7 @@
Token offendingToken = (Token) offendingSymbol;
errorPosition = offendingToken.getStartIndex();
}
- errors.add(new DefaultError(null, msg, null, source, errorPosition, errorPosition, Severity.ERROR));
+ errors.add(new DefaultError(null, msg, null, getFileObject(), errorPosition, errorPosition, Severity.ERROR));
}
};
diff --git a/java/languages.antlr/src/org/netbeans/modules/languages/antlr/v3/Antlr3ParserResult.java b/java/languages.antlr/src/org/netbeans/modules/languages/antlr/v3/Antlr3ParserResult.java
index fbe33a7..cdd29cd 100644
--- a/java/languages.antlr/src/org/netbeans/modules/languages/antlr/v3/Antlr3ParserResult.java
+++ b/java/languages.antlr/src/org/netbeans/modules/languages/antlr/v3/Antlr3ParserResult.java
@@ -28,12 +28,9 @@
import org.antlr.v4.runtime.Token;
import org.antlr.v4.runtime.tree.ParseTreeListener;
import org.netbeans.modules.csl.api.OffsetRange;
-import org.netbeans.modules.csl.api.Severity;
-import org.netbeans.modules.csl.spi.DefaultError;
import org.netbeans.modules.languages.antlr.AntlrParserResult;
import org.netbeans.modules.languages.antlr.AntlrStructureItem;
import org.netbeans.modules.parsing.api.Snapshot;
-import org.openide.filesystems.FileObject;
/**
*
@@ -59,7 +56,7 @@
}
@Override
- protected ParseTreeListener createReferenceListener(FileObject source) {
+ protected ParseTreeListener createReferenceListener() {
return new ANTLRv3ParserBaseListener() {
@Override
public void exitRule_(ANTLRv3Parser.Rule_Context ctx) {
@@ -69,7 +66,7 @@
if (references.containsKey(name)) {
references.get(name).defOffset = range;
} else {
- Reference ref = new Reference(name, source, range);
+ Reference ref = new Reference(name, getFileObject(), range);
references.put(ref.name, ref);
}
}
@@ -77,7 +74,7 @@
}
@Override
- protected ParseTreeListener createCheckReferences(FileObject source) {
+ protected ParseTreeListener createCheckReferences() {
return new ANTLRv3OccuranceListener((token) -> {
String name = token.getText();
if (!"EOF".equals(name) && (!references.containsKey(name) || references.get(name).defOffset == null)) {
@@ -89,7 +86,7 @@
}
@Override
- protected ParseTreeListener createImportListener(FileObject source) {
+ protected ParseTreeListener createImportListener() {
return new ANTLRv3ParserBaseListener();
}
@@ -135,12 +132,12 @@
}
@Override
- protected ParseTreeListener createStructureListener(FileObject source) {
+ protected ParseTreeListener createStructureListener() {
return new ANTLRv3ParserBaseListener() {
@Override
public void exitRule_(ANTLRv3Parser.Rule_Context ctx) {
- AntlrStructureItem.RuleStructureItem rule = new AntlrStructureItem.RuleStructureItem(ctx.id_().getText(), source, ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex() + 1);
+ AntlrStructureItem.RuleStructureItem rule = new AntlrStructureItem.RuleStructureItem(ctx.id_().getText(), getFileObject(), ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex() + 1);
structure.add(rule);
}
diff --git a/java/languages.antlr/src/org/netbeans/modules/languages/antlr/v4/Antlr4ParserResult.java b/java/languages.antlr/src/org/netbeans/modules/languages/antlr/v4/Antlr4ParserResult.java
index d8b2981..eba55a4 100644
--- a/java/languages.antlr/src/org/netbeans/modules/languages/antlr/v4/Antlr4ParserResult.java
+++ b/java/languages.antlr/src/org/netbeans/modules/languages/antlr/v4/Antlr4ParserResult.java
@@ -67,7 +67,7 @@
}
@Override
- protected ParseTreeListener createReferenceListener(FileObject source) {
+ protected ParseTreeListener createReferenceListener() {
return new ANTLRv4ParserBaseListener() {
@Override
public void exitParserRuleSpec(ANTLRv4Parser.ParserRuleSpecContext ctx) {
@@ -97,7 +97,7 @@
if(references.containsKey(name)) {
references.get(name).defOffset = range;
} else {
- Reference ref = new Reference(name, source, range);
+ Reference ref = new Reference(name, getFileObject(), range);
references.put(ref.name, ref);
}
}
@@ -107,10 +107,10 @@
@Override
- protected ParseTreeListener createCheckReferences(FileObject source) {
+ protected ParseTreeListener createCheckReferences() {
final Map<String, Reference> allRefs = new HashMap<>(references);
for (String im : imports) {
- FileObject fo = source.getParent().getFileObject(im + ".g4");
+ FileObject fo = getFileObject().getParent().getFileObject(im + ".g4");
if (fo != null) {
AntlrParserResult pr = AntlrParser.getParserResult(fo);
allRefs.putAll(pr.references);
@@ -119,13 +119,13 @@
return new ANTLRv4OccuranceListener((token) -> {
String name = token.getText();
if(!"EOF".equals(name) && (!allRefs.containsKey(name) || (allRefs.get(name).defOffset == null))) {
- errors.add(new DefaultError(null, "Unknown Reference: " + name, null, source, token.getStartIndex(), token.getStopIndex() + 1, Severity.ERROR));
+ errors.add(new DefaultError(null, "Unknown Reference: " + name, null, getFileObject(), token.getStartIndex(), token.getStopIndex() + 1, Severity.ERROR));
}
});
}
@Override
- protected ParseTreeListener createImportListener(FileObject source) {
+ protected ParseTreeListener createImportListener() {
return new ANTLRv4ParserBaseListener() {
private void addImport(String importedGrammar) {
imports.add(importedGrammar);
@@ -205,7 +205,7 @@
}
@Override
- protected ParseTreeListener createStructureListener(FileObject source) {
+ protected ParseTreeListener createStructureListener() {
return new ANTLRv4ParserBaseListener() {
final List<AntlrStructureItem.RuleStructureItem> lexerStructure = new ArrayList<>();
@@ -213,21 +213,21 @@
public void exitLexerRuleSpec(ANTLRv4Parser.LexerRuleSpecContext ctx) {
if (ctx.FRAGMENT() == null) {
// Do not represent fragments in the structure
- AntlrStructureItem.RuleStructureItem rule = new AntlrStructureItem.RuleStructureItem(ctx.TOKEN_REF().getText(), source, ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex() + 1);
+ AntlrStructureItem.RuleStructureItem rule = new AntlrStructureItem.RuleStructureItem(ctx.TOKEN_REF().getText(), getFileObject(), ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex() + 1);
lexerStructure.add(rule);
}
}
@Override
public void exitParserRuleSpec(ANTLRv4Parser.ParserRuleSpecContext ctx) {
- AntlrStructureItem.RuleStructureItem rule = new AntlrStructureItem.RuleStructureItem(ctx.RULE_REF().getText(), source, ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex() + 1);
+ AntlrStructureItem.RuleStructureItem rule = new AntlrStructureItem.RuleStructureItem(ctx.RULE_REF().getText(), getFileObject(), ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex() + 1);
structure.add(rule);
}
@Override
public void exitRules(ANTLRv4Parser.RulesContext ctx) {
if (!lexerStructure.isEmpty()) {
- AntlrStructureItem.ModeStructureItem mode = new AntlrStructureItem.ModeStructureItem(source, ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex() + 1);
+ AntlrStructureItem.ModeStructureItem mode = new AntlrStructureItem.ModeStructureItem(getFileObject(), ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex() + 1);
mode.rules.addAll(lexerStructure);
structure.add(mode);
lexerStructure.clear();
@@ -237,7 +237,7 @@
@Override
public void exitModeSpec(ANTLRv4Parser.ModeSpecContext ctx) {
- AntlrStructureItem.ModeStructureItem mode = new AntlrStructureItem.ModeStructureItem(ctx.identifier().getText(), source, ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex() + 1);
+ AntlrStructureItem.ModeStructureItem mode = new AntlrStructureItem.ModeStructureItem(ctx.identifier().getText(), getFileObject(), ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex() + 1);
mode.rules.addAll(lexerStructure);
structure.add(mode);
lexerStructure.clear();