Skip to content

Commit ba23002

Browse files
authored
Merge pull request swiftlang#35567 from rintaro/parse-rdar73159041
[Parse] Diagnose default argument for subscript in protocols
2 parents f205b20 + 8a58107 commit ba23002

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
@@ -791,6 +791,8 @@ ERROR(protocol_method_argument_init,none,
791791
"default argument not permitted in a protocol method", ())
792792
ERROR(protocol_init_argument_init,none,
793793
"default argument not permitted in a protocol initializer", ())
794+
ERROR(protocol_subscript_argument_init,none,
795+
"default argument not permitted in a protocol subscript", ())
794796
ERROR(tuple_type_multiple_labels,none,
795797
"tuple element cannot have two labels", ())
796798

lib/Parse/ParseDecl.cpp

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

74177417
diagnoseWhereClauseInGenericParamList(GenericParams);
74187418

7419+
// Protocol requirement arguments may not have default values.
7420+
if (Flags.contains(PD_InProtocol) && DefaultArgs.HasDefaultArgument) {
7421+
diagnose(SubscriptLoc, diag::protocol_subscript_argument_init);
7422+
return nullptr;
7423+
}
7424+
74197425
// Build an AST for the subscript declaration.
74207426
DeclName name = DeclName(Context, DeclBaseName::createSubscript(),
74217427
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)