Skip to content

Commit d1d30e4

Browse files
authored
Merge pull request #1372 from jckarter/se-0377-method-modifiers
Add declaration-level `consuming` and `borrowing` modifiers from SE-0377
2 parents 5d79729 + ac636c5 commit d1d30e4

File tree

7 files changed

+66
-8
lines changed

7 files changed

+66
-8
lines changed

CodeGeneration/Sources/SyntaxSupport/AttributeKinds.swift

Lines changed: 33 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1881,15 +1881,15 @@ public let DECL_MODIFIER_KINDS: [Attribute] = [
18811881
),
18821882
ContextualSimpleDeclAttribute(
18831883
name: "__consuming",
1884-
className: "Consuming",
1884+
className: "LegacyConsuming",
18851885
options:
18861886
onFunc,
18871887
onAccessor,
18881888
declModifier,
18891889
userInaccessible,
18901890
notSerialized,
1891-
ABIStableToAdd,
1892-
ABIStableToRemove,
1891+
ABIBreakingToAdd,
1892+
ABIBreakingToRemove,
18931893
APIStableToAdd,
18941894
APIStableToRemove,
18951895
code: 40
@@ -2159,6 +2159,36 @@ public let DECL_MODIFIER_KINDS: [Attribute] = [
21592159
APIBreakingToRemove,
21602160
code: 130
21612161
),
2162+
ContextualSimpleDeclAttribute(
2163+
name: "consuming",
2164+
className: "Consuming",
2165+
options:
2166+
declModifier,
2167+
onFunc,
2168+
onAccessor,
2169+
userInaccessible,
2170+
notSerialized,
2171+
ABIBreakingToAdd,
2172+
ABIBreakingToRemove,
2173+
APIStableToAdd,
2174+
APIStableToRemove,
2175+
code: 140
2176+
),
2177+
ContextualSimpleDeclAttribute(
2178+
name: "borrowing",
2179+
className: "Borrowing",
2180+
options:
2181+
declModifier,
2182+
onFunc,
2183+
onAccessor,
2184+
userInaccessible,
2185+
notSerialized,
2186+
ABIBreakingToAdd,
2187+
ABIBreakingToRemove,
2188+
APIStableToAdd,
2189+
APIStableToRemove,
2190+
code: 141
2191+
),
21622192
]
21632193

