Describe the bug
Rascal Document Symbols crashes when it is provided with an ambiguous parse tree (e.g., through usethesource/rascal#2577).
To Reproduce
Type testint foo() { } in any Rascal module.
Screenshots
Stack traces
org.rascalmpl.interpreter.staticErrors.UndeclaredField: Undeclared field: name for Tree
Advice: |https://www.rascal-mpl.org/docs/Rascal/Errors/CompileTimeErrors/UndeclaredField|
at DocumentSymbols.?(/C:/Users/Rodin/.vscode/extensions/usethesource.rascalmpl-0.13.0/assets/jars/rascal-lsp.jar!/lsp/lang/rascal/lsp/DocumentSymbols.rsc:83)
at org.rascalmpl.interpreter.result.ConstructorResult.fieldAccess(ConstructorResult.java:120)
at org.rascalmpl.interpreter.result.ConcreteSyntaxResult.fieldAccess(ConcreteSyntaxResult.java:96)
at org.rascalmpl.semantics.dynamic.Expression$FieldAccess.interpret(Expression.java:873)
at org.rascalmpl.semantics.dynamic.Statement$Expression.interpret(Statement.java:390)
at org.rascalmpl.interpreter.StringTemplateConverter$Visitor$IndentingAppend.interpret(StringTemplateConverter.java:108)
at org.rascalmpl.semantics.dynamic.Statement$NonEmptyBlock.interpret(Statement.java:820)
at org.rascalmpl.semantics.dynamic.Statement$For.interpret(Statement.java:500)
at org.rascalmpl.semantics.dynamic.Literal$String.interpret(Literal.java:237)
at org.rascalmpl.semantics.dynamic.Expression$Literal.interpret(Expression.java:1601)
at org.rascalmpl.semantics.dynamic.Expression$CallOrTree.interpret(Expression.java:504)
at org.rascalmpl.semantics.dynamic.Expression$List.interpret(Expression.java:1526)
at org.rascalmpl.semantics.dynamic.Statement$Expression.interpret(Statement.java:390)
at org.rascalmpl.semantics.dynamic.Statement$Assignment.interpret(Statement.java:223)
at org.rascalmpl.semantics.dynamic.Statement$NonEmptyBlock.interpret(Statement.java:820)
at org.rascalmpl.semantics.dynamic.Statement$IfThen.interpret(Statement.java:643)
at org.rascalmpl.interpreter.utils.Cases.matchAndEval(Cases.java:443)
at org.rascalmpl.interpreter.utils.Cases$DefaultBlock.matchAndEval(Cases.java:271)
at org.rascalmpl.interpreter.TraversalEvaluator.applyCases(TraversalEvaluator.java:664)
at org.rascalmpl.interpreter.TraversalEvaluator.traverseTop(TraversalEvaluator.java:688)
at org.rascalmpl.interpreter.TraversalEvaluator.traverseOnce(TraversalEvaluator.java:141)
at org.rascalmpl.interpreter.TraversalEvaluator.traverseListOnce(TraversalEvaluator.java:529)
at org.rascalmpl.interpreter.TraversalEvaluator.traverseOnce(TraversalEvaluator.java:168)
at org.rascalmpl.interpreter.TraversalEvaluator.traverseADTOnce(TraversalEvaluator.java:366)
at org.rascalmpl.interpreter.TraversalEvaluator.traverseOnce(TraversalEvaluator.java:164)
at org.rascalmpl.interpreter.TraversalEvaluator.traverseListOnce(TraversalEvaluator.java:529)
at org.rascalmpl.interpreter.TraversalEvaluator.traverseOnce(TraversalEvaluator.java:168)
at org.rascalmpl.interpreter.TraversalEvaluator.traverseADTOnce(TraversalEvaluator.java:366)
at org.rascalmpl.interpreter.TraversalEvaluator.traverseOnce(TraversalEvaluator.java:164)
at org.rascalmpl.interpreter.TraversalEvaluator.traverseListOnce(TraversalEvaluator.java:529)
at org.rascalmpl.interpreter.TraversalEvaluator.traverseOnce(TraversalEvaluator.java:168)
at org.rascalmpl.interpreter.TraversalEvaluator.traverseADTOnce(TraversalEvaluator.java:366)
at org.rascalmpl.interpreter.TraversalEvaluator.traverseOnce(TraversalEvaluator.java:164)
at org.rascalmpl.interpreter.TraversalEvaluator.traverseListOnce(TraversalEvaluator.java:529)
at org.rascalmpl.interpreter.TraversalEvaluator.traverseOnce(TraversalEvaluator.java:168)
at org.rascalmpl.interpreter.TraversalEvaluator.traverseADTOnce(TraversalEvaluator.java:366)
at org.rascalmpl.interpreter.TraversalEvaluator.traverseOnce(TraversalEvaluator.java:164)
at org.rascalmpl.interpreter.TraversalEvaluator.traverseListOnce(TraversalEvaluator.java:529)
at org.rascalmpl.interpreter.TraversalEvaluator.traverseOnce(TraversalEvaluator.java:168)
at org.rascalmpl.interpreter.TraversalEvaluator.traverseADTOnce(TraversalEvaluator.java:366)
at org.rascalmpl.interpreter.TraversalEvaluator.traverseOnce(TraversalEvaluator.java:164)
at org.rascalmpl.interpreter.TraversalEvaluator.traverse(TraversalEvaluator.java:123)
at org.rascalmpl.semantics.dynamic.Visit$GivenStrategy.interpret(Visit.java:146)
at org.rascalmpl.semantics.dynamic.Statement$Visit.interpret(Statement.java:1164)
at org.rascalmpl.interpreter.result.RascalFunction.runBody(RascalFunction.java:387)
at org.rascalmpl.interpreter.result.RascalFunction.call(RascalFunction.java:328)
at org.rascalmpl.interpreter.result.AbstractFunction.call(AbstractFunction.java:198)
at org.rascalmpl.interpreter.Evaluator.call(Evaluator.java:707)
at org.rascalmpl.interpreter.Evaluator.call(Evaluator.java:690)
at org.rascalmpl.interpreter.Evaluator.call(Evaluator.java:532)
at org.rascalmpl.vscode.lsp.rascal.RascalLanguageServices.lambda$getDocumentSymbols$8(RascalLanguageServices.java:223)
at org.rascalmpl.vscode.lsp.util.EvaluatorUtil.lambda$runEvaluator$0(EvaluatorUtil.java:123)
at java.base/java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:642)
at java.base/java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:478)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)
Desktop (please complete the following information):
Additional context
It could be that more contributions do not handle ambiguous trees properly
Describe the bug
Rascal Document Symbols crashes when it is provided with an ambiguous parse tree (e.g., through usethesource/rascal#2577).
To Reproduce
Type
testint foo() { }in any Rascal module.Screenshots
Stack traces
Desktop (please complete the following information):
Additional context
It could be that more contributions do not handle ambiguous trees properly