|
@@ -87,10 +87,10 @@ class Linker {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- function allocVar( v : TVar, p : Position, ?path : String, ?parent : TVar ) : AllocatedVar {
|
|
|
|
|
|
+ function allocVar( v : TVar, p : Position, ?path : String, ?parent : AllocatedVar ) : AllocatedVar {
|
|
if( v.parent != null && parent == null ) {
|
|
if( v.parent != null && parent == null ) {
|
|
- parent = allocVar(v.parent, p).v;
|
|
|
|
- var p = parent;
|
|
|
|
|
|
+ parent = allocVar(v.parent, p);
|
|
|
|
+ var p = parent.v;
|
|
path = p.name;
|
|
path = p.name;
|
|
p = p.parent;
|
|
p = p.parent;
|
|
while( p != null ) {
|
|
while( p != null ) {
|
|
@@ -138,20 +138,20 @@ class Linker {
|
|
type : v.type,
|
|
type : v.type,
|
|
kind : v.kind == Output ? Local : v.kind,
|
|
kind : v.kind == Output ? Local : v.kind,
|
|
qualifiers : v.qualifiers,
|
|
qualifiers : v.qualifiers,
|
|
- parent : parent,
|
|
|
|
|
|
+ parent : parent == null ? null : parent.v,
|
|
};
|
|
};
|
|
var a = new AllocatedVar();
|
|
var a = new AllocatedVar();
|
|
a.v = v2;
|
|
a.v = v2;
|
|
a.merged = [v];
|
|
a.merged = [v];
|
|
a.path = key;
|
|
a.path = key;
|
|
a.id = vid;
|
|
a.id = vid;
|
|
- a.parent = parent == null ? null : allocVar(parent, p);
|
|
|
|
|
|
+ a.parent = parent;
|
|
a.instanceIndex = curInstance;
|
|
a.instanceIndex = curInstance;
|
|
allVars.push(a);
|
|
allVars.push(a);
|
|
varMap.set(key, a);
|
|
varMap.set(key, a);
|
|
switch( v2.type ) {
|
|
switch( v2.type ) {
|
|
case TStruct(vl):
|
|
case TStruct(vl):
|
|
- v2.type = TStruct([for( v in vl ) allocVar(v, p, key, v2).v]);
|
|
|
|
|
|
+ v2.type = TStruct([for( v in vl ) allocVar(v, p, key, a).v]);
|
|
default:
|
|
default:
|
|
}
|
|
}
|
|
return a;
|
|
return a;
|