[vala/wip/printer: 5/6] WIP



commit 875b60b6a4fc072e77b5b9f4e2de32d2e479e026
Author: Rico Tzschichholz <ricotz ubuntu com>
Date:   Thu Apr 9 00:54:58 2020 +0200

    WIP

 vala/valaparser.vala | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)
---
diff --git a/vala/valaparser.vala b/vala/valaparser.vala
index e6f8adec5..977424cfb 100644
--- a/vala/valaparser.vala
+++ b/vala/valaparser.vala
@@ -1677,8 +1677,8 @@ public class Vala.Parser : CodeVisitor {
                                }
 
                                if (!is_decl) {
-                                       block.add_statement (stmt);
                                        link_src (stmt, current_reference);
+                                       block.add_statement (stmt);
                                }
                        } catch (ParseError e) {
                                report_parse_error (e);
@@ -1782,6 +1782,7 @@ public class Vala.Parser : CodeVisitor {
        Block parse_embedded_statement (string statement_name, bool accept_empty_body = true) throws 
ParseError {
                if (current () == TokenType.OPEN_BRACE) {
                        var block = parse_block ();
+                       link_src (block);
                        return block;
                }
 
@@ -1970,7 +1971,9 @@ public class Vala.Parser : CodeVisitor {
 
                        DataType type_copy = constant_type.copy ();
                        var local = parse_local_constant (type_copy);
-                       block.add_statement (new DeclarationStatement (local, get_src (begin)));
+                       var stmt = new DeclarationStatement (local, get_src (begin));
+                       link_src (stmt);
+                       block.add_statement (stmt);
                        block.add_local_constant (local);
                        local.active = false;
                } while (accept (TokenType.COMMA));
@@ -2106,7 +2109,6 @@ public class Vala.Parser : CodeVisitor {
                                // variable declaration in initializer
                                var decl_begin = get_location ();
                                block = new Block (get_src (decl_begin));
-                               link_src (block);
                                parse_local_variable_declarations (block);
                                block.source_reference.end = get_last_src ().end;
                        }
@@ -2133,6 +2135,7 @@ public class Vala.Parser : CodeVisitor {
                        stmt.add_iterator (iter);
                }
                if (block != null) {
+                       link_src (stmt);
                        block.add_statement (stmt);
                        return block;
                } else {
@@ -3452,7 +3455,9 @@ public class Vala.Parser : CodeVisitor {
                var begin = get_location ();
                if (accept (TokenType.ELLIPSIS)) {
                        // varargs
-                       return new Parameter.with_ellipsis (get_src (begin));
+                       var param = new Parameter.with_ellipsis (get_src (begin));
+                       link_src (param);
+                       return param;
                }
                bool params_array = accept (TokenType.PARAMS);
                var direction = ParameterDirection.IN;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]