Skip to content

Commit 3693d92

Browse files
authored
Merge pull request #35592 from rintaro/5.4-parse-rdar73159041
[5.4][Parse] Diagnose default argument for subscript in protocols
2 parents 9e9b4f5 + 26c2f86 commit 3693d92

File tree

3 files changed

+9
-0
lines changed

3 files changed

+9
-0
lines changed

include/swift/AST/DiagnosticsParse.def

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -790,6 +790,8 @@ ERROR(protocol_method_argument_init,none,
790790
"default argument not permitted in a protocol method", ())
791791
ERROR(protocol_init_argument_init,none,
792792
"default argument not permitted in a protocol initializer", ())
793+
ERROR(protocol_subscript_argument_init,none,
794+
"default argument not permitted in a protocol subscript", ())
793795
ERROR(tuple_type_multiple_labels,none,
794796
"tuple element cannot have two labels", ())
795797

lib/Parse/ParseDecl.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7366,6 +7366,12 @@ Parser::parseDeclSubscript(SourceLoc StaticLoc,
73667366

73677367
diagnoseWhereClauseInGenericParamList(GenericParams);
73687368

7369+
// Protocol requirement arguments may not have default values.
7370+
if (Flags.contains(PD_InProtocol) && DefaultArgs.HasDefaultArgument) {
7371+
diagnose(SubscriptLoc, diag::protocol_subscript_argument_init);
7372+
return nullptr;
7373+
}
7374+
73697375
// Build an AST for the subscript declaration.
73707376
DeclName name = DeclName(Context, DeclBaseName::createSubscript(),
73717377
argumentNames);

test/decl/protocol/protocol_with_default_args.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,5 @@ struct X : P {
1111

1212
protocol Q {
1313
init(truth: Bool = false) // expected-error{{default argument not permitted in a protocol initializer}}
14+
subscript(x: Int, default: Int = 0) -> Self { get } // expected-error {{default argument not permitted in a protocol subscript}}
1415
}

0 commit comments

Comments
 (0)