blob: 265e87ab22c325f3e51910e9acb66ca96a7b031f [file] [log] [blame]
// RUN: %empty-directory(%t)
// RUN: %target-swift-frontend -emit-module -module-name Library -o %t -D LIBRARY %s
// RUN: %target-swift-ide-test -print-module -module-to-print=Library -I %t -source-filename=%s | %FileCheck %s
// RUN: %target-swift-frontend -typecheck -I %t %s -verify
// Check that base types of extensions are desugared. This isn't necessarily
// the behavior we want long-term, but it's the behavior we need right now.
#if LIBRARY
public typealias Zahl = Int
// CHECK: typealias List
// CHECK: typealias Zahl
// CHECK-LABEL: extension Int {
extension Zahl {
// CHECK-NEXT: addedMember()
public func addedMember() {}
} // CHECK-NEXT: {{^}$}}
public typealias List<T> = Array<T>
// CHECK-LABEL: extension Array {
extension List {
// CHECK-NEXT: addedMember()
public func addedMember() {}
} // CHECK-NEXT: {{^}$}}
// CHECK-LABEL: extension Array where Element == Int {
extension List where Element == Int {
// CHECK-NEXT: addedMemberInt()
public func addedMemberInt() {}
} // CHECK-NEXT: {{^}$}}
#else
import Library
func test(x: Int) {
x.addedMember()
[x].addedMember()
[x].addedMemberInt()
([] as [Bool]).addedMemberInt() // expected-error {{'[Bool]' is not convertible to 'Array<Int>'}}
}
#endif