Commit Graph

46 Commits

Author SHA1 Message Date
Manish Goregaokar
e649a2535f Rollup merge of #35090 - michaelwoerister:get-rid-of-id-visitor, r=eddyb
intravisit: Fold functionality of IdVisitor into the regular Visitor.
2016-07-30 13:44:47 +05:30
bors
f164cf5d64 Auto merge of #34842 - cgswords:attr_enc, r=nrc
Better attribute and metaitem encapsulation throughout the compiler

This PR refactors most (hopefully all?) of the `MetaItem` interactions outside of `libsyntax` (and a few inside) to interact with MetaItems through the provided traits instead of directly creating / destruct / matching against them. This is a necessary first step to eventually converting `MetaItem`s to internally use `TokenStream` representations (which will make `MetaItem` interactions much nicer for macro writers once the new macro system is in place).

r? @nrc
2016-07-29 16:26:38 -07:00
Michael Woerister
415fde498a intravisit: Fold functionality of IdVisitor into the regular Visitor. 2016-07-29 04:55:31 -04:00
Niko Matsakis
42cd5d4ee2 make it possible to track where hash diverges 2016-07-28 15:39:34 -04:00
Niko Matsakis
e359147d12 hash def-path's better
actually we shouldn't even hash nested items at all, but that is
addressed in a followup PR
2016-07-28 15:39:02 -04:00
Niko Matsakis
2f9fff2191 Keep multiple files per work-product
In the older version, a `.o` and ` .bc` file were separate
work-products.  This newer version keeps, for each codegen-unit, a set
of files of different kinds. We assume that if any kinds are available
then all the kinds we need are available, since the precise set of
switches will depend on attributes and command-line switches.

Should probably test this: the effect of changing attributes in
particular might not be successfully tracked?
2016-07-28 12:05:45 -04:00
Niko Matsakis
ceeb158e0a Address mw nits 2016-07-28 12:05:45 -04:00
Niko Matsakis
58d4b8edd3 Modify trans to skip generating .o files
This checks the `previous_work_products` data from the dep-graph and
tries to simply copy a `.o` file if possible.  We also add new
work-products into the dep-graph, and create edges to/from the dep-node
for a work-product.
2016-07-28 12:05:45 -04:00
Niko Matsakis
cca4804251 Code to save/load the work-products map from disk
Work products are deleted if any of their inputs are dirty.
2016-07-28 12:05:04 -04:00
Niko Matsakis
ffc13b2f80 Store crate_disambiguator as an InternedString
We used to use `Name`, but the session outlives the tokenizer, which
means that attempts to read this field after trans has complete
otherwise panic. All reads want an `InternedString` anyhow.
2016-07-28 12:05:04 -04:00
cgswords
5553901146 Adressed PR comments. 2016-07-25 14:27:10 -07:00
cgswords
a5e5ea1646 General MetaItem encapsulation rewrites. 2016-07-25 14:27:10 -07:00
Jonathan Turner
6ae3502134 Move errors from libsyntax to its own crate 2016-06-23 08:07:35 -04:00
Niko Matsakis
63bb0847bd expand DepNode::TraitSelect to include type ids
To handle the general case, we include a vector of def-ids, so that we
can account for things like `(Foo, Bar)` which references both `Foo` and
`Bar`. This means it is not Copy, so re-jigger some APIs to use
borrowing more intelligently.
2016-05-31 19:59:57 -04:00
Manish Goregaokar
81aeb0cdde Rollup merge of #33854 - petrochenkov:prefvis, r=eddyb
Apply visit_path to import prefixes by default

Overriding `visit_path` is not enough to visit all paths, some import prefixes are not visited and `visit_path_list_item` need to be overridden as well. This PR removes this catch, it should be less error prone this way. Also, the prefix is visited once now, not repeatedly for each path list item.

r? @eddyb
2016-05-28 19:52:16 +05:30
Vadim Petrochenkov
40285ca717 Apply visit_path to import prefixes by default 2016-05-24 23:49:08 +03:00
Georg Brandl
2e812e10f4 syntax/hir: give loop labels a span
This makes the "shadowing labels" warning *not* print the entire loop
as a span, but only the lifetime.

Also makes #31719 go away, but does not fix its root cause (the span
of the expanded loop is still wonky, but not used anymore).
2016-05-24 14:22:14 +02:00
Niko Matsakis
e4c31de61e nit: cache crate-hash for next time 2016-05-18 10:11:36 -04:00
Niko Matsakis
3a2edd7e61 load/save hashes of metadata
This commit reorganizes how the persist code treats hashing. The idea is
that each crate saves a file containing hashes representing the metadata
for each item X. When we see a read from `MetaData(X)`, we can load this
hash up (if we don't find a file for that crate, we just use the SVH for
the entire crate).

