diff options
author | Douglas Gregor <dgregor@apple.com> | 2009-01-07 21:26:07 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2009-01-07 21:26:07 +0000 |
commit | 83233a4b7c2bc7b531ffa3b33fdd1cd8138373b6 (patch) | |
tree | b28851627b9cb301793349e9487f9c83eb9cb8e5 /lib/Sema | |
parent | 4b1e275eb743b46cd10153bb58743d89af7242ea (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.cpp | 4 | ||||
-rw-r--r-- | lib/Sema/SemaInit.cpp | 1 |
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. |