Skip to content

Commit 86d9e2c

Browse files
authored
Merge pull request #70201 from rintaro/astgen-syntaxtext
[ASTGen] Start using 'TokenSyntax.rawText'
2 parents aa60c42 + e1f0089 commit 86d9e2c

File tree

3 files changed

+15
-9
lines changed

3 files changed

+15
-9
lines changed

lib/ASTGen/Sources/ASTGen/Bridge.swift

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
import ASTBridging
1414
import BasicBridging
15-
import SwiftSyntax
15+
@_spi(RawSyntax) import SwiftSyntax
1616

1717
protocol BridgedNullable: ExpressibleByNilLiteral {
1818
associatedtype RawPtr
@@ -100,6 +100,12 @@ extension String {
100100
}
101101
}
102102

103+
extension SyntaxText {
104+
var bridged: BridgedStringRef {
105+
BridgedStringRef(data: self.baseAddress, count: self.count)
106+
}
107+
}
108+
103109
/// Allocate a copy of the given string as a null-terminated UTF-8 string.
104110
func allocateBridgedString(
105111
_ string: String

lib/ASTGen/Sources/ASTGen/Literals.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,16 @@ extension ASTGenVisitor {
1818
let openDelimiterOrQuoteLoc = (node.openingPounds ?? node.openingQuote).bridgedSourceLoc(in: self)
1919

2020
// FIXME: Handle interpolated strings.
21+
// FIXME: Avoid 'String' instantiation
2122
var segment = node.segments.first!.as(StringSegmentSyntax.self)!.content.text
2223
return segment.withBridgedString { bridgedSegment in
2324
return .createParsed(self.ctx, value: bridgedSegment, loc: openDelimiterOrQuoteLoc)
2425
}
2526
}
2627

2728
public func generate(integerLiteralExpr node: IntegerLiteralExprSyntax) -> BridgedIntegerLiteralExpr {
29+
// FIXME: Avoid 'String' instantiation
30+
// FIXME: Strip '_'.
2831
var segment = node.literal.text
2932
return segment.withBridgedString { bridgedSegment in
3033
return .createParsed(ctx, value: bridgedSegment, loc: node.literal.bridgedSourceLoc(in: self))

lib/ASTGen/Sources/ASTGen/Types.swift

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
import ASTBridging
1414
import BasicBridging
1515
import SwiftDiagnostics
16-
@_spi(ExperimentalLanguageFeatures) import SwiftSyntax
16+
@_spi(ExperimentalLanguageFeatures) @_spi(RawSyntax) import SwiftSyntax
1717

1818
extension EffectSpecifiersSyntax {
1919
var thrownError: TypeSyntax? {
@@ -203,14 +203,14 @@ extension ASTGenVisitor {
203203
public func generate(metatypeType node: MetatypeTypeSyntax) -> BridgedTypeRepr {
204204
let baseType = generate(type: node.baseType)
205205
let tyLoc = node.metatypeSpecifier.bridgedSourceLoc(in: self)
206-
if node.metatypeSpecifier.text == "Type" {
206+
if node.metatypeSpecifier.rawText == "Type" {
207207
return BridgedMetatypeTypeRepr.createParsed(
208208
self.ctx,
209209
base: baseType,
210210
typeKeywordLoc: tyLoc
211211
)
212212
} else {
213-
assert(node.metatypeSpecifier.text == "Protocol")
213+
assert(node.metatypeSpecifier.rawText == "Protocol")
214214
return BridgedProtocolTypeRepr.createParsed(
215215
self.ctx,
216216
base: baseType,
@@ -298,7 +298,7 @@ extension ASTGenVisitor {
298298
public func generate(someOrAnyType node: SomeOrAnyTypeSyntax) -> BridgedTypeRepr {
299299
let someOrAnyLoc = node.someOrAnySpecifier.bridgedSourceLoc(in: self)
300300
let baseTy = generate(type: node.constraint)
301-
if node.someOrAnySpecifier.text == "some" {
301+
if node.someOrAnySpecifier.rawText == "some" {
302302
return BridgedOpaqueReturnTypeRepr.createParsed(
303303
self.ctx,
304304
someKeywordLoc: someOrAnyLoc,
@@ -368,10 +368,7 @@ extension ASTGenVisitor {
368368
}
369369

370370
let nameSyntax = identType.name
371-
var name = nameSyntax.text
372-
let typeAttrKind = name.withBridgedString { bridgedName in
373-
BridgedTypeAttrKind(from: bridgedName)
374-
}
371+
let typeAttrKind = BridgedTypeAttrKind(from: nameSyntax.rawText.bridged)
375372
let atLoc = attribute.atSign.bridgedSourceLoc(in: self)
376373
let attrLoc = nameSyntax.bridgedSourceLoc(in: self)
377374
switch typeAttrKind {

0 commit comments

Comments
 (0)