// RUN: %empty-directory(%t)
// RUN: %{python} %utils/chex.py < %s > %t/checkfile
// RUN: %target-swift-frontend(mock-sdk: %clang-importer-sdk) -enable-objc-interop -emit-ir -o - -primary-file %s -import-objc-header %S/Inputs/error_domains.h | %FileCheck %t/checkfile --check-prefix=CHECK --check-prefix=CHECK-%target-ptrsize -DINT=i%target-ptrsize

sil_stage canonical

import Swift
import Foundation

sil public_external @take_metatype : $@convention(thin) <T> (@thick T.Type) -> ()

sil @use_metatypes : $@convention(thin) () -> () {
bb0:
  %take = function_ref @take_metatype : $@convention(thin) <T> (@thick T.Type) -> ()

// CHECK:         [[TagError1_NAME:@[0-9]+]] = private constant [14 x i8] c"TagError1\00Re\00\00"
// CHECK:         @"$sSC9TagError1LeVMn" = linkonce_odr hidden constant
// CHECK-SAME:    <i32 0x0006_0011>
// CHECK-SAME:    @"$sSCMXM"
// CHECK-SAME:    [14 x i8]* [[TagError1_NAME]]
  %0 = metatype $@thick TagError1.Type
  apply %take<TagError1>(%0) : $@convention(thin) <T> (@thick T.Type) -> ()

// CHECK:         [[TagError2_NAME:@[0-9]+]] = private constant [17 x i8] c"Code\00NTagError2\00\00"
// CHECK:         @"$sSo9TagError2VMn" = linkonce_odr hidden constant
// CHECK-SAME:    <i32 0x0006_0012>
// CHECK-SAME:    @"$sSoMXM"
// CHECK-SAME:    [17 x i8]* [[TagError2_NAME]]
  %1 = metatype $@thick TagError2.Code.Type
  apply %take<TagError2.Code>(%1) : $@convention(thin) <T> (@thick T.Type) -> ()

// CHECK:         [[TypedefError1_NAME:@[0-9]+]] = private constant [18 x i8] c"TypedefError1\00RE\00\00"
// CHECK:         @"$sSC13TypedefError1LEVMn" = linkonce_odr hidden constant
// CHECK-SAME:    <i32 0x0006_0011>
// CHECK-SAME:    @"$sSCMXM"
// CHECK-SAME:    [18 x i8]* [[TypedefError1_NAME]]
  %2 = metatype $@thick TypedefError1.Type
  apply %take<TypedefError1>(%2) : $@convention(thin) <T> (@thick T.Type) -> ()

// CHECK:         [[TypedefError2Code_NAME:@[0-9]+]] = private constant [24 x i8] c"Code\00NTypedefError2\00St\00\00"
// CHECK:         @"$sSo13TypedefError2aMn" = linkonce_odr hidden constant
// CHECK-SAME:    <i32 0x0006_0012>
// CHECK-SAME:    @"$sSoMXM"
// CHECK-SAME:    [24 x i8]* [[TypedefError2Code_NAME]]
  %3 = metatype $@thick TypedefError2.Code.Type
  apply %take<TypedefError2.Code>(%3) : $@convention(thin) <T> (@thick T.Type) -> ()

  %ret = tuple ()
  return %ret : $()
}
