From 6ebfaad68f90809604b8cdda3f9ccc5b0231637b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Tr=C3=A1vn=C3=AD=C4=8Dek?= <jan.travnicek@fit.cvut.cz> Date: Sat, 19 Mar 2022 21:55:20 +0100 Subject: [PATCH] abstraction: fix cast noop detection --- alib2abstraction/src/common/CastHelper.cpp | 2 +- alib2abstraction/src/common/EvalHelper.cpp | 4 +--- alib2cli/src/ast/statements/ContainerStatement.cpp | 6 +----- 3 files changed, 3 insertions(+), 9 deletions(-) diff --git a/alib2abstraction/src/common/CastHelper.cpp b/alib2abstraction/src/common/CastHelper.cpp index a0a51bd889..2c7417fdc2 100644 --- a/alib2abstraction/src/common/CastHelper.cpp +++ b/alib2abstraction/src/common/CastHelper.cpp @@ -6,7 +6,7 @@ namespace abstraction { std::shared_ptr < abstraction::Value > CastHelper::eval ( abstraction::TemporariesHolder & environment, std::shared_ptr < abstraction::Value > param, const core::type_details & type ) { - if ( abstraction::Registry::isCastNoOp ( type, param->getActualType ( ) ) ) { + if ( abstraction::Registry::isCastNoOp ( param->getActualType ( ), type ) ) { return param; } diff --git a/alib2abstraction/src/common/EvalHelper.cpp b/alib2abstraction/src/common/EvalHelper.cpp index c1b10abd5c..d7b40256db 100644 --- a/alib2abstraction/src/common/EvalHelper.cpp +++ b/alib2abstraction/src/common/EvalHelper.cpp @@ -70,9 +70,7 @@ std::shared_ptr < abstraction::Value > EvalHelper::evalAbstraction ( abstraction unsigned i = 0; ext::vector < std::shared_ptr < abstraction::Value > > casted_params; for ( std::shared_ptr < abstraction::Value > param : params ) { - if ( ! abstraction::Registry::isCastNoOp ( param->getActualType ( ), abstraction->getParamType ( i ) ) ) { - param = abstraction::CastHelper::eval ( environment, param, abstraction->getParamType ( i ) ); - } + param = abstraction::CastHelper::eval ( environment, param, abstraction->getParamType ( i ) ); if ( abstraction::Registry::hasDenormalize ( abstraction->getParamType ( i ) ) && abstraction->getParamType ( i ) != param->getDeclaredType ( ) ) { std::unique_ptr < abstraction::OperationAbstraction > denormalize = abstraction::Registry::getDenormalizeAbstraction ( abstraction->getParamType ( i ) ); diff --git a/alib2cli/src/ast/statements/ContainerStatement.cpp b/alib2cli/src/ast/statements/ContainerStatement.cpp index c001889958..a9213a0cb1 100644 --- a/alib2cli/src/ast/statements/ContainerStatement.cpp +++ b/alib2cli/src/ast/statements/ContainerStatement.cpp @@ -24,11 +24,7 @@ std::shared_ptr < abstraction::Value > ContainerStatement::translateAndEval ( co int i = 0; ext::vector < std::shared_ptr < abstraction::Value > > casted_params; for ( const std::shared_ptr < abstraction::Value > & param : params ) { - if ( abstraction::Registry::isCastNoOp ( algo->getParamType ( i ), param->getDeclaredType ( ) ) ) { - casted_params.push_back ( param ); - } else { - casted_params.push_back ( abstraction::CastHelper::eval ( environment, param, algo->getParamType ( i ) ) ); - } + casted_params.push_back ( abstraction::CastHelper::eval ( environment, param, algo->getParamType ( i ) ) ); ++ i; } -- GitLab