From: Rico Tzschichholz Date: Wed, 8 Apr 2020 14:43:03 +0000 (+0200) Subject: vala: Add CodeNode reference to SourceReference X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1a3f054ec71ebfc67bdde5fb612929eae1ff06f0;p=thirdparty%2Fvala.git vala: Add CodeNode reference to SourceReference --- diff --git a/vala/valacodenode.vala b/vala/valacodenode.vala index 05ba53a0a..21dca7c88 100644 --- a/vala/valacodenode.vala +++ b/vala/valacodenode.vala @@ -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; diff --git a/vala/valasourcereference.vala b/vala/valasourcereference.vala index d0680f705..be79e197e 100644 --- a/vala/valasourcereference.vala +++ b/vala/valasourcereference.vala @@ -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. */