Skip to content

types

Provide semantic-facing type nodes that extend the upstream ASTx type model without coupling them to template metadata helpers.

Classes:

TemplateTypeVar

TemplateTypeVar(name: str, *, bound: DataType)

Bases: AnyType

Represent one unresolved template type parameter inside function signatures or local declared types before specialization. attributes: name: type: str bound: type: astx.DataType

Methods:

Source code in src/irx/astx/types.py
 98
 99
100
101
102
103
104
105
106
107
108
109
def __init__(self, name: str, *, bound: astx.DataType) -> None:
    """
    title: Initialize one template type variable.
    parameters:
      name:
        type: str
      bound:
        type: astx.DataType
    """
    super().__init__()
    self.name = name
    self.bound = bound

get_struct

get_struct(simplified: bool = False) -> ReprStruct
Source code in src/irx/astx/types.py
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
def get_struct(self, simplified: bool = False) -> astx.base.ReprStruct:
    """
    title: Build one repr structure for a template type variable.
    parameters:
      simplified:
        type: bool
    returns:
      type: astx.base.ReprStruct
    """
    key = f"TEMPLATE_TYPE_VAR[{self.name}]"
    value = cast(
        astx.base.DataTypesStruct,
        {
            "name": self.name,
            "bound": self.bound.get_struct(simplified),
        },
    )
    return self._prepare_struct(key, value, simplified)

UnionType

UnionType(
    members: Iterable[DataType],
    *,
    alias_name: str | None = None,
)

Bases: AnyType

Represent one union of concrete type references that semantic analysis may enumerate as a finite type domain. attributes: members: type: tuple[astx.DataType, Ellipsis] alias_name: type: str | None

Methods:

Source code in src/irx/astx/types.py
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
def __init__(
    self,
    members: Iterable[astx.DataType],
    *,
    alias_name: str | None = None,
) -> None:
    """
    title: Initialize one finite union type.
    parameters:
      members:
        type: Iterable[astx.DataType]
      alias_name:
        type: str | None
    """
    super().__init__()
    self.members = tuple(members)
    self.alias_name = alias_name

get_struct

get_struct(simplified: bool = False) -> ReprStruct
Source code in src/irx/astx/types.py
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
def get_struct(self, simplified: bool = False) -> astx.base.ReprStruct:
    """
    title: Build one repr structure for a finite union type.
    parameters:
      simplified:
        type: bool
    returns:
      type: astx.base.ReprStruct
    """
    key = f"UNION[{self.alias_name or id(self)}]"
    value = cast(
        astx.base.DataTypesStruct,
        [member.get_struct(simplified) for member in self.members],
    )
    return self._prepare_struct(key, value, simplified)