173 Commits

Author SHA1 Message Date
Ariel Ben-Yehuda
8dc8f8fe53 Rollup merge of #40344 - nrc:save-container, r=eddyb
save-analysis: cope with lack of method data after a type error

Fixes #39957

r? @eddyb
2017-03-11 21:57:43 +02:00
Alex Crichton
755877dbfd Rollup merge of #40311 - nrc:save-proc-macro-attr, r=jseyfried
Expect macro defs in save-analysis and add expn info to spans for att…

…r proc macros

r? @jseyfried
2017-03-10 16:18:28 -08:00
Nick Cameron
e5d1b9ca39 save-analysis: cope with lack of method data after a type error
Fixes #39957
2017-03-10 08:20:00 -08:00
Nick Cameron
5afe784daa Expect macro defs in save-analysis and add expn info to spans for attr proc macros 2017-03-10 08:16:21 -08:00
Jonas Bushart
db35604792 Move remove_docs_from_attrs into lowering step 2017-03-10 08:02:24 -08:00
Jonas Bushart
203d22762d Store attributes as strings
Remove the AST structure
2017-03-10 08:02:24 -08:00
Jonas Bushart
a07c9a20b7 Export attributes in save-analysis data
Some annotations like the "test" annotations might be of interest for
other projects, especially rls. Export all attributes in a new
attributes item.
2017-03-10 08:02:24 -08:00
Jeffrey Seyfried
f6eaaf350e Integrate TokenStream. 2017-03-03 02:15:37 +00:00
Jeffrey Seyfried
d8b34e9a74 Add syntax::ext::tt::quoted::{TokenTree, ..} and remove tokenstream::TokenTree::Sequence. 2017-02-28 22:14:29 +00:00
Eduard Burtescu
f702b20dfd rustc_save_analysis: don't pollute the codemap with fake files. 2017-02-28 08:30:07 +02:00
Eduard Burtescu
4649f7387e rustc_typeck: lift CrateCtxt to TyCtxt. 2017-02-25 17:07:59 +02:00
Eduard-Mihai Burtescu
cc8a3a93b7 rustc: consolidate dep-tracked hashmaps in tcx.maps. 2017-02-25 17:07:59 +02:00
Josh Driver
4ecdc68153 Move MacroKind into Def::Macro 2017-02-23 20:12:33 +10:30
Nick Cameron
530d09c5d6 save-analysis: emit info about impls and super-traits in JSON 2017-02-13 17:50:58 +13:00
Corey Farwell
ece9240824 Rollup merge of #39453 - nrc:save-path, r=nikomatsakis
save-analysis: be more paranoid about generated paths

fixes https://github.com/rust-lang-nursery/rls/issues/160
2017-02-05 09:14:49 -05:00
Andrew Cann
2cc84df44c Add warning for () to ! switch 2017-02-03 18:48:15 +08:00
Nick Cameron
395f23c9f7 save-analysis: be more paranoid about generated paths
fixes https://github.com/rust-lang-nursery/rls/issues/160
2017-02-02 16:23:27 +13:00
Nick Cameron
36ad34d343 save-analysis: get tables directly, accomodating them being missing
Fixes an ICE when running with save-analsysis after an error
2017-01-27 07:21:06 +13:00
Eduard-Mihai Burtescu
45c8c5678a rustc: rename TyCtxt's map field to hir. 2017-01-26 13:41:28 +02:00
Niko Matsakis
282f7a3c44 rename Tables to TypeckTables 2017-01-25 16:24:00 -05:00
Nick Cameron
5e33c5f0ff save-analysis: walk paths
Catches generic types in paths
2017-01-25 17:00:19 +13:00
Nick Cameron
659859c537 save-analysis: walk path expressions
This is actually kinda hard to hit, but it fixes missing the `foo` in `for _ in foo {}`.
2017-01-25 16:46:34 +13:00
Alex Crichton
17294d98b9 Rollup merge of #39118 - jseyfried:token_tree_based_parser, r=nrc
Refactor the parser to consume token trees

This is groundwork for efficiently parsing attribute proc macro invocations, bang macro invocations, and `TokenStream`-based attributes and fragment matchers.

This improves parsing performance by 8-15% and expansion performance by 0-5% on a sampling of the compiler's crates.

r? @nrc
2017-01-20 08:35:47 -08:00
Jeffrey Seyfried
de46b24758 Introduce string_reader.parse_all_token_trees(). 2017-01-17 08:16:49 +00:00
Jeffrey Seyfried
6466f55ebc Give the StringReader a sess: &ParseSess. 2017-01-17 08:16:47 +00:00
Nick Cameron
745a5e8d3b save-analysis: handle paths in type/trait context more correctly
TBH, this is still not perfect, witness the FIXME, but it is an improvement. In particular it means we get information about trait references in impls.
2017-01-10 16:09:13 +13:00
Nick Cameron
1cfe3b1c8c save-analysis: fix over-zealous filter on generated code 2017-01-09 15:07:07 +13:00
bors
cbf88730e7 Auto merge of #38813 - eddyb:lazy-11, r=nikomatsakis
[11/n] Separate ty::Tables into one per each body.

