// RUN: %target-typecheck-verify-swift extension Array { func someIntFuncOnArray() {} } let _ = [0, 1, 2].someIntFuncOnArray() extension [Character] { func makeString() -> String { fatalError() } } let _ = ["a", "b", "c"].makeString() let _ = [1, 2, 3].makeString() // expected-error 3 {{cannot convert value of type 'Int' to expected element type 'Character'}} extension Set<_> {} // expected-error {{cannot extend a type that contains placeholders}} // https://github.com/apple/swift/issues/47452 struct Foo { var x: T var y: U } typealias IntFoo = Foo extension IntFoo where U == Int { func hello() { print("hello") } } Foo(x: "test", y: 1).hello() struct MyType { var a : TyA, b : TyB } typealias A = MyType extension A {} extension A {} extension A {} struct Tree { struct Branch { struct Nest { struct Egg {} } } } extension Tree.Branch.Nest.Egg { static func tweet() {} } extension Tree.Branch.Nest.Egg { static func twoot() {} } extension Tree.Branch.Nest.Egg { static func twote() {} } extension Tree.Branch.Nest.Egg { static func twite() {} } func testNestedExtensions() { do { Tree.Branch.Nest.Egg.tweet() } do { Tree.Branch.Nest.Egg.twoot() Tree.Branch.Nest.Egg.twoot() Tree.Branch.Nest.Egg.twoot() } do { Tree.Branch.Nest.Egg.twote() Tree.Branch.Nest.Egg.twote() } Tree.Branch.Nest.Egg.twite() } // rdar://111059036 - failed to produce a diagnostic in specialized extension struct Test { struct Key {} } class State { } extension Test.Key { static let state = Self() } protocol P {} struct S: P {} extension Sequence where Self == [S] {} // expected-error@-1 {{generic signature requires types 'S' and 'any P' to be the same}}