@@ -34,6 +34,7 @@ use rustc::hir;
3434use abi:: Abi ;
3535use common:: { NodeIdAndSpan , CrateContext , FunctionContext , Block , BlockAndBuilder } ;
3636use monomorphize:: Instance ;
37+ use rustc:: infer:: normalize_associated_type;
3738use rustc:: ty:: { self , Ty } ;
3839use session:: config:: { self , FullDebugInfo , LimitedDebugInfo , NoDebugInfo } ;
3940use util:: nodemap:: { DefIdMap , NodeMap , FnvHashMap , FnvHashSet } ;
@@ -368,6 +369,7 @@ pub fn create_function_debug_context<'a, 'tcx>(cx: &CrateContext<'a, 'tcx>,
368369
369370 name_to_append_suffix_to. push ( '<' ) ;
370371 for ( i, & actual_type) in actual_types. iter ( ) . enumerate ( ) {
372+ let actual_type = normalize_associated_type ( cx. tcx ( ) , & actual_type) ;
371373 // Add actual type name to <...> clause of function name
372374 let actual_type_name = compute_debuginfo_type_name ( cx,
373375 actual_type,
@@ -383,7 +385,7 @@ pub fn create_function_debug_context<'a, 'tcx>(cx: &CrateContext<'a, 'tcx>,
383385 // Again, only create type information if full debuginfo is enabled
384386 let template_params: Vec < _ > = if cx. sess ( ) . opts . debuginfo == FullDebugInfo {
385387 generics. types . as_slice ( ) . iter ( ) . enumerate ( ) . map ( |( i, param) | {
386- let actual_type = actual_types[ i] ;
388+ let actual_type = normalize_associated_type ( cx . tcx ( ) , & actual_types[ i] ) ;
387389 let actual_type_metadata = type_metadata ( cx, actual_type, codemap:: DUMMY_SP ) ;
388390 let name = CString :: new ( param. name . as_str ( ) . as_bytes ( ) ) . unwrap ( ) ;
389391 unsafe {
0 commit comments