From 49dab59170c2f286e0057952d1925c5be746f6e6 Mon Sep 17 00:00:00 2001 From: Johannes Mey <johannes.mey@tu-dresden.de> Date: Mon, 4 Jan 2021 01:42:23 +0100 Subject: [PATCH] add error when reference in grammar is undefined --- .../org/jastadd/tooling/RelAstGrammarAnnotator.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main/java/org/jastadd/tooling/RelAstGrammarAnnotator.java b/src/main/java/org/jastadd/tooling/RelAstGrammarAnnotator.java index ce19247..91f4e0c 100644 --- a/src/main/java/org/jastadd/tooling/RelAstGrammarAnnotator.java +++ b/src/main/java/org/jastadd/tooling/RelAstGrammarAnnotator.java @@ -8,6 +8,7 @@ import com.intellij.lang.annotation.HighlightSeverity; import com.intellij.openapi.editor.DefaultLanguageHighlighterColors; import com.intellij.psi.PsiElement; import org.jastadd.tooling.psi.RelAstGrammarComponent; +import org.jastadd.tooling.psi.RelAstGrammarTypeReference; import org.jetbrains.annotations.NotNull; public class RelAstGrammarAnnotator implements Annotator { @@ -29,6 +30,15 @@ public class RelAstGrammarAnnotator implements Annotator { .create(); } } + } else if (element instanceof RelAstGrammarTypeReference) { + RelAstGrammarTypeReference reference = (RelAstGrammarTypeReference) element; + if (RelAstGrammarUtil.findTypeDecl(element.getProject(), reference.getName()).isEmpty()) { + holder.newAnnotation(HighlightSeverity.ERROR, "Undefined reference") + .range(element.getTextRange()) + .highlightType(ProblemHighlightType.ERROR) + .tooltip("Reference to unknown nonterminal type.") + .create(); + } } } -- GitLab