Author: nicholas
Date: Fri Oct 15 16:43:24 2010
New Revision: 116624

URL: http://llvm.org/viewvc/llvm-project?rev=116624&view=rev
Log:
Report the location of the syntax error inside a macro. Fixes PR7944.

Added:
    cfe/trunk/test/SemaCXX/PR7944.cpp
Modified:
    cfe/trunk/lib/Sema/SemaExpr.cpp

Modified: cfe/trunk/lib/Sema/SemaExpr.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaExpr.cpp?rev=116624&r1=116623&r2=116624&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaExpr.cpp (original)
+++ cfe/trunk/lib/Sema/SemaExpr.cpp Fri Oct 15 16:43:24 2010
@@ -3052,7 +3052,7 @@
             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, "()");
 

Added: cfe/trunk/test/SemaCXX/PR7944.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/PR7944.cpp?rev=116624&view=auto
==============================================================================
--- cfe/trunk/test/SemaCXX/PR7944.cpp (added)
+++ cfe/trunk/test/SemaCXX/PR7944.cpp Fri Oct 15 16:43:24 2010
@@ -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}}
+}


_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to