// 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
}

