mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
1. move embedded diagnostics out of the PerformanceDiagnostics pass. It was completely separated from the other logic in this pass, anyway. 2. rewrite it in swift 3. fix several bugs, that means: missed diagnostics, which led to IRGen crashes * look at all methods in witness tables, including base protocols and associated conformances * visit all functions in the call tree, including generic functions with class bound generic arguments * handle all instructions, e.g. concurrency builtins 4. improve error messages by adding meaningful call-site information. For example: * if the error is in a specialized function, report where the generic function is originally specialized with concrete types * if the error is in a protocol witness method, report where the existential is created
36 lines
776 B
Swift
36 lines
776 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 {{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-error {{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
|
|
}
|
|
|