Fixed #1938 AS3 Direct editation - local registers coerce/convert

This commit is contained in:
Jindra Petřík
2023-01-15 18:57:41 +01:00
parent 0377a876e3
commit 4906c59a2c
2 changed files with 5 additions and 1 deletions

View File

@@ -214,6 +214,9 @@ public class NameAVM2Item extends AssignableAVM2Item {
case "uint":
ins = ins(AVM2Instructions.ConvertU);
break;
case "Number":
ins = ins(AVM2Instructions.ConvertD);
break;
default:
int type_index = AVM2SourceGenerator.resolveType(localData, ttype, ((AVM2SourceGenerator) generator).abcIndex);
ins = ins(AVM2Instructions.Coerce, type_index);
@@ -254,7 +257,7 @@ public class NameAVM2Item extends AssignableAVM2Item {
killTemp(localData, generator, Arrays.asList(ret_temp)));
} else {
return toSourceMerge(localData, generator, assignedValue, !(("" + assignedValue.returnType()).equals("" + type) && (basicTypes.contains("" + type))) ? generateCoerce(localData, generator, type) : null, needsReturn
return toSourceMerge(localData, generator, assignedValue, generateCoerce(localData, generator, type), needsReturn
? ins(AVM2Instructions.Dup) : null, generateSetLoc(regNumber));
}
} else {