21642194
public let DEPRECATED_MODIFIER_KINDS: [Attribute] = [

CodeGeneration/Sources/SyntaxSupport/gyb_generated/DeclNodes.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,7 @@ public let DECL_NODES: [Node] = [
226226
kind: "Syntax",
227227
children: [
228228
Child(name: "Name",
229-
kind: .token(choices: [.keyword(text: "class"), .keyword(text: "convenience"), .keyword(text: "dynamic"), .keyword(text: "final"), .keyword(text: "infix"), .keyword(text: "lazy"), .keyword(text: "optional"), .keyword(text: "override"), .keyword(text: "postfix"), .keyword(text: "prefix"), .keyword(text: "required"), .keyword(text: "static"), .keyword(text: "unowned"), .keyword(text: "weak"), .keyword(text: "private"), .keyword(text: "fileprivate"), .keyword(text: "internal"), .keyword(text: "public"), .keyword(text: "open"), .keyword(text: "mutating"), .keyword(text: "nonmutating"), .keyword(text: "indirect"), .keyword(text: "__consuming"), .keyword(text: "actor"), .keyword(text: "async"), .keyword(text: "distributed"), .keyword(text: "isolated"), .keyword(text: "nonisolated"), .keyword(text: "_const"), .keyword(text: "_local"), .keyword(text: "package")]),
229+
kind: .token(choices: [.keyword(text: "class"), .keyword(text: "convenience"), .keyword(text: "dynamic"), .keyword(text: "final"), .keyword(text: "infix"), .keyword(text: "lazy"), .keyword(text: "optional"), .keyword(text: "override"), .keyword(text: "postfix"), .keyword(text: "prefix"), .keyword(text: "required"), .keyword(text: "static"), .keyword(text: "unowned"), .keyword(text: "weak"), .keyword(text: "private"), .keyword(text: "fileprivate"), .keyword(text: "internal"), .keyword(text: "public"), .keyword(text: "open"), .keyword(text: "mutating"), .keyword(text: "nonmutating"), .keyword(text: "indirect"), .keyword(text: "__consuming"), .keyword(text: "borrowing"), .keyword(text: "consuming"), .keyword(text: "actor"), .keyword(text: "async"), .keyword(text: "distributed"), .keyword(text: "isolated"), .keyword(text: "nonisolated"), .keyword(text: "_const"), .keyword(text: "_local"), .keyword(text: "package")]),
230230
classification: "Attribute"),
231231
Child(name: "Detail",
232232
kind: .node(kind: "DeclModifierDetail"),

Sources/SwiftParser/Declarations.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ extension DeclarationModifier {
1616
var canHaveParenthesizedArgument: Bool {
1717
switch self {
1818
case .__consuming, .__setter_access, ._const, ._local, .async,
19-
.class, .convenience, .distributed, .dynamic, .final,
20-
.indirect, .infix, .isolated, .lazy, .mutating, .nonisolated,
19+
.borrowing, .class, .consuming, .convenience, .distributed, .dynamic,
20+
.final, .indirect, .infix, .isolated, .lazy, .mutating, .nonisolated,
2121
.nonmutating, .optional, .override, .postfix, .prefix, .reasync,
2222
.required, .rethrows, .static, .weak:
2323
return false

Sources/SwiftParser/Modifiers.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,8 @@ extension Parser {
6868
(.prefix, let handle)?,
6969
(.postfix, let handle)?,
7070
(.__consuming, let handle)?,
71+
(.borrowing, let handle)?,
72+
(.consuming, let handle)?,
7173
(.mutating, let handle)?,
7274
(.nonmutating, let handle)?,
7375
(.convenience, let handle)?,

Sources/SwiftParser/generated/DeclarationModifier.swift

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@ enum DeclarationModifier: TokenSpecSet {
4848
case distributed
4949
case _const
5050
case _local
51+
case consuming
52+
case borrowing
5153

5254
init?(lexeme: Lexer.Lexeme) {
5355
switch PrepareForKeywordMatch(lexeme) {
@@ -117,6 +119,10 @@ enum DeclarationModifier: TokenSpecSet {
117119
self = ._const
118120
case TokenSpec(._local):
119121
self = ._local
122+
case TokenSpec(.consuming):
123+
self = .consuming
124+
case TokenSpec(.borrowing):
125+
self = .borrowing
120126
default:
121127
return nil
122128
}
@@ -190,6 +196,10 @@ enum DeclarationModifier: TokenSpecSet {
190196
return .keyword(._const)
191197
case ._local:
192198
return .keyword(._local)
199+
case .consuming:
200+
return .keyword(.consuming)
201+
case .borrowing:
202+
return .keyword(.borrowing)
193203
}
194204
}
195205
}

gyb_syntax_support/AttributeKinds.py

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -785,12 +785,12 @@ def __init__(self, name, swift_name=None):
785785
DeclModifier,
786786
ABIStableToAdd, ABIStableToRemove, APIStableToAdd, APIStableToRemove,
787787
code=25),
788-
ContextualSimpleDeclAttribute('__consuming', 'Consuming',
788+
ContextualSimpleDeclAttribute('__consuming', 'LegacyConsuming',
789789
OnFunc, OnAccessor,
790790
DeclModifier,
791791
UserInaccessible,
792792
NotSerialized,
793-
ABIStableToAdd, ABIStableToRemove, APIStableToAdd, APIStableToRemove,
793+
ABIBreakingToAdd, ABIBreakingToRemove, APIStableToAdd, APIStableToRemove,
794794
code=40),
795795
ContextualSimpleDeclAttribute('mutating', 'Mutating',
796796
OnFunc, OnAccessor,
@@ -897,6 +897,21 @@ def __init__(self, name, swift_name=None):
897897
ABIBreakingToAdd, ABIBreakingToRemove,
898898
APIBreakingToAdd, APIBreakingToRemove,
899899
code=130),
900+
901+
ContextualSimpleDeclAttribute('consuming', 'Consuming',
902+
OnFunc, OnAccessor,
903+
DeclModifier,
904+
UserInaccessible,
905+
NotSerialized,
906+
ABIBreakingToAdd, ABIBreakingToRemove, APIStableToAdd, APIStableToRemove,
907+
code=140),
908+
ContextualSimpleDeclAttribute('borrowing', 'Borrowing',
909+
OnFunc, OnAccessor,
910+
DeclModifier,
911+
UserInaccessible,
912+
NotSerialized,
913+
ABIBreakingToAdd, ABIBreakingToRemove, APIStableToAdd, APIStableToRemove,
914+
code=141),
900915
]
901916

902917
DEPRECATED_MODIFIER_KINDS = [

gyb_syntax_support/DeclNodes.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,7 @@
161161
'KeywordToken|required', 'KeywordToken|static', 'KeywordToken|unowned', 'KeywordToken|weak', 'KeywordToken|private',
162162
'KeywordToken|fileprivate', 'KeywordToken|internal', 'KeywordToken|public', 'KeywordToken|open',
163163
'KeywordToken|mutating', 'KeywordToken|nonmutating', 'KeywordToken|indirect', 'KeywordToken|__consuming',
164+
'KeywordToken|borrowing', 'KeywordToken|consuming',
164165
'KeywordToken|actor', 'KeywordToken|async', 'KeywordToken|distributed', 'KeywordToken|isolated',
165166
'KeywordToken|nonisolated', 'KeywordToken|_const', 'KeywordToken|_local', 'KeywordToken|package'
166167
]),

0 commit comments

Comments
 (0)