Skip to content

symbols

Functions:

function_symbol

function_symbol(
    symbol_id: str,
    prototype: FunctionPrototype,
    args: tuple[SemanticSymbol, ...],
    *,
    definition: FunctionDef | None = None,
) -> SemanticFunction
Source code in src/irx/analysis/symbols.py
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
@public
def function_symbol(
    symbol_id: str,
    prototype: astx.FunctionPrototype,
    args: tuple[SemanticSymbol, ...],
    *,
    definition: astx.FunctionDef | None = None,
) -> SemanticFunction:
    """
    title: Create a function symbol.
    parameters:
      symbol_id:
        type: str
      prototype:
        type: astx.FunctionPrototype
      args:
        type: tuple[SemanticSymbol, Ellipsis]
      definition:
        type: astx.FunctionDef | None
    returns:
      type: SemanticFunction
    """
    return SemanticFunction(
        symbol_id=symbol_id,
        name=prototype.name,
        return_type=prototype.return_type,
        args=args,
        prototype=prototype,
        definition=definition,
    )

variable_symbol

variable_symbol(
    symbol_id: str,
    name: str,
    type_: DataType,
    *,
    is_mutable: bool,
    declaration: AST | None,
    kind: str = "variable",
) -> SemanticSymbol
Source code in src/irx/analysis/symbols.py
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
@public
def variable_symbol(
    symbol_id: str,
    name: str,
    type_: astx.DataType,
    *,
    is_mutable: bool,
    declaration: astx.AST | None,
    kind: str = "variable",
) -> SemanticSymbol:
    """
    title: Create a variable-like symbol.
    parameters:
      symbol_id:
        type: str
      name:
        type: str
      type_:
        type: astx.DataType
      is_mutable:
        type: bool
      declaration:
        type: astx.AST | None
      kind:
        type: str
    returns:
      type: SemanticSymbol
    """
    return SemanticSymbol(
        symbol_id=symbol_id,
        name=name,
        type_=type_,
        is_mutable=is_mutable,
        kind=kind,
        declaration=declaration,
    )

with_definition

with_definition(
    symbol: SemanticFunction, definition: FunctionDef
) -> SemanticFunction
Source code in src/irx/analysis/symbols.py
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
@public
def with_definition(
    symbol: SemanticFunction, definition: astx.FunctionDef
) -> SemanticFunction:
    """
    title: Return a function symbol updated with its definition.
    parameters:
      symbol:
        type: SemanticFunction
      definition:
        type: astx.FunctionDef
    returns:
      type: SemanticFunction
    """
    return replace(symbol, definition=definition)