Skip to content

module_symbols

Centralize module-qualified semantic ids and deterministic LLVM mangling rules for cross-module declarations.

Functions:

class_key

class_key(
    module_key: ModuleKey, name: str
) -> tuple[ModuleKey, str]
Source code in src/irx/analysis/module_symbols.py
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
@public
@typechecked
def class_key(module_key: ModuleKey, name: str) -> tuple[ModuleKey, str]:
    """
    title: Return a module-aware class registry key.
    parameters:
      module_key:
        type: ModuleKey
      name:
        type: str
    returns:
      type: tuple[ModuleKey, str]
    """
    return (module_key, name)

class_method_symbol_basename

class_method_symbol_basename(
    class_name: str,
    method_name: str,
    overload_key: str | None = None,
) -> str
Source code in src/irx/analysis/module_symbols.py
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
@public
@typechecked
def class_method_symbol_basename(
    class_name: str,
    method_name: str,
    overload_key: str | None = None,
) -> str:
    """
    title: Return a deterministic class-method symbol basename.
    parameters:
      class_name:
        type: str
      method_name:
        type: str
      overload_key:
        type: str | None
    returns:
      type: str
    """
    return _class_method_symbol_basename(
        class_name,
        method_name,
        overload_key,
    )

function_key

function_key(
    module_key: ModuleKey, name: str
) -> tuple[ModuleKey, str]
Source code in src/irx/analysis/module_symbols.py
55
56
57
58
59
60
61
62
63
64
65
66
67
68
@public
@typechecked
def function_key(module_key: ModuleKey, name: str) -> tuple[ModuleKey, str]:
    """
    title: Return a module-aware function registry key.
    parameters:
      module_key:
        type: ModuleKey
      name:
        type: str
    returns:
      type: tuple[ModuleKey, str]
    """
    return (module_key, name)

mangle_class_descriptor_name

mangle_class_descriptor_name(
    module_key: ModuleKey, class_name: str
) -> str
Source code in src/irx/analysis/module_symbols.py
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
@public
@typechecked
def mangle_class_descriptor_name(
    module_key: ModuleKey,
    class_name: str,
) -> str:
    """
    title: Return a deterministic LLVM class-descriptor global name.
    parameters:
      module_key:
        type: ModuleKey
      class_name:
        type: str
    returns:
      type: str
    """
    return _mangle_parts(str(module_key), class_name, "descriptor")

mangle_class_dispatch_name

mangle_class_dispatch_name(
    module_key: ModuleKey, class_name: str
) -> str
Source code in src/irx/analysis/module_symbols.py
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
@public
@typechecked
def mangle_class_dispatch_name(
    module_key: ModuleKey,
    class_name: str,
) -> str:
    """
    title: Return a deterministic LLVM class-dispatch global name.
    parameters:
      module_key:
        type: ModuleKey
      class_name:
        type: str
    returns:
      type: str
    """
    return _mangle_parts(str(module_key), class_name, "dispatch")

mangle_class_method_name

mangle_class_method_name(
    module_key: ModuleKey,
    class_name: str,
    method_name: str,
    overload_key: str | None = None,
) -> str
Source code in src/irx/analysis/module_symbols.py
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
@public
@typechecked
def mangle_class_method_name(
    module_key: ModuleKey,
    class_name: str,
    method_name: str,
    overload_key: str | None = None,
) -> str:
    """
    title: Return a deterministic LLVM class-method symbol name.
    parameters:
      module_key:
        type: ModuleKey
      class_name:
        type: str
      method_name:
        type: str
      overload_key:
        type: str | None
    returns:
      type: str
    """
    return _mangle_parts(
        str(module_key),
        _class_method_symbol_basename(
            class_name,
            method_name,
            overload_key,
        ),
    )

mangle_class_name

mangle_class_name(
    module_key: ModuleKey, class_name: str
) -> str
Source code in src/irx/analysis/module_symbols.py
297
298
299
300
301
302
303
304
305
306
307
308
309
310
@public
@typechecked
def mangle_class_name(module_key: ModuleKey, class_name: str) -> str:
    """
    title: Return a deterministic LLVM class-object name.
    parameters:
      module_key:
        type: ModuleKey
      class_name:
        type: str
    returns:
      type: str
    """
    return _mangle_parts(str(module_key), class_name)

mangle_class_static_name

mangle_class_static_name(
    module_key: ModuleKey, class_name: str, member_name: str
) -> str
Source code in src/irx/analysis/module_symbols.py
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
@public
@typechecked
def mangle_class_static_name(
    module_key: ModuleKey,
    class_name: str,
    member_name: str,
) -> str:
    """
    title: Return a deterministic LLVM static-member global name.
    parameters:
      module_key:
        type: ModuleKey
      class_name:
        type: str
      member_name:
        type: str
    returns:
      type: str
    """
    return _mangle_parts(str(module_key), class_name, "static", member_name)

mangle_function_name

mangle_function_name(
    module_key: ModuleKey, function_name: str
) -> str
Source code in src/irx/analysis/module_symbols.py
265
266
267
268
269
270
271
272
273
274
275
276
277
278
@public
@typechecked
def mangle_function_name(module_key: ModuleKey, function_name: str) -> str:
    """
    title: Return a deterministic LLVM function name.
    parameters:
      module_key:
        type: ModuleKey
      function_name:
        type: str
    returns:
      type: str
    """
    return _mangle_parts(str(module_key), function_name)

