13
13
extension RawSyntax {
14
14
/// A view into the `RawSyntax` that exposes functionality that's specific to tokens.
15
15
/// The token's payload must be a token, otherwise this traps.
16
- var tokenView : RawSyntaxTokenView ? {
16
+ @_spi ( RawSyntax)
17
+ public var tokenView : RawSyntaxTokenView ? {
17
18
switch raw. payload {
18
19
case . parsedToken, . materializedToken:
19
20
return RawSyntaxTokenView ( raw: self )
@@ -24,7 +25,8 @@ extension RawSyntax {
24
25
}
25
26
26
27
/// A view into `RawSyntax` that exposes functionality that only applies to tokens.
27
- struct RawSyntaxTokenView {
28
+ @_spi ( RawSyntax)
29
+ public struct RawSyntaxTokenView {
28
30
let raw : RawSyntax
29
31
30
32
fileprivate init ( raw: RawSyntax ) {
@@ -38,7 +40,8 @@ struct RawSyntaxTokenView {
38
40
}
39
41
40
42
/// Token kind of this node.
41
- var rawKind : RawTokenKind {
43
+ @_spi ( RawSyntax)
44
+ public var rawKind : RawTokenKind {
42
45
switch raw. rawData. payload {
43
46
case . materializedToken( let dat) :
44
47
return dat. tokenKind
@@ -50,7 +53,8 @@ struct RawSyntaxTokenView {
50
53
}
51
54
52
55
/// Token text of this node.
53
- var rawText : SyntaxText {
56
+ @_spi ( RawSyntax)
57
+ public var rawText : SyntaxText {
54
58
switch raw. rawData. payload {
55
59
case . parsedToken( let dat) :
56
60
return dat. tokenText
@@ -62,7 +66,8 @@ struct RawSyntaxTokenView {
62
66
}
63
67
64
68
/// The UTF-8 byte length of the leading trivia.
65
- var leadingTriviaByteLength : Int {
69
+ @_spi ( RawSyntax)
70
+ public var leadingTriviaByteLength : Int {
66
71
switch raw. rawData. payload {
67
72
case . parsedToken( let dat) :
68
73
return dat. leadingTriviaText. count
@@ -74,7 +79,8 @@ struct RawSyntaxTokenView {
74
79
}
75
80
76
81
/// The UTF-8 byte length of the trailing trivia.
77
- var trailingTriviaByteLength : Int {
82
+ @_spi ( RawSyntax)
83
+ public var trailingTriviaByteLength : Int {
78
84
switch raw. rawData. payload {
79
85
case . parsedToken( let dat) :
80
86
return dat. trailingTriviaText. count
@@ -85,7 +91,8 @@ struct RawSyntaxTokenView {
85
91
}
86
92
}
87
93
88
- var leadingRawTriviaPieces : [ RawTriviaPiece ] {
94
+ @_spi ( RawSyntax)
95
+ public var leadingRawTriviaPieces : [ RawTriviaPiece ] {
89
96
switch raw. rawData. payload {
90
97
case . parsedToken( let dat) :
91
98
return raw. arena. parseTrivia ( source: dat. leadingTriviaText, position: . leading)
@@ -96,7 +103,8 @@ struct RawSyntaxTokenView {
96
103
}
97
104
}
98
105
99
- var trailingRawTriviaPieces : [ RawTriviaPiece ] {
106
+ @_spi ( RawSyntax)
107
+ public var trailingRawTriviaPieces : [ RawTriviaPiece ] {
100
108
switch raw. rawData. payload {
101
109
case . parsedToken( let dat) :
102
110
return raw. arena. parseTrivia ( source: dat. trailingTriviaText, position: . trailing)
@@ -108,36 +116,42 @@ struct RawSyntaxTokenView {
108
116
}
109
117
110
118
/// Returns the leading `Trivia` length.
111
- var leadingTriviaLength : SourceLength {
119
+ @_spi ( RawSyntax)
120
+ public var leadingTriviaLength : SourceLength {
112
121
return SourceLength ( utf8Length: leadingTriviaByteLength)
113
122
}
114
123
115
124
/// Returns the trailing `Trivia` length.
116
- var trailingTriviaLength : SourceLength {
125
+ @_spi ( RawSyntax)
126
+ public var trailingTriviaLength : SourceLength {
117
127
return SourceLength ( utf8Length: trailingTriviaByteLength)
118
128
}
119
129
120
130
/// Returns the leading `Trivia`.
121
- func formLeadingTrivia( ) -> Trivia {
131
+ @_spi ( RawSyntax)
132
+ public func formLeadingTrivia( ) -> Trivia {
122
133
return Trivia ( pieces: leadingRawTriviaPieces. map ( { TriviaPiece ( raw: $0) } ) )
123
134
}
124
135
125
136
/// Returns the trailing `Trivia`.
126
137
/// - Returns: nil if called on a layout node.
127
- func formTrailingTrivia( ) -> Trivia {
138
+ @_spi ( RawSyntax)
139
+ public func formTrailingTrivia( ) -> Trivia {
128
140
return Trivia ( pieces: trailingRawTriviaPieces. map ( { TriviaPiece ( raw: $0) } ) )
129
141
}
130
142
131
143
/// Calls `body` with the token text. The token text value must not escape the closure.
132
- func withUnsafeTokenText< Result> (
144
+ @_spi ( RawSyntax)
145
+ public func withUnsafeTokenText< Result> (
133
146
_ body: ( SyntaxText ? ) -> Result
134
147
) -> Result {
135
148
body ( rawText)
136
149
}
137
150
138
151
/// Returns a `RawSyntax` node with the same source text but with the token
139
152
/// kind changed to `newValue`.
140
- func withKind( _ newValue: TokenKind ) -> RawSyntax {
153
+ @_spi ( RawSyntax)
154
+ public func withKind( _ newValue: TokenKind ) -> RawSyntax {
141
155
switch raw. rawData. payload {
142
156
case . parsedToken( _) :
143
157
// The wholeText can't be continuous anymore. Make a materialized token.
@@ -162,7 +176,8 @@ struct RawSyntaxTokenView {
162
176
163
177
/// The length of the token without leading or trailing trivia, assuming this
164
178
/// is a token node.
165
- var textByteLength : Int {
179
+ @_spi ( RawSyntax)
180
+ public var textByteLength : Int {
166
181
switch raw. rawData. payload {
167
182
case . parsedToken( let dat) :
168
183
return dat. tokenText. count
@@ -173,11 +188,13 @@ struct RawSyntaxTokenView {
173
188
}
174
189
}
175
190
176
- var contentLength : SourceLength {
191
+ @_spi ( RawSyntax)
192
+ public var contentLength : SourceLength {
177
193
SourceLength ( utf8Length: textByteLength)
178
194
}
179
195
180
- func formKind( ) -> TokenKind {
196
+ @_spi ( RawSyntax)
197
+ public func formKind( ) -> TokenKind {
181
198
switch raw. rawData. payload {
182
199
case . parsedToken( let dat) :
183
200
return TokenKind . fromRaw ( kind: dat. tokenKind, text: String ( syntaxText: dat. tokenText) )
@@ -188,7 +205,8 @@ struct RawSyntaxTokenView {
188
205
}
189
206
}
190
207
191
- var presence : SourcePresence {
208
+ @_spi ( RawSyntax)
209
+ public var presence : SourcePresence {
192
210
switch raw. rawData. payload {
193
211
case . parsedToken( let dat) :
194
212
return dat. presence
@@ -198,5 +216,4 @@ struct RawSyntaxTokenView {
198
216
preconditionFailure ( " 'presence' is a token-only property " )
199
217
}
200
218
}
201
-
202
219
}
0 commit comments