| Index: src/parsing/parser-base.h | 
| diff --git a/src/parsing/parser-base.h b/src/parsing/parser-base.h | 
| index 484d4b977e04c66bd26d3b42d860e00195fd6802..89b5b10da965e0068fbfc66c42a30c2c4fd3e4ba 100644 | 
| --- a/src/parsing/parser-base.h | 
| +++ b/src/parsing/parser-base.h | 
| @@ -2228,6 +2228,17 @@ ParserBase<Traits>::ParseTailCallExpression(ExpressionClassifier* classifier, | 
| CheckNoTailCallExpressions(classifier, CHECK_OK); | 
|  | 
| Scanner::Location loc(pos, scanner()->location().end_pos); | 
| +  if (!expression->IsCall()) { | 
| +    Scanner::Location sub_loc(sub_expression_pos, loc.end_pos); | 
| +    ReportMessageAt(sub_loc, MessageTemplate::kUnexpectedInsideTailCall); | 
| +    *ok = false; | 
| +    return Traits::EmptyExpression(); | 
| +  } | 
| +  if (!is_strict(language_mode())) { | 
| +    ReportMessageAt(loc, MessageTemplate::kUnexpectedSloppyTailCall); | 
| +    *ok = false; | 
| +    return Traits::EmptyExpression(); | 
| +  } | 
| ReturnExprContext return_expr_context = | 
| function_state_->return_expr_context(); | 
| if (return_expr_context != ReturnExprContext::kInsideValidReturnStatement) { | 
| @@ -2250,12 +2261,6 @@ ParserBase<Traits>::ParseTailCallExpression(ExpressionClassifier* classifier, | 
| *ok = false; | 
| return Traits::EmptyExpression(); | 
| } | 
| -  if (!expression->IsCall()) { | 
| -    Scanner::Location sub_loc(sub_expression_pos, loc.end_pos); | 
| -    ReportMessageAt(sub_loc, MessageTemplate::kUnexpectedInsideTailCall); | 
| -    *ok = false; | 
| -    return Traits::EmptyExpression(); | 
| -  } | 
| classifier->RecordTailCallExpressionError( | 
| loc, MessageTemplate::kUnexpectedTailCall); | 
| function_state_->AddExpressionInTailPosition(expression, loc); | 
|  |