forked from qt-creator/qt-creator
C++: Type deduction for auto-declared variables implemented
Handled to major cases of 'auto' variable declaration: 1. auto var = someInitializer; 2. Q_FOREACH(auto item, collection) or foreach(auto item, collection) In first case type deducted directly from initializer. If variable has no initializer then corresponded error reported. In second case type deducted from '*collection.begin()' expression. Change-Id: Ie930add1648b99440281ae04d973fd6904bc9e46 Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
This commit is contained in:
committed by
Roberto Raggi
parent
0651e28d04
commit
c6fc0be8ae
12
src/libs/3rdparty/cplusplus/Symbols.cpp
vendored
12
src/libs/3rdparty/cplusplus/Symbols.cpp
vendored
@@ -92,11 +92,13 @@ void UsingDeclaration::visitSymbol0(SymbolVisitor *visitor)
|
||||
|
||||
Declaration::Declaration(TranslationUnit *translationUnit, unsigned sourceLocation, const Name *name)
|
||||
: Symbol(translationUnit, sourceLocation, name)
|
||||
, _initializer(0)
|
||||
{ }
|
||||
|
||||
Declaration::Declaration(Clone *clone, Subst *subst, Declaration *original)
|
||||
: Symbol(clone, subst, original)
|
||||
, _type(clone->type(original->_type, subst))
|
||||
, _initializer(clone->stringLiteral(original->_initializer))
|
||||
{ }
|
||||
|
||||
Declaration::~Declaration()
|
||||
@@ -105,9 +107,19 @@ Declaration::~Declaration()
|
||||
void Declaration::setType(const FullySpecifiedType &type)
|
||||
{ _type = type; }
|
||||
|
||||
void Declaration::setInitializer(const StringLiteral *initializer)
|
||||
{
|
||||
_initializer = initializer;
|
||||
}
|
||||
|
||||
FullySpecifiedType Declaration::type() const
|
||||
{ return _type; }
|
||||
|
||||
const StringLiteral *Declaration::getInitializer() const
|
||||
{
|
||||
return _initializer;
|
||||
}
|
||||
|
||||
void Declaration::visitSymbol0(SymbolVisitor *visitor)
|
||||
{ visitor->visit(this); }
|
||||
|
||||
|
Reference in New Issue
Block a user