// Please keep this file in alphabetical order!

// RUN: %empty-directory(%t)
// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -emit-module -o %t %s -module-name generic -disable-objc-attr-requires-foundation-module
// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -parse-as-library %t/generic.swiftmodule -typecheck -emit-objc-header-path %t/generic.h -import-objc-header %S/../Inputs/empty.h -disable-objc-attr-requires-foundation-module
// RUN: %FileCheck %s < %t/generic.h
// RUN: %FileCheck -check-prefix=NEGATIVE %s < %t/generic.h
// RUN: %check-in-clang %t/generic.h

// REQUIRES: objc_interop

import ObjectiveC

// CHECK-LABEL: @interface ConcreteClass
// CHECK-NEXT: init
// CHECK-NEXT: @end
@objc class ConcreteClass {}

// CHECK-NOT: @interface GenericSubclass
// NEGATIVE-NOT: @interface GenericSubclass
class GenericSubclass<T> : ConcreteClass {}

// CHECK-NOT: @interface NonGenericSubclass
// NEGATIVE-NOT: @interface NonGenericSubclass
class NonGenericSubclass : GenericSubclass<ConcreteClass> {}

// CHECK-LABEL: @interface TopMoviesOfAllTime
// CHECK-NEXT: rambo
// CHECK-NEXT: init
// CHECK-NOT: rocky
// NEGATIVE-NOT: rocky
// CHECK-NEXT: @end
@objc class TopMoviesOfAllTime {
  func rambo(c: ConcreteClass) {}
  func rocky(c: NonGenericSubclass) {}
}
