@@ -34,6 +34,7 @@ use rustc::hir;
34
34
use abi:: Abi ;
35
35
use common:: { NodeIdAndSpan , CrateContext , FunctionContext , Block , BlockAndBuilder } ;
36
36
use monomorphize:: Instance ;
37
+ use rustc:: infer:: normalize_associated_type;
37
38
use rustc:: ty:: { self , Ty } ;
38
39
use session:: config:: { self , FullDebugInfo , LimitedDebugInfo , NoDebugInfo } ;
39
40
use util:: nodemap:: { DefIdMap , NodeMap , FnvHashMap , FnvHashSet } ;
@@ -368,6 +369,7 @@ pub fn create_function_debug_context<'a, 'tcx>(cx: &CrateContext<'a, 'tcx>,
368
369
369
370
name_to_append_suffix_to. push ( '<' ) ;
370
371
for ( i, & actual_type) in actual_types. iter ( ) . enumerate ( ) {
372
+ let actual_type = normalize_associated_type ( cx. tcx ( ) , & actual_type) ;
371
373
// Add actual type name to <...> clause of function name
372
374
let actual_type_name = compute_debuginfo_type_name ( cx,
373
375
actual_type,
@@ -383,7 +385,7 @@ pub fn create_function_debug_context<'a, 'tcx>(cx: &CrateContext<'a, 'tcx>,
383
385
// Again, only create type information if full debuginfo is enabled
384
386
let template_params: Vec < _ > = if cx. sess ( ) . opts . debuginfo == FullDebugInfo {
385
387
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] ) ;
387
389
let actual_type_metadata = type_metadata ( cx, actual_type, codemap:: DUMMY_SP ) ;
388
390
let name = CString :: new ( param. name . as_str ( ) . as_bytes ( ) ) . unwrap ( ) ;
389
391
unsafe {
0 commit comments