You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Last (problem), the following function is the same as f2, except the when clause is more liberal (but equally superfluous):
rascal>tuple[str] f3(tuple[str] tup) = <tup<0>> when _ := tup;
Unexpected failure during parsing of current command:
Ambiguous code (internal error), tuple[str] f3(tuple[str] tup) = <tup<0>> when _ := tup;
Expected behavior
No ambiguity error
Stack traces
org.rascalmpl.interpreter.asserts.Ambiguous: Ambiguous code (internal error), tuple[str] f3(tuple[str] tup) = <tup<0>> when _ := tup;
at org.rascalmpl.parser.uptr.UPTRNodeFactory.buildAmbiguityNode(UPTRNodeFactory.java:76)
at org.rascalmpl.parser.uptr.UPTRNodeFactory.createAmbiguityNode(UPTRNodeFactory.java:85)
at org.rascalmpl.parser.uptr.UPTRNodeFactory.createAmbiguityNode(UPTRNodeFactory.java:23)
at org.rascalmpl.parser.gtd.result.out.SortContainerNodeFlattener.convertToUPTR(SortContainerNodeFlattener.java:183)
at org.rascalmpl.parser.gtd.result.out.DefaultNodeFlattener.convert(DefaultNodeFlattener.java:63)
at org.rascalmpl.parser.gtd.result.out.SortContainerNodeFlattener.buildAlternative(SortContainerNodeFlattener.java:90)
at org.rascalmpl.parser.gtd.result.out.SortContainerNodeFlattener.gatherProduction(SortContainerNodeFlattener.java:65)
at org.rascalmpl.parser.gtd.result.out.SortContainerNodeFlattener.gatherAlternatives(SortContainerNodeFlattener.java:53)
at org.rascalmpl.parser.gtd.result.out.SortContainerNodeFlattener.convertToUPTR(SortContainerNodeFlattener.java:166)
at org.rascalmpl.parser.gtd.result.out.DefaultNodeFlattener.convert(DefaultNodeFlattener.java:63)
at org.rascalmpl.parser.gtd.result.out.SortContainerNodeFlattener.buildAlternative(SortContainerNodeFlattener.java:90)
at org.rascalmpl.parser.gtd.result.out.SortContainerNodeFlattener.gatherProduction(SortContainerNodeFlattener.java:65)
at org.rascalmpl.parser.gtd.result.out.SortContainerNodeFlattener.gatherAlternatives(SortContainerNodeFlattener.java:53)
at org.rascalmpl.parser.gtd.result.out.SortContainerNodeFlattener.convertToUPTR(SortContainerNodeFlattener.java:166)
at org.rascalmpl.parser.gtd.result.out.DefaultNodeFlattener.convert(DefaultNodeFlattener.java:63)
at org.rascalmpl.parser.gtd.result.out.SortContainerNodeFlattener.buildAlternative(SortContainerNodeFlattener.java:90)
at org.rascalmpl.parser.gtd.result.out.SortContainerNodeFlattener.gatherProduction(SortContainerNodeFlattener.java:65)
at org.rascalmpl.parser.gtd.result.out.SortContainerNodeFlattener.gatherProduction(SortContainerNodeFlattener.java:71)
at org.rascalmpl.parser.gtd.result.out.SortContainerNodeFlattener.gatherProduction(SortContainerNodeFlattener.java:71)
at org.rascalmpl.parser.gtd.result.out.SortContainerNodeFlattener.gatherAlternatives(SortContainerNodeFlattener.java:53)
at org.rascalmpl.parser.gtd.result.out.SortContainerNodeFlattener.convertToUPTR(SortContainerNodeFlattener.java:166)
at org.rascalmpl.parser.gtd.result.out.DefaultNodeFlattener.convert(DefaultNodeFlattener.java:63)
at org.rascalmpl.parser.gtd.result.out.DefaultNodeFlattener.convert(DefaultNodeFlattener.java:79)
at org.rascalmpl.parser.gtd.SGTDBF.buildResult(SGTDBF.java:1306)
at org.rascalmpl.parser.gtd.SGTDBF.parse(SGTDBF.java:1245)
at org.rascalmpl.parser.gtd.SGTDBF.parse(SGTDBF.java:1249)
at org.rascalmpl.parser.gtd.SGTDBF.parse(SGTDBF.java:1261)
at org.rascalmpl.interpreter.Evaluator.parseCommand(Evaluator.java:1052)
at org.rascalmpl.interpreter.Evaluator.parseCommand(Evaluator.java:1042)
at org.rascalmpl.repl.RascalInterpreterREPL.isStatementComplete(RascalInterpreterREPL.java:176)
at org.rascalmpl.repl.BaseRascalREPL.handleInput(BaseRascalREPL.java:105)
at org.rascalmpl.vscode.lsp.terminal.LSPTerminalREPL$1.handleInput(LSPTerminalREPL.java:233)
at org.rascalmpl.repl.BaseREPL.handleInput(BaseREPL.java:179)
at org.rascalmpl.repl.BaseREPL.run(BaseREPL.java:346)
at org.rascalmpl.vscode.lsp.terminal.LSPTerminalREPL.main(LSPTerminalREPL.java:320)
The text was updated successfully, but these errors were encountered:
sungshik
changed the title
Ambiguity when combining tuple projection with when clause
Ambiguity when combining tuple projection and when clause
Jan 18, 2025
Describe the bug
An ambiguity may arise when tuple projection is combined with (pattern matching in) a
when
clause.To Reproduce
First (no problem yet), the following function consumes a unary tuple and produces the same unary tuple in a contrived way:
Next (no problem still), the following function is the same as
f1
, except it has a superfluouswhen
clause:Last (problem), the following function is the same as
f2
, except thewhen
clause is more liberal (but equally superfluous):Expected behavior
No ambiguity error
Stack traces
The text was updated successfully, but these errors were encountered: