@@ -5128,22 +5128,21 @@ ParserStatus Parser::parseDeclModifierList(DeclAttributes &Attributes,
5128
5128
/// '@' attribute
5129
5129
/// '@' attribute attribute-list-clause
5130
5130
/// \endverbatim
5131
- ParserStatus
5132
- Parser::parseTypeAttributeListPresent(ParamDecl::Specifier &Specifier,
5133
- SourceLoc &SpecifierLoc,
5134
- SourceLoc &IsolatedLoc,
5135
- SourceLoc &ConstLoc,
5136
- TypeAttributes &Attributes) {
5131
+ ParserStatus Parser::parseTypeAttributeListPresent(
5132
+ ParamDecl::Specifier &Specifier, SourceLoc &SpecifierLoc,
5133
+ SourceLoc &IsolatedLoc, SourceLoc &ConstLoc, SourceLoc &ResultDependsOnLoc,
5134
+ TypeAttributes &Attributes) {
5137
5135
PatternBindingInitializer *initContext = nullptr;
5138
5136
Specifier = ParamDecl::Specifier::Default;
5139
- while (Tok.is(tok::kw_inout)
5140
- || (canHaveParameterSpecifierContextualKeyword()
5141
- && (Tok.isContextualKeyword("__shared")
5142
- || Tok.isContextualKeyword("__owned")
5143
- || Tok.isContextualKeyword("isolated")
5144
- || Tok.isContextualKeyword("consuming")
5145
- || Tok.isContextualKeyword("borrowing")
5146
- || Tok.isContextualKeyword("_const")))) {
5137
+ while (Tok.is(tok::kw_inout) ||
5138
+ (canHaveParameterSpecifierContextualKeyword() &&
5139
+ (Tok.isContextualKeyword("__shared") ||
5140
+ Tok.isContextualKeyword("__owned") ||
5141
+ Tok.isContextualKeyword("isolated") ||
5142
+ Tok.isContextualKeyword("consuming") ||
5143
+ Tok.isContextualKeyword("borrowing") ||
5144
+ Tok.isContextualKeyword("_const") ||
5145
+ Tok.isContextualKeyword("_resultDependsOn")))) {
5147
5146
5148
5147
if (Tok.isContextualKeyword("isolated")) {
5149
5148
if (IsolatedLoc.isValid()) {
@@ -5160,6 +5159,15 @@ Parser::parseTypeAttributeListPresent(ParamDecl::Specifier &Specifier,
5160
5159
continue;
5161
5160
}
5162
5161
5162
+ if (Tok.isContextualKeyword("_resultDependsOn")) {
5163
+ if (!Context.LangOpts.hasFeature(Feature::NonEscapableTypes)) {
5164
+ diagnose(Tok, diag::requires_non_escapable_types, "resultDependsOn",
5165
+ false);
5166
+ }
5167
+ ResultDependsOnLoc = consumeToken();
5168
+ continue;
5169
+ }
5170
+
5163
5171
if (SpecifierLoc.isValid()) {
5164
5172
diagnose(Tok, diag::parameter_specifier_repeated)
5165
5173
.fixItRemove(SpecifierLoc);
0 commit comments