diff --git a/document/core/valid/matching.rst b/document/core/valid/matching.rst index 200628753..a4cb28d34 100644 --- a/document/core/valid/matching.rst +++ b/document/core/valid/matching.rst @@ -39,7 +39,8 @@ Heap Types $${rule-prose: Heaptype_sub} $${rule: - {Heaptype_sub/refl Heaptype_sub/trans} + {Heaptype_sub/refl Heaptype_sub/exact-l} + {Heaptype_sub/trans} {Heaptype_sub/eq-any Heaptype_sub/i31-eq Heaptype_sub/struct-eq Heaptype_sub/array-eq} {Heaptype_sub/struct Heaptype_sub/array Heaptype_sub/func} {Heaptype_sub/typeidx-l Heaptype_sub/typeidx-r} diff --git a/document/core/valid/types.rst b/document/core/valid/types.rst index b5ba80c84..3fd1de4b5 100644 --- a/document/core/valid/types.rst +++ b/document/core/valid/types.rst @@ -58,6 +58,10 @@ $${rule-prose: Heaptype_ok/abs} $${rule: Heaptype_ok/abs} +$${rule-prose: Heaptype_ok/exact} + +$${rule: Heaptype_ok/exact} + .. index:: reference type, heap type pair: validation; reference type diff --git a/specification/wasm-latest/2.1-validation.types.spectec b/specification/wasm-latest/2.1-validation.types.spectec index eac31a140..5325d2cc6 100644 --- a/specification/wasm-latest/2.1-validation.types.spectec +++ b/specification/wasm-latest/2.1-validation.types.spectec @@ -24,6 +24,10 @@ rule Heaptype_ok/typeuse: C |- typeuse : OK -- Typeuse_ok: C |- typeuse : OK +rule Heaptype_ok/exact: + C |- EXACT typeuse : OK + -- Typeuse_ok: C |- typeuse : OK + rule Reftype_ok: C |- REF NULL? heaptype : OK -- Heaptype_ok: C |- heaptype : OK diff --git a/specification/wasm-latest/2.2-validation.subtyping.spectec b/specification/wasm-latest/2.2-validation.subtyping.spectec index 3c2aead03..a38d1f418 100644 --- a/specification/wasm-latest/2.2-validation.subtyping.spectec +++ b/specification/wasm-latest/2.2-validation.subtyping.spectec @@ -20,6 +20,10 @@ rule Vectype_sub: rule Heaptype_sub/refl: C |- heaptype <: heaptype +rule Heaptype_sub/exact-l: + C |- EXACT typeuse <: heaptype + -- Heaptype_sub: C |- typeuse <: heaptype + rule Heaptype_sub/trans: C |- heaptype_1 <: heaptype_2 -- Heaptype_ok: C |- heaptype' : OK