_This is part of a series ([prev](https://github.com/rust-lang/rust/pull/38449) | [next]()) of patches designed to rework rustc into an out-of-order on-demand pipeline model for both better feature support (e.g. [MIR-based](https://github.com/solson/miri) early constant evaluation) and incremental execution of compiler passes (e.g. type-checking), with beneficial consequences to IDE support as well.
If any motivation is unclear, please ask for additional PR description clarifications or code comments._

<hr>

In order to track the results of type-checking and inference for incremental recompilation, they must be stored separately for each function or constant value, instead of lumped together.

These side-`Tables` also have to be tracked by various passes, as they visit through bodies (all of which have `Tables`, even if closures share the ones from their parent functions). This is usually done by switching a `tables` field in an override of `visit_nested_body` before recursing through `visit_body`, to the relevant one and then restoring it - however, in many cases the nesting is unnecessary and creating the visitor for each body in the crate and then visiting that body, would be a much cleaner solution.

To simplify handling of inlined HIR & its side-tables, their `NodeId` remapping and entries HIR map were fully stripped out, which means that `NodeId`s from inlined HIR must not be used where a local `NodeId` is expected. It might be possible to make the nodes (`Expr`, `Block`, `Pat`, etc.) that only show up within a `Body` have IDs that are scoped to that `Body`, which would also allow `Tables` to use `Vec`s.

That last part also fixes #38790 which was accidentally introduced in a previous refactor.
2017-01-08 11:36:52 +00:00
Eduard-Mihai Burtescu
85a4a192c7 rustc: keep track of tables everywhere as if they were per-body. 2017-01-06 22:23:29 +02:00
Alex Crichton
9b0b5b45db Remove not(stage0) from deny(warnings)
Historically this was done to accommodate bugs in lints, but there hasn't been a
bug in a lint since this feature was added which the warnings affected. Let's
completely purge warnings from all our stages by denying warnings in all stages.
This will also assist in tracking down `stage0` code to be removed whenever
we're updating the bootstrap compiler.
2016-12-29 21:07:20 -08:00
Eduard-Mihai Burtescu
4aae835803 rustc: always print nested nodes where a HIR map is available. 2016-12-28 11:29:20 +02:00
bors
00b4019f28 Auto merge of #38529 - nrc:save-sig, r=nikomatsakis
save-analysis: add signature info

These 'signatures' for definitions contain enough info for the RLS to create Rustdoc-style info on the fly.
2016-12-23 15:59:07 +00:00
Jeffrey Seyfried
f10f50b426 Refactor how global paths are represented (for both ast and hir). 2016-12-22 06:14:35 +00:00
Nick Cameron
c24b1928ca rebasing fix 2016-12-22 17:01:45 +13:00
Nick Cameron
5d971ab5f2 save-analysis signature stuff for json-api flavour. 2016-12-22 15:18:03 +13:00
Nick Cameron
d8492367bf signature info for other items (mods, fns, methods, etc.) 2016-12-22 15:18:03 +13:00
Nick Cameron
e9ecd8805d further lowering of signature data 2016-12-22 15:17:05 +13:00
Nick Cameron
eb27b5166e field signatures 2016-12-22 15:17:05 +13:00
Nick Cameron
c53fa9a898 save-analysis: fix ICE on partially resolved path
Occurs when we produce save-analysis before type checking is complete (due to errors).
2016-12-22 15:17:04 +13:00
Nick Cameron
5a6ca7a38d save-analysis: add Signature info to structs 2016-12-22 15:17:04 +13:00
Alex Crichton
a1f5001998 rustc: Use create_dir_racy in save analysis
The OSX bots failed last night due a race condition in save analysis where
concurrent calls to `fs::create_dir_all` conflicted with one another. This
replaces the relevant function call with `fs::create_dir_racy` which is defined
internally to the compiler.
2016-12-13 09:17:28 -08:00
bors
e9aa73d2bf Auto merge of #38203 - nrc:save-wr, r=eddyb
save-analysis: fix a few generated code errors
2016-12-09 18:43:33 +00:00
Nick Cameron
c6b64f76cf save-analysis: fix a few generated code errors 2016-12-06 13:28:23 -10:00
Oliver Schneider
5e51edb0de
annotate stricter lifetimes on LateLintPass methods to allow them to forward to a Visitor 2016-12-06 11:28:51 +01:00
bors
c80c31a502 Auto merge of #38053 - eddyb:lazy-9, r=nikomatsakis
[9/n] rustc: move type information out of AdtDef and TraitDef.

_This is part of a series ([prev](https://github.com/rust-lang/rust/pull/37688) | [next]()) of patches designed to rework rustc into an out-of-order on-demand pipeline model for both better feature support (e.g. [MIR-based](https://github.com/solson/miri) early constant evaluation) and incremental execution of compiler passes (e.g. type-checking), with beneficial consequences to IDE support as well.
If any motivation is unclear, please ask for additional PR description clarifications or code comments._

<hr>

Both `AdtDef` and `TraitDef` contained type information (field types, generics and predicates) which was required to create them, preventing their use before that type information exists, or in the case of field types, *mutation* was required, leading to a variance-magicking implementation of `ivar`s.

This PR takes that information out and the resulting cleaner setup could even eventually end up merged with HIR, because, just like `AssociatedItem` before it, there's no dependency on types anymore.
(With one exception, variant discriminants should probably be moved into their own map later.)
2016-12-02 15:06:36 +00:00
bors
ecff71a45c Auto merge of #37800 - alexcrichton:new-bootstrap, r=eddyb
Update the bootstrap compiler

Now that we've got a beta build, let's use it!
2016-11-30 19:17:24 +00:00
Alex Crichton
2186660b51 Update the bootstrap compiler
Now that we've got a beta build, let's use it!
2016-11-30 10:38:08 -08:00
bors
5db4826410 Auto merge of #37989 - nrc:save-mod, r=nikomatsakis
save-analysis: redirect a module decl to the start of the defining file
2016-11-30 12:50:09 +00:00
Eduard-Mihai Burtescu
07ff914be1 rustc: simplify AdtDef by removing the field types and ty::ivar. 2016-11-29 21:24:26 +02:00
Eduard Burtescu
da47c2e2ac rustc_typeck: save the type cache for rustdoc and save-analysis. 2016-11-28 04:18:10 +02:00