010986e8ca
This commit adds just enough namespacing to resolve a macro first in the macro's defining module's namespace (i.e. the module assigned to the `HyASTCompiler`), then in the namespace/module it's evaluated in. Namespacing is accomplished by adding a `module` attribute to `HySymbol`, so that `HyExpression`s can be checked for this definition namespace attribute and their car symbol resolved per the above. As well, a couple tests have been added that cover - the loading of module-level macros - e.g. that only macros defined in the `require`d module are added - the AST generated for `require` - using macros loaded from modules imported via bytecode - the non-local macro namespace resolution described above - a `require`d macro that uses a macro `require` exclusively in its module-level namespace - and that (second-degree `require`d) macros can reference variables within their module-level namespaces. Closes hylang/hy#1268, closes hylang/hy#1650, closes hylang/hy#1416. |
||
---|---|---|
.. | ||
contrib | ||
extra | ||
__init__.py | ||
comprehensions.hy | ||
core.hy | ||
defclass.hy | ||
language.hy | ||
mangling.hy | ||
mathematics.hy | ||
model_patterns.hy | ||
native_macros.hy | ||
operators.hy | ||
py3_only_tests.hy | ||
py35_only_tests.hy | ||
py36_only_tests.hy | ||
quote.hy | ||
tag_macros.hy | ||
unless.hy | ||
when.hy | ||
with_decorator.hy | ||
with_test.hy |