diff --git a/hy/lex/parser.py b/hy/lex/parser.py index 1eee798..f7264fb 100644 --- a/hy/lex/parser.py +++ b/hy/lex/parser.py @@ -254,7 +254,7 @@ def t_identifier(p): return p - obj = mangle(obj) + obj = ".".join([mangle(part) for part in obj.split(".")]) return HySymbol(obj) diff --git a/tests/lex/test_lex.py b/tests/lex/test_lex.py index e8b7a9c..93f862c 100644 --- a/tests/lex/test_lex.py +++ b/tests/lex/test_lex.py @@ -294,3 +294,11 @@ def test_lex_mangling_qmark(): assert entry == [HySymbol("?")] entry = tokenize("im?foo") assert entry == [HySymbol("im?foo")] + entry = tokenize(".foo?") + assert entry == [HySymbol(".is_foo")] + entry = tokenize("foo.bar?") + assert entry == [HySymbol("foo.is_bar")] + entry = tokenize("foo?.bar") + assert entry == [HySymbol("is_foo.bar")] + entry = tokenize(".foo?.bar.baz?") + assert entry == [HySymbol(".is_foo.bar.is_baz")]