Currently the execute command on Diesl does not use the compiler.
The command is also only used during development flows, and so has been
safely ignored for now.
Execute is extremely useful as it has no static dependency tracking - sacrificing safety for ease of use.
There appears to be a happy middle ground, by dropping doclets from the compile step.
We can achieve a similar level of safety by introspecting the language pack module for exports
during compile, and then detect call expressions in the user expression using the scope lookup facility in ast-types and esprima.
The compile step has become a little cumbersome to work with, and efforts to align execute and compile will go a long way in bringing developing and testing expressions and language packs closer to how production executes them.
Currently the
execute
command on Diesl does not use the compiler. The command is also only used during development flows, and so has been safely ignored for now.Execute is extremely useful as it has no static dependency tracking - sacrificing safety for ease of use.
There appears to be a happy middle ground, by dropping doclets from the compile step. We can achieve a similar level of safety by introspecting the language pack module for exports during compile, and then detect call expressions in the user expression using the scope lookup facility in
ast-types
andesprima
.The compile step has become a little cumbersome to work with, and efforts to align execute and compile will go a long way in bringing developing and testing expressions and language packs closer to how production executes them.