Fixes for implicit casting when assigning variables

This commit is contained in:
2019-09-14 11:44:43 +02:00
parent 54778adf82
commit 98b605a18b
3 changed files with 10 additions and 2 deletions

View File

@@ -82,8 +82,11 @@ namespace Porygon::Evaluation {
EvalValue *NumericEvalValue::Cast(shared_ptr<const ScriptType> castType) const {
if (castType->GetClass() == TypeClass::Number){
auto num = static_pointer_cast<const NumericScriptType>(castType);
if (num->IsFloat()){
return new NumericEvalValue(std::get<int64_t >(_intValue));
if (num->IsFloat() && !this->_isFloat){
return new NumericEvalValue(static_cast<double>(std::get<int64_t >(_intValue)));
}
else if(!num->IsFloat() && this->_isFloat){
return new NumericEvalValue(static_cast<int64_t>(std::get<double >(_floatValue)));
}
}
return EvalValue::Cast(castType);