Files
swift-mirror/test/embedded/classes-non-final-method-no-stdlib.swift
Doug Gregor 74d5ee26f0 [Embedded] Downgrade type-checker error about non-final generic class methods to a warning
The existing SIL-level diagnostic for this check only triggers when
the type is actually used, while the type-checker version is more
eager. Stage in the stricter check as a warning and we'll clamp down
on things later.
2025-09-18 10:05:35 -07:00

38 lines
990 B
Swift

// RUN: %target-swift-emit-ir -verify %s -parse-stdlib -enable-experimental-feature Embedded -target arm64e-apple-none -wmo
// REQUIRES: swift_in_compiler
// REQUIRES: swift_feature_Embedded
public class MyClass {
public func foo<T>(t: T) { } // expected-warning {{generic instance method 'foo(t:)' in a class must be 'final' in Embedded Swift}}
// expected-error@-1{{classes cannot have a non-final, generic method 'foo(t:)' in embedded Swift}}
public func bar() { }
}
final class C2<Element> {
init<T>(x: T) { }
}
struct S {}
public func testMyClass(_ c: MyClass) {
c.foo(t: S())
c.bar()
}
func testit2() -> C2<S> {
return C2(x: S())
}
open class C3<X> {
public func foo<T>(t: T) {} // expected-warning {{generic instance method 'foo(t:)' in a class must be 'final' in Embedded Swift}}
// expected-error@-1{{classes cannot have a non-final, generic method 'foo(t:)' in embedded Swift}}
}
func testit3() -> C3<S> {
let c = C3<S>()
c.foo(t: S())
return c
}