To compute the hash for `MetaData(Y)`, where Y is some local item, we
examine all the predecessors of the `MetaData(Y)` node and hash their
hashes together.
2016-05-18 10:11:36 -04:00
Niko Matsakis
b01919a144 allow retracing paths across crates
For external crates, we must build up a map that goes from
the DefKey to the DefIndex. We do this by iterating over each
index that is found in the metadata and loading the associated
DefKey.
2016-05-18 10:11:36 -04:00
Niko Matsakis
303fdc17f6 cleanup dep-graph debugging code
Create some re-usable filtering subroutines.
2016-05-18 10:11:36 -04:00
Niko Matsakis
0082fc0ad4 change svh to store a u64
We used to store a u64 converted to a String for some reason. Now we
don't.
2016-05-18 10:11:35 -04:00
Niko Matsakis
c7840cfe14 make the filename computation take a cratenum 2016-05-18 10:11:35 -04:00
Niko Matsakis
f89041bbe3 identify inputs of MetaData(X) nodes
Generate a second hash file that contains the metadata for an X node.
2016-05-18 10:11:35 -04:00
Niko Matsakis
bc02a54d12 rename the dep-graph file to include crate ident
This way, multiple compilations can share the same work directory.
2016-05-18 10:11:35 -04:00
Vadim Petrochenkov
aad347c4f7 Remove hir::Ident 2016-05-16 22:25:08 +03:00
Vadim Petrochenkov
766f9b5a2f Remove ExplicitSelf from HIR 2016-05-14 13:26:40 +03:00
Eduard Burtescu
76affa5d6f rustc: Split 'tcx into 'gcx and 'tcx for InferCtxt and its users. 2016-05-11 04:14:58 +03:00
Eduard Burtescu
513d392f7e rustc: Replace &'a TyCtxt<'tcx> with a TyCtxt<'a, 'tcx> wrapper. 2016-05-11 04:14:58 +03:00
Seo Sanghyeon
7ad1900e1c Remove unused trait imports flagged by lint 2016-05-03 18:48:34 +09:00
Alex Crichton
71e63296a2 rustc: Handle concurrent create_dir requests
The compiler created a directory as part of `-Z incremental` but that may be
hierarchically used concurrently so we need to protect ourselves against that.
2016-05-02 09:38:07 -07:00
bors
073a09fd63 Auto merge of #32908 - oli-obk:hygienic_derive_encodable, r=alexcrichton
prevent other `encode` methods from breaking `derive(RustcEncodable)`

fixes https://github.com/rust-lang-nursery/rustc-serialize/issues/151
2016-04-14 08:23:11 -07:00
Alex Crichton
9dd3c54a2c rustbuild: Migrate tidy checks to Rust
This commit rewrites all of the tidy checks we have, namely:

* featureck
* errorck
* tidy
* binaries

into Rust under a new `tidy` tool inside of the `src/tools` directory. This at
the same time deletes all the corresponding Python tidy checks so we can be sure
to only have one source of truth for all the tidy checks.

cc #31590
2016-04-12 08:17:42 -07:00
Oliver Schneider
2fd2210b88 prevent other encode methods from breaking derive(RustcEncodable) 2016-04-12 15:41:46 +02:00
Niko Matsakis
9eaae92011 argh, overlooked two extern crates 2016-04-07 13:09:00 -04:00
Niko Matsakis
29ad9a2d57 remove incorrect dependency on librustc_front 2016-04-06 20:20:43 -04:00
Niko Matsakis
22b4bb051a rebase over the hir rename 2016-04-06 14:04:50 -04:00
Niko Matsakis
4914b5fc6d patch name in incremental's Cargo.toml 2016-04-06 12:43:17 -04:00
Niko Matsakis
f2051212c2 remove use of rbml and just use opaque encoder 2016-04-06 12:42:47 -04:00
Niko Matsakis
e9ec282df8 Fix another call to bug into the macro 2016-04-06 12:42:47 -04:00
Niko Matsakis
82f4361155 FIXME for lockfile 2016-04-06 12:42:47 -04:00
Niko Matsakis
50a40e1c37 add FIXME #32753 markers: SVH vs ICH 2016-04-06 12:42:47 -04:00
Niko Matsakis
a2e0cbc6fc rebase: get bug! macro 2016-04-06 12:42:47 -04:00
Niko Matsakis
a5236e9da0 add some comments 2016-04-06 12:42:46 -04:00
Niko Matsakis
3fb40c1d95 add code to persist graph and for unit-testing 2016-04-06 12:42:46 -04:00
Niko Matsakis
b1e68b9e2d make an incremental crate
for now, this houses `svh` and the code to check `assert_dep_graph` is
sane
2016-04-06 12:42:02 -04:00