r194088 - Revert "Try to correct a mistyped "-" or ">" to "->" for some C++ cases."
Kaelyn Uhrain
rikka at google.com
Tue Nov 5 10:28:21 PST 2013
Author: rikka
Date: Tue Nov 5 12:28:21 2013
New Revision: 194088
URL: http://llvm.org/viewvc/llvm-project?rev=194088&view=rev
Log:
Revert "Try to correct a mistyped "-" or ">" to "->" for some C++ cases."
Revert this patch until cases of rejected valid code (e.g. identifiers
that require ADL to be resolved properly) are fixed.
Modified:
cfe/trunk/include/clang/Basic/DiagnosticParseKinds.td
cfe/trunk/lib/Parse/ParseExpr.cpp
cfe/trunk/test/SemaCXX/member-expr.cpp
Modified: cfe/trunk/include/clang/Basic/DiagnosticParseKinds.td
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticParseKinds.td?rev=194088&r1=194087&r2=194088&view=diff
==============================================================================
--- cfe/trunk/include/clang/Basic/DiagnosticParseKinds.td (original)
+++ cfe/trunk/include/clang/Basic/DiagnosticParseKinds.td Tue Nov 5 12:28:21 2013
@@ -499,9 +499,6 @@ def ext_abstract_pack_declarator_parens
def err_function_is_not_record : Error<
"unexpected '%select{.|->}0' in function call; perhaps remove the "
"'%select{.|->}0'?">;
-def err_mistyped_arrow_in_member_access : Error<
- "use of undeclared identifier %0; did you mean '->' instead of "
- "'%select{-|>}1'?">;
// C++ derived classes
def err_dup_virtual : Error<"duplicate 'virtual' in base specifier">;
Modified: cfe/trunk/lib/Parse/ParseExpr.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Parse/ParseExpr.cpp?rev=194088&r1=194087&r2=194088&view=diff
==============================================================================
--- cfe/trunk/lib/Parse/ParseExpr.cpp (original)
+++ cfe/trunk/lib/Parse/ParseExpr.cpp Tue Nov 5 12:28:21 2013
@@ -166,46 +166,6 @@ ExprResult Parser::ParseAssignmentExpres
ExprResult LHS = ParseCastExpression(/*isUnaryExpression=*/false,
/*isAddressOfOperand=*/false,
isTypeCast);
-
- // Check for a possible typo of "-" or ">" instead of "->" after a
- // pointer to a struct or class, while recovery is still possible.
- if (LHS.isUsable() && (Tok.is(tok::minus) || Tok.is(tok::greater))) {
- QualType LHSType = LHS.get()->getType();
- const RecordType *Pointee =
- LHSType->isPointerType()
- ? LHSType->getPointeeType()->getAsStructureType()
- : 0;
- const RecordDecl *RD = Pointee ? Pointee->getDecl() : 0;
- const Token &NextTok = NextToken();
- if (RD && NextTok.is(tok::identifier)) {
- UnqualifiedId Name;
- CXXScopeSpec ScopeSpec;
- SourceLocation TemplateKWLoc;
- NoTypoCorrectionCCC NoTCValidator;
- Name.setIdentifier(NextTok.getIdentifierInfo(), NextTok.getLocation());
- Sema::SFINAETrap Trap(Actions);
- ExprResult Res =
- Actions.ActOnIdExpression(getCurScope(), ScopeSpec, TemplateKWLoc,
- Name, false, false, &NoTCValidator);
- if (Res.isInvalid()) {
- Token OpTok = Tok;
- Tok.setKind(tok::arrow);
- PP.EnableBacktrackAtThisPos();
- Res = ParsePostfixExpressionSuffix(LHS);
- if (Res.isUsable()) {
- LHS = Res;
- PP.CommitBacktrackedTokens();
- Diag(OpTok, diag::err_mistyped_arrow_in_member_access)
- << NextTok.getIdentifierInfo() << OpTok.is(tok::greater)
- << FixItHint::CreateReplacement(OpTok.getLocation(), "->");
- } else {
- Tok = OpTok;
- PP.Backtrack();
- }
- }
- }
- }
-
return ParseRHSOfBinaryExpression(LHS, prec::Assignment);
}
Modified: cfe/trunk/test/SemaCXX/member-expr.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/member-expr.cpp?rev=194088&r1=194087&r2=194088&view=diff
==============================================================================
--- cfe/trunk/test/SemaCXX/member-expr.cpp (original)
+++ cfe/trunk/test/SemaCXX/member-expr.cpp Tue Nov 5 12:28:21 2013
@@ -224,16 +224,3 @@ namespace pr16676 {
.i; // expected-error {{member reference type 'pr16676::S *' is a pointer; maybe you meant to use '->'}}
}
}
-
-namespace PR9054 {
-struct Foo {
- void bar(int);
- int fiz;
-};
-
-int test(struct Foo *foo) {
- foo-bar(5); // expected-error {{use of undeclared identifier 'bar'; did you mean '->' instead of '-'?}}
- foo>baz(4); // expected-error-re {{use of undeclared identifier 'baz'$}}
- return foo>fiz; // expected-error {{use of undeclared identifier 'fiz'; did you mean '->' instead of '>'?}}
-}
-}
More information about the cfe-commits
mailing list