From: Nick Lewycky Date: Fri, 15 Oct 2010 21:43:24 +0000 (+0000) Subject: Report the location of the syntax error inside a macro. Fixes PR7944. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3d6c45d8f8df76d6a0a71d3ef36f835a0d5e515f;p=clang Report the location of the syntax error inside a macro. Fixes PR7944. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116624 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Sema/SemaExpr.cpp b/lib/Sema/SemaExpr.cpp index 10225b6138..031337d6fe 100644 --- a/lib/Sema/SemaExpr.cpp +++ b/lib/Sema/SemaExpr.cpp @@ -3052,7 +3052,7 @@ Sema::LookupMemberExpr(LookupResult &R, Expr *&BaseExpr, ResultTy->getAs()->getPointeeType() ->isRecordType()))) { SourceLocation Loc = PP.getLocForEndOfToken(BaseExpr->getLocEnd()); - Diag(Loc, diag::err_member_reference_needs_call) + Diag(BaseExpr->getExprLoc(), diag::err_member_reference_needs_call) << QualType(Fun, 0) << FixItHint::CreateInsertion(Loc, "()"); diff --git a/test/SemaCXX/PR7944.cpp b/test/SemaCXX/PR7944.cpp new file mode 100644 index 0000000000..fc52d101e8 --- /dev/null +++ b/test/SemaCXX/PR7944.cpp @@ -0,0 +1,12 @@ +// RUN: %clang_cc1 -fsyntax-only -verify %s +// PR7944 + +#define MACRO(x) x + +struct B { int f() { return 0; } }; +struct A { B* b() { return new B; } }; + +void g() { + A a; + MACRO(a.b->f()); // expected-error{{base of member reference has function type}} +}