| // RUN: %target-typecheck-verify-swift -D FOO -D BAR |
| |
| class A {} |
| |
| #if FOO |
| typealias A1 = A |
| #endif |
| var a: A = A() |
| var a1: A1 = A1() // should not result in an error |
| |
| #if FOO |
| class C {} |
| #endif |
| |
| var c = C() // should not result in an error |
| |
| class D { |
| #if FOO |
| var x: Int |
| #endif |
| |
| init() { |
| #if !BAR |
| x = "BAR"; // should not result in an error |
| #else |
| x = 1 |
| #endif |
| } |
| |
| #if !BAR |
| func overload(a: Int) {} |
| func overload(b: String) {} // should not result in an error |
| #endif |
| } |
| |
| var d = D() |
| |
| #if !FOO |
| func f1() -> Bool { |
| return true |
| } |
| #else |
| func f1() -> Int { |
| #if BAR |
| return 1 |
| #else |
| return "1" // should not result in an error |
| #endif |
| } |
| #endif |
| |
| var i: Int = f1() |
| |
| protocol P1 { |
| #if FOO |
| func fFOO() -> Int |
| #endif |
| |
| #if !BAR |
| func fNotBAR() -> Int |
| #else |
| func fBAR() -> Int |
| #endif |
| } |
| |
| class P : P1 { |
| func fFOO() -> Int { return 0; } |
| func fBAR() -> Int { return 0; } |
| } |
| |
| func constants1() -> Int { |
| #if true |
| return 1 |
| #else |
| return "1" // should not result in an error |
| #endif |
| } |
| |
| func constants2() -> Int { |
| #if false |
| return "1" // should not result in an error |
| #elseif ((false || false)) |
| return "1" // should not result in an error |
| #else |
| return 1 |
| #endif |
| } |