rascal
rascal copied to clipboard
In overlapping names, order matters for the typechecker
This fails to typecheck:
import String; // contains function left
data X = nested(list[Y] ys = [Y::left()]);
data Y
= left()
| right()
;
with error (on Y::left):
Cannot call
Y::leftwith 0 argument(s), given definitionsstr(str,int) or str(str,int,str)
while this succeeds:
import String; // contains function left
data Y
= left()
| right()
;
data X = nested(list[Y] ys = [Y::left()]);