Move setting of Dependent Type to BlockDeclRefExpr's

constructor.

llvm-svn: 108157
This commit is contained in:
Fariborz Jahanian
2010-07-12 17:26:57 +00:00
parent dbb2806a7b
commit 70c0b08022
2 changed files with 7 additions and 6 deletions

View File

@@ -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

View File

@@ -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);
}