diff --git a/alib2cli/src/ast/expression/TypeExpression.h b/alib2cli/src/ast/expression/TypeExpression.h index 8adc87cda671a82b4f53be9d1e32dfe28ce3a28d..42d1c6c89a49c6f8d1d17a02fef825e68705bac1 100644 --- a/alib2cli/src/ast/expression/TypeExpression.h +++ b/alib2cli/src/ast/expression/TypeExpression.h @@ -16,7 +16,16 @@ public: std::shared_ptr < abstraction::Value > translateAndEval ( Environment & environment ) const override { std::shared_ptr < abstraction::Value > translatedExpression = m_expression->translateAndEval ( environment ); - return std::make_shared < abstraction::ValueHolder < std::string > > ( translatedExpression->getType ( ), true ); + std::string type; + if ( abstraction::TypeQualifiers::isConst ( translatedExpression->getTypeQualifiers ( ) ) ) + type += "const "; + type += translatedExpression->getType ( ); + if ( abstraction::TypeQualifiers::isRvalueRef ( translatedExpression->getTypeQualifiers ( ) ) ) + type += " &&"; + if ( abstraction::TypeQualifiers::isLvalueRef ( translatedExpression->getTypeQualifiers ( ) ) ) + type += " &"; + + return std::make_shared < abstraction::ValueHolder < std::string > > ( std::move ( type ), true ); } };