aboutsummaryrefslogtreecommitdiff
path: root/lib/Sema
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2009-01-07 21:26:07 +0000
committerDouglas Gregor <dgregor@apple.com>2009-01-07 21:26:07 +0000
commit83233a4b7c2bc7b531ffa3b33fdd1cd8138373b6 (patch)
treeb28851627b9cb301793349e9487f9c83eb9cb8e5 /lib/Sema
parent4b1e275eb743b46cd10153bb58743d89af7242ea (diff)
Fix printing of member references to avoid displaying implicitly-generated member references, e.g., for anonymous struct/unions or implicit 'this' in member functions
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@61885 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema')
-rw-r--r--lib/Sema/SemaExpr.cpp4
-rw-r--r--lib/Sema/SemaInit.cpp1
2 files changed, 5 insertions, 0 deletions
diff --git a/lib/Sema/SemaExpr.cpp b/lib/Sema/SemaExpr.cpp
index bf04042ef8..6db6ea19af 100644
--- a/lib/Sema/SemaExpr.cpp
+++ b/lib/Sema/SemaExpr.cpp
@@ -444,6 +444,7 @@ Sema::BuildAnonymousStructUnionMemberReference(SourceLocation Loc,
BaseObjectExpr = new DeclRefExpr(BaseObject, BaseObject->getType(),
SourceLocation());
+ BaseObjectExpr->setImplicit();
ExtraQuals
= Context.getCanonicalType(BaseObject->getType()).getCVRQualifiers();
} else if (BaseObjectExpr) {
@@ -473,6 +474,7 @@ Sema::BuildAnonymousStructUnionMemberReference(SourceLocation Loc,
BaseObjectExpr = new CXXThisExpr(SourceLocation(),
MD->getThisType(Context));
BaseObjectIsPointer = true;
+ BaseObjectExpr->setImplicit();
}
} else {
return Diag(Loc, diag::err_invalid_member_use_in_static_method)
@@ -500,6 +502,7 @@ Sema::BuildAnonymousStructUnionMemberReference(SourceLocation Loc,
}
Result = new MemberExpr(Result, BaseObjectIsPointer, *FI,
OpLoc, MemberType);
+ Result->setImplicit();
BaseObjectIsPointer = false;
ExtraQuals = Context.getCanonicalType(MemberType).getCVRQualifiers();
OpLoc = SourceLocation();
@@ -661,6 +664,7 @@ Sema::ExprResult Sema::ActOnDeclarationNameExpr(Scope *S, SourceLocation Loc,
// Build the implicit member access expression.
Expr *This = new CXXThisExpr(SourceLocation(),
MD->getThisType(Context));
+ This->setImplicit();
return new MemberExpr(This, true, cast<NamedDecl>(D),
SourceLocation(), MemberType);
}
diff --git a/lib/Sema/SemaInit.cpp b/lib/Sema/SemaInit.cpp
index 031fe27ddf..6a9275fbe8 100644
--- a/lib/Sema/SemaInit.cpp
+++ b/lib/Sema/SemaInit.cpp
@@ -90,6 +90,7 @@ void InitListChecker::CheckImplicitInitList(InitListExpr *ParentIList,
&InitExprs[0], InitExprs.size(),
SourceLocation(),
ParentIList->hadDesignators());
+ ILE->setImplicit();
ILE->setType(T);
// Modify the parent InitListExpr to point to the implicit InitListExpr.