From: Rico Tzschichholz Date: Thu, 15 Apr 2021 14:49:14 +0000 (+0200) Subject: parser: Minor semantic checks to improve error messages X-Git-Tag: 0.50.8~13 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cc65cabdc3c47a1a1a4ecc887642b594d7ffa4a6;p=thirdparty%2Fvala.git parser: Minor semantic checks to improve error messages --- diff --git a/vala/valaparser.vala b/vala/valaparser.vala index 832f1233e..d3f0875fe 100644 --- a/vala/valaparser.vala +++ b/vala/valaparser.vala @@ -2489,12 +2489,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: @@ -2573,6 +2579,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: @@ -2585,6 +2594,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: @@ -2605,6 +2617,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: