mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
102 lines
2.3 KiB
Swift
102 lines
2.3 KiB
Swift
// RUN: %target-parse-verify-swift
|
|
|
|
protocol P1 {
|
|
func foo() // expected-note {{protocol requires function 'foo()'}}
|
|
func bar() // okay
|
|
}
|
|
|
|
extension P1 {
|
|
func bar() {} // okay
|
|
}
|
|
|
|
struct P1Conformer : P1 {} // expected-error {{does not conform}}
|
|
|
|
|
|
protocol P2 {
|
|
func foo() // expected-note {{protocol requires function 'foo()'}}
|
|
func bar() // expected-note {{protocol requires function 'bar()'}}
|
|
}
|
|
protocol P2Helper {}
|
|
|
|
extension P2 where Self : P2Helper {
|
|
func bar() {} // expected-note {{candidate}}
|
|
}
|
|
|
|
struct P2Conformer : P2 {} // expected-error {{does not conform}}
|
|
|
|
|
|
protocol P3 {
|
|
func foo() // expected-note {{protocol requires function 'foo()'}}
|
|
func bar() // okay
|
|
func baz() -> Baz
|
|
associatedtype Baz
|
|
}
|
|
|
|
extension P3 {
|
|
func bar() {} // okay
|
|
}
|
|
|
|
struct P3Conformer : P3 { // expected-error {{does not conform}}
|
|
func baz() -> Int { return 0 }
|
|
}
|
|
|
|
|
|
protocol P4 {
|
|
func foo() // expected-note {{protocol requires function 'foo()'}}
|
|
func bar() // expected-note {{protocol requires function 'bar()'}}
|
|
func baz() -> Baz // okay
|
|
associatedtype Baz
|
|
}
|
|
protocol P4Helper {}
|
|
|
|
extension P4 where Self : P4Helper {
|
|
func bar() {} // expected-note {{candidate}}
|
|
}
|
|
|
|
struct P4Conformer : P4 { // expected-error {{does not conform}}
|
|
func baz() -> Int { return 0 }
|
|
}
|
|
|
|
|
|
protocol P5 {
|
|
associatedtype Foo
|
|
func foo() -> Foo // expected-note {{protocol requires function 'foo()'}}
|
|
func bar() -> Foo // okay
|
|
func baz() -> Foo // okay
|
|
}
|
|
|
|
extension P5 {
|
|
func bar() -> Foo { return foo() } // okay
|
|
}
|
|
|
|
struct P5Conformer : P5 { // expected-error {{does not conform}}
|
|
func baz() -> Int { return 0 }
|
|
}
|
|
|
|
|
|
protocol P6Base {
|
|
associatedtype Foo
|
|
func foo()
|
|
func bar() -> Foo // expected-note{{protocol requires function 'bar()' }}
|
|
}
|
|
extension P6Base {
|
|
}
|
|
protocol P6 : P6Base {
|
|
associatedtype Bar // expected-note {{protocol requires nested type 'Bar'}}
|
|
}
|
|
extension P6 {
|
|
func bar() -> Bar? { return nil } // expected-note{{candidate has non-matching type}}
|
|
}
|
|
|
|
struct P6Conformer : P6 { // expected-error 2 {{does not conform}}
|
|
func foo() {}
|
|
}
|
|
|
|
// rdar://problem/23033862
|
|
// expected-error@+2{{type 'A' does not conform to protocol 'OptionSet'}}
|
|
// expected-error@+1{{type 'A' does not conform to protocol 'RawRepresentable'}}
|
|
struct A: OptionSet {
|
|
let rawValue = 0
|
|
init() { } // expected-note 2{{candidate has non-matching type '()'}}
|
|
}
|