diff options
| author | Niko Matsakis <niko@alum.mit.edu> | 2015-01-14 12:44:21 -0500 |
|---|---|---|
| committer | Niko Matsakis <niko@alum.mit.edu> | 2015-01-14 16:35:14 -0500 |
| commit | 2479dfcbf7abc401e5925bf5d53b7ac2e0eed694 (patch) | |
| tree | f43c5b284ab827ae571b1e7f39bc4aeb9a7243c7 /src | |
| parent | 2868404fcaed4030935ffafa87f5ea31ba4cd5bb (diff) | |
| download | rust-2479dfcbf7abc401e5925bf5d53b7ac2e0eed694.tar.gz rust-2479dfcbf7abc401e5925bf5d53b7ac2e0eed694.zip | |
Revert "rustc_trans: Fix type projection debuginfo" -- it potentially papers over a lack
of normalization that should have taken place. This reverts commit f7745a9be3eb2d9438f08b383156f0a33cbb0cdf.
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustc_trans/trans/debuginfo.rs | 80 | ||||
| -rw-r--r-- | src/test/debuginfo/associated_types.rs | 28 |
2 files changed, 22 insertions, 86 deletions
diff --git a/src/librustc_trans/trans/debuginfo.rs b/src/librustc_trans/trans/debuginfo.rs index 5b974d234c0..2f58baab7fc 100644 --- a/src/librustc_trans/trans/debuginfo.rs +++ b/src/librustc_trans/trans/debuginfo.rs @@ -323,28 +323,26 @@ impl<'tcx> TypeMap<'tcx> { fn get_unique_type_id_of_type<'a>(&mut self, cx: &CrateContext<'a, 'tcx>, type_: Ty<'tcx>) -> UniqueTypeId { - // basic type -> {:name of the type:} - // tuple -> {tuple_(:param-uid:)*} - // struct -> {struct_:svh: / :node-id:_<(:param-uid:),*> } - // enum -> {enum_:svh: / :node-id:_<(:param-uid:),*> } - // enum variant -> {variant_:variant-name:_:enum-uid:} - // reference (&) -> {& :pointee-uid:} - // mut reference (&mut) -> {&mut :pointee-uid:} - // ptr (*) -> {* :pointee-uid:} - // mut ptr (*mut) -> {*mut :pointee-uid:} - // unique ptr (~) -> {~ :pointee-uid:} - // @-ptr (@) -> {@ :pointee-uid:} - // sized vec ([T; x]) -> {[:size:] :element-uid:} - // unsized vec ([T]) -> {[] :element-uid:} - // trait (T) -> {trait_:svh: / :node-id:_<(:param-uid:),*> } - // closure -> {<unsafe_> <once_> :store-sigil: - // |(:param-uid:),* <,_...>| -> \ - // :return-type-uid: : (:bounds:)*} - // function -> {<unsafe_> <abi_> fn( (:param-uid:)* <,_...> ) -> \ - // :return-type-uid:} - // unique vec box (~[]) -> {HEAP_VEC_BOX<:pointee-uid:>} - // gc box -> {GC_BOX<:pointee-uid:>} - // projection (<T as U>::V) -> {<:ty-uid: as :trait-uid:> :: :name-uid: } + // basic type -> {:name of the type:} + // tuple -> {tuple_(:param-uid:)*} + // struct -> {struct_:svh: / :node-id:_<(:param-uid:),*> } + // enum -> {enum_:svh: / :node-id:_<(:param-uid:),*> } + // enum variant -> {variant_:variant-name:_:enum-uid:} + // reference (&) -> {& :pointee-uid:} + // mut reference (&mut) -> {&mut :pointee-uid:} + // ptr (*) -> {* :pointee-uid:} + // mut ptr (*mut) -> {*mut :pointee-uid:} + // unique ptr (~) -> {~ :pointee-uid:} + // @-ptr (@) -> {@ :pointee-uid:} + // sized vec ([T; x]) -> {[:size:] :element-uid:} + // unsized vec ([T]) -> {[] :element-uid:} + // trait (T) -> {trait_:svh: / :node-id:_<(:param-uid:),*> } + // closure -> {<unsafe_> <once_> :store-sigil: |(:param-uid:),* <,_...>| -> \ + // :return-type-uid: : (:bounds:)*} + // function -> {<unsafe_> <abi_> fn( (:param-uid:)* <,_...> ) -> \ + // :return-type-uid:} + // unique vec box (~[]) -> {HEAP_VEC_BOX<:pointee-uid:>} + // gc box -> {GC_BOX<:pointee-uid:>} match self.type_to_unique_id.get(&type_).cloned() { Some(unique_type_id) => return unique_type_id, @@ -437,25 +435,6 @@ impl<'tcx> TypeMap<'tcx> { principal.substs, &mut unique_type_id); }, - ty::ty_projection(ref projection) => { - unique_type_id.push_str("<"); - - let self_ty = projection.trait_ref.self_ty(); - let self_type_id = self.get_unique_type_id_of_type(cx, self_ty); - let self_type_id = self.get_unique_type_id_as_string(self_type_id); - unique_type_id.push_str(&self_type_id[]); - - unique_type_id.push_str(" as "); - - from_def_id_and_substs(self, - cx, - projection.trait_ref.def_id, - projection.trait_ref.substs, - &mut unique_type_id); - - unique_type_id.push_str(">::"); - unique_type_id.push_str(token::get_name(projection.item_name).get()); - }, ty::ty_bare_fn(_, &ty::BareFnTy{ unsafety, abi, ref sig } ) => { if unsafety == ast::Unsafety::Unsafe { unique_type_id.push_str("unsafe "); @@ -499,10 +478,7 @@ impl<'tcx> TypeMap<'tcx> { closure_ty, &mut unique_type_id); }, - ty::ty_err | - ty::ty_infer(_) | - ty::ty_open(_) | - ty::ty_param(_) => { + _ => { cx.sess().bug(&format!("get_unique_type_id_of_type() - unexpected type: {}, {:?}", &ppaux::ty_to_string(cx.tcx(), type_)[], type_.sty)[]) @@ -3879,22 +3855,10 @@ fn push_debuginfo_type_name<'a, 'tcx>(cx: &CrateContext<'a, 'tcx>, ty::ty_unboxed_closure(..) => { output.push_str("closure"); } - ty::ty_projection(ref projection) => { - output.push_str("<"); - let self_ty = projection.trait_ref.self_ty(); - push_debuginfo_type_name(cx, self_ty, true, output); - - output.push_str(" as "); - - push_item_name(cx, projection.trait_ref.def_id, false, output); - push_type_params(cx, projection.trait_ref.substs, output); - - output.push_str(">::"); - output.push_str(token::get_name(projection.item_name).get()); - } ty::ty_err | ty::ty_infer(_) | ty::ty_open(_) | + ty::ty_projection(..) | ty::ty_param(_) => { cx.sess().bug(&format!("debuginfo: Trying to create type name for \ unexpected type: {}", ppaux::ty_to_string(cx.tcx(), t))[]); diff --git a/src/test/debuginfo/associated_types.rs b/src/test/debuginfo/associated_types.rs deleted file mode 100644 index 92336e9b34b..00000000000 --- a/src/test/debuginfo/associated_types.rs +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2013-2014 The Rust Project Developers. See the COPYRIGHT -// file at the top-level directory of this distribution and at -// http://rust-lang.org/COPYRIGHT. -// -// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or -// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license -// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - -// ignore-android: FIXME(#10381) -// min-lldb-version: 310 - -// compile-flags:-g - -struct Peekable<I> where I: Iterator { - _iter: I, - _next: Option<<I as Iterator>::Item>, -} - -fn main() { - let mut iter = Vec::<i32>::new().into_iter(); - let next = iter.next(); - let _v = Peekable { - _iter: iter, - _next : next, - }; -} |
