actual fix
diff --git a/src/ir/subtype-exprs.h b/src/ir/subtype-exprs.h index 1895c85..d26dc85 100644 --- a/src/ir/subtype-exprs.h +++ b/src/ir/subtype-exprs.h
@@ -265,8 +265,18 @@ } void visitRethrow(Rethrow* curr) {} void visitThrowRef(ThrowRef* curr) {} - void visitTupleMake(TupleMake* curr) {} - void visitTupleExtract(TupleExtract* curr) {} + void visitTupleMake(TupleMake* curr) { + if (curr->type != Type::unreachable) { + for (Index i = 0, size = curr->type.size(); i < size; ++i) { + self()->noteSubtype(curr->operands[i], curr->type[i]); + } + } + } + void visitTupleExtract(TupleExtract* curr) { + if (curr->type != Type::unreachable) { + self()->noteSubtype(curr->tuple->type[curr->index], curr->type); + } + } void visitRefI31(RefI31* curr) {} void visitI31Get(I31Get* curr) { // This could be |noteNonFlowSubtype| but as there are no subtypes of i31