Skip to content

Commit 475ac17

Browse files
authored
Use generated symbols to reduce likelihood of a def name clash (#123)
1 parent 7cc187a commit 475ac17

File tree

1 file changed

+16
-10
lines changed

1 file changed

+16
-10
lines changed

basilisp/compiler.py

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -380,15 +380,15 @@ def _expressionize(body: MixedNodeStream,
380380
returns=None)
381381

382382

383-
_KW_ALIAS = 'kw'
384-
_LIST_ALIAS = 'llist'
385-
_MAP_ALIAS = 'lmap'
386-
_RUNTIME_ALIAS = 'runtime'
387-
_SET_ALIAS = 'lset'
388-
_SYM_ALIAS = 'sym'
389-
_VEC_ALIAS = 'vec'
390-
_VAR_ALIAS = 'Var'
391-
_UTIL_ALIAS = 'langutil'
383+
_KW_ALIAS = genname('kw')
384+
_LIST_ALIAS = genname('llist')
385+
_MAP_ALIAS = genname('lmap')
386+
_RUNTIME_ALIAS = genname('runtime')
387+
_SET_ALIAS = genname('lset')
388+
_SYM_ALIAS = genname('sym')
389+
_VEC_ALIAS = genname('vec')
390+
_VAR_ALIAS = genname('Var')
391+
_UTIL_ALIAS = genname('langutil')
392392
_NS_VAR_VALUE = f'{_NS_VAR}.value'
393393

394394
_NS_VAR_NAME = _load_attr(f'{_NS_VAR_VALUE}.name')
@@ -477,6 +477,12 @@ def _def_ast(ctx: CompilerContext, form: llist.List) -> ASTStream:
477477

478478
yield from meta_nodes
479479
yield from def_nodes
480+
481+
# TODO: log this out, rather than emitting as a warning
482+
# https://github.com/chrisrink10/basilisp/issues/121
483+
if safe_name in ctx.current_ns.module.__dict__:
484+
print(f"WARNING: redefining local Python name '{safe_name}' in module '{ctx.current_ns.module.__name__}'")
485+
480486
yield _dependency(ast.Assign(targets=[ast.Name(id=safe_name, ctx=ast.Store())],
481487
value=Maybe(def_value).map(_unwrap_node).or_else_get(ast.NameConstant(None))))
482488
yield _node(ast.Call(
@@ -1671,7 +1677,7 @@ def _from_module_import() -> ast.ImportFrom:
16711677
language support modules."""
16721678
return ast.ImportFrom(
16731679
module='basilisp.lang.runtime',
1674-
names=[ast.alias(name='Var', asname=None)],
1680+
names=[ast.alias(name='Var', asname=_VAR_ALIAS)],
16751681
level=0)
16761682

16771683

0 commit comments

Comments
 (0)