about summary refs log tree commit diff
path: root/src/test/codegen-units/generic-impl.rs
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2016-03-25 18:09:28 -0700
committerbors <bors@rust-lang.org>2016-03-25 18:09:28 -0700
commit8d2d2be6c61c17da8027a72da91f87a0e2487f74 (patch)
treed48967badd66eabf6c53f32d0250ca1eba94ddf7 /src/test/codegen-units/generic-impl.rs
parenta1e29daf1a9ca4e26719887b0c934de5d1695031 (diff)
parent1ea93c2a6388b7dcddf1ae89105a9f6f2e1da9f1 (diff)
downloadrust-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/test/codegen-units/generic-impl.rs')
-rw-r--r--src/test/codegen-units/generic-impl.rs24
1 files changed, 12 insertions, 12 deletions
diff --git a/src/test/codegen-units/generic-impl.rs b/src/test/codegen-units/generic-impl.rs
index 6e6bb5cbf53..a27515fd39b 100644
--- a/src/test/codegen-units/generic-impl.rs
+++ b/src/test/codegen-units/generic-impl.rs
@@ -40,11 +40,11 @@ pub struct LifeTimeOnly<'a> {
 
 impl<'a> LifeTimeOnly<'a> {
 
-    //~ TRANS_ITEM fn generic_impl::LifeTimeOnly<'a>[0]::foo[0]
+    //~ TRANS_ITEM fn generic_impl::{{impl}}[1]::foo[0]
     pub fn foo(&self) {}
-    //~ TRANS_ITEM fn generic_impl::LifeTimeOnly<'a>[0]::bar[0]
+    //~ TRANS_ITEM fn generic_impl::{{impl}}[1]::bar[0]
     pub fn bar(&'a self) {}
-    //~ TRANS_ITEM fn generic_impl::LifeTimeOnly<'a>[0]::baz[0]
+    //~ TRANS_ITEM fn generic_impl::{{impl}}[1]::baz[0]
     pub fn baz<'b>(&'b self) {}
 
     pub fn non_instantiated<T>(&self) {}
@@ -53,27 +53,27 @@ impl<'a> LifeTimeOnly<'a> {
 
 //~ TRANS_ITEM fn generic_impl::main[0]
 fn main() {
-    //~ TRANS_ITEM fn generic_impl::Struct<T>[0]::new[0]<i32>
+    //~ TRANS_ITEM fn generic_impl::{{impl}}[0]::new[0]<i32>
     //~ TRANS_ITEM fn generic_impl::id[0]<i32>
-    //~ TRANS_ITEM fn generic_impl::Struct<T>[0]::get[0]<i32, i16>
+    //~ TRANS_ITEM fn generic_impl::{{impl}}[0]::get[0]<i32, i16>
     let _ = Struct::new(0i32).get(0i16);
 
-    //~ TRANS_ITEM fn generic_impl::Struct<T>[0]::new[0]<i64>
+    //~ TRANS_ITEM fn generic_impl::{{impl}}[0]::new[0]<i64>
     //~ TRANS_ITEM fn generic_impl::id[0]<i64>
-    //~ TRANS_ITEM fn generic_impl::Struct<T>[0]::get[0]<i64, i16>
+    //~ TRANS_ITEM fn generic_impl::{{impl}}[0]::get[0]<i64, i16>
     let _ = Struct::new(0i64).get(0i16);
 
-    //~ TRANS_ITEM fn generic_impl::Struct<T>[0]::new[0]<char>
+    //~ TRANS_ITEM fn generic_impl::{{impl}}[0]::new[0]<char>
     //~ TRANS_ITEM fn generic_impl::id[0]<char>
-    //~ TRANS_ITEM fn generic_impl::Struct<T>[0]::get[0]<char, i16>
+    //~ TRANS_ITEM fn generic_impl::{{impl}}[0]::get[0]<char, i16>
     let _ = Struct::new('c').get(0i16);
 
-    //~ TRANS_ITEM fn generic_impl::Struct<T>[0]::new[0]<&str>
+    //~ TRANS_ITEM fn generic_impl::{{impl}}[0]::new[0]<&str>
     //~ TRANS_ITEM fn generic_impl::id[0]<&str>
-    //~ TRANS_ITEM fn generic_impl::Struct<T>[0]::get[0]<generic_impl::Struct[0]<&str>, i16>
+    //~ TRANS_ITEM fn generic_impl::{{impl}}[0]::get[0]<generic_impl::Struct[0]<&str>, i16>
     let _ = Struct::new(Struct::new("str")).get(0i16);
 
-    //~ TRANS_ITEM fn generic_impl::Struct<T>[0]::new[0]<generic_impl::Struct[0]<&str>>
+    //~ TRANS_ITEM fn generic_impl::{{impl}}[0]::new[0]<generic_impl::Struct[0]<&str>>
     //~ TRANS_ITEM fn generic_impl::id[0]<generic_impl::Struct[0]<&str>>
     let _ = (Struct::new(Struct::new("str")).f)(Struct::new("str"));
 }