diff options
| author | Nick Lewycky <nicholas@mxc.ca> | 2010-10-15 21:43:24 +0000 |
|---|---|---|
| committer | Nick Lewycky <nicholas@mxc.ca> | 2010-10-15 21:43:24 +0000 |
| commit | c60d6e7af03607c97d2900c1fde5589f6b099463 (patch) | |
| tree | bfebc1729683a5e9dfeb6874b9da18ee54f7d981 /clang | |
| parent | 8c2f519b8bd3b0f9cf3a0240988e50e251343e52 (diff) | |
| download | bcm5719-llvm-c60d6e7af03607c97d2900c1fde5589f6b099463.tar.gz bcm5719-llvm-c60d6e7af03607c97d2900c1fde5589f6b099463.zip | |
Report the location of the syntax error inside a macro. Fixes PR7944.
llvm-svn: 116624
Diffstat (limited to 'clang')
| -rw-r--r-- | clang/lib/Sema/SemaExpr.cpp | 2 | ||||
| -rw-r--r-- | clang/test/SemaCXX/PR7944.cpp | 12 |
2 files changed, 13 insertions, 1 deletions
diff --git a/clang/lib/Sema/SemaExpr.cpp b/clang/lib/Sema/SemaExpr.cpp index 10225b61387..031337d6fe2 100644 --- a/clang/lib/Sema/SemaExpr.cpp +++ b/clang/lib/Sema/SemaExpr.cpp @@ -3052,7 +3052,7 @@ Sema::LookupMemberExpr(LookupResult &R, Expr *&BaseExpr, ResultTy->getAs<PointerType>()->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/clang/test/SemaCXX/PR7944.cpp b/clang/test/SemaCXX/PR7944.cpp new file mode 100644 index 00000000000..fc52d101e87 --- /dev/null +++ b/clang/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}} +} |

