summaryrefslogtreecommitdiff
path: root/vala/valaparser.vala
diff options
context:
space:
mode:
authorRico Tzschichholz <ricotz@ubuntu.com>2021-04-15 16:49:14 +0200
committerRico Tzschichholz <ricotz@ubuntu.com>2021-04-15 16:49:14 +0200
commitcbc11c2674209c3c51eb5c9851863dacea13366b (patch)
tree2243d31222f3654f4bf8eb46139cea35ceb71b73 /vala/valaparser.vala
parenta7012f089b07baa8b44554cb36032dbda173e321 (diff)
downloadvala-cbc11c2674209c3c51eb5c9851863dacea13366b.tar.gz
parser: Minor semantic checks to improve error messages
Diffstat (limited to 'vala/valaparser.vala')
-rw-r--r--vala/valaparser.vala15
1 files changed, 15 insertions, 0 deletions
diff --git a/vala/valaparser.vala b/vala/valaparser.vala
index bad086982..cba7c51b2 100644
--- a/vala/valaparser.vala
+++ b/vala/valaparser.vala
@@ -2497,12 +2497,18 @@ public class Vala.Parser : CodeVisitor {
case TokenType.CONSTRUCT:
if (context.profile == Profile.GOBJECT) {
rollback (begin);
+ if (!(parent is TypeSymbol)) {
+ throw new ParseError.SYNTAX ("unexpected `construct' declaration");
+ }
parse_constructor_declaration (parent, attrs);
return;
}
break;
case TokenType.TILDE:
rollback (begin);
+ if (!(parent is TypeSymbol)) {
+ throw new ParseError.SYNTAX ("unexpected `destructor' declaration");
+ }
parse_destructor_declaration (parent, attrs);
return;
case TokenType.OPEN_BRACE:
@@ -2581,6 +2587,9 @@ public class Vala.Parser : CodeVisitor {
break;
case TokenType.OPEN_PARENS:
rollback (begin);
+ if (!(parent is TypeSymbol)) {
+ throw new ParseError.SYNTAX ("unexpected `constructor' declaration");
+ }
parse_creation_method_declaration (parent, attrs);
return;
default:
@@ -2593,6 +2602,9 @@ public class Vala.Parser : CodeVisitor {
parse_delegate_declaration (parent, attrs);
return;
case TokenType.SIGNAL:
+ if (!(parent is ObjectTypeSymbol)) {
+ throw new ParseError.SYNTAX ("unexpected `signal' declaration");
+ }
parse_signal_declaration (parent, attrs);
return;
default:
@@ -2613,6 +2625,9 @@ public class Vala.Parser : CodeVisitor {
case TokenType.OPEN_BRACE:
case TokenType.THROWS:
rollback (begin);
+ if (!(parent is TypeSymbol)) {
+ throw new ParseError.SYNTAX ("unexpected `property' declaration");
+ }
parse_property_declaration (parent, attrs);
return;
default: