浏览代码

fixed invalid var ids being output

ncannasse 10 年之前
父节点
当前提交
679ba10030
共有 2 个文件被更改,包括 10 次插入2 次删除
  1. 8 0
      hxsl/Eval.hx
  2. 2 2
      hxsl/Linker.hx

+ 8 - 0
hxsl/Eval.hx

@@ -26,6 +26,14 @@ class Eval {
 		var v2 = varMap.get(v);
 		if( v2 != null )
 			return v == v2 ? v2 : mapVar(v2);
+
+		if( v.parent != null ) {
+			mapVar(v.parent); // always map parent first
+			v2 = varMap.get(v);
+			if( v2 != null )
+				return v == v2 ? v2 : mapVar(v2);
+		}
+
 		v2 = {
 			id : Tools.allocVarId(),
 			name : v.name,

+ 2 - 2
hxsl/Linker.hx

@@ -77,7 +77,7 @@ class Linker {
 					}
 				// add a new field
 				if( ft == null )
-					fl2.push(f1);
+					fl2.push(allocVar(f1,p).v);
 				else
 					mergeVar(path + "." + ft.name, f1, ft, p);
 			}
@@ -128,8 +128,8 @@ class Linker {
 				vname += k;
 				key += k;
 			} else {
-				mergeVar(key, v, v2.v, p);
 				v2.merged.push(v);
+				mergeVar(key, v, v2.v, p);
 				varIdMap.set(v.id, v2.id);
 				return v2;
 			}