diff --git a/src/shared/cplusplus/Bind.cpp b/src/shared/cplusplus/Bind.cpp index 74ae70c839a..cb7dc7311ab 100644 --- a/src/shared/cplusplus/Bind.cpp +++ b/src/shared/cplusplus/Bind.cpp @@ -56,6 +56,7 @@ #include "Literals.h" #include "Scope.h" #include +#include #include #include @@ -1696,6 +1697,20 @@ bool Bind::visit(ParameterDeclarationAST *ast) Argument *arg = control()->newArgument(sourceLocation, argName); arg->setType(type); + if (ast->expression) { + unsigned startOfExpression = ast->expression->firstToken(); + unsigned endOfExpression = ast->expression->lastToken(); + std::string buffer; + for (unsigned index = startOfExpression; index != endOfExpression; ++index) { + const Token &tk = tokenAt(index); + if (tk.whitespace() || tk.newline()) + buffer += ' '; + buffer += tk.spell(); + } + const StringLiteral *initializer = control()->stringLiteral(buffer.c_str(), buffer.size()); + arg->setInitializer(initializer); + } + _scope->addMember(arg); ast->symbol = arg;