summaryrefslogtreecommitdiffstats
path: root/clang/lib/Parse/ParseExpr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/lib/Parse/ParseExpr.cpp')
-rw-r--r--clang/lib/Parse/ParseExpr.cpp40
1 files changed, 0 insertions, 40 deletions
diff --git a/clang/lib/Parse/ParseExpr.cpp b/clang/lib/Parse/ParseExpr.cpp
index 8ef055f9c74..e9cb827bd99 100644
--- a/clang/lib/Parse/ParseExpr.cpp
+++ b/clang/lib/Parse/ParseExpr.cpp
@@ -166,46 +166,6 @@ ExprResult Parser::ParseAssignmentExpression(TypeCastState isTypeCast) {
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);
}
OpenPOWER on IntegriCloud