// RUN: %empty-directory(%t)

// For convenience, this file includes the three different "files" used in this
// test. It selects one with -DCoreDishwasher, -DDishwasherKit, or neither.

// RUN: %target-swift-frontend -emit-module %s -DCoreDishwasher -module-name CoreDishwasher -o %t/CoreDishwasher -emit-module-path %t/CoreDishwasher.swiftmodule -I %t
// RUN: %target-swift-frontend -emit-module %s -DDishwasherKit -module-name DishwasherKit -o %t/DishwasherKit -emit-module-path %t/DishwasherKit.swiftmodule -enable-library-evolution -I %t
// RUN: %target-swift-frontend -emit-silgen-ossa -o /dev/null -sil-verify-all -enable-sil-opaque-values -I %t %s
// RUN: %target-swift-frontend -emit-silgen -I %t %s

#if CoreDishwasher

  public struct SpimsterWicket {
    public init() {}
  }

#elseif DishwasherKit

  @_implementationOnly import CoreDishwasher

  open class Dishwasher {
    public init() {}
    
    var wicket = SpimsterWicket()
    
    open var modelName: String { "Dishwasher" }
  }

#else

  import DishwasherKit

  open class FancyDishwasher: Dishwasher {
    open override var modelName: String { "Fancy \(super.modelName)" }
  }

#endif