mangle_struct_name

mangle_struct_name(
    module_key: ModuleKey, struct_name: str
) -> str
Source code in src/irx/analysis/module_symbols.py
281
282
283
284
285
286
287
288
289
290
291
292
293
294
@public
@typechecked
def mangle_struct_name(module_key: ModuleKey, struct_name: str) -> str:
    """
    title: Return a deterministic LLVM struct name.
    parameters:
      module_key:
        type: ModuleKey
      struct_name:
        type: str
    returns:
      type: str
    """
    return _mangle_parts(str(module_key), struct_name)

qualified_class_member_name

qualified_class_member_name(
    module_key: ModuleKey,
    class_name: str,
    member_name: str,
    overload_key: str | None = None,
) -> str
Source code in src/irx/analysis/module_symbols.py
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
@public
@typechecked
def qualified_class_member_name(
    module_key: ModuleKey,
    class_name: str,
    member_name: str,
    overload_key: str | None = None,
) -> str:
    """
    title: Return a qualified semantic class-member name.
    parameters:
      module_key:
        type: ModuleKey
      class_name:
        type: str
      member_name:
        type: str
      overload_key:
        type: str | None
    returns:
      type: str
    """
    qualified_name = (
        f"{module_key}::class::{class_name}::member::{member_name}"
    )
    if overload_key is None:
        return qualified_name
    return f"{qualified_name}::overload::{overload_key}"

qualified_class_method_name

qualified_class_method_name(
    module_key: ModuleKey,
    class_name: str,
    method_name: str,
    overload_key: str | None = None,
) -> str
Source code in src/irx/analysis/module_symbols.py
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
@public
@typechecked
def qualified_class_method_name(
    module_key: ModuleKey,
    class_name: str,
    method_name: str,
    overload_key: str | None = None,
) -> str:
    """
    title: Return a qualified semantic class-method function name.
    parameters:
      module_key:
        type: ModuleKey
      class_name:
        type: str
      method_name:
        type: str
      overload_key:
        type: str | None
    returns:
      type: str
    """
    qualified_name = (
        f"{module_key}::class::{class_name}::method::{method_name}"
    )
    if overload_key is None:
        return qualified_name
    return f"{qualified_name}::overload::{overload_key}"

qualified_class_name

qualified_class_name(
    module_key: ModuleKey, name: str
) -> str
Source code in src/irx/analysis/module_symbols.py
119
120
121
122
123
124
125
126
127
128
129
130
131
132
@public
@typechecked
def qualified_class_name(module_key: ModuleKey, name: str) -> str:
    """
    title: Return a qualified semantic class name.
    parameters:
      module_key:
        type: ModuleKey
      name:
        type: str
    returns:
      type: str
    """
    return f"{module_key}::class::{name}"

qualified_function_name

qualified_function_name(
    module_key: ModuleKey, name: str
) -> str
Source code in src/irx/analysis/module_symbols.py
103
104
105
106
107
108
109
110
111
112
113
114
115
116
@public
@typechecked
def qualified_function_name(module_key: ModuleKey, name: str) -> str:
    """
    title: Return a qualified semantic function name.
    parameters:
      module_key:
        type: ModuleKey
      name:
        type: str
    returns:
      type: str
    """
    return f"{module_key}::fn::{name}"

qualified_local_name

qualified_local_name(
    module_key: ModuleKey,
    kind: str,
    name: str,
    symbol_id: str,
) -> str
Source code in src/irx/analysis/module_symbols.py
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
@public
@typechecked
def qualified_local_name(
    module_key: ModuleKey,
    kind: str,
    name: str,
    symbol_id: str,
) -> str:
    """
    title: Return a qualified semantic local symbol name.
    parameters:
      module_key:
        type: ModuleKey
      kind:
        type: str
      name:
        type: str
      symbol_id:
        type: str
    returns:
      type: str
    """
    return f"{module_key}::{kind}::{name}::{symbol_id}"

qualified_struct_name

qualified_struct_name(
    module_key: ModuleKey, name: str
) -> str
Source code in src/irx/analysis/module_symbols.py
135
136
137
138
139
140
141
142
143
144
145
146
147
148
@public
@typechecked
def qualified_struct_name(module_key: ModuleKey, name: str) -> str:
    """
    title: Return a qualified semantic struct name.
    parameters:
      module_key:
        type: ModuleKey
      name:
        type: str
    returns:
      type: str
    """
    return f"{module_key}::struct::{name}"

struct_key

struct_key(
    module_key: ModuleKey, name: str
) -> tuple[ModuleKey, str]
Source code in src/irx/analysis/module_symbols.py
71
72
73
74
75
76
77
78
79
80
81
82
83
84
@public
@typechecked
def struct_key(module_key: ModuleKey, name: str) -> tuple[ModuleKey, str]:
    """
    title: Return a module-aware struct registry key.
    parameters:
      module_key:
        type: ModuleKey
      name:
        type: str
    returns:
      type: tuple[ModuleKey, str]
    """
    return (module_key, name)