8d2143177e
This allows macros to take a keyword dict containing useful things by defining a keyword argument. This allows us to pass in new objects which might be handy to have in macros. This changeset refactors module_name to become `compiler`, so that we can pass the compiler itself into the macros as `opts['compiler']`. This allows the macro to both get the macro name (`compiler.module_name`), as well as use the compiler to build AST. In the future, this will enable us to create "super-macros" which return AST, not HyAST, in order to manually create insane things from userland. For userland macros (not `defmacro`) the core.language `macroexpand` will go ahead and make a new compiler for you.
13 lines
416 B
Python
13 lines
416 B
Python
from hy.macros import macroexpand
|
|
from hy.compiler import HyTypeError, HyASTCompiler
|
|
from hy.lex import tokenize
|
|
|
|
|
|
def test_reader_macro_error():
|
|
"""Check if we get correct error with wrong dispatch character"""
|
|
try:
|
|
macroexpand(tokenize("(dispatch_reader_macro '- '())")[0],
|
|
HyASTCompiler(__name__))
|
|
except HyTypeError as e:
|
|
assert "with the character `-`" in str(e)
|