From: Rico Tzschichholz Date: Tue, 18 Jan 2022 13:33:15 +0000 (+0100) Subject: parser: Reduce the source reference of main block method to its beginning X-Git-Tag: 0.55.2~23 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8c72e14117f474bb657ecb3bde2efc352e9a164c;p=thirdparty%2Fvala.git parser: Reduce the source reference of main block method to its beginning The end contains broken information which lead to a crash while trying to report this multi-line source reference. --- diff --git a/tests/Makefile.am b/tests/Makefile.am index f95b6bfaa..31a67f6e7 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -918,6 +918,7 @@ TESTS = \ parser/local-variable-array-type-invalid.test \ parser/lock-statement.vala \ parser/main-block.vala \ + parser/main-block-minimal.vala \ parser/member-access-pointer.vala \ parser/member-initializer.vala \ parser/member-initializer-empty.vala \ diff --git a/tests/parser/main-block-minimal.c-expected b/tests/parser/main-block-minimal.c-expected new file mode 100644 index 000000000..a8b8a94dc --- /dev/null +++ b/tests/parser/main-block-minimal.c-expected @@ -0,0 +1,21 @@ +/* parser_main_block_minimal.c generated by valac, the Vala compiler + * generated from parser_main_block_minimal.vala, do not modify */ + +#include + +static void _vala_main (void); + +static void +_vala_main (void) +{ + g_print ("foo"); +} + +int +main (int argc, + char ** argv) +{ + _vala_main (); + return 0; +} + diff --git a/tests/parser/main-block-minimal.vala b/tests/parser/main-block-minimal.vala new file mode 100644 index 000000000..d029e43fa --- /dev/null +++ b/tests/parser/main-block-minimal.vala @@ -0,0 +1 @@ +print ("foo"); diff --git a/vala/valaparser.vala b/vala/valaparser.vala index 87817fd6b..2f3a99016 100644 --- a/vala/valaparser.vala +++ b/vala/valaparser.vala @@ -2637,7 +2637,7 @@ public class Vala.Parser : CodeVisitor { void parse_main_block (Symbol parent) throws ParseError { var begin = get_location (); - var method = new Method ("main", new VoidType (), get_src (begin)); + var method = new Method ("main", new VoidType (), new SourceReference (scanner.source_file, begin, begin)); method.access = SymbolAccessibility.PUBLIC; method.binding = MemberBinding.STATIC; method.body = new Block (get_src (begin));