Files
swift-mirror/test/Interop/Cxx/stdlib/use-std-string-optional-error.swift
fahadnayyar 9a01358132 [C++ Interop] Deprecate Optional argument overloads of std.string initializer in Swift’s C++ Stdlib Overlay (#83223)
This patch addresses potential ambiguity and unsafe behavior by
deprecating initializer overloads for `std.string` that accept optional
arguments (`string?`). These overloads previously allowed implicit
initialization from optional pointers (`UnsafePointer<CChar>?`), causing
unclear or unintended behavior.

- Deprecated: `init(_ string: UnsafePointer<CChar>?)`, guiding users
toward the explicit, non-optional initializer.
- Unavailable: `init(_ string: String?)`, explicitly preventing misuse
from optional Swift strings.

rdar://148041893
2025-08-05 15:22:02 -07:00

9 lines
390 B
Swift

// RUN: %target-typecheck-verify-swift -I %S/Inputs -cxx-interoperability-mode=default
import CxxStdlib
let tmpOpt: String? = "üüüüüüü"
let cppString1 = std.string(tmpOpt) // expected-warning {{'init(_:)' is deprecated: unwrap the optional value and use init(_ string: UnsafePointer<CChar>) instead}}
let tmpNonOpt: String = "üüüüüüü"
let cppString2 = std.string(tmpNonOpt)