Skip to content

Rascal Document Symbols crashes on an ambiguous parse #930

@rodinaarssen

Description

@rodinaarssen

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

Image

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):

  • VS Code 0.13.0

Additional context
It could be that more contributions do not handle ambiguous trees properly

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions