| // RUN: %target-typecheck-verify-swift |
| |
| // Ensure that the identifiers in compilation conditions don't reference |
| // any decls in the scope. |
| func f2( |
| FOO: Int, |
| swift: Int, _compiler_version: Int, |
| os: Int, arch: Int, _endian: Int, _runtime: Int, |
| arm: Int, i386: Int, macOS: Int, OSX: Int, Linux: Int, |
| big: Int, little: Int, |
| _ObjC: Int, _Native: Int |
| ) { |
| |
| #if FOO |
| _ = FOO |
| #elseif os(macOS) && os(OSX) && os(Linux) |
| _ = os + macOS + OSX + Linux |
| #elseif arch(i386) && arch(arm) |
| _ = arch + i386 + arm |
| #elseif _endian(big) && _endian(little) |
| _ = _endian + big + little |
| #elseif _runtime(_ObjC) && _runtime(_Native) |
| _ = _runtime + _ObjC + _Native |
| #elseif swift(>=1.0) && _compiler_version("3.*.0") |
| _ = swift + _compiler_version |
| #endif |
| |
| } |
| |
| func f2() { |
| let |
| FOO = 1, swift = 1, _compiler_version = 1, |
| os = 1, arch = 1, _endian = 1, _runtime = 1, |
| arm = 1, i386 = 1, macOS = 1, OSX = 1, Linux = 1, |
| big = 1, little = 1, |
| _ObjC = 1, _Native = 1 |
| |
| #if FOO |
| _ = FOO |
| #elseif os(macOS) && os(OSX) && os(Linux) |
| _ = os + macOS + OSX + Linux |
| #elseif arch(i386) && arch(arm) |
| _ = arch + i386 + arm |
| #elseif _endian(big) && _endian(little) |
| _ = _endian + big + little |
| #elseif _runtime(_ObjC) && _runtime(_Native) |
| _ = _runtime + _ObjC + _Native |
| #elseif swift(>=1.0) && _compiler_version("3.*.0") |
| _ = swift + _compiler_version |
| #endif |
| |
| } |
| |
| struct S { |
| let |
| FOO = 1, swift = 1, _compiler_version = 1, |
| os = 1, arch = 1, _endian = 1, _runtime = 1, |
| arm = 1, i386 = 1, macOS = 1, OSX = 1, Linux = 1, |
| big = 1, little = 1, |
| _ObjC = 1, _Native = 1 |
| |
| #if FOO |
| #elseif os(macOS) && os(OSX) && os(Linux) |
| #elseif arch(i386) && arch(arm) |
| #elseif _endian(big) && _endian(little) |
| #elseif _runtime(_ObjC) && _runtime(_Native) |
| #elseif swift(>=1.0) && _compiler_version("3.*.0") |
| #endif |
| |
| } |
| |
| /// Ensure 'variable used within its own initial value' not to be emitted. |
| let BAR = { () -> Void in |
| #if BAR |
| #endif |
| } |
| |