diff --git a/alib2cli/src/ast/expression/ImmediateExpression.h b/alib2cli/src/ast/expression/ImmediateExpression.h index f4ec4d6983e0ef423a8739d953cb18114c79f175..01d67d8ccfea6a055438a93227d39d40b78e9a29 100644 --- a/alib2cli/src/ast/expression/ImmediateExpression.h +++ b/alib2cli/src/ast/expression/ImmediateExpression.h @@ -1,6 +1,7 @@ #pragma once #include <ast/Expression.h> +#include <object/ObjectFactory.h> namespace cli { @@ -13,8 +14,7 @@ public: } std::shared_ptr < abstraction::Value > translateAndEval ( Environment & ) const override { - Type copy = m_value; - return std::make_shared < abstraction::ValueHolder < Type > > ( std::move ( copy ), true ); + return std::make_shared < abstraction::ValueHolder < object::Object > > ( object::ObjectFactory < >::construct ( m_value ), true ); } }; diff --git a/alib2cli/src/ast/statements/ImmediateStatement.h b/alib2cli/src/ast/statements/ImmediateStatement.h index bb60959ab7897bd32cc01251b94832f65f114783..071fdeb90f8b33c14a79e97c3a50e88a218b920e 100644 --- a/alib2cli/src/ast/statements/ImmediateStatement.h +++ b/alib2cli/src/ast/statements/ImmediateStatement.h @@ -1,19 +1,20 @@ #pragma once #include <ast/Statement.h> +#include <object/ObjectFactory.h> namespace cli { template < class Type > class ImmediateStatement final : public Statement { - std::shared_ptr < abstraction::ValueHolder < Type > > m_value; + Type m_value; public: - ImmediateStatement ( Type value ) : m_value ( std::make_shared < abstraction::ValueHolder < Type > > ( std::move ( value ), true ) ) { + ImmediateStatement ( Type value ) : m_value ( value ) { } std::shared_ptr < abstraction::Value > translateAndEval ( const std::shared_ptr < abstraction::Value > &, Environment & ) const override { - return m_value; + return std::make_shared < abstraction::ValueHolder < object::Object > > ( object::ObjectFactory < >::construct ( m_value ), true ); } }; diff --git a/alib2cli/test-src/cli/CliBasicParsing.cpp b/alib2cli/test-src/cli/CliBasicParsing.cpp index cda4982ffa346ed05442c4795565126d15d5a148..c01e87a9a905fed81a7c51713585d633074ef84a 100644 --- a/alib2cli/test-src/cli/CliBasicParsing.cpp +++ b/alib2cli/test-src/cli/CliBasicParsing.cpp @@ -33,6 +33,8 @@ TEST_CASE ( "Cli Parser", "[unit][cli]" ) { } SECTION ( "Test Routine3" ) { + abstraction::DenormalizeRegistry::registerDenormalize < int > ( ); + cli::Environment environment; testLine ( "procedure consume3 ( auto && $value ) begin print $value; end", environment );