Skip to content

Commit c12d067

Browse files
committed
[embedded] Add Unicode.Scalar to embedded stdlib
1 parent c80fbae commit c12d067

File tree

4 files changed

+24
-60
lines changed

4 files changed

+24
-60
lines changed

stdlib/public/core/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ split_embedded_sources(
107107
EMBEDDED ManagedBuffer.swift
108108
NORMAL Map.swift
109109
EMBEDDED MemoryLayout.swift
110-
NORMAL UnicodeScalar.swift # ORDER DEPENDENCY: Must precede Mirrors.swift
110+
EMBEDDED UnicodeScalar.swift # ORDER DEPENDENCY: Must precede Mirrors.swift
111111
NORMAL Mirrors.swift
112112
EMBEDDED Misc.swift
113113
EMBEDDED MutableCollection.swift

stdlib/public/core/EmbeddedStubs.swift

Lines changed: 13 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -149,78 +149,33 @@ extension String {
149149
public init<T: BinaryInteger>(_ value: T, radix: Int = 10, uppercase: Bool = false) { fatalError() }
150150
}
151151

152-
/// Unicode.Scalar
152+
/// Unicode
153153

154154
public enum Unicode {}
155155

156-
extension Unicode {
157-
public struct Scalar: Sendable {
158-
internal var _value: UInt32
159-
internal init(_value: UInt32) {
160-
self._value = _value
161-
}
162-
}
163-
}
164-
165-
extension Unicode.Scalar : _ExpressibleByBuiltinUnicodeScalarLiteral, ExpressibleByUnicodeScalarLiteral {
166-
public var value: UInt32 { return _value }
167-
public init(_builtinUnicodeScalarLiteral value: Builtin.Int32) {
168-
self._value = UInt32(value)
169-
}
170-
public init(unicodeScalarLiteral value: Unicode.Scalar) {
171-
self = value
172-
}
173-
public init?(_ v: UInt32) {
174-
if (v < 0xD800 || v > 0xDFFF) && v <= 0x10FFFF {
175-
self._value = v
176-
return
177-
}
178-
return nil
179-
}
180-
public init?(_ v: UInt16) {
181-
self.init(UInt32(v))
182-
}
183-
public init(_ v: UInt8) {
184-
self._value = UInt32(v)
185-
}
186-
public init(_ v: Unicode.Scalar) {
187-
self = v
188-
}
189-
@_unavailableInEmbedded
190-
public func escaped(asASCII forceASCII: Bool) -> String { fatalError() }
191-
@_unavailableInEmbedded
192-
internal func _escaped(asASCII forceASCII: Bool) -> String? { fatalError() }
193-
public var isASCII: Bool {
194-
return value <= 127
195-
}
196-
internal var _isPrintableASCII: Bool {
197-
return (self >= Unicode.Scalar(0o040) && self <= Unicode.Scalar(0o176))
198-
}
199-
}
200-
201-
extension Unicode.Scalar: Equatable {
202-
public static func == (lhs: Unicode.Scalar, rhs: Unicode.Scalar) -> Bool {
203-
return lhs.value == rhs.value
204-
}
205-
}
206-
207-
extension Unicode.Scalar: Comparable {
208-
public static func < (lhs: Unicode.Scalar, rhs: Unicode.Scalar) -> Bool {
209-
return lhs.value < rhs.value
210-
}
211-
}
212-
213156
public typealias UTF8 = Unicode.UTF8
157+
public typealias UTF16 = Unicode.UTF16
214158

215159
extension Unicode {
216160
public enum UTF8 {
217161
}
162+
public enum UTF16 {
163+
}
218164
}
219165

220166
extension Unicode.UTF8 {
221167
public typealias CodeUnit = UInt8
222168
}
223169

170+
extension Unicode.UTF16 {
171+
public typealias CodeUnit = UInt16
172+
}
173+
174+
@_unavailableInEmbedded
175+
extension String {
176+
public init(_ value: Unicode.Scalar) { fatalError() }
177+
}
178+
224179
/// Codable
225180

226181
@_unavailableInEmbedded

stdlib/public/core/UnicodeScalar.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -295,7 +295,7 @@ extension Unicode.Scalar: CustomStringConvertible, CustomDebugStringConvertible
295295
}
296296
}
297297

298-
@_unavailableInEmbedded
298+
#if !$Embedded
299299
extension Unicode.Scalar: LosslessStringConvertible {
300300
@inlinable
301301
public init?(_ description: String) {
@@ -306,6 +306,7 @@ extension Unicode.Scalar: LosslessStringConvertible {
306306
self = v
307307
}
308308
}
309+
#endif
309310

310311
extension Unicode.Scalar: Hashable {
311312
/// Hashes the essential components of this value by feeding them into the
@@ -411,6 +412,8 @@ extension Unicode.Scalar {
411412
}
412413
}
413414

415+
#if !$Embedded
416+
414417
extension Unicode.Scalar.UTF16View: RandomAccessCollection {
415418

416419
public typealias Indices = Range<Int>
@@ -540,3 +543,4 @@ extension Unicode.Scalar {
540543
}
541544
}
542545

546+
#endif

test/embedded/stdlib-basic.swift

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,11 @@ public func staticstring() -> StaticString {
2424
return "hello"
2525
}
2626

27+
public func unicodescalars() {
28+
let a = UInt8(ascii: "-")
29+
let b = Unicode.Scalar("-").value
30+
}
31+
2732
public func checks(n: Int) {
2833
precondition(n > 0)
2934
precondition(n > 0, "message")

0 commit comments

Comments
 (0)