Да, это проигрыватель ошибок, другой обходной путь - приведение вашего результата к int, поэтому сгенерированная компилятором инструкция будет не такой:
в первом случае:
function testFunc(val1:int, val2:int, val3:int):int {
var returnVal:int = 0;
return returnVal;
}
компилятор генерирует что-то вроде этого: обратите внимание, что в сгенерированном коде нет ничего плохого
getlocal 0
pushscope
pushbyte 0 // stack = 0
dup // stack = 0 0
setlocal 4 // set returnVal with value on stack, stack = 0
returnvalue // return the value left on the stack i.e. 0, stack=empty
и для обходного пути:
function testFunc(val1:int, val2:int, val3:int):int {
var returnVal:int = 0;
return int(returnVal);
}
сгенерированный код
getlocal 0
pushscope
pushbyte 0 // stack = 0
setlocal 4 // set returnValue with the value on the stack, stack=empty
findpropstrict int // push on stack the object holding the int property, stack=object
getlocal 4 // push on stack returnVal, stack=object 0
callproperty int(param count:1) // call the int property , stack=0
returnvalue // return the value left on stack i.e 0, stack=empty