diff options
author | Rico Tzschichholz <ricotz@ubuntu.com> | 2021-04-15 16:49:14 +0200 |
---|---|---|
committer | Rico Tzschichholz <ricotz@ubuntu.com> | 2021-04-15 16:49:14 +0200 |
commit | cbc11c2674209c3c51eb5c9851863dacea13366b (patch) | |
tree | 2243d31222f3654f4bf8eb46139cea35ceb71b73 /vala/valaparser.vala | |
parent | a7012f089b07baa8b44554cb36032dbda173e321 (diff) | |
download | vala-cbc11c2674209c3c51eb5c9851863dacea13366b.tar.gz |
parser: Minor semantic checks to improve error messages
Diffstat (limited to 'vala/valaparser.vala')
-rw-r--r-- | vala/valaparser.vala | 15 |
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: |