Commit Graph

513 Commits

Author SHA1 Message Date
Vadim Petrochenkov
7ce85f2dca expand: Simplify expansion of derives
And make it more uniform with other macros.
By merging placeholders for future derives' outputs into the derive container's output fragment early.
2019-10-19 00:23:57 +03:00
Vadim Petrochenkov
2d3c17a609 resolve: Mark macros starting with an underscore as used 2019-10-19 00:23:04 +03:00
Mazdak Farrokhzad
d420d719c4 move syntax::ext to new crate syntax_expand 2019-10-16 10:59:53 +02:00
Tyler Mandry
af3d9e57e7
Rollup merge of #64623 - matthewjasper:underscore-imports, r=petrochenkov
Remove last uses of gensyms

Underscore bindings now use unique `SyntaxContext`s to avoid collisions. This was the last use of gensyms in the compiler, so this PR also removes them.

closes #49300
cc #60869

r? @petrochenkov
2019-10-15 16:07:41 -07:00
Matthew Jasper
1a2597b64a Don't use gensym_if_underscore to resolve _ bindings
Instead add a disambiguator to the keys used for distinguishing
resolutions.
2019-10-15 21:12:04 +01:00
Vadim Petrochenkov
f5baad2b5e rustc_metadata: Remove resolutions for extern crate items from CStore
Use a more traditional scheme with providing them as a resolver output
2019-10-14 18:05:45 +03:00
Vadim Petrochenkov
e8c28e24b9 rustc_metadata: Privatize private code and remove dead code 2019-10-14 18:05:45 +03:00
Mazdak Farrokhzad
742ec4b9bf ast: remove implicit pprust dependency via Display.
Instead just use `pprust::path_to_string(..)` where needed.

This has two benefits:

a) The AST definition is now independent of printing it.
   (Therefore we get closer to extracting a data-crate.)

b) Debugging should be easier as program flow is clearer.
2019-10-13 06:58:51 +02:00
Vadim Petrochenkov
5d8af38329 resolve: Keep field spans for diagnostics 2019-10-09 18:07:22 +03:00
varkor
38121173e2 Rename MetaItem.node to MetaItem.kind 2019-09-26 18:21:48 +01:00
varkor
b474867961 Rename ForeignItem.node to ForeignItem.kind 2019-09-26 18:21:48 +01:00
varkor
7bc94cc3c2 Rename Item.node to Item.kind 2019-09-26 18:21:48 +01:00
varkor
21bf983acb Rename Stmt.node to Stmt.kind 2019-09-26 18:21:10 +01:00
varkor
c3d8791373 Rename Ty.node to Ty.kind 2019-09-26 18:21:10 +01:00
varkor
d4573c9c1e Rename TraitItem.node to TraitItem.kind 2019-09-26 18:21:09 +01:00
varkor
ce6aabbaa1 Rename ImplItem.node to ImplItem.kind 2019-09-26 18:21:09 +01:00
varkor
8bd0382134 Rename Pat.node to Pat.kind 2019-09-26 18:21:09 +01:00
varkor
95f6d72a60 Rename Expr.node to Expr.kind
For both `ast::Expr` and `hir::Expr`.
2019-09-26 18:21:09 +01:00
Caio
63a5f399ae Resolve attributes in several places
Arm, Field, FieldPat, GenericParam, Param, StructField and Variant
2019-09-09 09:27:15 -03:00
Vadim Petrochenkov
0d084670d7 resolve: Do not afraid to set current module to enums and traits 2019-09-07 17:19:39 +03:00
Mazdak Farrokhzad
db493ef613
Rollup merge of #63919 - matthewjasper:remove-gensymmed, r=petrochenkov
Use hygiene for AST passes

AST passes are now able to have resolve consider their expansions as if they were opaque macros defined either in some module in the current crate, or a fake empty module with `#[no_implicit_prelude]`.

* Add an ExpnKind for AST passes.
* Remove gensyms in AST passes.
* Remove gensyms in`#[test]`, `#[bench]` and `#[test_case]`.
* Allow opaque macros to define tests.
* Move tests for unit tests to their own directory.
* Remove `Ident::{gensym, is_gensymed}` - `Ident::gensym_if_underscore` still exists.

cc #60869, #61019

r? @petrochenkov
2019-09-07 08:06:04 +02:00
Matthew Jasper
4082cd95a8 Allow ast passes to create hygienic spans 2019-09-05 15:07:16 +01:00
Vadim Petrochenkov
2065ee9acc metadata: Eliminate FullProcMacro
Fix caching of loaded proc macros
2019-08-27 01:34:07 +03:00
Vadim Petrochenkov
bf345dd6e3 resolve: Do not rely on default transparency when detecting proc macro derives 2019-08-23 01:44:33 +03:00
Vadim Petrochenkov
1064d41c96 resolve/expand: Rename some things for clarity 2019-08-17 21:04:48 +03:00
Vadim Petrochenkov
d479ff2ffe resolve: Properly integrate derives and macro_rules scopes 2019-08-17 20:15:06 +03:00
Vadim Petrochenkov
5e47cd4a17 Fix rebase
Move some code into `build_reduced_graph.rs` to keep `BuildReducedGraphVisitor` it private
Also move the def collector call to `build_reduced_graph.rs`, it belongs there.
2019-08-16 21:28:22 +03:00
Vadim Petrochenkov
ab4cc2db56 resolve: Move some code around 2019-08-16 21:10:12 +03:00
Vadim Petrochenkov
fe2524cb9c resolve: Populate external traits lazily as well 2019-08-16 21:10:12 +03:00
Vadim Petrochenkov
ea81d8cedb resolve: Populate external modules in more automatic and lazy way
The modules are now populated implicitly on the first access
2019-08-16 21:10:12 +03:00
Vadim Petrochenkov
c76277340e resolve: ParentScope::default -> ParentScope::module 2019-08-15 20:47:15 +03:00
Vadim Petrochenkov
aca1353240 resolve: Add some comments to the main modules 2019-08-15 20:40:47 +03:00
Vadim Petrochenkov
310ee4d98c resolve: Privatize BuildReducedGraphVisitor 2019-08-15 20:40:47 +03:00
Vadim Petrochenkov
ea68bc85e0 resolve: Make ParentScope Copy
By allocating its derive paths on the resolver arena.
2019-08-15 20:40:47 +03:00
Vadim Petrochenkov
59dd07ae2b resolve: Eliminate InvocationData
It was very similar to `ParentScope` and mostly could be replaced by it.
2019-08-15 20:40:18 +03:00
Vadim Petrochenkov
1a1557c285 resolve: Add ParentScope::default, eliminate dummy_parent_scope
Remove some unnecessary parameters from functions
2019-08-15 20:40:18 +03:00
Vadim Petrochenkov
23b82c3229 resolve: Move macro resolution traces from Modules to Resolver
Traces already contain module info without that.
It's easy to forget to call `finalize_*` on a module.
In particular, macros enum and trait modules weren't finalized.
By happy accident macros weren't placed into those modules until now.
2019-08-15 20:39:27 +03:00
Caio
6a42b0b28d Merge Variant and Variant_ 2019-08-14 14:47:01 -03:00
Vadim Petrochenkov
fa7fe19601 resolve: Remove remaining special cases from built-in macros 2019-08-10 21:50:56 +03:00
Vadim Petrochenkov
f360d795f1 resolve: Move some more code around
Move methods logically belonging to build-reduced-graph into `impl BuildReducedGraphVisitor` and `build_reduced_graph.rs`
Move types mostly specific to late resolution closer to the late resolution visitor
2019-08-10 13:16:06 +03:00
Vadim Petrochenkov
9c86ce76e5 resolve: Turn resolve_error into a method on Resolver
Rename it to `report_error` and move into `diagnostics.rs`

Also turn `check_unused` into a method on `Resolver`
2019-08-10 13:16:06 +03:00
Vadim Petrochenkov
6a347f3701 resolve: Remove Deref<Target=Resolver> implementations
It's now immediately clear what fields belong to the global resolver state and what are specific to passes/visitors.
2019-08-10 13:16:06 +03:00
Vadim Petrochenkov
df03e420e0 resolve: Track whole parent scope in the visitors
Instead of tracking current module and other components separately.
(`ParentScope` includes the module as a component.)
2019-08-10 13:16:06 +03:00
Vadim Petrochenkov
e2e8746acc resolve: Move late resolution into a separate visitor
Move `Resolver` fields specific to late resolution to the new visitor.
The `current_module` field from `Resolver` is replaced with two `current_module`s in `LateResolutionVisitor` and `BuildReducedGraphVisitor`.
Outside of those visitors `current_module` is replaced by passing `parent_scope` to more functions and using the parent module from it.

Visibility resolution no longer have access to later resolution methods and has to use early resolution, so its diagnostics in case of errors regress slightly.
2019-08-10 13:15:15 +03:00
varkor
8aa45c65d8 Rename ItemKind::Ty to ItemKind::TyAlias 2019-08-04 20:13:37 +01:00
varkor
c28ce3e4ca Replace "existential" by "opaque" 2019-08-02 02:44:36 +01:00
Vadim Petrochenkov
4d535bdf59 Move standard library injection into libsyntax_ext 2019-07-27 13:56:54 +03:00
Vadim Petrochenkov
8eaf17bca2 Introduce built-in macros through libcore 2019-07-26 13:09:54 +03:00
Samy Kacimi
66815c613a
normalize use of backticks for compiler messages in remaining modules
https://github.com/rust-lang/rust/issues/60532
2019-07-23 23:09:59 +02:00
Vadim Petrochenkov
09703e3843 Adjust other names after the Mark renaming 2019-07-19 12:01:49 +03:00