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)
|