From 2fdb4f8adf4f6c68b3a7b78e67002540a59ed7bc Mon Sep 17 00:00:00 2001 From: Ken Domino Date: Tue, 5 Sep 2023 09:11:31 -0400 Subject: [PATCH] Fix collision issue as "Refs" contains both applied and defining occurrences. --- src/LspServer/LanguageServerTarget.cs | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/src/LspServer/LanguageServerTarget.cs b/src/LspServer/LanguageServerTarget.cs index 0819717db..d950cee7f 100644 --- a/src/LspServer/LanguageServerTarget.cs +++ b/src/LspServer/LanguageServerTarget.cs @@ -442,6 +442,9 @@ public void TextDocumentDidOpenName(JToken arg) using (ParseTreeEditing.AntlrDOM.AntlrDynamicContext dynamicContext = ate.Try(prs.Nodes, prs.Parser)) { + prs.ParserDefs.Clear(); + prs.LexerDefs.Clear(); + prs.Refs.Clear(); { var expr = "//parserRuleSpec/RULE_REF"; var nodes = engine.parseExpression(expr, @@ -1667,10 +1670,24 @@ public SemanticTokens SemanticTokens(JToken arg) List symbols = new List(); List d = new List(); SortedList sorted_symbols = new SortedList(); - foreach (var n in prs.ParserDefs) sorted_symbols.Add(prs.Parser.TokenStream.Get(n.SourceInterval.a).StartIndex, n); - foreach (var n in prs.LexerDefs) sorted_symbols.Add(prs.Parser.TokenStream.Get(n.SourceInterval.a).StartIndex, n); - foreach (var n in prs.Refs) sorted_symbols.Add(prs.Parser.TokenStream.Get(n.SourceInterval.a).StartIndex, n); - + foreach (var n in prs.Refs) + { + try + { + var a = n.SourceInterval.a; + var t = prs.Parser.TokenStream.Get(n.SourceInterval.a); + var si = t.StartIndex; + Logger.Log.WriteLine("loop " + n.ToString()); + Logger.Log.WriteLine("a " + a); + Logger.Log.WriteLine("t " + t); + Logger.Log.WriteLine("si + " + si); + sorted_symbols.Add(si, n); + } + catch (Exception e) + { + Logger.Log.WriteLine("catch e " + e); + } + } (int,int) start = (1, 0); foreach (var pair in sorted_symbols)