;; Test TypeBuilder Before setting heap types: (ref $sig) => (ref (func)) (ref $struct) => (ref (func)) (ref $array) => (ref (func)) (ref null $array) => (ref null (func)) (rtt 0 $array) => (rtt 0 (func)) After setting heap types: (ref $sig) => (ref (func (param (ref (struct (field (ref null (array (mut externref))) (mut (rtt 0 (array (mut externref)))))))) (result (ref (array (mut externref))) i32))) (ref $struct) => (ref (struct (field (ref null (array (mut externref))) (mut (rtt 0 (array (mut externref))))))) (ref $array) => (ref (array (mut externref))) (ref null $array) => (ref null (array (mut externref))) (rtt 0 $array) => (rtt 0 (array (mut externref))) After building types: (ref $sig) => (ref (func (param (ref (struct (field (ref null (array (mut externref))) (mut (rtt 0 (array (mut externref)))))))) (result (ref (array (mut externref))) i32))) (ref $struct) => (ref (struct (field (ref null (array (mut externref))) (mut (rtt 0 (array (mut externref))))))) (ref $array) => (ref (array (mut externref))) (ref null $array) => (ref null (array (mut externref))) (rtt 0 $array) => (rtt 0 (array (mut externref))) ;; Test canonicalization ;; Test recursive types