Skip to content
This repository was archived by the owner on Nov 1, 2021. It is now read-only.

Commit c14e6dd

Browse files
author
Kaelyn Uhrain
committed
A few small cleanups to r187504. Thanks to dblaikie for the assist.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@187521 91177308-0d34-0410-b5e6-96231b3b80d8
1 parent 650c605 commit c14e6dd

File tree

3 files changed

+21
-8
lines changed

3 files changed

+21
-8
lines changed

lib/Sema/SemaExprCXX.cpp

+7-8
Original file line numberDiff line numberDiff line change
@@ -5102,14 +5102,13 @@ Sema::ActOnStartCXXMemberReference(Scope *S, Expr *Base, SourceLocation OpLoc,
51025102
<< FixItHint::CreateReplacement(OpLoc, ".");
51035103
OpKind = tok::period;
51045104
break;
5105-
} else {
5106-
Diag(OpLoc, diag::err_typecheck_member_reference_arrow)
5107-
<< BaseType << Base->getSourceRange();
5108-
CallExpr *CE = dyn_cast<CallExpr>(Base);
5109-
if (Decl *CD = (CE ? CE->getCalleeDecl() : 0)) {
5110-
Diag(CD->getLocStart(),
5111-
diag::note_member_reference_arrow_from_operator_arrow);
5112-
}
5105+
}
5106+
Diag(OpLoc, diag::err_typecheck_member_reference_arrow)
5107+
<< BaseType << Base->getSourceRange();
5108+
CallExpr *CE = dyn_cast<CallExpr>(Base);
5109+
if (Decl *CD = (CE ? CE->getCalleeDecl() : 0)) {
5110+
Diag(CD->getLocStart(),
5111+
diag::note_member_reference_arrow_from_operator_arrow);
51135112
}
51145113
}
51155114
return ExprError();

test/FixIt/fixit.cpp

+12
Original file line numberDiff line numberDiff line change
@@ -326,3 +326,15 @@ namespace PR5898 {
326326
return foo->(x) == y; // expected-error {{unexpected '->' in function call; perhaps remove the '->'?}}
327327
}
328328
}
329+
330+
namespace PR15045 {
331+
class Cl0 {
332+
public:
333+
int a;
334+
};
335+
336+
int f() {
337+
Cl0 c;
338+
return c->a; // expected-error {{member reference type 'PR15045::Cl0' is not a pointer; maybe you meant to use '.'?}}
339+
}
340+
}

test/SemaCXX/member-expr.cpp

+2
Original file line numberDiff line numberDiff line change
@@ -79,9 +79,11 @@ namespace test5 {
7979
};
8080

8181
void test0(int x) {
82+
x.A::foo<int>(); // expected-error {{'int' is not a structure or union}}
8283
}
8384

8485
void test1(A *x) {
86+
x.A::foo<int>(); // expected-error {{'test5::A *' is a pointer}}
8587
}
8688

8789
void test2(A &x) {

0 commit comments

Comments
 (0)