diff options
author | Fariborz Jahanian <fjahanian@apple.com> | 2010-07-12 17:26:57 +0000 |
---|---|---|
committer | Fariborz Jahanian <fjahanian@apple.com> | 2010-07-12 17:26:57 +0000 |
commit | 52bc56a296b11b4fc6bf5ddf4ded5262f6484bdb (patch) | |
tree | 2116703cd8ece250d358cd7bf367e70b91bcb893 | |
parent | 7ce1f2714ac0f33210bab14650bce2078ebf343e (diff) |
Move setting of Dependent Type to BlockDeclRefExpr's
constructor.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108157 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/clang/AST/Expr.h | 6 | ||||
-rw-r--r-- | lib/Sema/SemaExpr.cpp | 7 |
2 files changed, 7 insertions, 6 deletions
diff --git a/include/clang/AST/Expr.h b/include/clang/AST/Expr.h index 9d1ba48a35..5cf285bad0 100644 --- a/include/clang/AST/Expr.h +++ b/include/clang/AST/Expr.h @@ -3398,8 +3398,10 @@ public: // FIXME: Fix type/value dependence! BlockDeclRefExpr(ValueDecl *d, QualType t, SourceLocation l, bool ByRef, bool constAdded = false, - Stmt *copyConstructorVal = 0) - : Expr(BlockDeclRefExprClass, t, false, false), D(d), Loc(l), IsByRef(ByRef), + Stmt *copyConstructorVal = 0, + bool hasDependentType = false) + : Expr(BlockDeclRefExprClass, t, hasDependentType, false), + D(d), Loc(l), IsByRef(ByRef), ConstQualAdded(constAdded), CopyConstructorVal(copyConstructorVal) {} // \brief Build an empty reference to a declared variable in a diff --git a/lib/Sema/SemaExpr.cpp b/lib/Sema/SemaExpr.cpp index 57b4232294..53886e108e 100644 --- a/lib/Sema/SemaExpr.cpp +++ b/lib/Sema/SemaExpr.cpp @@ -1744,10 +1744,11 @@ Sema::BuildDeclarationNameExpr(const CXXScopeSpec &SS, // Variable will be bound by-copy, make it const within the closure. ExprTy.addConst(); + QualType T = VD->getType(); BlockDeclRefExpr *BDRE = new (Context) BlockDeclRefExpr(VD, ExprTy, Loc, false, - constAdded); - QualType T = VD->getType(); + constAdded, 0, + (getLangOptions().CPlusPlus && T->isDependentType())); if (getLangOptions().CPlusPlus) { if (!T->isDependentType() && !T->isReferenceType()) { Expr *E = new (Context) @@ -1765,8 +1766,6 @@ Sema::BuildDeclarationNameExpr(const CXXScopeSpec &SS, BDRE->setCopyConstructorExpr(Init); } } - else if (T->isDependentType()) - BDRE->setTypeDependent(true); } return Owned(BDRE); } |