Files
swift-mirror/test/embedded/non-copyable-deinit.swift
Erik Eckstein 65adc5a582 FunctionSignatureOpts: don't convert non-copyable owned -> guaranteed arguments
It's not safe to insert a compensating release_value at the call site.
This release_value calls the deinit which might have been already de-virtualized in the callee.
2024-08-12 08:54:22 +02:00

29 lines
553 B
Swift

// RUN: %target-run-simple-swift(-enable-experimental-feature Embedded -O -parse-as-library -runtime-compatibility-version none -wmo -Xfrontend -disable-objc-interop) | %FileCheck %s
// REQUIRES: executable_test
// REQUIRES: OS=macosx || OS=linux-gnu
var deinitCalled = false
struct S: ~Copyable {
let s: String
@inline(never)
deinit {
precondition(!deinitCalled)
deinitCalled = true
print(s)
}
}
@main
struct Main {
static func main() {
// CHECK: 1
_ = S(s: "1")
// CHECK-NEXT: done
print("done")
}
}