C++11: Parse alias declarations.

The parser no longer fails declarations like:
using Foo = std::vector<int>::iterator;

Change-Id: Ib3a552ebbe0147fa138db6448a52cdba8f9b9207
Reviewed-by: hjk <qthjk@ovi.com>
This commit is contained in:
Christian Kamm
2012-09-18 10:45:10 +02:00
committed by hjk
parent 9bd86e7d68
commit 8711121197
15 changed files with 192 additions and 0 deletions

View File

@@ -125,6 +125,7 @@ public:
virtual AST *clone(MemoryPool *pool) const = 0;
virtual AccessDeclarationAST *asAccessDeclaration() { return 0; }
virtual AliasDeclarationAST *asAliasDeclaration() { return 0; }
virtual AlignofExpressionAST *asAlignofExpression() { return 0; }
virtual ArrayAccessAST *asArrayAccess() { return 0; }
virtual ArrayDeclaratorAST *asArrayDeclarator() { return 0; }
@@ -2400,6 +2401,36 @@ protected:
virtual bool match0(AST *, ASTMatcher *);
};
class CPLUSPLUS_EXPORT AliasDeclarationAST: public DeclarationAST
{
public:
unsigned using_token;
unsigned identifier_token;
unsigned equal_token;
TypeIdAST *typeId;
unsigned semicolon_token;
public:
AliasDeclarationAST()
: using_token(0)
, identifier_token(0)
, equal_token(0)
, typeId(0)
, semicolon_token(0)
{}
virtual AliasDeclarationAST *asAliasDeclaration() { return this; }
virtual unsigned firstToken() const;
virtual unsigned lastToken() const;
virtual AliasDeclarationAST *clone(MemoryPool *pool) const;
protected:
virtual void accept0(ASTVisitor *visitor);
virtual bool match0(AST *, ASTMatcher *);
};
class CPLUSPLUS_EXPORT ExpressionListParenAST: public ExpressionAST
{
public: