Comments (4)
I might've been a bit hasty, after re-reading the code it seems like we can actually handle use processing during indexing (leading to #526).
What we currently do not handle is module expansion though, but one out of two problems is pretty neat anyways. Thanks for pointing me in the right direction!
from rune.
These are two know limitations:
- Macro imports must use
::std
, or fully qualified paths. This is because local modules could otherwise affect resolution, which is only something that can happen at a later compilation stage. Currently we only have one pass of indexing and macro expansion, and one pass of compilation. - Macro imports must happen before the macro is used.
This is simply an effect of how macros are integrated into the system, for now. It can clearly be improved but we don't have the necessary subsystems to do so! This could possibly be fixed by further deferring macro expansion to happen after at least one round of complete indexing - then uses which happen after the macro would be seen.
A technical limitation to make this kind of deferment happen is that specific points of the AST can't be very easily referenced for later processing, we just currently rely only mutable access to the AST as we walk over it.
I've added this bug report as linked in #27.
from rune.
- Macro imports must use
::std
, or fully qualified paths.
oh sorry, that I missed.
from rune.
Not your fault. The macro system is still work in progress, and I'm not sure this is expressed elsewhere except in maybe the issue which implemented it.
from rune.
Related Issues (20)
- Support for getting the value of a constant HOT 4
- Loading modules HOT 7
- 0.12.2 release did not get completed HOT 2
- Item resolver incorrectly finds instance functions when referencing local names
- Standard macros should live in the `rune` crate and not `rune-modules`
- Vec is missing INDEX_GET protocol and support for range indexing HOT 4
- No warning or error when defining a variable multiple times in the same scope HOT 2
- Document built-in modules
- [question] Type conversion HOT 3
- Improve std::future::join HOT 5
- Proper way to call Rust from Rune Scripts HOT 1
- Language server should return `id` for unhandled requests HOT 3
- feature request: Integrate FlexStr
- item macros not working HOT 5
- Formatting misfire with anything following item macro call HOT 9
- Ergonomics of macro implementation HOT 2
- Make derive macros work outside of `rune` HOT 4
- fs functions HOT 2
- Printable errors HOT 7
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rune.