// RUN: %target-swift-frontend -parse-as-library -emit-silgen -enable-sil-ownership %s | %FileCheck %s

// Only derived classes with non-trivial ivars need an ivar destroyer.

struct TrivialStruct {}

class RootClassWithoutProperties {}

class RootClassWithTrivialProperties {
  var x: Int = 0
  var y: TrivialStruct = TrivialStruct()
}

class Canary {}

class RootClassWithNonTrivialProperties {
  var x: Canary = Canary()
}

class DerivedClassWithTrivialProperties : RootClassWithoutProperties {
  var z: Int = 12
}

class DerivedClassWithNonTrivialProperties : RootClassWithoutProperties {
  var z: Canary = Canary()
}

// CHECK-LABEL: sil hidden @_T014ivar_destroyer36DerivedClassWithNonTrivialPropertiesCfE
// CHECK:       bb0(%0 : @guaranteed $DerivedClassWithNonTrivialProperties):
// CHECK-NEXT:    debug_value %0
// CHECK-NEXT:    [[Z_ADDR:%.*]] = ref_element_addr %0
// CHECK-NEXT:    destroy_addr [[Z_ADDR]]
// CHECK-NEXT:    [[RESULT:%.*]] = tuple ()
// CHECK-NEXT:    return [[RESULT]]

// CHECK-LABEL: sil_vtable RootClassWithoutProperties {
// CHECK-NEXT:    #RootClassWithoutProperties.init!initializer.1
// CHECK-NEXT:    #RootClassWithoutProperties.deinit!deallocator
// CHECK-NEXT:  }

// CHECK-LABEL: sil_vtable RootClassWithTrivialProperties {
// CHECK-NEXT:    #RootClassWithTrivialProperties.x!getter.1
// CHECK-NEXT:    #RootClassWithTrivialProperties.x!setter.1
// CHECK-NEXT:    #RootClassWithTrivialProperties.x!materializeForSet.1
// CHECK-NEXT:    #RootClassWithTrivialProperties.y!getter.1
// CHECK-NEXT:    #RootClassWithTrivialProperties.y!setter.1
// CHECK-NEXT:    #RootClassWithTrivialProperties.y!materializeForSet.1
// CHECK-NEXT:    #RootClassWithTrivialProperties.init!initializer.1
// CHECK-NEXT:    #RootClassWithTrivialProperties.deinit!deallocator
// CHECK-NEXT:  }

// CHECK-LABEL: sil_vtable RootClassWithNonTrivialProperties {
// CHECK-NEXT:    #RootClassWithNonTrivialProperties.x!getter.1
// CHECK-NEXT:    #RootClassWithNonTrivialProperties.x!setter.1
// CHECK-NEXT:    #RootClassWithNonTrivialProperties.x!materializeForSet.1
// CHECK-NEXT:    #RootClassWithNonTrivialProperties.init!initializer.1
// CHECK-NEXT:    #RootClassWithNonTrivialProperties.deinit!deallocator
// CHECK-NEXT:  }

// CHECK-LABEL: sil_vtable DerivedClassWithTrivialProperties {
// CHECK-NEXT:    #RootClassWithoutProperties.init!initializer.1
// CHECK-NEXT:    #DerivedClassWithTrivialProperties.z!getter.1
// CHECK-NEXT:    #DerivedClassWithTrivialProperties.z!setter.1
// CHECK-NEXT:    #DerivedClassWithTrivialProperties.z!materializeForSet.1
// CHECK-NEXT:    #DerivedClassWithTrivialProperties.deinit!deallocator
// CHECK-NEXT:  }

// CHECK-LABEL: sil_vtable DerivedClassWithNonTrivialProperties {
// CHECK-NEXT:    #RootClassWithoutProperties.init!initializer.1
// CHECK-NEXT:    #DerivedClassWithNonTrivialProperties.z!getter.1
// CHECK-NEXT:    #DerivedClassWithNonTrivialProperties.z!setter.1
// CHECK-NEXT:    #DerivedClassWithNonTrivialProperties.z!materializeForSet.1
// CHECK-NEXT:    #DerivedClassWithNonTrivialProperties.deinit!deallocator
// CHECK-NEXT:    #DerivedClassWithNonTrivialProperties!ivardestroyer.1
// CHECK-NEXT:  }
