aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFariborz Jahanian <fjahanian@apple.com>2010-07-12 17:26:57 +0000
committerFariborz Jahanian <fjahanian@apple.com>2010-07-12 17:26:57 +0000
commit52bc56a296b11b4fc6bf5ddf4ded5262f6484bdb (patch)
tree2116703cd8ece250d358cd7bf367e70b91bcb893
parent7ce1f2714ac0f33210bab14650bce2078ebf343e (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.h6
-rw-r--r--lib/Sema/SemaExpr.cpp7
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);
}