Skip to content

Commit 113ad82

Browse files
committed
[stdlib] Use broader fast-path for Unicode.Scalar.Properties.canonicalCombiningClass
1 parent c4f0d68 commit 113ad82

File tree

2 files changed

+4
-12
lines changed

2 files changed

+4
-12
lines changed

stdlib/public/core/StringGraphemeBreaking.swift

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -790,10 +790,8 @@ extension _GraphemeBreakingState {
790790
// we continue being in one and may check if this extend is a Virama.
791791
if self.isInIndicSequence || scalar1._isLinkingConsonant {
792792
if y == .extend {
793-
let extendNormData = Unicode._NormData(scalar2, fastUpperbound: 0x300)
794-
795793
// If our extend's CCC is 0, then this rule does not apply.
796-
guard extendNormData.ccc != 0 else {
794+
guard scalar2.properties.canonicalCombiningClass != .notReordered else {
797795
return false
798796
}
799797
}
@@ -931,12 +929,9 @@ extension _StringGuts {
931929
// GB9c
932930
switch (x, scalar2._isLinkingConsonant) {
933931
case (.extend, true):
934-
let extendNormData = Unicode._NormData(scalar1, fastUpperbound: 0x300)
935-
936-
guard extendNormData.ccc != 0 else {
932+
guard scalar1.properties.canonicalCombiningClass != .notReordered else {
937933
return true
938934
}
939-
940935
return !checkIfInIndicSequence(at: index, with: previousScalar)
941936

942937
case (.zwj, true):
@@ -1055,9 +1050,7 @@ extension _StringGuts {
10551050

10561051
switch (gbp, scalar._isLinkingConsonant) {
10571052
case (.extend, false):
1058-
let extendNormData = Unicode._NormData(scalar, fastUpperbound: 0x300)
1059-
1060-
guard extendNormData.ccc != 0 else {
1053+
guard scalar.properties.canonicalCombiningClass != .notReordered else {
10611054
return false
10621055
}
10631056

stdlib/public/core/UnicodeScalarProperties.swift

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1427,8 +1427,7 @@ extension Unicode.Scalar.Properties {
14271427
/// This property corresponds to the "Canonical_Combining_Class" property in
14281428
/// the [Unicode Standard](http://www.unicode.org/versions/latest/).
14291429
public var canonicalCombiningClass: Unicode.CanonicalCombiningClass {
1430-
let normData = Unicode._NormData(_scalar)
1431-
return Unicode.CanonicalCombiningClass(rawValue: normData.ccc)
1430+
Unicode._NormData(_scalar, fastUpperbound: 0x300).canonicalCombiningClass
14321431
}
14331432
}
14341433

0 commit comments

Comments
 (0)