mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
Move the diagnostic about non-final generic methods in classes up to the type checker, so that it is available to `-Wwarning EmbeddedRestrictions` and earlier in the pipeline. The SIL version of this is still available as a backstop. Yet another part of rdar://133874555.
36 lines
782 B
Swift
36 lines
782 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-error {{generic instance method 'foo(t:)' in a class must be 'final' 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-error {{generic instance method 'foo(t:)' in a class must be 'final' in Embedded Swift}}
|
|
}
|
|
|
|
func testit3() -> C3<S> {
|
|
let c = C3<S>()
|
|
c.foo(t: S())
|
|
return c
|
|
}
|
|
|