Fixed bug with assign

This commit is contained in:
Ne_Eo
2024-09-04 00:06:57 +02:00
parent 5d2a99d40e
commit 3ec4fc9f0b
+12 -6
View File
@@ -343,13 +343,12 @@ class Interp {
var v;
switch (Tools.expr(e1)) {
case EIdent(id):
var l = locals.get(id);
v = fop(expr(e1), expr(e2));
if (l == null) {
if(_hasScriptObject) {
if (!locals.exists(id)) {
if(_hasScriptObject && !varExists(id)) {
var instanceHasField = __instanceFields.contains(id);
if(_scriptObjectType == SObject && instanceHasField) {
if (_scriptObjectType == SObject && instanceHasField) {
UnsafeReflect.setField(scriptObject, id, v);
return v;
} else if (_scriptObjectType == SCustomClass && instanceHasField) {
@@ -361,7 +360,7 @@ class Interp {
return res;
}
return obj.hset(id, v);
} else if(_scriptObjectType == SBehaviourClass) {
} else if (_scriptObjectType == SBehaviourClass) {
var obj = cast(scriptObject, IHScriptCustomBehaviour);
return obj.hset(id, v);
}
@@ -379,10 +378,17 @@ class Interp {
} else {
setVar(id, v);
}
} else {
setVar(id, v);
}
}
else
else {
var l = locals.get(id);
l.r = v;
if (l.depth == 0) {
setVar(id, v);
}
}
case EField(e, f, s):
var obj = expr(e);
if(s && obj == null) return null;