summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaExpr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/lib/Sema/SemaExpr.cpp')
-rw-r--r--clang/lib/Sema/SemaExpr.cpp31
1 files changed, 11 insertions, 20 deletions
diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp
index c46bde00ffc..288b6171918 100644
--- a/clang/lib/Sema/SemaExpr.cpp
+++ b/clang/lib/Sema/SemaExpr.cpp
@@ -440,13 +440,9 @@ Sema::BuildDeclRefExpr(NamedDecl *D, QualType Ty, SourceLocation Loc,
bool TypeDependent, bool ValueDependent,
const CXXScopeSpec *SS) {
if (SS && !SS->isEmpty()) {
- llvm::SmallVector<NestedNameSpecifier, 16> Specs;
- for (CXXScopeSpec::iterator Spec = SS->begin(), SpecEnd = SS->end();
- Spec != SpecEnd; ++Spec)
- Specs.push_back(NestedNameSpecifier::getFromOpaquePtr(*Spec));
- return QualifiedDeclRefExpr::Create(Context, D, Ty, Loc, TypeDependent,
- ValueDependent, SS->getRange(),
- &Specs[0], Specs.size());
+ return new (Context) QualifiedDeclRefExpr(D, Ty, Loc, TypeDependent,
+ ValueDependent, SS->getRange(),
+ static_cast<NestedNameSpecifier *>(SS->getCurrentScopeRep()));
} else
return new (Context) DeclRefExpr(D, Ty, Loc, TypeDependent, ValueDependent);
}
@@ -619,13 +615,9 @@ Sema::ActOnDeclarationNameExpr(Scope *S, SourceLocation Loc,
// -- a nested-name-specifier that contains a class-name that
// names a dependent type.
if (SS && isDependentScopeSpecifier(*SS)) {
- llvm::SmallVector<NestedNameSpecifier, 16> Specs;
- for (CXXScopeSpec::iterator Spec = SS->begin(), SpecEnd = SS->end();
- Spec != SpecEnd; ++Spec)
- Specs.push_back(NestedNameSpecifier::getFromOpaquePtr(*Spec));
- return Owned(UnresolvedDeclRefExpr::Create(Context, Name, Loc,
- SS->getRange(), &Specs[0],
- Specs.size()));
+ return Owned(new (Context) UnresolvedDeclRefExpr(Name, Context.DependentTy,
+ Loc, SS->getRange(),
+ static_cast<NestedNameSpecifier *>(SS->getCurrentScopeRep())));
}
LookupResult Lookup = LookupParsedName(S, SS, Name, LookupOrdinaryName,
@@ -2302,12 +2294,11 @@ Sema::ActOnCallExpr(Scope *S, ExprArg fn, SourceLocation LParenLoc,
Expr *NewFn = 0;
if (QualifiedDeclRefExpr *QDRExpr
= dyn_cast_or_null<QualifiedDeclRefExpr>(DRExpr))
- NewFn = QualifiedDeclRefExpr::Create(Context, FDecl, FDecl->getType(),
- QDRExpr->getLocation(),
- false, false,
- QDRExpr->getQualifierRange(),
- QDRExpr->begin(),
- QDRExpr->size());
+ NewFn = new (Context) QualifiedDeclRefExpr(FDecl, FDecl->getType(),
+ QDRExpr->getLocation(),
+ false, false,
+ QDRExpr->getQualifierRange(),
+ QDRExpr->getQualifier());
else
NewFn = new (Context) DeclRefExpr(FDecl, FDecl->getType(),
Fn->getSourceRange().getBegin());
OpenPOWER on IntegriCloud