Files
swift-mirror/test/Concurrency/isolated_default_property_inits.swift
Daniel Rodríguez Troitiño ba68faaed5 [test] Mark tests that use experimental/upcoming features as such
Find all the usages of `--enable-experimental-feature` or
`--enable-upcoming-feature` in the tests and replace some of the
`REQUIRES: asserts` to use `REQUIRES: swift-feature-Foo` instead, which
should correctly apply to depending on the asserts/noasserts mode of the
toolchain for each feature.

Remove some comments that talked about enabling asserts since they don't
apply anymore (but I might had miss some).

All this was done with an automated script, so some formatting weirdness
might happen, but I hope I fixed most of those.

There might be some tests that were `REQUIRES: asserts` that might run
in `noasserts` toolchains now. This will normally be because their
feature went from experimental to upcoming/base and the tests were not
updated.
2024-11-02 11:46:46 -07:00

65 lines
2.5 KiB
Swift

// RUN: %empty-directory(%t)
// RUN: %target-swift-frontend -emit-module -emit-module-path %t/OtherActors.swiftmodule -module-name OtherActors %S/Inputs/OtherActors.swift -target %target-swift-5.1-abi-triple
// RUN: %target-swift-frontend -I %t -target %target-swift-5.1-abi-triple -strict-concurrency=complete -enable-upcoming-feature IsolatedDefaultValues -parse-as-library -emit-sil -o /dev/null -verify %s
// RUN: %target-swift-frontend -I %t -target %target-swift-5.1-abi-triple -strict-concurrency=complete -parse-as-library -emit-sil -o /dev/null -verify -enable-upcoming-feature IsolatedDefaultValues -enable-upcoming-feature RegionBasedIsolation %s
// REQUIRES: concurrency
// REQUIRES: swift_feature_IsolatedDefaultValues
// REQUIRES: swift_feature_RegionBasedIsolation
// This tests errors emitted in definite initialization; this test file cannot
// have any type checker errors. Type checker errors for IsolatedDefaultValues
// are tested in isolated_default_arguments.swift
@globalActor
actor SomeGlobalActor {
static let shared = SomeGlobalActor()
}
@MainActor
func requiresMainActor() -> Int { 0 }
@SomeGlobalActor
func requiresSomeGlobalActor() -> Int { 0 }
class C1 {
// expected-note@+2 {{main actor-isolated default value of 'self.x' cannot be used in a nonisolated initalizer}}
// expected-note@+1 {{main actor-isolated default value of 'self.x' cannot be used in a global actor 'SomeGlobalActor'-isolated initalizer}}
@MainActor var x = requiresMainActor()
// expected-note@+2 {{global actor 'SomeGlobalActor'-isolated default value of 'self.y' cannot be used in a nonisolated initalizer}}
// expected-note@+1 {{global actor 'SomeGlobalActor'-isolated default value of 'self.y' cannot be used in a main actor-isolated initalizer}}
@SomeGlobalActor var y = requiresSomeGlobalActor()
var z = 10
// expected-error@+1 {{return from initializer without initializing all stored properties}}
nonisolated init(a: Int) {}
// expected-error@+1 {{return from initializer without initializing all stored properties}}
@MainActor init(b: Int) {}
// expected-error@+1 {{return from initializer without initializing all stored properties}}
@SomeGlobalActor init(c: Int) {}
}
class C2 {
@MainActor var x = requiresMainActor()
@SomeGlobalActor var y = requiresSomeGlobalActor()
var z = 10
nonisolated init(x: Int, y: Int) {
self.x = x
self.y = y
}
@MainActor init(y: Int) {
self.y = y
}
@SomeGlobalActor init(x: Int) {
self.x = x
}
}