(EDIT: Never mind the attached project, the bug is easily demonstrated by the example in the forum post. I've now deleted the attachment to prevent unnecessary confusion.)
In short, if compiling with optimizations enabled, the following Character initializer will not trap (as it should) when the given string is invalid (ie the string does not hold exactly one extended grapheme cluster).
/// Creates a character from a single-character string.
///
/// The following example creates a new character from the uppercase version
/// of a string that only holds one character.
///
/// let a = "a"
/// let capitalA = Character(a.uppercased())
///
/// - Parameter s: The single-character string to convert to a `Character`
/// instance. `s` must contain exactly one extended grapheme cluster.
@inlinable public init(_ s: String)
The result is that very strange Character instances can be created without any notice.
Environment
Xcode 10.3 (10G8) macOS 10.14.6 (18G87)Additional Detail from JIRA
| | | |------------------|-----------------| |Votes | 0 | |Component/s | Standard Library | |Labels | Bug | |Assignee | None | |Priority | Medium | md5: d57ea084c81a5db011837f59b17e347aIssue Description:
See this forum post:
https://forums.swift.org/t/is-this-a-character-bug/27622/8
and the attached Xcode project.(EDIT: Never mind the attached project, the bug is easily demonstrated by the example in the forum post. I've now deleted the attachment to prevent unnecessary confusion.)
In short, if compiling with optimizations enabled, the following Character initializer will not trap (as it should) when the given string is invalid (ie the string does not hold exactly one extended grapheme cluster).
The result is that very strange Character instances can be created without any notice.