]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
vala: Add CodeNode reference to SourceReference
authorRico Tzschichholz <ricotz@ubuntu.com>
Wed, 8 Apr 2020 14:43:03 +0000 (16:43 +0200)
committerRico Tzschichholz <ricotz@ubuntu.com>
Thu, 9 Apr 2020 13:46:05 +0000 (15:46 +0200)
vala/valacodenode.vala
vala/valasourcereference.vala

index 05ba53a0a13f3589be5e468ecc5be1f8f9de0677..21dca7c88469c26977b23711750d27e4d5718341 100644 (file)
@@ -38,7 +38,18 @@ public abstract class Vala.CodeNode {
         * References the location in the source file where this code node has
         * been written.
         */
-       public SourceReference? source_reference { get; set; }
+       public SourceReference? source_reference {
+               get {
+                       return _source_reference;
+               }
+               set {
+                       _source_reference = value;
+                       // source references are re-used in transformed nodes, keep original node reference
+                       if (_source_reference != null && _source_reference.node == null) {
+                               _source_reference.node = this;
+                       }
+               }
+       }
 
        public bool unreachable { get; set; }
 
@@ -70,6 +81,7 @@ public abstract class Vala.CodeNode {
        }
 
        private AttributeCache[] attributes_cache;
+       SourceReference? _source_reference;
 
        static int last_temp_nr = 0;
        static int next_attribute_cache_index = 0;
index d0680f7058ba345b2ddb013996d3a8b246af1ab9..be79e197e2cd7f066eaaf616fe115a1a595c4a35 100644 (file)
@@ -31,6 +31,11 @@ public class Vala.SourceReference {
         */
        public weak SourceFile file { get; set; }
 
+       /**
+        * The code node of the referenced source code.
+        */
+       public weak CodeNode? node { get; set; }
+
        /**
         * The begin of the referenced source code.
         */