@@ -19,7 +19,7 @@ public struct Identifier: Equatable, Hashable, Sendable {
19
19
20
20
/// `true` if the identifier is a dollar identifier.
21
21
public var isDollarIdentifier : Bool {
22
- raw. name . hasPrefix ( SyntaxText ( " $ " ) )
22
+ raw. original . hasPrefix ( SyntaxText ( " $ " ) ) && Int ( String ( syntaxText : raw . original ) . dropFirst ( ) ) != nil
23
23
}
24
24
25
25
@_spi ( RawSyntax)
@@ -49,17 +49,17 @@ public struct Identifier: Equatable, Hashable, Sendable {
49
49
}
50
50
}
51
51
52
- /// Create a new `Identifier` from given `staticString `.
52
+ /// Create a new `Identifier` from given `canonicalName `.
53
53
///
54
- /// - Precondition: `staticString ` is a canonical identifier i.e. doesn't
54
+ /// - Precondition: `canonicalName ` is a canonical identifier i.e. doesn't
55
55
/// use backticks and is not a dollar identifier with leading zeros.
56
- public init ( staticString : StaticString ) {
56
+ public init ( canonicalName : StaticString ) {
57
57
precondition (
58
- Self . isCanonicalRepresentation ( staticString ) ,
59
- " \( staticString ) is not a canonical identifier. "
58
+ Self . isCanonicalRepresentation ( canonicalName ) ,
59
+ " \( canonicalName ) is not a canonical identifier. "
60
60
)
61
61
62
- self . raw = RawIdentifier ( SyntaxText ( staticString ) )
62
+ self . raw = RawIdentifier ( SyntaxText ( canonicalName ) )
63
63
self . arena = nil
64
64
}
65
65
@@ -95,10 +95,13 @@ public struct Identifier: Equatable, Hashable, Sendable {
95
95
96
96
@_spi ( RawSyntax)
97
97
public struct RawIdentifier : Equatable , Hashable , Sendable {
98
+ fileprivate let original : SyntaxText
98
99
public let name : SyntaxText
99
100
100
101
@_spi ( RawSyntax)
101
102
fileprivate init ( _ rawText: SyntaxText ) {
103
+ self . original = rawText
104
+
102
105
guard Identifier . hasBackticks ( rawText) else {
103
106
self . name = rawText
104
107
return
0 commit comments