forked from qt-creator/qt-creator
Store the default value of the formal argument in a string literal.
This commit is contained in:
@@ -56,6 +56,7 @@
|
||||
#include "Literals.h"
|
||||
#include "Scope.h"
|
||||
#include <vector>
|
||||
#include <string>
|
||||
#include <memory>
|
||||
#include <cassert>
|
||||
|
||||
@@ -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;
|
||||
|
Reference in New Issue
Block a user