Skip to content

Commit 59c1f42

Browse files
committed
[test] check deprecation warnings for undesirable overloads
1 parent c594482 commit 59c1f42

File tree

2 files changed

+34
-0
lines changed

2 files changed

+34
-0
lines changed

stdlib/public/core/CString.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -381,6 +381,7 @@ extension String {
381381
@_specialize(where Encoding == Unicode.UTF16)
382382
@inlinable // Fold away specializations
383383
@_alwaysEmitIntoClient
384+
@available(*, deprecated)
384385
public init<Encoding: Unicode.Encoding>(
385386
decodingCString nullTerminatedCodeUnits: inout Encoding.CodeUnit,
386387
as sourceEncoding: Encoding.Type
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
// RUN: %target-typecheck-verify-swift -verify-ignore-unknown
2+
3+
import StdlibUnittest
4+
5+
func checkStringOverloadCompilationDiagnostics() {
6+
7+
_ = String(cString: "string") // expected-warning {{'init(cString:)' is deprecated: Operate directly on the String}}
8+
9+
_ = String(validatingUTF8: "string") // expected-warning {{init(validatingUTF8:)' is deprecated: Operate directly on the String}}
10+
11+
_ = String.decodeCString("string", as: Unicode.UTF8.self) // expected-warning {{'decodeCString(_:as:repairingInvalidCodeUnits:)' is deprecated: Operate directly on the String}}
12+
13+
_ = String(decodingCString: "string", as: Unicode.UTF8.self) // expected-warning {{'init(decodingCString:as:)' is deprecated: Operate directly on the String}}
14+
}
15+
16+
func checkInoutConversionOverloadCompilationDiagnostics() {
17+
18+
var i = UInt8.zero
19+
20+
_ = String(cString: &i) // expected-warning {{'init(cString:)' is deprecated}}
21+
22+
var c = CChar.zero
23+
24+
_ = String(cString: &c) // expected-warning {{'init(cString:)' is deprecated}}
25+
26+
_ = String(validatingUTF8: &c) // expected-warning {{init(validatingUTF8:)' is deprecated}}
27+
28+
var u = Unicode.UTF8.CodeUnit.zero
29+
30+
_ = String.decodeCString(&u, as: Unicode.UTF8.self) // expected-warning {{'decodeCString(_:as:repairingInvalidCodeUnits:)' is deprecated}}
31+
32+
_ = String(decodingCString: &u, as: Unicode.UTF8.self) // expected-warning {{'init(decodingCString:as:)' is deprecated}}
33+
}

0 commit comments

Comments
 (0)