diff options
| author | bors <bors@rust-lang.org> | 2016-03-25 18:09:28 -0700 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2016-03-25 18:09:28 -0700 |
| commit | 8d2d2be6c61c17da8027a72da91f87a0e2487f74 (patch) | |
| tree | d48967badd66eabf6c53f32d0250ca1eba94ddf7 /src/libsyntax | |
| parent | a1e29daf1a9ca4e26719887b0c934de5d1695031 (diff) | |
| parent | 1ea93c2a6388b7dcddf1ae89105a9f6f2e1da9f1 (diff) | |
| download | rust-8d2d2be6c61c17da8027a72da91f87a0e2487f74.tar.gz rust-8d2d2be6c61c17da8027a72da91f87a0e2487f74.zip | |
Auto merge of #32293 - nikomatsakis:incr-comp-def-path-munging, r=alexcrichton
Revamp symbol names for impls (and make them deterministic, etc) This builds on @michaelwoerister's epic PR #31539 (note that his PR never landed, so I just incorporated it into this one). The main change here is that we remove the "name" from `DefPathData` for impls, since that name is synthetic and not sufficiently predictable for incr comp. However, just doing that would cause bad symbol names since those are based on the `DefPath`. Therefore, I introduce a new mechanism for getting symbol names (and also paths for user display) called `item_path`. This is kind of simplistic for now (based on strings) but I expect to expand it later to support richer types, hopefully generating C++-mangled names that gdb etc can understand. Along the way I cleaned up how we track the path that leads to an extern crate. There is still some cleanup left undone here. Notably, I didn't remove the impl names altogether -- that would probably make sense. I also didn't try to remove the `item_symbols` vector. Mostly I want to unblock my other incr. comp. work. =) r? @eddyb cc @eddyb @alexcrichton @michaelwoerister
Diffstat (limited to 'src/libsyntax')
| -rw-r--r-- | src/libsyntax/feature_gate.rs | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/libsyntax/feature_gate.rs b/src/libsyntax/feature_gate.rs index 299b7d8b9ba..80e1ae111a2 100644 --- a/src/libsyntax/feature_gate.rs +++ b/src/libsyntax/feature_gate.rs @@ -349,6 +349,10 @@ pub const KNOWN_ATTRIBUTES: &'static [(&'static str, AttributeType, AttributeGat "the `#[rustc_if_this_changed]` attribute \ is just used for rustc unit tests \ and will never be stable")), + ("rustc_symbol_name", Whitelisted, Gated("rustc_attrs", + "internal rustc attributes will never be stable")), + ("rustc_item_path", Whitelisted, Gated("rustc_attrs", + "internal rustc attributes will never be stable")), ("rustc_move_fragments", Normal, Gated("rustc_attrs", "the `#[rustc_move_fragments]` attribute \ is just used for rustc unit tests \ @@ -579,6 +583,7 @@ pub struct Features { pub const_indexing: bool, pub static_recursion: bool, pub default_type_parameter_fallback: bool, + pub rustc_attrs: bool, pub type_macros: bool, pub cfg_target_feature: bool, pub cfg_target_vendor: bool, @@ -614,6 +619,7 @@ impl Features { const_indexing: false, static_recursion: false, default_type_parameter_fallback: false, + rustc_attrs: false, type_macros: false, cfg_target_feature: false, cfg_target_vendor: false, @@ -1225,6 +1231,7 @@ fn check_crate_inner<F>(cm: &CodeMap, span_handler: &Handler, const_indexing: cx.has_feature("const_indexing"), static_recursion: cx.has_feature("static_recursion"), default_type_parameter_fallback: cx.has_feature("default_type_parameter_fallback"), + rustc_attrs: cx.has_feature("rustc_attrs"), type_macros: cx.has_feature("type_macros"), cfg_target_feature: cx.has_feature("cfg_target_feature"), cfg_target_vendor: cx.has_feature("cfg_target_vendor"), |
