// RUN: %target-parse-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
}
