Skip to content

Commit dc6ead7

Browse files
author
Harlan Haskins
authored
Merge pull request #21410 from harlanhaskins/keeping-the-all-consuming-void-at-bay
[Sema] Don't print __consuming when suggesting protocol requirement stubs
2 parents 60e54db + 62f9edf commit dc6ead7

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

lib/Sema/TypeCheckProtocol.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2624,6 +2624,12 @@ printRequirementStub(ValueDecl *Requirement, DeclContext *Adopter,
26242624
Options.SkipAttributes = true;
26252625
Options.FunctionDefinitions = true;
26262626
Options.PrintAccessorBodiesInProtocols = true;
2627+
2628+
// FIXME: Once we support move-only types, remove this if the
2629+
// conforming type is move-only. Until then, don't suggest printing
2630+
// __consuming on a protocol requirement.
2631+
Options.ExcludeAttrList.push_back(DAK_Consuming);
2632+
26272633
Options.FunctionBody = [&](const ValueDecl *VD, ASTPrinter &Printer) {
26282634
Printer << " {";
26292635
Printer.printNewline();

test/decl/protocol/conforms/fixit_stub.swift

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,3 +198,11 @@ protocol ProtocolHasSubscriptFunction {
198198
class ProtocolHasSubscriptFunctionAdopter: ProtocolHasSubscriptFunction { // expected-error{{type 'ProtocolHasSubscriptFunctionAdopter' does not conform to protocol 'ProtocolHasSubscriptFunction'}}
199199

200200
}
201+
202+
protocol ProtocolHasConsumingRequirement {
203+
__consuming func foo() // expected-note {{protocol requires function 'foo()' with type '() -> ()'; do you want to add a stub?}} {{81-81=\n func foo() {\n <#code#>\n \}\n}}
204+
}
205+
206+
struct ProtocolHasConsumingRequirementAdopter: ProtocolHasConsumingRequirement { // expected-error {{type 'ProtocolHasConsumingRequirementAdopter' does not conform to protocol 'ProtocolHasConsumingRequirement'}}
207+
208+
}

0 commit comments

Comments
 (0)