r194088 - Revert "Try to correct a mistyped "-" or ">" to "->" for some C++ cases."

Nico Weber thakis at chromium.org
Tue Nov 5 20:13:31 PST 2013


Should you add Richard's test case too?



On Tue, Nov 5, 2013 at 10:28 AM, Kaelyn Uhrain <rikka at google.com> wrote:

> 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 '>'?}}
> -}
> -}
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20131105/0f810748/attachment.html>


More information about the cfe-commits mailing list