Added error message 135: cannot assign a value to list label: $label
This commit is contained in:
parent
8d13e3c47e
commit
19f861ee81
|
@ -161,7 +161,13 @@ public class AttributeChecks implements ActionSplitterListener {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if ( node.resolver.resolveToAttribute(x.getText(), node)==null ) {
|
if ( node.resolver.resolveToAttribute(x.getText(), node)==null ) {
|
||||||
errMgr.grammarError(ErrorType.UNKNOWN_SIMPLE_ATTRIBUTE,
|
ErrorType errorType = ErrorType.UNKNOWN_SIMPLE_ATTRIBUTE;
|
||||||
|
if ( node.resolver.resolvesToListLabel(x.getText(), node) ) {
|
||||||
|
// $ids for ids+=ID etc...
|
||||||
|
errorType = ErrorType.ASSIGNMENT_TO_LIST_LABEL;
|
||||||
|
}
|
||||||
|
|
||||||
|
errMgr.grammarError(errorType,
|
||||||
g.fileName, x, x.getText(), expr);
|
g.fileName, x, x.getText(), expr);
|
||||||
}
|
}
|
||||||
new AttributeChecks(g, r, alt, node, rhs).examineAction();
|
new AttributeChecks(g, r, alt, node, rhs).examineAction();
|
||||||
|
|
|
@ -115,6 +115,7 @@ public enum ErrorType {
|
||||||
LEXER_COMMAND_PLACEMENT_ISSUE(133, "->command in lexer rule <arg> must be last element of single outermost alt", ErrorSeverity.ERROR),
|
LEXER_COMMAND_PLACEMENT_ISSUE(133, "->command in lexer rule <arg> must be last element of single outermost alt", ErrorSeverity.ERROR),
|
||||||
USE_OF_BAD_WORD(134, "symbol <arg> conflicts with generated code in target language or runtime", ErrorSeverity.ERROR),
|
USE_OF_BAD_WORD(134, "symbol <arg> conflicts with generated code in target language or runtime", ErrorSeverity.ERROR),
|
||||||
INVALID_LEXER_SET_ELEMENT(134, "lexer set element <arg> is invalid (either lexer rule ref or literal with > 1 char)", ErrorSeverity.ERROR),
|
INVALID_LEXER_SET_ELEMENT(134, "lexer set element <arg> is invalid (either lexer rule ref or literal with > 1 char)", ErrorSeverity.ERROR),
|
||||||
|
ASSIGNMENT_TO_LIST_LABEL(135, "cannot assign a value to list label: $<arg>", ErrorSeverity.ERROR),
|
||||||
|
|
||||||
// Backward incompatibility errors
|
// Backward incompatibility errors
|
||||||
V3_TREE_GRAMMAR(200, "tree grammars are not supported in ANTLR 4", ErrorSeverity.ERROR),
|
V3_TREE_GRAMMAR(200, "tree grammars are not supported in ANTLR 4", ErrorSeverity.ERROR),
|
||||||
|
|
|
@ -102,6 +102,7 @@ public class TestAttributeChecks extends BaseTest {
|
||||||
"$b.d", "error(64): A.g4:7:6: cannot access rule d's parameter: $b.d\n", // can't see rule ref's arg
|
"$b.d", "error(64): A.g4:7:6: cannot access rule d's parameter: $b.d\n", // can't see rule ref's arg
|
||||||
"$d.text", "error(63): A.g4:7:4: unknown attribute reference d in $d.text\n", // valid rule, but no ref
|
"$d.text", "error(63): A.g4:7:4: unknown attribute reference d in $d.text\n", // valid rule, but no ref
|
||||||
"$lab.d", "error(64): A.g4:7:8: cannot access rule d's parameter: $lab.d\n",
|
"$lab.d", "error(64): A.g4:7:8: cannot access rule d's parameter: $lab.d\n",
|
||||||
|
"$ids = null;", "error(135): A.g4:7:4: cannot assign a value to list label: $ids\n",
|
||||||
};
|
};
|
||||||
|
|
||||||
String[] finallyChecks = {
|
String[] finallyChecks = {
|
||||||
|
|
Loading…
Reference in New Issue