Skip to content

Commit 2f0726a

Browse files
committed
[IRGen] Emit swift_enumSimple_destructiveInjectEnumTag
1 parent 8115348 commit 2f0726a

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

lib/IRGen/GenValueWitness.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -960,7 +960,7 @@ getDestructiveInjectEnumTagFunction(IRGenModule &IGM,
960960
(tzCount % toCount != 0))) {
961961
return nullptr;
962962
} else {
963-
return nullptr;
963+
return IGM.getEnumSimpleDestructiveInjectEnumTagFn();
964964
}
965965
}
966966
}

test/Interpreter/layout_string_witnesses_dynamic.swift

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -594,6 +594,30 @@ func testResilientMultiPayloadEnumGenericTag() {
594594

595595
testResilientMultiPayloadEnumGenericTag()
596596

597+
@inline(never)
598+
func matchResilientSinglePayloadEnumSimpleTag(_ x: ResilientSinglePayloadEnumSimple) -> Int {
599+
return switch x {
600+
case .nonEmpty: 0
601+
case .empty0: 1
602+
case .empty1: 2
603+
}
604+
}
605+
606+
func testResilientSinglePayloadEnumSimpleInjectTag() {
607+
let x = ResilientSinglePayloadEnumSimple.nonEmpty(SimpleClass(x: 23))
608+
let y = ResilientSinglePayloadEnumSimple.empty0
609+
let z = ResilientSinglePayloadEnumSimple.empty1
610+
611+
// CHECK: Enum case: 0
612+
print("Enum case: \(matchResilientSinglePayloadEnumSimpleTag(x))")
613+
// CHECK: Enum case: 1
614+
print("Enum case: \(matchResilientSinglePayloadEnumSimpleTag(y))")
615+
// CHECK: Enum case: 2
616+
print("Enum case: \(matchResilientSinglePayloadEnumSimpleTag(z))")
617+
}
618+
619+
testResilientSinglePayloadEnumSimpleInjectTag()
620+
597621
@inline(never)
598622
func matchResilientSinglePayloadEnumGenericTag(_ x: ResilientSinglePayloadEnumGeneric<AnyObject>) -> Int {
599623
return switch x {

0 commit comments

Comments
 (0)