// RUN: %empty-directory(%t)
// The file that's `main` needs to be called that.
// RUN: cp %s %t/main.swift
// RUN: %target-build-swift -D basic %t/main.swift %S/../Inputs/conditional_conformance_basic_conformances.swift -o %t/basic && %target-run %t/basic
// RUN: %target-build-swift -D with_assoc %t/main.swift %S/../Inputs/conditional_conformance_with_assoc.swift -o %t/with_assoc && %target-run %t/with_assoc
// RUN: %target-build-swift -D subclass %t/main.swift %S/../Inputs/conditional_conformance_subclass.swift -o %t/subclass && %target-run %t/subclass

// REQUIRES: executable_test

// Call the various functions from each of the IRGen conditional conformance
// tests. These can't be put in the file themselves because that changes it from
// being treated as a library to an executable.

#if basic
single_generic(IsP2.self)
single_concrete()

double_generic_generic(IsP2.self, IsP3.self)
double_generic_concrete(IsP2.self)
double_concrete_concrete()

assert(dynamicCastToP1(Single<IsP3>()) == nil)
assert(dynamicCastToP1(Single<IsP2>()) == nil) // FIXME: incorrect result!

#elseif with_assoc
generic_generic(IsAlsoP2.self, IsP3.self)
generic_concrete(IsAlsoP2.self)
concrete_generic(IsP3.self)
concrete_concrete()

#elseif subclass
subclassgeneric_generic(IsP2.self)
subclassgeneric_concrete()
subclassconcrete()
subclassgenericconcrete()
#endif


