Revert "REVERTME: Temporarily make vars in refutable patterns a warning"

This reverts commit b96e06da44, making
vars in refutable patterns an error for Swift 3.

rdar://problem/23172698
This commit is contained in:
David Farler
2016-01-14 18:12:31 -08:00
parent 1d3916e6ad
commit a6f2530780
12 changed files with 48 additions and 54 deletions

View File

@@ -180,15 +180,15 @@ Parser::parseParameterClause(SourceLoc &leftParenLoc,
param.LetVarInOutLoc = consumeToken();
param.SpecifierKind = ParsedParameter::InOut;
} else if (Tok.is(tok::kw_let)) {
diagnose(Tok.getLoc(), diag::var_not_allowed_in_pattern,
diagnose(Tok.getLoc(), diag::let_on_param_is_redundant,
Tok.is(tok::kw_let)).fixItRemove(Tok.getLoc());
param.LetVarInOutLoc = consumeToken();
param.SpecifierKind = ParsedParameter::Let;
} else if (Tok.is(tok::kw_var)) {
diagnose(Tok.getLoc(), diag::var_not_allowed_in_pattern,
Tok.is(tok::kw_let)).fixItRemove(Tok.getLoc());
diagnose(Tok.getLoc(), diag::var_not_allowed_in_pattern)
.fixItRemove(Tok.getLoc());
param.LetVarInOutLoc = consumeToken();
param.SpecifierKind = ParsedParameter::Var;
param.SpecifierKind = ParsedParameter::Let;
}
// Redundant specifiers are fairly common, recognize, reject, and recover
@@ -773,8 +773,8 @@ ParserResult<Pattern> Parser::parsePattern() {
} else {
// In an always immutable context, `var` is not allowed.
if (alwaysImmutable)
diagnose(varLoc, diag::var_not_allowed_in_pattern, isLetKeyword)
.fixItRemove(varLoc);
diagnose(varLoc, diag::var_not_allowed_in_pattern)
.fixItRemove(varLoc);
}
// In our recursive parse, remember that we're in a var/let pattern.
@@ -978,7 +978,7 @@ ParserResult<Pattern> Parser::parseMatchingPatternAsLetOrVar(bool isLet,
diagnose(varLoc, diag::let_pattern_in_immutable_context);
if (!isLet && InVarOrLetPattern == IVOLP_AlwaysImmutable)
diagnose(varLoc, diag::var_not_allowed_in_pattern, isLet)
diagnose(varLoc, diag::var_not_allowed_in_pattern)
.fixItReplace(varLoc, "let");
// In our recursive parse, remember that we're in a var/let pattern.