From c6fc0be8ae15e43abb765323d7edaf7741405878 Mon Sep 17 00:00:00 2001 From: Flex Ferrum Date: Sat, 28 Jan 2012 22:58:08 +0400 Subject: 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 --- src/libs/3rdparty/cplusplus/Symbols.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/libs/3rdparty/cplusplus/Symbols.h') diff --git a/src/libs/3rdparty/cplusplus/Symbols.h b/src/libs/3rdparty/cplusplus/Symbols.h index 9de640ff2a..ec65e926f7 100644 --- a/src/libs/3rdparty/cplusplus/Symbols.h +++ b/src/libs/3rdparty/cplusplus/Symbols.h @@ -104,9 +104,11 @@ public: virtual ~Declaration(); void setType(const FullySpecifiedType &type); + void setInitializer(StringLiteral const* initializer); // Symbol's interface virtual FullySpecifiedType type() const; + const StringLiteral *getInitializer() const; virtual const Declaration *asDeclaration() const { return this; } @@ -125,6 +127,7 @@ protected: private: FullySpecifiedType _type; + const StringLiteral *_initializer; }; class CPLUSPLUS_EXPORT EnumeratorDeclaration: public Declaration -- cgit v1.2.1