Skip to content

Latest commit

 

History

History
196 lines (106 loc) · 3.15 KB

File metadata and controls

196 lines (106 loc) · 3.15 KB
.. index:: value

Values

.. index:: value, value type, validation, structure, structure type, structure instance, array, array type, array instance, function, function type, function instance, null reference, scalar reference, store

Value Typing

For the purpose of checking argument :ref:`values <syntax-val>` against the parameter types of exported :ref:`functions <syntax-func>`, values are classified by :ref:`value types <syntax-valtype>`. The following auxiliary typing rules specify this typing relation relative to a :ref:`store <syntax-store>` S in which possibly referenced :ref:`addresses <syntax-addr>` live.

${rule-ignore: Val_ok/*}

Numeric Values

$${rule-prose: Num_ok}

$${rule: Num_ok}

Vector Values

$${rule-prose: Vec_ok}

$${rule: Vec_ok}

Null References

$${rule-prose: Ref_ok/null}

$${rule: Ref_ok/null}

Scalar References

$${rule-prose: Ref_ok/i31}

$${rule: Ref_ok/i31}

Structure References

$${rule-prose: Ref_ok/struct}

$${rule: Ref_ok/struct}

Array References

$${rule-prose: Ref_ok/array}

$${rule: Ref_ok/array}

Exception References

$${rule-prose: Ref_ok/exn}

$${rule: Ref_ok/exn}

Function References

$${rule-prose: Ref_ok/func}

$${rule: Ref_ok/func}

Host References

$${rule-prose: Ref_ok/host}

$${rule: Ref_ok/host}

Note

A bare host reference is considered internalized.

External References

$${rule-prose: Ref_ok/extern}

$${rule: Ref_ok/extern}

Subsumption

$${rule-prose: Ref_ok/sub}

$${rule: Ref_ok/sub}

.. index:: external address, external type, validation, import, store

External Typing

For the purpose of checking :ref:`external address <syntax-externaddr>` against :ref:`imports <syntax-import>`, such values are classified by :ref:`external types <syntax-externtype>`. The following auxiliary typing rules specify this typing relation relative to a :ref:`store <syntax-store>` S in which the referenced instances live.

.. index:: function type, function address

Functions

$${rule-prose: Externaddr_ok/func}

$${rule: Externaddr_ok/func}

.. index:: table type, table address

Tables

$${rule-prose: Externaddr_ok/table}

$${rule: Externaddr_ok/table}

.. index:: memory type, memory address

Memories

$${rule-prose: Externaddr_ok/mem}

$${rule: Externaddr_ok/mem}

.. index:: global type, global address, value type, mutability

Globals

$${rule-prose: Externaddr_ok/global}

$${rule: Externaddr_ok/global}

.. index:: tag type, tag address, exception tag, function type

Tags

$${rule-prose: Externaddr_ok/tag}

$${rule: Externaddr_ok/tag}

Subsumption

$${rule-prose: Externaddr_ok/sub}

$${rule: Externaddr_ok/sub}