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

Kaelyn Uhrain rikka at google.com
Tue Nov 5 20:47:28 PST 2013


This commit was reverting an earlier commit; nothing was being added. But
yes, Richard's test case would be part of the revised version once I get
the patch working properly.


On Tue, Nov 5, 2013 at 8:13 PM, Nico Weber <thakis at chromium.org> wrote:

> 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/a05ec5fd/attachment.html>


More information about the cfe-commits mailing list