forked from OSchip/llvm-project
Add test case for PR5868, and improve location information slightly for implicit "this" expressions
llvm-svn: 92141
This commit is contained in:
parent
b2d47e0eaa
commit
4b65441598
|
@ -564,7 +564,7 @@ Sema::BuildAnonymousStructUnionMemberReference(SourceLocation Loc,
|
|||
== Context.getCanonicalType(ThisType)) ||
|
||||
IsDerivedFrom(ThisType, AnonFieldType)) {
|
||||
// Our base object expression is "this".
|
||||
BaseObjectExpr = new (Context) CXXThisExpr(SourceLocation(),
|
||||
BaseObjectExpr = new (Context) CXXThisExpr(Loc,
|
||||
MD->getThisType(Context));
|
||||
BaseObjectIsPointer = true;
|
||||
}
|
||||
|
|
|
@ -959,6 +959,7 @@ public:
|
|||
Expr *BaseExpr = Base.takeAs<Expr>();
|
||||
if (getSema().PerformObjectMemberConversion(BaseExpr, Member))
|
||||
return getSema().ExprError();
|
||||
|
||||
MemberExpr *ME =
|
||||
new (getSema().Context) MemberExpr(BaseExpr, isArrow,
|
||||
Member, MemberLoc,
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
// RUN: %clang_cc1 -fsyntax-only -verify %s
|
||||
|
||||
// PR5868
|
||||
struct T0 {
|
||||
int x;
|
||||
union {
|
||||
void *m0;
|
||||
};
|
||||
};
|
||||
template <typename T>
|
||||
struct T1 : public T0, public T {
|
||||
void f0() {
|
||||
m0 = 0; // expected-error{{ambiguous conversion}}
|
||||
}
|
||||
};
|
||||
|
||||
struct A : public T0 { };
|
||||
|
||||
void f1(T1<A> *S) { S->f0(); } // expected-note{{instantiation of member function}}
|
Loading…
Reference in New Issue