//@ compile-flags:-g // === GDB TESTS =================================================================================== // gdb-command:run // gdb-command:print arg // gdb-check:$1 = associated_types::Struct {b: -1, b1: 0} // gdb-command:continue // gdb-command:print inferred // gdb-check:$2 = 1 // gdb-command:print explicitly // gdb-check:$3 = 1 // gdb-command:continue // gdb-command:print arg // gdb-check:$4 = 2 // gdb-command:continue // gdb-command:print arg // gdb-check:$5 = (4, 5) // gdb-command:continue // gdb-command:print a // gdb-check:$6 = 6 // gdb-command:print b // gdb-check:$7 = 7 // gdb-command:continue // gdb-command:print a // gdb-check:$8 = 8 // gdb-command:print b // gdb-check:$9 = 9 // gdb-command:continue // === LLDB TESTS ================================================================================== // lldb-command:run // lldb-command:v arg // lldb-check:[...] { b = -1 b1 = 0 } // lldb-command:continue // lldb-command:v inferred // lldb-check:[...] 1 // lldb-command:v explicitly // lldb-check:[...] 1 // lldb-command:continue // lldb-command:v arg // lldb-check:[...] 2 // lldb-command:continue // lldb-command:v arg // lldb-check:[...] { 0 = 4 1 = 5 } // lldb-command:continue // lldb-command:v a // lldb-check:[...] 6 // lldb-command:v b // lldb-check:[...] 7 // lldb-command:continue // lldb-command:v a // lldb-check:[...] 8 // lldb-command:v b // lldb-check:[...] 9 // lldb-command:continue #![allow(unused_variables)] #![allow(dead_code)] #![feature(omit_gdb_pretty_printer_section)] #![omit_gdb_pretty_printer_section] trait TraitWithAssocType { type Type; fn get_value(&self) -> Self::Type; } impl TraitWithAssocType for i32 { type Type = i64; fn get_value(&self) -> i64 { *self as i64 } } struct Struct { b: T, b1: T::Type, } enum Enum { Variant1(T, T::Type), Variant2(T::Type, T) } fn assoc_struct(arg: Struct) { zzz(); // #break } fn assoc_local(x: T) { let inferred = x.get_value(); let explicitly: T::Type = x.get_value(); zzz(); // #break } fn assoc_arg(arg: T::Type) { zzz(); // #break } fn assoc_return_value(arg: T) -> T::Type { return arg.get_value(); } fn assoc_tuple(arg: (T, T::Type)) { zzz(); // #break } fn assoc_enum(arg: Enum) { match arg { Enum::Variant1(a, b) => { zzz(); // #break } Enum::Variant2(a, b) => { zzz(); // #break } } } fn main() { assoc_struct(Struct { b: -1, b1: 0 }); assoc_local(1); assoc_arg::(2); assoc_return_value(3); assoc_tuple((4, 5)); assoc_enum(Enum::Variant1(6, 7)); assoc_enum(Enum::Variant2(8, 9)); } fn zzz() { () }