* 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; }
}
private AttributeCache[] attributes_cache;
+ SourceReference? _source_reference;
static int last_temp_nr = 0;
static int next_attribute_cache_index = 0;
*/
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.
*/