From 32e7a9d445cbbfdca13b47c0e89b52053a1f5f18 Mon Sep 17 00:00:00 2001 From: Arthur Baars Date: Fri, 11 Jul 2025 11:14:23 +0200 Subject: [PATCH 1/2] Rust: type inference: more pattern matching tests Thanks to co-pilot for generating the examples --- .../test/library-tests/type-inference/main.rs | 148 +- .../library-tests/type-inference/options.yml | 1 + .../type-inference/pattern_matching.rs | 833 ++++++++ .../type-inference/type-inference.expected | 1677 ++++++++++++++--- 4 files changed, 2222 insertions(+), 437 deletions(-) create mode 100644 rust/ql/test/library-tests/type-inference/options.yml create mode 100755 rust/ql/test/library-tests/type-inference/pattern_matching.rs diff --git a/rust/ql/test/library-tests/type-inference/main.rs b/rust/ql/test/library-tests/type-inference/main.rs index 68085609aab5..bdce6f533263 100644 --- a/rust/ql/test/library-tests/type-inference/main.rs +++ b/rust/ql/test/library-tests/type-inference/main.rs @@ -1,7 +1,7 @@ +#![feature(box_patterns)] mod field_access { #[derive(Debug)] struct S; - #[derive(Debug)] struct MyThing { a: S, @@ -2351,139 +2351,30 @@ mod tuples { } } -pub mod pattern_matching { - struct MyRecordStruct { - value1: T1, - value2: T2, - } - - struct MyTupleStruct(T1, T2); - - enum MyEnum { - Variant1 { value1: T1, value2: T2 }, - Variant2(T2, T1), - } +pub mod pattern_matching; +pub mod pattern_matching_experimental { + pub fn box_patterns() { + let boxed_value = Box::new(100i32); // $ method=new - pub fn f() -> Option<()> { - let value = Some(42); - if let Some(mesg) = value { - let mesg = mesg; // $ type=mesg:i32 - println!("{mesg}"); - } - match value { - Some(mesg) => { - let mesg = mesg; // $ type=mesg:i32 - println!("{mesg}"); + // BoxPat - Box patterns (requires feature flag) + match boxed_value { + box 100 => { + println!("Boxed 100"); } - None => (), - }; - let mesg = value.unwrap(); // $ method=unwrap - let mesg = mesg; // $ type=mesg:i32 - println!("{mesg}"); - let mesg = value?; // $ type=mesg:i32 - println!("{mesg}"); - - let value2 = &Some(42); - if let &Some(mesg) = value2 { - let mesg = mesg; // $ type=mesg:i32 - println!("{mesg}"); - } - - let value3 = 42; - if let ref mesg = value3 { - let mesg = mesg; // $ type=mesg:&T.i32 - println!("{mesg}"); - } - - let value4 = Some(42); - if let Some(ref mesg) = value4 { - let mesg = mesg; // $ type=mesg:&T.i32 - println!("{mesg}"); - } - - let ref value5 = 42; - let x = value5; // $ type=x:&T.i32 - - let my_record_struct = MyRecordStruct { - value1: 42, - value2: false, - }; - if let MyRecordStruct { value1, value2 } = my_record_struct { - let x = value1; // $ type=x:i32 - let y = value2; // $ type=y:bool - (); - } - - let my_tuple_struct = MyTupleStruct(42, false); - if let MyTupleStruct(value1, value2) = my_tuple_struct { - let x = value1; // $ type=x:i32 - let y = value2; // $ type=y:bool - (); - } - - let my_enum1 = MyEnum::Variant1 { - value1: 42, - value2: false, - }; - match my_enum1 { - MyEnum::Variant1 { value1, value2 } => { - let x = value1; // $ type=x:i32 - let y = value2; // $ type=y:bool - (); - } - MyEnum::Variant2(value1, value2) => { - let x = value1; // $ type=x:bool - let y = value2; // $ type=y:i32 - (); + box x => { + let unboxed = x; // $ MISSING: type=unboxed:i32 + println!("Boxed value: {}", unboxed); } } - let my_nested_enum = MyEnum::Variant2( - false, - MyRecordStruct { - value1: 42, - value2: "string", - }, - ); - - match my_nested_enum { - MyEnum::Variant2( - value1, - MyRecordStruct { - value1: x, - value2: y, - }, - ) => { - let a = value1; // $ type=a:bool - let b = x; // $ type=b:i32 - let c = y; // $ type=c:&T.str - (); + // Nested box pattern + let nested_box = Box::new(Box::new(42i32)); // $ method=new + match nested_box { + box box x => { + let nested_unboxed = x; // $ MISSING: type=nested_unboxed:i32 + println!("Nested boxed: {}", nested_unboxed); } - _ => (), } - - let opt1 = Some(Default::default()); // $ type=opt1:T.i32 method=default - #[rustfmt::skip] - let _ = if let Some::(x) = opt1 - { - x; // $ type=x:i32 - }; - - let opt2 = Some(Default::default()); // $ type=opt2:T.i32 method=default - #[rustfmt::skip] - let _ = if let Option::Some::(x) = opt2 - { - x; // $ type=x:i32 - }; - - let opt3 = Some(Default::default()); // $ type=opt3:T.i32 method=default - #[rustfmt::skip] - let _ = if let Option::::Some(x) = opt3 - { - x; // $ type=x:i32 - }; - - None } } @@ -2515,5 +2406,6 @@ fn main() { method_determined_by_argument_type::f(); // $ method=f tuples::f(); // $ method=f dereference::test(); // $ method=test - pattern_matching::f(); // $ method=f + pattern_matching::test_all_patterns(); // $ method=test_all_patterns + pattern_matching_experimental::box_patterns(); // $ method=box_patterns } diff --git a/rust/ql/test/library-tests/type-inference/options.yml b/rust/ql/test/library-tests/type-inference/options.yml new file mode 100644 index 000000000000..a394083e5212 --- /dev/null +++ b/rust/ql/test/library-tests/type-inference/options.yml @@ -0,0 +1 @@ +qltest_use_nightly: true diff --git a/rust/ql/test/library-tests/type-inference/pattern_matching.rs b/rust/ql/test/library-tests/type-inference/pattern_matching.rs new file mode 100755 index 000000000000..6f205439f8d6 --- /dev/null +++ b/rust/ql/test/library-tests/type-inference/pattern_matching.rs @@ -0,0 +1,833 @@ +struct MyRecordStruct { + value1: T1, + value2: T2, +} + +struct MyTupleStruct(T1, T2); + +enum MyEnum { + Variant1 { value1: T1, value2: T2 }, + Variant2(T2, T1), +} + +pub fn f() -> Option<()> { + let value = Some(42); + if let Some(mesg) = value { + let mesg = mesg; // $ type=mesg:i32 + println!("{mesg}"); + } + match value { + Some(mesg) => { + let mesg = mesg; // $ type=mesg:i32 + println!("{mesg}"); + } + None => (), + }; + let mesg = value.unwrap(); // $ method=unwrap + let mesg = mesg; // $ type=mesg:i32 + println!("{mesg}"); + let mesg = value?; // $ type=mesg:i32 + println!("{mesg}"); + + let value2 = &Some(42); + if let &Some(mesg) = value2 { + let mesg = mesg; // $ type=mesg:i32 + println!("{mesg}"); + } + + let value3 = 42; + if let ref mesg = value3 { + let mesg = mesg; // $ type=mesg:&T.i32 + println!("{mesg}"); + } + + let value4 = Some(42); + if let Some(ref mesg) = value4 { + let mesg = mesg; // $ type=mesg:&T.i32 + println!("{mesg}"); + } + + let ref value5 = 42; + let x = value5; // $ type=x:&T.i32 + + let my_record_struct = MyRecordStruct { + value1: 42, + value2: false, + }; + if let MyRecordStruct { value1, value2 } = my_record_struct { + let x = value1; // $ type=x:i32 + let y = value2; // $ type=y:bool + (); + } + + let my_tuple_struct = MyTupleStruct(42, false); + if let MyTupleStruct(value1, value2) = my_tuple_struct { + let x = value1; // $ type=x:i32 + let y = value2; // $ type=y:bool + (); + } + + let my_enum1 = MyEnum::Variant1 { + value1: 42, + value2: false, + }; + match my_enum1 { + MyEnum::Variant1 { value1, value2 } => { + let x = value1; // $ type=x:i32 + let y = value2; // $ type=y:bool + (); + } + MyEnum::Variant2(value1, value2) => { + let x = value1; // $ type=x:bool + let y = value2; // $ type=y:i32 + (); + } + } + + let my_nested_enum = MyEnum::Variant2( + false, + MyRecordStruct { + value1: 42, + value2: "string", + }, + ); + + match my_nested_enum { + MyEnum::Variant2( + value1, + MyRecordStruct { + value1: x, + value2: y, + }, + ) => { + let a = value1; // $ type=a:bool + let b = x; // $ type=b:i32 + let c = y; // $ type=c:&T.str + (); + } + _ => (), + } + + let opt1 = Some(Default::default()); // $ type=opt1:T.i32 method=default + #[rustfmt::skip] + let _ = if let Some::(x) = opt1 + { + x; // $ type=x:i32 + }; + + let opt2 = Some(Default::default()); // $ type=opt2:T.i32 method=default + #[rustfmt::skip] + let _ = if let Option::Some::(x) = opt2 + { + x; // $ type=x:i32 + }; + + let opt3 = Some(Default::default()); // $ type=opt3:T.i32 method=default + #[rustfmt::skip] + let _ = if let Option::::Some(x) = opt3 + { + x; // $ type=x:i32 + }; + + None +} + +// Struct and enum definitions for examples +#[derive(Debug)] +struct Point { + x: i32, + y: i32, +} + +#[derive(Debug, Clone, Copy)] +struct Color(u8, u8, u8); + +#[derive(Debug)] +enum Shape { + Circle(f64), + Rectangle { width: f64, height: f64 }, + Triangle(Point, Point, Point), +} + +#[derive(Debug)] +enum MyOption { + Some(T), + None, +} + +// Macro for pattern examples +macro_rules! my_pattern { + ($x:pat) => { + match 42i32 { + $x => println!("Matched macro pattern"), + _ => println!("No match"), + } + }; +} + +pub fn literal_patterns() { + let value = 42i32; + + match value { + // LiteralPat - Literal patterns (including negative literals) + 42 => { + let literal_match = value; // $ type=literal_match:i32 + println!("Literal pattern: {}", literal_match); + } + -1 => { + let negative_literal = value; // $ type=negative_literal:i32 + println!("Negative literal: {}", negative_literal); + } + 0 => { + let zero_literal = value; // $ type=zero_literal:i32 + println!("Zero literal: {}", zero_literal); + } + _ => {} + } + + let float_val = 3.14f64; + match float_val { + 3.14 => { + let pi_match = float_val; // $ type=pi_match:f64 + println!("Pi matched: {}", pi_match); + } + _ => {} + } + + let string_val = "hello"; + match string_val { + "hello" => { + let hello_match = string_val; // $ type=hello_match:&T.str + println!("String literal: {}", hello_match); + } + _ => {} + } + + let bool_val = true; + match bool_val { + true => { + let true_match = bool_val; // $ type=true_match:bool + println!("True literal: {}", true_match); + } + false => { + let false_match = bool_val; // $ type=false_match:bool + println!("False literal: {}", false_match); + } + } +} + +pub fn identifier_patterns() { + let value = 42i32; + + // IdentPat - Simple identifier pattern + match value { + x => { + let bound_value = x; // $ type=bound_value:i32 + println!("Identifier pattern: {}", bound_value); + } + } + + // IdentPat with ref + match &value { + ref x => { + let ref_bound = x; // $ type=ref_bound:&T.&T.i32 + println!("Reference identifier: {:?}", ref_bound); + } + } + + // IdentPat with mut + let mut mutable_value = 10i32; + match mutable_value { + mut x => { + let mut_bound = x; // $ type=mut_bound:i32 + x += 1; // $ method=add_assign + println!("Mutable identifier: {}", mut_bound); + } + } + + // IdentPat with @ pattern (subpattern binding) + let option_value = MyOption::Some(42i32); + match option_value { + MyOption::Some(x @ 42) => { + let at_bound = x; // $ type=at_bound:i32 + println!("@ pattern with literal: {}", at_bound); + } + MyOption::Some(x @ 1..=100) => { + let range_at_bound = x; // $ type=range_at_bound:i32 + println!("@ pattern with range: {}", range_at_bound); + } + MyOption::Some(x) => { + let some_bound = x; // $ type=some_bound:i32 + println!("Some value: {}", some_bound); + } + MyOption::None => { + println!("None value"); + } + } + + // IdentPat with ref mut + let mut ref_mut_val = 5i32; + match &mut ref_mut_val { + ref mut x => { + let ref_mut_bound = x; // $ type=ref_mut_bound:&T.&T.i32 + **ref_mut_bound += 1; // $ method=deref method=add_assign + println!("Ref mut pattern"); + } + } +} + +pub fn wildcard_patterns() { + let value = 42i32; + + match value { + 42 => println!("Specific match"), + // WildcardPat - Wildcard pattern + _ => { + let wildcard_context = value; // $ type=wildcard_context:i32 + println!("Wildcard pattern for: {}", wildcard_context); + } + } +} + +pub fn range_patterns() { + let value = 42i32; + + match value { + // RangePat - Range patterns + 1..=10 => { + let range_inclusive = value; // $ type=range_inclusive:i32 + println!("Range inclusive: {}", range_inclusive); + } + 11.. => { + let range_from = value; // $ type=range_from:i32 + println!("Range from 11: {}", range_from); + } + ..=0 => { + let range_to_inclusive = value; // $ type=range_to_inclusive:i32 + println!("Range to 0 inclusive: {}", range_to_inclusive); + } + _ => {} + } + + let char_val = 'c'; + match char_val { + 'a'..='z' => { + let lowercase_char = char_val; // $ type=lowercase_char:char + println!("Lowercase char: {}", lowercase_char); + } + 'A'..='Z' => { + let uppercase_char = char_val; // $ type=uppercase_char:char + println!("Uppercase char: {}", uppercase_char); + } + _ => {} + } +} + +pub fn reference_patterns() { + let value = 42i32; + let mut mutable_value = 10i32; + + // RefPat - Reference patterns + match &value { + &42 => { + let deref_match = value; // $ type=deref_match:i32 + println!("Dereferenced match: {}", deref_match); + } + &x => { + let deref_bound = x; // $ type=deref_bound:i32 + println!("Dereferenced binding: {}", deref_bound); + } + } + + match &mut mutable_value { + &mut ref x => { + let mut_ref_bound = x; // $ type=mut_ref_bound:&T.i32 + println!("Mutable ref pattern: {}", mut_ref_bound); + } + } + + match &value { + ref x => { + let ref_pattern = x; // $ type=ref_pattern:&T.&T.i32 + println!("Reference pattern: {}", ref_pattern); + } + } +} + +pub fn record_patterns() { + let point = Point { x: 10, y: 20 }; + + // RecordPat - Record (struct) patterns + match point { + Point { x: 0, y: 0 } => { + let origin = point; // $ type=origin:Point + println!("Origin point: {:?}", origin); + } + Point { x, y: 0 } => { + let x_axis_x = x; // $ type=x_axis_x:i32 + let x_axis_point = point; // $ type=x_axis_point:Point + println!("Point on x-axis: x={}, point={:?}", x_axis_x, x_axis_point); + } + Point { x: 10, .. } => { + let ten_x_point = point; // $ type=ten_x_point:Point + println!("Point with x=10: {:?}", ten_x_point); + } + Point { x, y } => { + let general_x = x; // $ type=general_x:i32 + let general_y = y; // $ type=general_y:i32 + println!("General point: ({}, {})", general_x, general_y); + } + } + + // Nested record patterns + let shape = Shape::Rectangle { + width: 10.0, + height: 20.0, + }; + match shape { + Shape::Rectangle { + width: w, + height: h, + } => { + let rect_width = w; // $ type=rect_width:f64 + let rect_height = h; // $ type=rect_height:f64 + println!("Rectangle: {}x{}", rect_width, rect_height); + } + _ => {} + } +} + +pub fn tuple_struct_patterns() { + let color = Color(255, 128, 0); + + // TupleStructPat - Tuple struct patterns + match color { + Color(255, 0, 0) => { + let red_color = color; // $ type=red_color:Color + println!("Pure red: {:?}", red_color); + } + Color(r, g, b) => { + let red_component = r; // $ type=red_component:u8 + let green_component = g; // $ type=green_component:u8 + let blue_component = b; // $ type=blue_component:u8 + println!( + "Color: ({}, {}, {})", + red_component, green_component, blue_component + ); + } + } + + // With rest pattern + match color { + Color(255, ..) => { + let reddish_color = color; // $ type=reddish_color:Color + println!("Reddish color: {:?}", reddish_color); + } + Color(r, ..) => { + let any_red = r; // $ type=any_red:u8 + println!("Any color with red: {}", any_red); + } + } + + // Single element tuple struct + struct Wrapper(i32); + let wrapper = Wrapper(42); + match wrapper { + Wrapper(x) => { + let wrapped_value = x; // $ type=wrapped_value:i32 + println!("Wrapped: {}", wrapped_value); + } + } +} + +pub fn tuple_patterns() { + let tuple = (1i32, 2i64, 3.0f32); + + // TuplePat - Tuple patterns + match tuple { + (1, 2, 3.0) => { + let exact_tuple = tuple; // $ MISSING: type=exact_tuple:? + println!("Exact tuple: {:?}", exact_tuple); + } + (a, b, c) => { + let first_elem = a; // $ MISSING: type=first_elem:i32 + let second_elem = b; // $ MISSING: type=second_elem:i64 + let third_elem = c; // $ MISSING: type=third_elem:f32 + println!("Tuple: ({}, {}, {})", first_elem, second_elem, third_elem); + } + } + + // With rest pattern + match tuple { + (first, ..) => { + let tuple_first = first; // $ MISSING: type=tuple_first:i32 + println!("First element: {}", tuple_first); + } + } + + // Empty tuple + let unit = (); + match unit { + () => { + let unit_value = unit; // $ MISSING: type=unit_value:? + println!("Unit value: {:?}", unit_value); + } + } + + // Single element tuple (needs comma) + let single = (42i32,); + match single { + (x,) => { + let single_elem = x; // $ MISSING: type=single_elem:i32 + println!("Single element tuple: {}", single_elem); + } + } +} + +pub fn parenthesized_patterns() { + let value = 42i32; + + // ParenPat - Parenthesized patterns + match value { + (x) => { + let paren_bound = x; // $ type=paren_bound:i32 + println!("Parenthesized pattern: {}", paren_bound); + } + } + + // More complex parenthesized pattern + let tuple = (1i32, 2i32); + match tuple { + (x, (y)) => { + let paren_x = x; // $ MISSING: type=paren_x:i32 + let paren_y = y; // $ MISSING: type=paren_y:i32 + println!("Parenthesized in tuple: {}, {}", paren_x, paren_y); + } + } +} + +pub fn slice_patterns() { + let slice: &[i32] = &[1, 2, 3, 4, 5]; + + // SlicePat - Slice patterns + match slice { + [] => { + let empty_slice = slice; // $ type=empty_slice:&T.[T].i32 + println!("Empty slice: {:?}", empty_slice); + } + [x] => { + let single_elem = *x; // $ MISSING: type=single_elem:i32 + println!("Single element: {}", single_elem); + } + [first, second] => { + let slice_first = *first; // $ MISSING: type=slice_first:i32 + let slice_second = *second; // $ MISSING: type=slice_second:i32 + println!("Two elements: {}, {}", slice_first, slice_second); + } + [first, middle @ .., last] => { + let slice_start = *first; // $ MISSING: type=slice_start:i32 + let slice_end = *last; // $ MISSING: type=slice_end:i32 + let slice_middle = middle; // $ MISSING: type=slice_middle:&T.[T].i32 + println!( + "First: {}, last: {}, middle len: {}", + slice_start, + slice_end, + slice_middle.len() + ); + } + } + + // Array patterns + let array = [1i32, 2, 3]; + match array { + [a, b, c] => { + let arr_a = a; // $ MISSING: type=arr_a:i32 + let arr_b = b; // $ MISSING: type=arr_b:i32 + let arr_c = c; // $ MISSING: type=arr_c:i32 + println!("Array elements: {}, {}, {}", arr_a, arr_b, arr_c); + } + } +} + +pub fn path_patterns() { + // PathPat - Path patterns (for enums, constants, etc.) + const CONSTANT: i32 = 42; + let value = 42i32; + + match value { + CONSTANT => { + let const_match = value; // $ type=const_match:i32 + println!("Matches constant: {}", const_match); + } + _ => {} + } + + // Enum variants as path patterns + let option = MyOption::Some(10i32); + match option { + MyOption::None => { + println!("None variant"); + } + MyOption::Some(x) => { + let some_value = x; // $ type=some_value:i32 + println!("Some value: {}", some_value); + } + } + + // Module path patterns + match std::result::Result::Ok::(42) { + std::result::Result::Ok(x) => { + let ok_value = x; // $ type=ok_value:i32 + println!("Ok value: {}", ok_value); + } + std::result::Result::Err(e) => { + let err_value = e; // $ type=err_value:usize + println!("Error: {}", err_value); + } + } +} + +pub fn or_patterns() { + let value = 42i32; + + // OrPat - Or patterns + match value { + 1 | 2 | 3 => { + let small_num = value; // $ type=small_num:i32 + println!("Small number: {}", small_num); + } + 10 | 20 => { + let round_num = value; // $ type=round_num:i32 + println!("Round number: {}", round_num); + } + _ => {} + } + + // Complex or pattern with structs + let point = Point { x: 0, y: 5 }; + match point { + Point { x: x @ 0, y } | Point { x, y: y @ 0 } => { + let axis_x = x; // $ type=axis_x:i32 + let axis_y = y; // $ type=axis_y:i32 + println!("Point on axis: ({}, {})", axis_x, axis_y); + } + _ => {} + } + + // Or pattern with ranges + match value { + 1..=10 | 90..=100 => { + let range_or_value = value; // $ type=range_or_value:i32 + println!("In range: {}", range_or_value); + } + _ => {} + } +} + +pub fn rest_patterns() { + let tuple = (1i32, 2i64, 3.0f32, 4u8); + + // RestPat - Rest patterns (..) + match tuple { + (first, ..) => { + let rest_first = first; // $ MISSING: type=rest_first:i32 + println!("First with rest: {}", rest_first); + } + } + + match tuple { + (.., last) => { + let rest_last = last; // $ MISSING: type=rest_last:u8 + println!("Last with rest: {}", rest_last); + } + } + + match tuple { + (first, .., last) => { + let rest_start = first; // $ MISSING: type=rest_start:i32 + let rest_end = last; // $ MISSING: type=rest_end:u8 + println!("First and last: {}, {}", rest_start, rest_end); + } + } + + // Rest in struct + let point = Point { x: 10, y: 20 }; + match point { + Point { x, .. } => { + let rest_x = x; // $ type=rest_x:i32 + println!("X coordinate: {}", rest_x); + } + } +} + +pub fn macro_patterns() { + // MacroPat - Macro patterns + my_pattern!(42); + my_pattern!(x); + + // More complex macro pattern + macro_rules! match_and_bind { + ($val:expr, $pat:pat) => { + match $val { + $pat => { + let macro_bound = $val; // $ type=macro_bound:i32 + println!("Macro pattern matched: {}", macro_bound); + } + _ => {} + } + }; + } + + match_and_bind!(42i32, 42); + match_and_bind!(10i32, x); +} + +pub fn complex_nested_patterns() { + // Complex nested patterns combining multiple pattern types + let complex_data = (Point { x: 1, y: 2 }, MyOption::Some(Color(255, 0, 0))); + + match complex_data { + // Combining TuplePat, RecordPat, PathPat, TupleStructPat + (Point { x: 1, y }, MyOption::Some(Color(255, g, b))) => { + let nested_y = y; // $ type=nested_y:i32 + let nested_g = g; // $ type=nested_g:u8 + let nested_b = b; // $ type=nested_b:u8 + println!( + "Complex nested: y={}, green={}, blue={}", + nested_y, nested_g, nested_b + ); + } + // Or pattern with tuple and wildcard + (Point { x, .. }, MyOption::None) | (Point { x: x@0, .. }, _) => { + let alt_complex_x = x; // $ type=alt_complex_x:i32 + println!("Alternative complex: x={:?}", alt_complex_x); + } + // Catch-all with identifier pattern + other => { + let other_complex = other; // $ MISSING: type=other_complex:? + println!("Other complex data: {:?}", other_complex); + } + } +} + +pub fn patterns_in_let_statements() { + // Patterns in let statements + let point = Point { x: 10, y: 20 }; + let Point { x, y } = point; // RecordPat in let + let let_x = x; // $ type=let_x:i32 + let let_y = y; // $ type=let_y:i32 + + let tuple = (1i32, 2i64, 3.0f32); + let (a, b, c) = tuple; // TuplePat in let + let let_a = a; // $ MISSING: type=let_a:i32 + let let_b = b; // $ MISSING: type=let_b:i64 + let let_c = c; // $ MISSING: type=let_c:f32 + + let array = [1i32, 2, 3, 4, 5]; + let [first, .., last] = array; // SlicePat in let + let let_first = first; // $ MISSING: type=let_first:i32 + let let_last = last; // $ MISSING: type=let_last:i32 + + let color = Color(255, 128, 0); + let Color(r, g, b) = color; // TupleStructPat in let + let let_r = r; // $ type=let_r:u8 + let let_g = g; // $ type=let_g:u8 + let let_b = b; // $ type=let_b:u8 + + // Let with reference pattern + let value = 42i32; + let ref ref_val = value; + let let_ref = ref_val; // $ type=let_ref:&T.i32 + + // Let with mutable pattern + let mut mut_val = 10i32; + let let_mut = mut_val; // $ type=let_mut:i32 +} + +pub fn patterns_in_function_parameters() { + // Patterns in function parameters + + fn extract_point(Point { x, y }: Point) -> (i32, i32) { + let param_x = x; // $ type=param_x:i32 + let param_y = y; // $ type=param_y:i32 + (param_x, param_y) + } + + fn extract_color(Color(r, _, _): Color) -> u8 { + let param_r = r; // $ type=param_r:u8 + param_r + } + + fn extract_tuple((first, _, third): (i32, f64, bool)) -> (i32, bool) { + let param_first = first; // $ MISSING: type=param_first:i32 + let param_third = third; // $ MISSING: type=param_third:bool + (param_first, param_third) + } + + // Call the functions to use them + let point = Point { x: 5, y: 10 }; + let extracted = extract_point(point); // $ method=extract_point MISSING: type=extracted:? + + let color = Color(200, 100, 50); + let red = extract_color(color); // $ method=extract_color type=red:u8 + + let tuple = (42i32, 3.14f64, true); + let tuple_extracted = extract_tuple(tuple); // $ method=extract_tuple MISSING: type=tuple_extracted:? +} + +pub fn patterns_in_control_flow() { + // Patterns in for loops + let points = vec![Point { x: 1, y: 2 }, Point { x: 3, y: 4 }]; + for Point { x, y } in points { + let loop_x = x; // $ type=loop_x:i32 + let loop_y = y; // $ type=loop_y:i32 + println!("Point in loop: ({}, {})", loop_x, loop_y); + } + + // Patterns in if let + let option_value = MyOption::Some(42i32); + if let MyOption::Some(x @ 42) = option_value { + let if_let_x = x; // $ type=if_let_x:i32 + println!("If let with @ pattern: {}", if_let_x); + } + + // Patterns in while let + let mut stack: Vec = vec![1i32, 2, 3]; + while let Some(x) = stack.pop() { // $ method=pop + let while_let_x = x; // $ type=while_let_x:i32 + println!("Popped: {}", while_let_x); + } + + // Patterns in match guards + let value = 42i32; + match value { + x if x > 0 => { // $ method=gt + let guard_x = x; // $ type=guard_x:i32 + println!("Positive: {}", guard_x); + } + _ => {} + } +} + +pub fn test_all_patterns() { + f(); // $ method=f + literal_patterns(); // $ method=literal_patterns + identifier_patterns(); // $ method=identifier_patterns + wildcard_patterns(); // $ method=wildcard_patterns + range_patterns(); // $ method=range_patterns + reference_patterns(); // $ method=reference_patterns + record_patterns(); // $ method=record_patterns + tuple_struct_patterns(); // $ method=tuple_struct_patterns + tuple_patterns(); // $ method=tuple_patterns + parenthesized_patterns(); // $ method=parenthesized_patterns + slice_patterns(); // $ method=slice_patterns + path_patterns(); // $ method=path_patterns + or_patterns(); // $ method=or_patterns + rest_patterns(); // $ method=rest_patterns + macro_patterns(); // $ method=macro_patterns + complex_nested_patterns(); // $ method=complex_nested_patterns + patterns_in_let_statements(); // $ method=patterns_in_let_statements + patterns_in_function_parameters(); // $ method=patterns_in_function_parameters + patterns_in_control_flow(); // $ method=patterns_in_control_flow +} + diff --git a/rust/ql/test/library-tests/type-inference/type-inference.expected b/rust/ql/test/library-tests/type-inference/type-inference.expected index b8431097bc30..d6b21fe08b7c 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -161,13 +161,13 @@ inferType | loop/main.rs:12:9:12:12 | self | | loop/main.rs:10:1:14:1 | Self [trait T2] | | main.rs:26:13:26:13 | x | | main.rs:5:5:8:5 | MyThing | | main.rs:26:17:26:32 | MyThing {...} | | main.rs:5:5:8:5 | MyThing | -| main.rs:26:30:26:30 | S | | main.rs:2:5:3:13 | S | +| main.rs:26:30:26:30 | S | | main.rs:3:5:4:13 | S | | main.rs:27:18:27:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:27:18:27:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:27:18:27:28 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:27:18:27:28 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:27:26:27:26 | x | | main.rs:5:5:8:5 | MyThing | -| main.rs:27:26:27:28 | x.a | | main.rs:2:5:3:13 | S | +| main.rs:27:26:27:28 | x.a | | main.rs:3:5:4:13 | S | | main.rs:30:29:30:29 | x | | main.rs:16:5:19:5 | GenericThing | | main.rs:30:29:30:29 | x | A | {EXTERNAL LOCATION} | bool | | main.rs:31:13:31:13 | a | | {EXTERNAL LOCATION} | bool | @@ -180,78 +180,78 @@ inferType | main.rs:32:18:32:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:32:26:32:26 | a | | {EXTERNAL LOCATION} | bool | | main.rs:37:13:37:13 | x | | main.rs:16:5:19:5 | GenericThing | -| main.rs:37:13:37:13 | x | A | main.rs:2:5:3:13 | S | +| main.rs:37:13:37:13 | x | A | main.rs:3:5:4:13 | S | | main.rs:37:17:37:42 | GenericThing::<...> {...} | | main.rs:16:5:19:5 | GenericThing | -| main.rs:37:17:37:42 | GenericThing::<...> {...} | A | main.rs:2:5:3:13 | S | -| main.rs:37:40:37:40 | S | | main.rs:2:5:3:13 | S | +| main.rs:37:17:37:42 | GenericThing::<...> {...} | A | main.rs:3:5:4:13 | S | +| main.rs:37:40:37:40 | S | | main.rs:3:5:4:13 | S | | main.rs:38:18:38:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:38:18:38:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:38:18:38:28 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:38:18:38:28 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:38:26:38:26 | x | | main.rs:16:5:19:5 | GenericThing | -| main.rs:38:26:38:26 | x | A | main.rs:2:5:3:13 | S | -| main.rs:38:26:38:28 | x.a | | main.rs:2:5:3:13 | S | +| main.rs:38:26:38:26 | x | A | main.rs:3:5:4:13 | S | +| main.rs:38:26:38:28 | x.a | | main.rs:3:5:4:13 | S | | main.rs:41:13:41:13 | y | | main.rs:16:5:19:5 | GenericThing | -| main.rs:41:13:41:13 | y | A | main.rs:2:5:3:13 | S | +| main.rs:41:13:41:13 | y | A | main.rs:3:5:4:13 | S | | main.rs:41:17:41:37 | GenericThing {...} | | main.rs:16:5:19:5 | GenericThing | -| main.rs:41:17:41:37 | GenericThing {...} | A | main.rs:2:5:3:13 | S | -| main.rs:41:35:41:35 | S | | main.rs:2:5:3:13 | S | +| main.rs:41:17:41:37 | GenericThing {...} | A | main.rs:3:5:4:13 | S | +| main.rs:41:35:41:35 | S | | main.rs:3:5:4:13 | S | | main.rs:42:18:42:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:42:18:42:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:42:18:42:28 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:42:18:42:28 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:42:26:42:26 | x | | main.rs:16:5:19:5 | GenericThing | -| main.rs:42:26:42:26 | x | A | main.rs:2:5:3:13 | S | -| main.rs:42:26:42:28 | x.a | | main.rs:2:5:3:13 | S | +| main.rs:42:26:42:26 | x | A | main.rs:3:5:4:13 | S | +| main.rs:42:26:42:28 | x.a | | main.rs:3:5:4:13 | S | | main.rs:46:13:46:13 | x | | main.rs:21:5:23:5 | OptionS | | main.rs:46:17:48:9 | OptionS {...} | | main.rs:21:5:23:5 | OptionS | | main.rs:47:16:47:33 | ...::MyNone(...) | | main.rs:10:5:14:5 | MyOption | -| main.rs:47:16:47:33 | ...::MyNone(...) | T | main.rs:2:5:3:13 | S | +| main.rs:47:16:47:33 | ...::MyNone(...) | T | main.rs:3:5:4:13 | S | | main.rs:49:18:49:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:49:18:49:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:49:18:49:28 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:49:18:49:28 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:49:26:49:26 | x | | main.rs:21:5:23:5 | OptionS | | main.rs:49:26:49:28 | x.a | | main.rs:10:5:14:5 | MyOption | -| main.rs:49:26:49:28 | x.a | T | main.rs:2:5:3:13 | S | +| main.rs:49:26:49:28 | x.a | T | main.rs:3:5:4:13 | S | | main.rs:52:13:52:13 | x | | main.rs:16:5:19:5 | GenericThing | | main.rs:52:13:52:13 | x | A | main.rs:10:5:14:5 | MyOption | -| main.rs:52:13:52:13 | x | A.T | main.rs:2:5:3:13 | S | +| main.rs:52:13:52:13 | x | A.T | main.rs:3:5:4:13 | S | | main.rs:52:17:54:9 | GenericThing::<...> {...} | | main.rs:16:5:19:5 | GenericThing | | main.rs:52:17:54:9 | GenericThing::<...> {...} | A | main.rs:10:5:14:5 | MyOption | -| main.rs:52:17:54:9 | GenericThing::<...> {...} | A.T | main.rs:2:5:3:13 | S | +| main.rs:52:17:54:9 | GenericThing::<...> {...} | A.T | main.rs:3:5:4:13 | S | | main.rs:53:16:53:33 | ...::MyNone(...) | | main.rs:10:5:14:5 | MyOption | -| main.rs:53:16:53:33 | ...::MyNone(...) | T | main.rs:2:5:3:13 | S | +| main.rs:53:16:53:33 | ...::MyNone(...) | T | main.rs:3:5:4:13 | S | | main.rs:55:18:55:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:55:18:55:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:55:18:55:28 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:55:18:55:28 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:55:26:55:26 | x | | main.rs:16:5:19:5 | GenericThing | | main.rs:55:26:55:26 | x | A | main.rs:10:5:14:5 | MyOption | -| main.rs:55:26:55:26 | x | A.T | main.rs:2:5:3:13 | S | +| main.rs:55:26:55:26 | x | A.T | main.rs:3:5:4:13 | S | | main.rs:55:26:55:28 | x.a | | main.rs:10:5:14:5 | MyOption | -| main.rs:55:26:55:28 | x.a | T | main.rs:2:5:3:13 | S | +| main.rs:55:26:55:28 | x.a | T | main.rs:3:5:4:13 | S | | main.rs:57:17:57:17 | x | | main.rs:16:5:19:5 | GenericThing | | main.rs:57:17:57:17 | x | A | main.rs:10:5:14:5 | MyOption | -| main.rs:57:17:57:17 | x | A.T | main.rs:2:5:3:13 | S | +| main.rs:57:17:57:17 | x | A.T | main.rs:3:5:4:13 | S | | main.rs:57:21:59:9 | GenericThing {...} | | main.rs:16:5:19:5 | GenericThing | | main.rs:57:21:59:9 | GenericThing {...} | A | main.rs:10:5:14:5 | MyOption | -| main.rs:57:21:59:9 | GenericThing {...} | A.T | main.rs:2:5:3:13 | S | +| main.rs:57:21:59:9 | GenericThing {...} | A.T | main.rs:3:5:4:13 | S | | main.rs:58:16:58:33 | ...::MyNone(...) | | main.rs:10:5:14:5 | MyOption | -| main.rs:58:16:58:33 | ...::MyNone(...) | T | main.rs:2:5:3:13 | S | +| main.rs:58:16:58:33 | ...::MyNone(...) | T | main.rs:3:5:4:13 | S | | main.rs:61:13:61:13 | a | | main.rs:10:5:14:5 | MyOption | -| main.rs:61:13:61:13 | a | T | main.rs:2:5:3:13 | S | +| main.rs:61:13:61:13 | a | T | main.rs:3:5:4:13 | S | | main.rs:61:30:61:30 | x | | main.rs:16:5:19:5 | GenericThing | | main.rs:61:30:61:30 | x | A | main.rs:10:5:14:5 | MyOption | -| main.rs:61:30:61:30 | x | A.T | main.rs:2:5:3:13 | S | +| main.rs:61:30:61:30 | x | A.T | main.rs:3:5:4:13 | S | | main.rs:61:30:61:32 | x.a | | main.rs:10:5:14:5 | MyOption | -| main.rs:61:30:61:32 | x.a | T | main.rs:2:5:3:13 | S | +| main.rs:61:30:61:32 | x.a | T | main.rs:3:5:4:13 | S | | main.rs:62:18:62:23 | "{:?}\\n" | | file://:0:0:0:0 | & | | main.rs:62:18:62:23 | "{:?}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:62:18:62:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:62:18:62:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:62:26:62:26 | a | | main.rs:10:5:14:5 | MyOption | -| main.rs:62:26:62:26 | a | T | main.rs:2:5:3:13 | S | +| main.rs:62:26:62:26 | a | T | main.rs:3:5:4:13 | S | | main.rs:75:19:75:22 | SelfParam | | main.rs:72:5:72:21 | Foo | | main.rs:75:33:77:9 | { ... } | | main.rs:72:5:72:21 | Foo | | main.rs:76:13:76:16 | self | | main.rs:72:5:72:21 | Foo | @@ -4059,287 +4059,1346 @@ inferType | main.rs:2331:14:2331:18 | S1 {...} | | main.rs:2327:5:2327:16 | S1 | | main.rs:2331:21:2331:25 | S1 {...} | | main.rs:2327:5:2327:16 | S1 | | main.rs:2333:16:2333:19 | SelfParam | | main.rs:2327:5:2327:16 | S1 | -| main.rs:2367:30:2487:5 | { ... } | | {EXTERNAL LOCATION} | Option | -| main.rs:2368:13:2368:17 | value | | {EXTERNAL LOCATION} | Option | -| main.rs:2368:13:2368:17 | value | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2368:21:2368:28 | Some(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2368:21:2368:28 | Some(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2368:26:2368:27 | 42 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2369:16:2369:25 | Some(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2369:16:2369:25 | Some(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2369:21:2369:24 | mesg | | {EXTERNAL LOCATION} | i32 | -| main.rs:2369:29:2369:33 | value | | {EXTERNAL LOCATION} | Option | -| main.rs:2369:29:2369:33 | value | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2370:17:2370:20 | mesg | | {EXTERNAL LOCATION} | i32 | -| main.rs:2370:24:2370:27 | mesg | | {EXTERNAL LOCATION} | i32 | -| main.rs:2371:22:2371:29 | "{mesg}\\n" | | file://:0:0:0:0 | & | -| main.rs:2371:22:2371:29 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2371:22:2371:29 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2371:22:2371:29 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2371:24:2371:27 | mesg | | {EXTERNAL LOCATION} | i32 | -| main.rs:2373:15:2373:19 | value | | {EXTERNAL LOCATION} | Option | -| main.rs:2373:15:2373:19 | value | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2374:13:2374:22 | Some(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2374:13:2374:22 | Some(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2374:18:2374:21 | mesg | | {EXTERNAL LOCATION} | i32 | -| main.rs:2375:21:2375:24 | mesg | | {EXTERNAL LOCATION} | i32 | -| main.rs:2375:28:2375:31 | mesg | | {EXTERNAL LOCATION} | i32 | -| main.rs:2376:26:2376:33 | "{mesg}\\n" | | file://:0:0:0:0 | & | -| main.rs:2376:26:2376:33 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2376:26:2376:33 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2376:26:2376:33 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2376:28:2376:31 | mesg | | {EXTERNAL LOCATION} | i32 | -| main.rs:2378:13:2378:16 | None | | {EXTERNAL LOCATION} | Option | -| main.rs:2378:13:2378:16 | None | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2380:13:2380:16 | mesg | | {EXTERNAL LOCATION} | i32 | -| main.rs:2380:20:2380:24 | value | | {EXTERNAL LOCATION} | Option | -| main.rs:2380:20:2380:24 | value | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2380:20:2380:33 | value.unwrap() | | {EXTERNAL LOCATION} | i32 | -| main.rs:2381:13:2381:16 | mesg | | {EXTERNAL LOCATION} | i32 | -| main.rs:2381:20:2381:23 | mesg | | {EXTERNAL LOCATION} | i32 | -| main.rs:2382:18:2382:25 | "{mesg}\\n" | | file://:0:0:0:0 | & | -| main.rs:2382:18:2382:25 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2382:18:2382:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2382:18:2382:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2382:20:2382:23 | mesg | | {EXTERNAL LOCATION} | i32 | -| main.rs:2383:13:2383:16 | mesg | | {EXTERNAL LOCATION} | i32 | -| main.rs:2383:20:2383:24 | value | | {EXTERNAL LOCATION} | Option | -| main.rs:2383:20:2383:24 | value | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2383:20:2383:25 | TryExpr | | {EXTERNAL LOCATION} | i32 | -| main.rs:2384:18:2384:25 | "{mesg}\\n" | | file://:0:0:0:0 | & | -| main.rs:2384:18:2384:25 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2384:18:2384:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2384:18:2384:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2384:20:2384:23 | mesg | | {EXTERNAL LOCATION} | i32 | -| main.rs:2386:13:2386:18 | value2 | | file://:0:0:0:0 | & | -| main.rs:2386:13:2386:18 | value2 | &T | {EXTERNAL LOCATION} | Option | -| main.rs:2386:13:2386:18 | value2 | &T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2386:22:2386:30 | &... | | file://:0:0:0:0 | & | -| main.rs:2386:22:2386:30 | &... | &T | {EXTERNAL LOCATION} | Option | -| main.rs:2386:22:2386:30 | &... | &T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2386:23:2386:30 | Some(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2386:23:2386:30 | Some(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2386:28:2386:29 | 42 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2387:16:2387:26 | &... | | file://:0:0:0:0 | & | -| main.rs:2387:16:2387:26 | &... | &T | {EXTERNAL LOCATION} | Option | -| main.rs:2387:16:2387:26 | &... | &T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2387:17:2387:26 | Some(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2387:17:2387:26 | Some(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2387:22:2387:25 | mesg | | {EXTERNAL LOCATION} | i32 | -| main.rs:2387:30:2387:35 | value2 | | file://:0:0:0:0 | & | -| main.rs:2387:30:2387:35 | value2 | &T | {EXTERNAL LOCATION} | Option | -| main.rs:2387:30:2387:35 | value2 | &T.T | {EXTERNAL LOCATION} | i32 | -| main.rs:2388:17:2388:20 | mesg | | {EXTERNAL LOCATION} | i32 | -| main.rs:2388:24:2388:27 | mesg | | {EXTERNAL LOCATION} | i32 | -| main.rs:2389:22:2389:29 | "{mesg}\\n" | | file://:0:0:0:0 | & | -| main.rs:2389:22:2389:29 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2389:22:2389:29 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2389:22:2389:29 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2389:24:2389:27 | mesg | | {EXTERNAL LOCATION} | i32 | -| main.rs:2392:13:2392:18 | value3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2392:22:2392:23 | 42 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2393:20:2393:23 | mesg | | file://:0:0:0:0 | & | -| main.rs:2393:20:2393:23 | mesg | &T | {EXTERNAL LOCATION} | i32 | -| main.rs:2393:27:2393:32 | value3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2394:17:2394:20 | mesg | | file://:0:0:0:0 | & | -| main.rs:2394:17:2394:20 | mesg | &T | {EXTERNAL LOCATION} | i32 | -| main.rs:2394:24:2394:27 | mesg | | file://:0:0:0:0 | & | -| main.rs:2394:24:2394:27 | mesg | &T | {EXTERNAL LOCATION} | i32 | -| main.rs:2395:22:2395:29 | "{mesg}\\n" | | file://:0:0:0:0 | & | -| main.rs:2395:22:2395:29 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2395:22:2395:29 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2395:22:2395:29 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2395:24:2395:27 | mesg | | file://:0:0:0:0 | & | -| main.rs:2395:24:2395:27 | mesg | &T | {EXTERNAL LOCATION} | i32 | -| main.rs:2398:13:2398:18 | value4 | | {EXTERNAL LOCATION} | Option | -| main.rs:2398:13:2398:18 | value4 | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2398:22:2398:29 | Some(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2398:22:2398:29 | Some(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2398:27:2398:28 | 42 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2399:16:2399:29 | Some(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2399:16:2399:29 | Some(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2399:25:2399:28 | mesg | | file://:0:0:0:0 | & | -| main.rs:2399:25:2399:28 | mesg | &T | {EXTERNAL LOCATION} | i32 | -| main.rs:2399:33:2399:38 | value4 | | {EXTERNAL LOCATION} | Option | -| main.rs:2399:33:2399:38 | value4 | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2400:17:2400:20 | mesg | | file://:0:0:0:0 | & | -| main.rs:2400:17:2400:20 | mesg | &T | {EXTERNAL LOCATION} | i32 | -| main.rs:2400:24:2400:27 | mesg | | file://:0:0:0:0 | & | -| main.rs:2400:24:2400:27 | mesg | &T | {EXTERNAL LOCATION} | i32 | -| main.rs:2401:22:2401:29 | "{mesg}\\n" | | file://:0:0:0:0 | & | -| main.rs:2401:22:2401:29 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2401:22:2401:29 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2401:22:2401:29 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2401:24:2401:27 | mesg | | file://:0:0:0:0 | & | -| main.rs:2401:24:2401:27 | mesg | &T | {EXTERNAL LOCATION} | i32 | -| main.rs:2404:17:2404:22 | value5 | | file://:0:0:0:0 | & | -| main.rs:2404:17:2404:22 | value5 | &T | {EXTERNAL LOCATION} | i32 | -| main.rs:2404:26:2404:27 | 42 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2405:13:2405:13 | x | | file://:0:0:0:0 | & | -| main.rs:2405:13:2405:13 | x | &T | {EXTERNAL LOCATION} | i32 | -| main.rs:2405:17:2405:22 | value5 | | file://:0:0:0:0 | & | -| main.rs:2405:17:2405:22 | value5 | &T | {EXTERNAL LOCATION} | i32 | -| main.rs:2407:13:2407:28 | my_record_struct | | main.rs:2355:5:2358:5 | MyRecordStruct | -| main.rs:2407:13:2407:28 | my_record_struct | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2407:13:2407:28 | my_record_struct | T2 | {EXTERNAL LOCATION} | bool | -| main.rs:2407:32:2410:9 | MyRecordStruct {...} | | main.rs:2355:5:2358:5 | MyRecordStruct | -| main.rs:2407:32:2410:9 | MyRecordStruct {...} | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2407:32:2410:9 | MyRecordStruct {...} | T2 | {EXTERNAL LOCATION} | bool | -| main.rs:2408:21:2408:22 | 42 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2409:21:2409:25 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:2411:16:2411:48 | MyRecordStruct {...} | | main.rs:2355:5:2358:5 | MyRecordStruct | -| main.rs:2411:16:2411:48 | MyRecordStruct {...} | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2411:16:2411:48 | MyRecordStruct {...} | T2 | {EXTERNAL LOCATION} | bool | -| main.rs:2411:33:2411:38 | value1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2411:41:2411:46 | value2 | | {EXTERNAL LOCATION} | bool | -| main.rs:2411:52:2411:67 | my_record_struct | | main.rs:2355:5:2358:5 | MyRecordStruct | -| main.rs:2411:52:2411:67 | my_record_struct | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2411:52:2411:67 | my_record_struct | T2 | {EXTERNAL LOCATION} | bool | -| main.rs:2412:17:2412:17 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:2412:21:2412:26 | value1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2413:17:2413:17 | y | | {EXTERNAL LOCATION} | bool | -| main.rs:2413:21:2413:26 | value2 | | {EXTERNAL LOCATION} | bool | -| main.rs:2417:13:2417:27 | my_tuple_struct | | main.rs:2360:5:2360:41 | MyTupleStruct | -| main.rs:2417:13:2417:27 | my_tuple_struct | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2417:13:2417:27 | my_tuple_struct | T2 | {EXTERNAL LOCATION} | bool | -| main.rs:2417:31:2417:54 | MyTupleStruct(...) | | main.rs:2360:5:2360:41 | MyTupleStruct | -| main.rs:2417:31:2417:54 | MyTupleStruct(...) | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2417:31:2417:54 | MyTupleStruct(...) | T2 | {EXTERNAL LOCATION} | bool | -| main.rs:2417:45:2417:46 | 42 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2417:49:2417:53 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:2418:16:2418:44 | MyTupleStruct(...) | | main.rs:2360:5:2360:41 | MyTupleStruct | -| main.rs:2418:16:2418:44 | MyTupleStruct(...) | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2418:16:2418:44 | MyTupleStruct(...) | T2 | {EXTERNAL LOCATION} | bool | -| main.rs:2418:30:2418:35 | value1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2418:38:2418:43 | value2 | | {EXTERNAL LOCATION} | bool | -| main.rs:2418:48:2418:62 | my_tuple_struct | | main.rs:2360:5:2360:41 | MyTupleStruct | -| main.rs:2418:48:2418:62 | my_tuple_struct | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2418:48:2418:62 | my_tuple_struct | T2 | {EXTERNAL LOCATION} | bool | -| main.rs:2419:17:2419:17 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:2419:21:2419:26 | value1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2420:17:2420:17 | y | | {EXTERNAL LOCATION} | bool | -| main.rs:2420:21:2420:26 | value2 | | {EXTERNAL LOCATION} | bool | -| main.rs:2424:13:2424:20 | my_enum1 | | main.rs:2362:5:2365:5 | MyEnum | -| main.rs:2424:13:2424:20 | my_enum1 | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2424:13:2424:20 | my_enum1 | T2 | {EXTERNAL LOCATION} | bool | -| main.rs:2424:24:2427:9 | ...::Variant1 {...} | | main.rs:2362:5:2365:5 | MyEnum | -| main.rs:2424:24:2427:9 | ...::Variant1 {...} | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2424:24:2427:9 | ...::Variant1 {...} | T2 | {EXTERNAL LOCATION} | bool | -| main.rs:2425:21:2425:22 | 42 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2426:21:2426:25 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:2428:15:2428:22 | my_enum1 | | main.rs:2362:5:2365:5 | MyEnum | -| main.rs:2428:15:2428:22 | my_enum1 | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2428:15:2428:22 | my_enum1 | T2 | {EXTERNAL LOCATION} | bool | -| main.rs:2429:13:2429:47 | ...::Variant1 {...} | | main.rs:2362:5:2365:5 | MyEnum | -| main.rs:2429:13:2429:47 | ...::Variant1 {...} | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2429:13:2429:47 | ...::Variant1 {...} | T2 | {EXTERNAL LOCATION} | bool | -| main.rs:2429:32:2429:37 | value1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2429:40:2429:45 | value2 | | {EXTERNAL LOCATION} | bool | -| main.rs:2430:21:2430:21 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:2430:25:2430:30 | value1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2431:21:2431:21 | y | | {EXTERNAL LOCATION} | bool | -| main.rs:2431:25:2431:30 | value2 | | {EXTERNAL LOCATION} | bool | -| main.rs:2434:13:2434:44 | ...::Variant2(...) | | main.rs:2362:5:2365:5 | MyEnum | -| main.rs:2434:13:2434:44 | ...::Variant2(...) | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2434:13:2434:44 | ...::Variant2(...) | T2 | {EXTERNAL LOCATION} | bool | -| main.rs:2434:30:2434:35 | value1 | | {EXTERNAL LOCATION} | bool | -| main.rs:2434:38:2434:43 | value2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2435:21:2435:21 | x | | {EXTERNAL LOCATION} | bool | -| main.rs:2435:25:2435:30 | value1 | | {EXTERNAL LOCATION} | bool | -| main.rs:2436:21:2436:21 | y | | {EXTERNAL LOCATION} | i32 | -| main.rs:2436:25:2436:30 | value2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2441:13:2441:26 | my_nested_enum | | main.rs:2362:5:2365:5 | MyEnum | -| main.rs:2441:13:2441:26 | my_nested_enum | T1 | main.rs:2355:5:2358:5 | MyRecordStruct | -| main.rs:2441:13:2441:26 | my_nested_enum | T1.T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2441:13:2441:26 | my_nested_enum | T1.T2 | file://:0:0:0:0 | & | -| main.rs:2441:13:2441:26 | my_nested_enum | T1.T2.&T | {EXTERNAL LOCATION} | str | -| main.rs:2441:13:2441:26 | my_nested_enum | T2 | {EXTERNAL LOCATION} | bool | -| main.rs:2441:30:2447:9 | ...::Variant2(...) | | main.rs:2362:5:2365:5 | MyEnum | -| main.rs:2441:30:2447:9 | ...::Variant2(...) | T1 | main.rs:2355:5:2358:5 | MyRecordStruct | -| main.rs:2441:30:2447:9 | ...::Variant2(...) | T1.T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2441:30:2447:9 | ...::Variant2(...) | T1.T2 | file://:0:0:0:0 | & | -| main.rs:2441:30:2447:9 | ...::Variant2(...) | T1.T2.&T | {EXTERNAL LOCATION} | str | -| main.rs:2441:30:2447:9 | ...::Variant2(...) | T2 | {EXTERNAL LOCATION} | bool | -| main.rs:2442:13:2442:17 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:2443:13:2446:13 | MyRecordStruct {...} | | main.rs:2355:5:2358:5 | MyRecordStruct | -| main.rs:2443:13:2446:13 | MyRecordStruct {...} | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2443:13:2446:13 | MyRecordStruct {...} | T2 | file://:0:0:0:0 | & | -| main.rs:2443:13:2446:13 | MyRecordStruct {...} | T2.&T | {EXTERNAL LOCATION} | str | -| main.rs:2444:25:2444:26 | 42 | | {EXTERNAL LOCATION} | i32 | -| main.rs:2445:25:2445:32 | "string" | | file://:0:0:0:0 | & | -| main.rs:2445:25:2445:32 | "string" | &T | {EXTERNAL LOCATION} | str | -| main.rs:2449:15:2449:28 | my_nested_enum | | main.rs:2362:5:2365:5 | MyEnum | -| main.rs:2449:15:2449:28 | my_nested_enum | T1 | main.rs:2355:5:2358:5 | MyRecordStruct | -| main.rs:2449:15:2449:28 | my_nested_enum | T1.T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2449:15:2449:28 | my_nested_enum | T1.T2 | file://:0:0:0:0 | & | -| main.rs:2449:15:2449:28 | my_nested_enum | T1.T2.&T | {EXTERNAL LOCATION} | str | -| main.rs:2449:15:2449:28 | my_nested_enum | T2 | {EXTERNAL LOCATION} | bool | -| main.rs:2450:13:2456:13 | ...::Variant2(...) | | main.rs:2362:5:2365:5 | MyEnum | -| main.rs:2450:13:2456:13 | ...::Variant2(...) | T1 | main.rs:2355:5:2358:5 | MyRecordStruct | -| main.rs:2450:13:2456:13 | ...::Variant2(...) | T1.T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2450:13:2456:13 | ...::Variant2(...) | T1.T2 | file://:0:0:0:0 | & | -| main.rs:2450:13:2456:13 | ...::Variant2(...) | T1.T2.&T | {EXTERNAL LOCATION} | str | -| main.rs:2450:13:2456:13 | ...::Variant2(...) | T2 | {EXTERNAL LOCATION} | bool | -| main.rs:2451:17:2451:22 | value1 | | {EXTERNAL LOCATION} | bool | -| main.rs:2452:17:2455:17 | MyRecordStruct {...} | | main.rs:2355:5:2358:5 | MyRecordStruct | -| main.rs:2452:17:2455:17 | MyRecordStruct {...} | T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2452:17:2455:17 | MyRecordStruct {...} | T2 | file://:0:0:0:0 | & | -| main.rs:2452:17:2455:17 | MyRecordStruct {...} | T2.&T | {EXTERNAL LOCATION} | str | -| main.rs:2453:29:2453:29 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:2454:29:2454:29 | y | | file://:0:0:0:0 | & | -| main.rs:2454:29:2454:29 | y | &T | {EXTERNAL LOCATION} | str | -| main.rs:2457:21:2457:21 | a | | {EXTERNAL LOCATION} | bool | -| main.rs:2457:25:2457:30 | value1 | | {EXTERNAL LOCATION} | bool | -| main.rs:2458:21:2458:21 | b | | {EXTERNAL LOCATION} | i32 | -| main.rs:2458:25:2458:25 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:2459:21:2459:21 | c | | file://:0:0:0:0 | & | -| main.rs:2459:21:2459:21 | c | &T | {EXTERNAL LOCATION} | str | -| main.rs:2459:25:2459:25 | y | | file://:0:0:0:0 | & | -| main.rs:2459:25:2459:25 | y | &T | {EXTERNAL LOCATION} | str | -| main.rs:2462:13:2462:13 | _ | | main.rs:2362:5:2365:5 | MyEnum | -| main.rs:2462:13:2462:13 | _ | T1 | main.rs:2355:5:2358:5 | MyRecordStruct | -| main.rs:2462:13:2462:13 | _ | T1.T1 | {EXTERNAL LOCATION} | i32 | -| main.rs:2462:13:2462:13 | _ | T1.T2 | file://:0:0:0:0 | & | -| main.rs:2462:13:2462:13 | _ | T1.T2.&T | {EXTERNAL LOCATION} | str | -| main.rs:2462:13:2462:13 | _ | T2 | {EXTERNAL LOCATION} | bool | -| main.rs:2465:13:2465:16 | opt1 | | {EXTERNAL LOCATION} | Option | -| main.rs:2465:13:2465:16 | opt1 | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2465:20:2465:43 | Some(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2465:20:2465:43 | Some(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2465:25:2465:42 | ...::default(...) | | {EXTERNAL LOCATION} | i32 | -| main.rs:2467:24:2467:37 | Some::<...>(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2467:24:2467:37 | Some::<...>(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2467:36:2467:36 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:2467:41:2467:44 | opt1 | | {EXTERNAL LOCATION} | Option | -| main.rs:2467:41:2467:44 | opt1 | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2469:13:2469:13 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:2472:13:2472:16 | opt2 | | {EXTERNAL LOCATION} | Option | -| main.rs:2472:13:2472:16 | opt2 | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2472:20:2472:43 | Some(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2472:20:2472:43 | Some(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2472:25:2472:42 | ...::default(...) | | {EXTERNAL LOCATION} | i32 | -| main.rs:2474:24:2474:45 | ...::Some::<...>(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2474:24:2474:45 | ...::Some::<...>(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2474:44:2474:44 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:2474:49:2474:52 | opt2 | | {EXTERNAL LOCATION} | Option | -| main.rs:2474:49:2474:52 | opt2 | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2476:13:2476:13 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:2479:13:2479:16 | opt3 | | {EXTERNAL LOCATION} | Option | -| main.rs:2479:13:2479:16 | opt3 | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2479:20:2479:43 | Some(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2479:20:2479:43 | Some(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2479:25:2479:42 | ...::default(...) | | {EXTERNAL LOCATION} | i32 | -| main.rs:2481:24:2481:45 | ...::Some(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:2481:24:2481:45 | ...::Some(...) | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2481:44:2481:44 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:2481:49:2481:52 | opt3 | | {EXTERNAL LOCATION} | Option | -| main.rs:2481:49:2481:52 | opt3 | T | {EXTERNAL LOCATION} | i32 | -| main.rs:2483:13:2483:13 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:2486:9:2486:12 | None | | {EXTERNAL LOCATION} | Option | -| main.rs:2492:5:2492:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo | -| main.rs:2493:5:2493:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo | -| main.rs:2493:20:2493:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | -| main.rs:2493:41:2493:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | -| main.rs:2509:5:2509:15 | ...::f(...) | | {EXTERNAL LOCATION} | trait Future | -| main.rs:2518:5:2518:25 | ...::f(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2357:13:2357:23 | boxed_value | | {EXTERNAL LOCATION} | Box | +| main.rs:2357:13:2357:23 | boxed_value | A | {EXTERNAL LOCATION} | Global | +| main.rs:2357:13:2357:23 | boxed_value | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2357:27:2357:42 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2357:27:2357:42 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2357:27:2357:42 | ...::new(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2357:36:2357:41 | 100i32 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2360:15:2360:25 | boxed_value | | {EXTERNAL LOCATION} | Box | +| main.rs:2360:15:2360:25 | boxed_value | A | {EXTERNAL LOCATION} | Global | +| main.rs:2360:15:2360:25 | boxed_value | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2361:13:2361:19 | box 100 | | {EXTERNAL LOCATION} | Box | +| main.rs:2361:13:2361:19 | box 100 | A | {EXTERNAL LOCATION} | Global | +| main.rs:2361:13:2361:19 | box 100 | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2361:17:2361:19 | 100 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2362:26:2362:36 | "Boxed 100\\n" | | file://:0:0:0:0 | & | +| main.rs:2362:26:2362:36 | "Boxed 100\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2362:26:2362:36 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2362:26:2362:36 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2364:13:2364:17 | box ... | | {EXTERNAL LOCATION} | Box | +| main.rs:2364:13:2364:17 | box ... | A | {EXTERNAL LOCATION} | Global | +| main.rs:2364:13:2364:17 | box ... | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2366:26:2366:42 | "Boxed value: {}\\n" | | file://:0:0:0:0 | & | +| main.rs:2366:26:2366:42 | "Boxed value: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2366:26:2366:51 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2366:26:2366:51 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2371:13:2371:22 | nested_box | | {EXTERNAL LOCATION} | Box | +| main.rs:2371:13:2371:22 | nested_box | A | {EXTERNAL LOCATION} | Global | +| main.rs:2371:13:2371:22 | nested_box | T | {EXTERNAL LOCATION} | Box | +| main.rs:2371:13:2371:22 | nested_box | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2371:13:2371:22 | nested_box | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2371:26:2371:50 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2371:26:2371:50 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2371:26:2371:50 | ...::new(...) | T | {EXTERNAL LOCATION} | Box | +| main.rs:2371:26:2371:50 | ...::new(...) | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2371:26:2371:50 | ...::new(...) | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2371:35:2371:49 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| main.rs:2371:35:2371:49 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:2371:35:2371:49 | ...::new(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2371:44:2371:48 | 42i32 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2372:15:2372:24 | nested_box | | {EXTERNAL LOCATION} | Box | +| main.rs:2372:15:2372:24 | nested_box | A | {EXTERNAL LOCATION} | Global | +| main.rs:2372:15:2372:24 | nested_box | T | {EXTERNAL LOCATION} | Box | +| main.rs:2372:15:2372:24 | nested_box | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2372:15:2372:24 | nested_box | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2373:13:2373:21 | box ... | | {EXTERNAL LOCATION} | Box | +| main.rs:2373:13:2373:21 | box ... | A | {EXTERNAL LOCATION} | Global | +| main.rs:2373:13:2373:21 | box ... | T | {EXTERNAL LOCATION} | Box | +| main.rs:2373:13:2373:21 | box ... | T.A | {EXTERNAL LOCATION} | Global | +| main.rs:2373:13:2373:21 | box ... | T.T | {EXTERNAL LOCATION} | i32 | +| main.rs:2375:26:2375:43 | "Nested boxed: {}\\n" | | file://:0:0:0:0 | & | +| main.rs:2375:26:2375:43 | "Nested boxed: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2375:26:2375:59 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2375:26:2375:59 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2383:5:2383:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo | +| main.rs:2384:5:2384:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo | +| main.rs:2384:20:2384:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:2384:41:2384:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:2400:5:2400:15 | ...::f(...) | | {EXTERNAL LOCATION} | trait Future | +| pattern_matching.rs:13:26:133:1 | { ... } | | {EXTERNAL LOCATION} | Option | +| pattern_matching.rs:14:9:14:13 | value | | {EXTERNAL LOCATION} | Option | +| pattern_matching.rs:14:9:14:13 | value | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:14:17:14:24 | Some(...) | | {EXTERNAL LOCATION} | Option | +| pattern_matching.rs:14:17:14:24 | Some(...) | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:14:22:14:23 | 42 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:15:12:15:21 | Some(...) | | {EXTERNAL LOCATION} | Option | +| pattern_matching.rs:15:12:15:21 | Some(...) | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:15:17:15:20 | mesg | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:15:25:15:29 | value | | {EXTERNAL LOCATION} | Option | +| pattern_matching.rs:15:25:15:29 | value | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:16:13:16:16 | mesg | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:16:20:16:23 | mesg | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:17:18:17:25 | "{mesg}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:17:18:17:25 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:17:18:17:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:17:18:17:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:17:20:17:23 | mesg | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:19:11:19:15 | value | | {EXTERNAL LOCATION} | Option | +| pattern_matching.rs:19:11:19:15 | value | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:20:9:20:18 | Some(...) | | {EXTERNAL LOCATION} | Option | +| pattern_matching.rs:20:9:20:18 | Some(...) | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:20:14:20:17 | mesg | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:21:17:21:20 | mesg | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:21:24:21:27 | mesg | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:22:22:22:29 | "{mesg}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:22:22:22:29 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:22:22:22:29 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:22:22:22:29 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:22:24:22:27 | mesg | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:24:9:24:12 | None | | {EXTERNAL LOCATION} | Option | +| pattern_matching.rs:24:9:24:12 | None | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:26:9:26:12 | mesg | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:26:16:26:20 | value | | {EXTERNAL LOCATION} | Option | +| pattern_matching.rs:26:16:26:20 | value | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:26:16:26:29 | value.unwrap() | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:27:9:27:12 | mesg | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:27:16:27:19 | mesg | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:28:14:28:21 | "{mesg}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:28:14:28:21 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:28:14:28:21 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:28:14:28:21 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:28:16:28:19 | mesg | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:29:9:29:12 | mesg | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:29:16:29:20 | value | | {EXTERNAL LOCATION} | Option | +| pattern_matching.rs:29:16:29:20 | value | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:29:16:29:21 | TryExpr | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:30:14:30:21 | "{mesg}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:30:14:30:21 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:30:14:30:21 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:30:14:30:21 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:30:16:30:19 | mesg | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:32:9:32:14 | value2 | | file://:0:0:0:0 | & | +| pattern_matching.rs:32:9:32:14 | value2 | &T | {EXTERNAL LOCATION} | Option | +| pattern_matching.rs:32:9:32:14 | value2 | &T.T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:32:18:32:26 | &... | | file://:0:0:0:0 | & | +| pattern_matching.rs:32:18:32:26 | &... | &T | {EXTERNAL LOCATION} | Option | +| pattern_matching.rs:32:18:32:26 | &... | &T.T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:32:19:32:26 | Some(...) | | {EXTERNAL LOCATION} | Option | +| pattern_matching.rs:32:19:32:26 | Some(...) | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:32:24:32:25 | 42 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:33:12:33:22 | &... | | file://:0:0:0:0 | & | +| pattern_matching.rs:33:12:33:22 | &... | &T | {EXTERNAL LOCATION} | Option | +| pattern_matching.rs:33:12:33:22 | &... | &T.T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:33:13:33:22 | Some(...) | | {EXTERNAL LOCATION} | Option | +| pattern_matching.rs:33:13:33:22 | Some(...) | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:33:18:33:21 | mesg | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:33:26:33:31 | value2 | | file://:0:0:0:0 | & | +| pattern_matching.rs:33:26:33:31 | value2 | &T | {EXTERNAL LOCATION} | Option | +| pattern_matching.rs:33:26:33:31 | value2 | &T.T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:34:13:34:16 | mesg | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:34:20:34:23 | mesg | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:35:18:35:25 | "{mesg}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:35:18:35:25 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:35:18:35:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:35:18:35:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:35:20:35:23 | mesg | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:38:9:38:14 | value3 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:38:18:38:19 | 42 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:39:16:39:19 | mesg | | file://:0:0:0:0 | & | +| pattern_matching.rs:39:16:39:19 | mesg | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:39:23:39:28 | value3 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:40:13:40:16 | mesg | | file://:0:0:0:0 | & | +| pattern_matching.rs:40:13:40:16 | mesg | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:40:20:40:23 | mesg | | file://:0:0:0:0 | & | +| pattern_matching.rs:40:20:40:23 | mesg | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:41:18:41:25 | "{mesg}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:41:18:41:25 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:41:18:41:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:41:18:41:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:41:20:41:23 | mesg | | file://:0:0:0:0 | & | +| pattern_matching.rs:41:20:41:23 | mesg | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:44:9:44:14 | value4 | | {EXTERNAL LOCATION} | Option | +| pattern_matching.rs:44:9:44:14 | value4 | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:44:18:44:25 | Some(...) | | {EXTERNAL LOCATION} | Option | +| pattern_matching.rs:44:18:44:25 | Some(...) | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:44:23:44:24 | 42 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:45:12:45:25 | Some(...) | | {EXTERNAL LOCATION} | Option | +| pattern_matching.rs:45:12:45:25 | Some(...) | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:45:21:45:24 | mesg | | file://:0:0:0:0 | & | +| pattern_matching.rs:45:21:45:24 | mesg | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:45:29:45:34 | value4 | | {EXTERNAL LOCATION} | Option | +| pattern_matching.rs:45:29:45:34 | value4 | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:46:13:46:16 | mesg | | file://:0:0:0:0 | & | +| pattern_matching.rs:46:13:46:16 | mesg | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:46:20:46:23 | mesg | | file://:0:0:0:0 | & | +| pattern_matching.rs:46:20:46:23 | mesg | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:47:18:47:25 | "{mesg}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:47:18:47:25 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:47:18:47:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:47:18:47:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:47:20:47:23 | mesg | | file://:0:0:0:0 | & | +| pattern_matching.rs:47:20:47:23 | mesg | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:50:13:50:18 | value5 | | file://:0:0:0:0 | & | +| pattern_matching.rs:50:13:50:18 | value5 | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:50:22:50:23 | 42 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:51:9:51:9 | x | | file://:0:0:0:0 | & | +| pattern_matching.rs:51:9:51:9 | x | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:51:13:51:18 | value5 | | file://:0:0:0:0 | & | +| pattern_matching.rs:51:13:51:18 | value5 | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:53:9:53:24 | my_record_struct | | pattern_matching.rs:1:1:4:1 | MyRecordStruct | +| pattern_matching.rs:53:9:53:24 | my_record_struct | T1 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:53:9:53:24 | my_record_struct | T2 | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:53:28:56:5 | MyRecordStruct {...} | | pattern_matching.rs:1:1:4:1 | MyRecordStruct | +| pattern_matching.rs:53:28:56:5 | MyRecordStruct {...} | T1 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:53:28:56:5 | MyRecordStruct {...} | T2 | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:54:17:54:18 | 42 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:55:17:55:21 | false | | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:57:12:57:44 | MyRecordStruct {...} | | pattern_matching.rs:1:1:4:1 | MyRecordStruct | +| pattern_matching.rs:57:12:57:44 | MyRecordStruct {...} | T1 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:57:12:57:44 | MyRecordStruct {...} | T2 | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:57:29:57:34 | value1 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:57:37:57:42 | value2 | | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:57:48:57:63 | my_record_struct | | pattern_matching.rs:1:1:4:1 | MyRecordStruct | +| pattern_matching.rs:57:48:57:63 | my_record_struct | T1 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:57:48:57:63 | my_record_struct | T2 | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:58:13:58:13 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:58:17:58:22 | value1 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:59:13:59:13 | y | | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:59:17:59:22 | value2 | | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:63:9:63:23 | my_tuple_struct | | pattern_matching.rs:6:1:6:37 | MyTupleStruct | +| pattern_matching.rs:63:9:63:23 | my_tuple_struct | T1 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:63:9:63:23 | my_tuple_struct | T2 | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:63:27:63:50 | MyTupleStruct(...) | | pattern_matching.rs:6:1:6:37 | MyTupleStruct | +| pattern_matching.rs:63:27:63:50 | MyTupleStruct(...) | T1 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:63:27:63:50 | MyTupleStruct(...) | T2 | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:63:41:63:42 | 42 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:63:45:63:49 | false | | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:64:12:64:40 | MyTupleStruct(...) | | pattern_matching.rs:6:1:6:37 | MyTupleStruct | +| pattern_matching.rs:64:12:64:40 | MyTupleStruct(...) | T1 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:64:12:64:40 | MyTupleStruct(...) | T2 | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:64:26:64:31 | value1 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:64:34:64:39 | value2 | | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:64:44:64:58 | my_tuple_struct | | pattern_matching.rs:6:1:6:37 | MyTupleStruct | +| pattern_matching.rs:64:44:64:58 | my_tuple_struct | T1 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:64:44:64:58 | my_tuple_struct | T2 | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:65:13:65:13 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:65:17:65:22 | value1 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:66:13:66:13 | y | | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:66:17:66:22 | value2 | | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:70:9:70:16 | my_enum1 | | pattern_matching.rs:8:1:11:1 | MyEnum | +| pattern_matching.rs:70:9:70:16 | my_enum1 | T1 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:70:9:70:16 | my_enum1 | T2 | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:70:20:73:5 | ...::Variant1 {...} | | pattern_matching.rs:8:1:11:1 | MyEnum | +| pattern_matching.rs:70:20:73:5 | ...::Variant1 {...} | T1 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:70:20:73:5 | ...::Variant1 {...} | T2 | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:71:17:71:18 | 42 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:72:17:72:21 | false | | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:74:11:74:18 | my_enum1 | | pattern_matching.rs:8:1:11:1 | MyEnum | +| pattern_matching.rs:74:11:74:18 | my_enum1 | T1 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:74:11:74:18 | my_enum1 | T2 | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:75:9:75:43 | ...::Variant1 {...} | | pattern_matching.rs:8:1:11:1 | MyEnum | +| pattern_matching.rs:75:9:75:43 | ...::Variant1 {...} | T1 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:75:9:75:43 | ...::Variant1 {...} | T2 | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:75:28:75:33 | value1 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:75:36:75:41 | value2 | | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:76:17:76:17 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:76:21:76:26 | value1 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:77:17:77:17 | y | | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:77:21:77:26 | value2 | | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:80:9:80:40 | ...::Variant2(...) | | pattern_matching.rs:8:1:11:1 | MyEnum | +| pattern_matching.rs:80:9:80:40 | ...::Variant2(...) | T1 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:80:9:80:40 | ...::Variant2(...) | T2 | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:80:26:80:31 | value1 | | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:80:34:80:39 | value2 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:81:17:81:17 | x | | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:81:21:81:26 | value1 | | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:82:17:82:17 | y | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:82:21:82:26 | value2 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:87:9:87:22 | my_nested_enum | | pattern_matching.rs:8:1:11:1 | MyEnum | +| pattern_matching.rs:87:9:87:22 | my_nested_enum | T1 | pattern_matching.rs:1:1:4:1 | MyRecordStruct | +| pattern_matching.rs:87:9:87:22 | my_nested_enum | T1.T1 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:87:9:87:22 | my_nested_enum | T1.T2 | file://:0:0:0:0 | & | +| pattern_matching.rs:87:9:87:22 | my_nested_enum | T1.T2.&T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:87:9:87:22 | my_nested_enum | T2 | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:87:26:93:5 | ...::Variant2(...) | | pattern_matching.rs:8:1:11:1 | MyEnum | +| pattern_matching.rs:87:26:93:5 | ...::Variant2(...) | T1 | pattern_matching.rs:1:1:4:1 | MyRecordStruct | +| pattern_matching.rs:87:26:93:5 | ...::Variant2(...) | T1.T1 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:87:26:93:5 | ...::Variant2(...) | T1.T2 | file://:0:0:0:0 | & | +| pattern_matching.rs:87:26:93:5 | ...::Variant2(...) | T1.T2.&T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:87:26:93:5 | ...::Variant2(...) | T2 | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:88:9:88:13 | false | | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:89:9:92:9 | MyRecordStruct {...} | | pattern_matching.rs:1:1:4:1 | MyRecordStruct | +| pattern_matching.rs:89:9:92:9 | MyRecordStruct {...} | T1 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:89:9:92:9 | MyRecordStruct {...} | T2 | file://:0:0:0:0 | & | +| pattern_matching.rs:89:9:92:9 | MyRecordStruct {...} | T2.&T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:90:21:90:22 | 42 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:91:21:91:28 | "string" | | file://:0:0:0:0 | & | +| pattern_matching.rs:91:21:91:28 | "string" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:95:11:95:24 | my_nested_enum | | pattern_matching.rs:8:1:11:1 | MyEnum | +| pattern_matching.rs:95:11:95:24 | my_nested_enum | T1 | pattern_matching.rs:1:1:4:1 | MyRecordStruct | +| pattern_matching.rs:95:11:95:24 | my_nested_enum | T1.T1 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:95:11:95:24 | my_nested_enum | T1.T2 | file://:0:0:0:0 | & | +| pattern_matching.rs:95:11:95:24 | my_nested_enum | T1.T2.&T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:95:11:95:24 | my_nested_enum | T2 | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:96:9:102:9 | ...::Variant2(...) | | pattern_matching.rs:8:1:11:1 | MyEnum | +| pattern_matching.rs:96:9:102:9 | ...::Variant2(...) | T1 | pattern_matching.rs:1:1:4:1 | MyRecordStruct | +| pattern_matching.rs:96:9:102:9 | ...::Variant2(...) | T1.T1 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:96:9:102:9 | ...::Variant2(...) | T1.T2 | file://:0:0:0:0 | & | +| pattern_matching.rs:96:9:102:9 | ...::Variant2(...) | T1.T2.&T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:96:9:102:9 | ...::Variant2(...) | T2 | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:97:13:97:18 | value1 | | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:98:13:101:13 | MyRecordStruct {...} | | pattern_matching.rs:1:1:4:1 | MyRecordStruct | +| pattern_matching.rs:98:13:101:13 | MyRecordStruct {...} | T1 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:98:13:101:13 | MyRecordStruct {...} | T2 | file://:0:0:0:0 | & | +| pattern_matching.rs:98:13:101:13 | MyRecordStruct {...} | T2.&T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:99:25:99:25 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:100:25:100:25 | y | | file://:0:0:0:0 | & | +| pattern_matching.rs:100:25:100:25 | y | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:103:17:103:17 | a | | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:103:21:103:26 | value1 | | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:104:17:104:17 | b | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:104:21:104:21 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:105:17:105:17 | c | | file://:0:0:0:0 | & | +| pattern_matching.rs:105:17:105:17 | c | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:105:21:105:21 | y | | file://:0:0:0:0 | & | +| pattern_matching.rs:105:21:105:21 | y | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:108:9:108:9 | _ | | pattern_matching.rs:8:1:11:1 | MyEnum | +| pattern_matching.rs:108:9:108:9 | _ | T1 | pattern_matching.rs:1:1:4:1 | MyRecordStruct | +| pattern_matching.rs:108:9:108:9 | _ | T1.T1 | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:108:9:108:9 | _ | T1.T2 | file://:0:0:0:0 | & | +| pattern_matching.rs:108:9:108:9 | _ | T1.T2.&T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:108:9:108:9 | _ | T2 | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:111:9:111:12 | opt1 | | {EXTERNAL LOCATION} | Option | +| pattern_matching.rs:111:9:111:12 | opt1 | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:111:16:111:39 | Some(...) | | {EXTERNAL LOCATION} | Option | +| pattern_matching.rs:111:16:111:39 | Some(...) | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:111:21:111:38 | ...::default(...) | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:113:20:113:33 | Some::<...>(...) | | {EXTERNAL LOCATION} | Option | +| pattern_matching.rs:113:20:113:33 | Some::<...>(...) | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:113:32:113:32 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:113:37:113:40 | opt1 | | {EXTERNAL LOCATION} | Option | +| pattern_matching.rs:113:37:113:40 | opt1 | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:115:9:115:9 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:118:9:118:12 | opt2 | | {EXTERNAL LOCATION} | Option | +| pattern_matching.rs:118:9:118:12 | opt2 | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:118:16:118:39 | Some(...) | | {EXTERNAL LOCATION} | Option | +| pattern_matching.rs:118:16:118:39 | Some(...) | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:118:21:118:38 | ...::default(...) | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:120:20:120:41 | ...::Some::<...>(...) | | {EXTERNAL LOCATION} | Option | +| pattern_matching.rs:120:20:120:41 | ...::Some::<...>(...) | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:120:40:120:40 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:120:45:120:48 | opt2 | | {EXTERNAL LOCATION} | Option | +| pattern_matching.rs:120:45:120:48 | opt2 | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:122:9:122:9 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:125:9:125:12 | opt3 | | {EXTERNAL LOCATION} | Option | +| pattern_matching.rs:125:9:125:12 | opt3 | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:125:16:125:39 | Some(...) | | {EXTERNAL LOCATION} | Option | +| pattern_matching.rs:125:16:125:39 | Some(...) | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:125:21:125:38 | ...::default(...) | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:127:20:127:41 | ...::Some(...) | | {EXTERNAL LOCATION} | Option | +| pattern_matching.rs:127:20:127:41 | ...::Some(...) | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:127:40:127:40 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:127:45:127:48 | opt3 | | {EXTERNAL LOCATION} | Option | +| pattern_matching.rs:127:45:127:48 | opt3 | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:129:9:129:9 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:132:5:132:8 | None | | {EXTERNAL LOCATION} | Option | +| pattern_matching.rs:169:9:169:13 | value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:169:17:169:21 | 42i32 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:171:11:171:15 | value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:173:9:173:10 | 42 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:174:17:174:29 | literal_match | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:174:33:174:37 | value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:175:22:175:42 | "Literal pattern: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:175:22:175:42 | "Literal pattern: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:175:22:175:57 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:175:22:175:57 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:175:45:175:57 | literal_match | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:177:10:177:10 | 1 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:178:17:178:32 | negative_literal | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:178:36:178:40 | value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:179:22:179:43 | "Negative literal: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:179:22:179:43 | "Negative literal: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:179:22:179:61 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:179:22:179:61 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:179:46:179:61 | negative_literal | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:181:9:181:9 | 0 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:182:17:182:28 | zero_literal | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:182:32:182:36 | value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:183:22:183:39 | "Zero literal: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:183:22:183:39 | "Zero literal: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:183:22:183:53 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:183:22:183:53 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:183:42:183:53 | zero_literal | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:185:9:185:9 | _ | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:188:9:188:17 | float_val | | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:188:21:188:27 | 3.14f64 | | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:189:11:189:19 | float_val | | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:190:9:190:12 | 3.14 | | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:191:17:191:24 | pi_match | | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:191:28:191:36 | float_val | | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:192:22:192:37 | "Pi matched: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:192:22:192:37 | "Pi matched: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:192:22:192:47 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:192:22:192:47 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:192:40:192:47 | pi_match | | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:194:9:194:9 | _ | | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:197:9:197:18 | string_val | | file://:0:0:0:0 | & | +| pattern_matching.rs:197:9:197:18 | string_val | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:197:22:197:28 | "hello" | | file://:0:0:0:0 | & | +| pattern_matching.rs:197:22:197:28 | "hello" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:198:11:198:20 | string_val | | file://:0:0:0:0 | & | +| pattern_matching.rs:198:11:198:20 | string_val | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:199:9:199:15 | "hello" | | file://:0:0:0:0 | & | +| pattern_matching.rs:199:9:199:15 | "hello" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:200:17:200:27 | hello_match | | file://:0:0:0:0 | & | +| pattern_matching.rs:200:17:200:27 | hello_match | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:200:31:200:40 | string_val | | file://:0:0:0:0 | & | +| pattern_matching.rs:200:31:200:40 | string_val | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:201:22:201:41 | "String literal: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:201:22:201:41 | "String literal: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:201:22:201:54 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:201:22:201:54 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:201:44:201:54 | hello_match | | file://:0:0:0:0 | & | +| pattern_matching.rs:201:44:201:54 | hello_match | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:203:9:203:9 | _ | | file://:0:0:0:0 | & | +| pattern_matching.rs:203:9:203:9 | _ | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:206:9:206:16 | bool_val | | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:206:20:206:23 | true | | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:207:11:207:18 | bool_val | | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:208:9:208:12 | true | | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:209:17:209:26 | true_match | | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:209:30:209:37 | bool_val | | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:210:22:210:39 | "True literal: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:210:22:210:39 | "True literal: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:210:22:210:51 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:210:22:210:51 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:210:42:210:51 | true_match | | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:212:9:212:13 | false | | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:213:17:213:27 | false_match | | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:213:31:213:38 | bool_val | | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:214:22:214:40 | "False literal: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:214:22:214:40 | "False literal: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:214:22:214:53 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:214:22:214:53 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:214:43:214:53 | false_match | | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:220:9:220:13 | value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:220:17:220:21 | 42i32 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:223:11:223:15 | value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:224:9:224:9 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:225:17:225:27 | bound_value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:225:31:225:31 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:226:22:226:45 | "Identifier pattern: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:226:22:226:45 | "Identifier pattern: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:226:22:226:58 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:226:22:226:58 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:226:48:226:58 | bound_value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:231:11:231:16 | &value | | file://:0:0:0:0 | & | +| pattern_matching.rs:231:11:231:16 | &value | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:231:12:231:16 | value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:232:13:232:13 | x | | file://:0:0:0:0 | & | +| pattern_matching.rs:232:13:232:13 | x | &T | file://:0:0:0:0 | & | +| pattern_matching.rs:232:13:232:13 | x | &T.&T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:233:17:233:25 | ref_bound | | file://:0:0:0:0 | & | +| pattern_matching.rs:233:17:233:25 | ref_bound | &T | file://:0:0:0:0 | & | +| pattern_matching.rs:233:17:233:25 | ref_bound | &T.&T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:233:29:233:29 | x | | file://:0:0:0:0 | & | +| pattern_matching.rs:233:29:233:29 | x | &T | file://:0:0:0:0 | & | +| pattern_matching.rs:233:29:233:29 | x | &T.&T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:234:22:234:49 | "Reference identifier: {:?}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:234:22:234:49 | "Reference identifier: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:234:22:234:60 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:234:22:234:60 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:234:52:234:60 | ref_bound | | file://:0:0:0:0 | & | +| pattern_matching.rs:234:52:234:60 | ref_bound | &T | file://:0:0:0:0 | & | +| pattern_matching.rs:234:52:234:60 | ref_bound | &T.&T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:239:13:239:25 | mutable_value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:239:29:239:33 | 10i32 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:240:11:240:23 | mutable_value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:241:13:241:13 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:242:17:242:25 | mut_bound | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:242:29:242:29 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:243:13:243:13 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:243:13:243:18 | ... += ... | | file://:0:0:0:0 | () | +| pattern_matching.rs:243:18:243:18 | 1 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:244:22:244:45 | "Mutable identifier: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:244:22:244:45 | "Mutable identifier: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:244:22:244:56 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:244:22:244:56 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:244:48:244:56 | mut_bound | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:249:9:249:20 | option_value | | pattern_matching.rs:152:1:156:1 | MyOption | +| pattern_matching.rs:249:9:249:20 | option_value | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:249:24:249:44 | ...::Some(...) | | pattern_matching.rs:152:1:156:1 | MyOption | +| pattern_matching.rs:249:24:249:44 | ...::Some(...) | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:249:39:249:43 | 42i32 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:250:11:250:22 | option_value | | pattern_matching.rs:152:1:156:1 | MyOption | +| pattern_matching.rs:250:11:250:22 | option_value | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:251:9:251:30 | ...::Some(...) | | pattern_matching.rs:152:1:156:1 | MyOption | +| pattern_matching.rs:251:9:251:30 | ...::Some(...) | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:251:24:251:24 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:251:28:251:29 | 42 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:252:17:252:24 | at_bound | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:252:28:252:28 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:253:22:253:49 | "@ pattern with literal: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:253:22:253:49 | "@ pattern with literal: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:253:22:253:59 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:253:22:253:59 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:253:52:253:59 | at_bound | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:255:9:255:35 | ...::Some(...) | | pattern_matching.rs:152:1:156:1 | MyOption | +| pattern_matching.rs:255:9:255:35 | ...::Some(...) | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:255:24:255:24 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:255:28:255:28 | 1 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:255:32:255:34 | 100 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:256:17:256:30 | range_at_bound | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:256:34:256:34 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:257:22:257:47 | "@ pattern with range: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:257:22:257:47 | "@ pattern with range: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:257:22:257:63 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:257:22:257:63 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:257:50:257:63 | range_at_bound | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:259:9:259:25 | ...::Some(...) | | pattern_matching.rs:152:1:156:1 | MyOption | +| pattern_matching.rs:259:9:259:25 | ...::Some(...) | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:259:24:259:24 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:260:17:260:26 | some_bound | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:260:30:260:30 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:261:22:261:37 | "Some value: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:261:22:261:37 | "Some value: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:261:22:261:49 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:261:22:261:49 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:261:40:261:49 | some_bound | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:263:9:263:22 | ...::None | | pattern_matching.rs:152:1:156:1 | MyOption | +| pattern_matching.rs:263:9:263:22 | ...::None | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:264:22:264:33 | "None value\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:264:22:264:33 | "None value\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:264:22:264:33 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:264:22:264:33 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:269:13:269:23 | ref_mut_val | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:269:27:269:30 | 5i32 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:270:11:270:26 | &mut ref_mut_val | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:270:11:270:26 | &mut ref_mut_val | | file://:0:0:0:0 | & | +| pattern_matching.rs:270:11:270:26 | &mut ref_mut_val | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:270:16:270:26 | ref_mut_val | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:271:17:271:17 | x | | file://:0:0:0:0 | & | +| pattern_matching.rs:271:17:271:17 | x | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:271:17:271:17 | x | &T | file://:0:0:0:0 | & | +| pattern_matching.rs:271:17:271:17 | x | &T.&T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:272:17:272:29 | ref_mut_bound | | file://:0:0:0:0 | & | +| pattern_matching.rs:272:17:272:29 | ref_mut_bound | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:272:17:272:29 | ref_mut_bound | &T | file://:0:0:0:0 | & | +| pattern_matching.rs:272:17:272:29 | ref_mut_bound | &T.&T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:272:33:272:33 | x | | file://:0:0:0:0 | & | +| pattern_matching.rs:272:33:272:33 | x | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:272:33:272:33 | x | &T | file://:0:0:0:0 | & | +| pattern_matching.rs:272:33:272:33 | x | &T.&T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:273:13:273:27 | * ... | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:273:13:273:32 | ... += ... | | file://:0:0:0:0 | () | +| pattern_matching.rs:273:14:273:27 | * ... | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:273:14:273:27 | * ... | | file://:0:0:0:0 | & | +| pattern_matching.rs:273:14:273:27 | * ... | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:273:15:273:27 | ref_mut_bound | | file://:0:0:0:0 | & | +| pattern_matching.rs:273:15:273:27 | ref_mut_bound | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:273:15:273:27 | ref_mut_bound | &T | file://:0:0:0:0 | & | +| pattern_matching.rs:273:15:273:27 | ref_mut_bound | &T.&T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:273:32:273:32 | 1 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:274:22:274:38 | "Ref mut pattern\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:274:22:274:38 | "Ref mut pattern\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:274:22:274:38 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:274:22:274:38 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:280:9:280:13 | value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:280:17:280:21 | 42i32 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:282:11:282:15 | value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:283:9:283:10 | 42 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:283:24:283:39 | "Specific match\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:283:24:283:39 | "Specific match\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:283:24:283:39 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:283:24:283:39 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:285:9:285:9 | _ | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:286:17:286:32 | wildcard_context | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:286:36:286:40 | value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:287:22:287:47 | "Wildcard pattern for: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:287:22:287:47 | "Wildcard pattern for: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:287:22:287:65 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:287:22:287:65 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:287:50:287:65 | wildcard_context | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:293:9:293:13 | value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:293:17:293:21 | 42i32 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:295:11:295:15 | value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:297:9:297:9 | 1 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:297:9:297:14 | RangePat | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:297:13:297:14 | 10 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:298:17:298:31 | range_inclusive | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:298:35:298:39 | value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:299:22:299:42 | "Range inclusive: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:299:22:299:42 | "Range inclusive: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:299:22:299:59 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:299:22:299:59 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:299:45:299:59 | range_inclusive | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:301:9:301:10 | 11 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:301:9:301:12 | RangePat | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:302:17:302:26 | range_from | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:302:30:302:34 | value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:303:22:303:40 | "Range from 11: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:303:22:303:40 | "Range from 11: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:303:22:303:52 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:303:22:303:52 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:303:43:303:52 | range_from | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:305:9:305:12 | RangePat | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:305:12:305:12 | 0 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:306:17:306:34 | range_to_inclusive | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:306:38:306:42 | value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:307:22:307:47 | "Range to 0 inclusive: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:307:22:307:47 | "Range to 0 inclusive: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:307:22:307:67 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:307:22:307:67 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:307:50:307:67 | range_to_inclusive | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:309:9:309:9 | _ | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:312:9:312:16 | char_val | | {EXTERNAL LOCATION} | char | +| pattern_matching.rs:312:20:312:22 | 'c' | | {EXTERNAL LOCATION} | char | +| pattern_matching.rs:313:11:313:18 | char_val | | {EXTERNAL LOCATION} | char | +| pattern_matching.rs:314:9:314:11 | 'a' | | {EXTERNAL LOCATION} | char | +| pattern_matching.rs:314:9:314:17 | RangePat | | {EXTERNAL LOCATION} | char | +| pattern_matching.rs:314:15:314:17 | 'z' | | {EXTERNAL LOCATION} | char | +| pattern_matching.rs:315:17:315:30 | lowercase_char | | {EXTERNAL LOCATION} | char | +| pattern_matching.rs:315:34:315:41 | char_val | | {EXTERNAL LOCATION} | char | +| pattern_matching.rs:316:22:316:41 | "Lowercase char: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:316:22:316:41 | "Lowercase char: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:316:22:316:57 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:316:22:316:57 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:316:44:316:57 | lowercase_char | | {EXTERNAL LOCATION} | char | +| pattern_matching.rs:318:9:318:11 | 'A' | | {EXTERNAL LOCATION} | char | +| pattern_matching.rs:318:9:318:17 | RangePat | | {EXTERNAL LOCATION} | char | +| pattern_matching.rs:318:15:318:17 | 'Z' | | {EXTERNAL LOCATION} | char | +| pattern_matching.rs:319:17:319:30 | uppercase_char | | {EXTERNAL LOCATION} | char | +| pattern_matching.rs:319:34:319:41 | char_val | | {EXTERNAL LOCATION} | char | +| pattern_matching.rs:320:22:320:41 | "Uppercase char: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:320:22:320:41 | "Uppercase char: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:320:22:320:57 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:320:22:320:57 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:320:44:320:57 | uppercase_char | | {EXTERNAL LOCATION} | char | +| pattern_matching.rs:322:9:322:9 | _ | | {EXTERNAL LOCATION} | char | +| pattern_matching.rs:327:9:327:13 | value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:327:17:327:21 | 42i32 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:328:13:328:25 | mutable_value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:328:29:328:33 | 10i32 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:331:11:331:16 | &value | | file://:0:0:0:0 | & | +| pattern_matching.rs:331:11:331:16 | &value | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:331:12:331:16 | value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:332:9:332:11 | &42 | | file://:0:0:0:0 | & | +| pattern_matching.rs:332:9:332:11 | &42 | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:332:10:332:11 | 42 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:333:17:333:27 | deref_match | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:333:31:333:35 | value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:334:22:334:45 | "Dereferenced match: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:334:22:334:45 | "Dereferenced match: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:334:22:334:58 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:334:22:334:58 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:334:48:334:58 | deref_match | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:336:9:336:10 | &... | | file://:0:0:0:0 | & | +| pattern_matching.rs:336:9:336:10 | &... | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:336:10:336:10 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:337:17:337:27 | deref_bound | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:337:31:337:31 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:338:22:338:47 | "Dereferenced binding: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:338:22:338:47 | "Dereferenced binding: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:338:22:338:60 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:338:22:338:60 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:338:50:338:60 | deref_bound | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:342:11:342:28 | &mut mutable_value | | file://:0:0:0:0 | & | +| pattern_matching.rs:342:11:342:28 | &mut mutable_value | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:342:16:342:28 | mutable_value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:343:9:343:18 | &mut ... | | file://:0:0:0:0 | & | +| pattern_matching.rs:343:9:343:18 | &mut ... | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:343:18:343:18 | x | | file://:0:0:0:0 | & | +| pattern_matching.rs:343:18:343:18 | x | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:344:17:344:29 | mut_ref_bound | | file://:0:0:0:0 | & | +| pattern_matching.rs:344:17:344:29 | mut_ref_bound | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:344:33:344:33 | x | | file://:0:0:0:0 | & | +| pattern_matching.rs:344:33:344:33 | x | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:345:22:345:46 | "Mutable ref pattern: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:345:22:345:46 | "Mutable ref pattern: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:345:22:345:61 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:345:22:345:61 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:345:49:345:61 | mut_ref_bound | | file://:0:0:0:0 | & | +| pattern_matching.rs:345:49:345:61 | mut_ref_bound | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:349:11:349:16 | &value | | file://:0:0:0:0 | & | +| pattern_matching.rs:349:11:349:16 | &value | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:349:12:349:16 | value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:350:13:350:13 | x | | file://:0:0:0:0 | & | +| pattern_matching.rs:350:13:350:13 | x | &T | file://:0:0:0:0 | & | +| pattern_matching.rs:350:13:350:13 | x | &T.&T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:351:17:351:27 | ref_pattern | | file://:0:0:0:0 | & | +| pattern_matching.rs:351:17:351:27 | ref_pattern | &T | file://:0:0:0:0 | & | +| pattern_matching.rs:351:17:351:27 | ref_pattern | &T.&T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:351:31:351:31 | x | | file://:0:0:0:0 | & | +| pattern_matching.rs:351:31:351:31 | x | &T | file://:0:0:0:0 | & | +| pattern_matching.rs:351:31:351:31 | x | &T.&T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:352:22:352:44 | "Reference pattern: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:352:22:352:44 | "Reference pattern: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:352:22:352:57 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:352:22:352:57 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:352:47:352:57 | ref_pattern | | file://:0:0:0:0 | & | +| pattern_matching.rs:352:47:352:57 | ref_pattern | &T | file://:0:0:0:0 | & | +| pattern_matching.rs:352:47:352:57 | ref_pattern | &T.&T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:358:9:358:13 | point | | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:358:17:358:38 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:358:28:358:29 | 10 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:358:35:358:36 | 20 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:361:11:361:15 | point | | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:362:9:362:28 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:362:20:362:20 | 0 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:362:26:362:26 | 0 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:363:17:363:22 | origin | | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:363:26:363:30 | point | | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:364:22:364:41 | "Origin point: {:?}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:364:22:364:41 | "Origin point: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:364:22:364:49 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:364:22:364:49 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:364:44:364:49 | origin | | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:366:9:366:25 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:366:17:366:17 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:366:23:366:23 | 0 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:367:17:367:24 | x_axis_x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:367:28:367:28 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:368:17:368:28 | x_axis_point | | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:368:32:368:36 | point | | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:369:22:369:56 | "Point on x-axis: x={}, point=... | | file://:0:0:0:0 | & | +| pattern_matching.rs:369:22:369:56 | "Point on x-axis: x={}, point=... | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:369:22:369:80 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:369:22:369:80 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:369:59:369:66 | x_axis_x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:369:69:369:80 | x_axis_point | | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:371:9:371:27 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:371:20:371:21 | 10 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:372:17:372:27 | ten_x_point | | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:372:31:372:35 | point | | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:373:22:373:44 | "Point with x=10: {:?}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:373:22:373:44 | "Point with x=10: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:373:22:373:57 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:373:22:373:57 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:373:47:373:57 | ten_x_point | | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:375:9:375:22 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:375:17:375:17 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:375:20:375:20 | y | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:376:17:376:25 | general_x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:376:29:376:29 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:377:17:377:25 | general_y | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:377:29:377:29 | y | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:378:22:378:46 | "General point: ({}, {})\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:378:22:378:46 | "General point: ({}, {})\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:378:22:378:68 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:378:22:378:68 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:378:49:378:57 | general_x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:378:60:378:68 | general_y | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:383:9:383:13 | shape | | pattern_matching.rs:145:1:150:1 | Shape | +| pattern_matching.rs:383:17:386:5 | ...::Rectangle {...} | | pattern_matching.rs:145:1:150:1 | Shape | +| pattern_matching.rs:384:16:384:19 | 10.0 | | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:385:17:385:20 | 20.0 | | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:387:11:387:15 | shape | | pattern_matching.rs:145:1:150:1 | Shape | +| pattern_matching.rs:388:9:391:9 | ...::Rectangle {...} | | pattern_matching.rs:145:1:150:1 | Shape | +| pattern_matching.rs:389:20:389:20 | w | | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:390:21:390:21 | h | | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:392:17:392:26 | rect_width | | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:392:30:392:30 | w | | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:393:17:393:27 | rect_height | | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:393:31:393:31 | h | | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:394:22:394:39 | "Rectangle: {}x{}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:394:22:394:39 | "Rectangle: {}x{}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:394:22:394:64 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:394:22:394:64 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:394:42:394:51 | rect_width | | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:394:54:394:64 | rect_height | | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:396:9:396:9 | _ | | pattern_matching.rs:145:1:150:1 | Shape | +| pattern_matching.rs:401:9:401:13 | color | | pattern_matching.rs:142:1:143:25 | Color | +| pattern_matching.rs:401:17:401:34 | Color(...) | | pattern_matching.rs:142:1:143:25 | Color | +| pattern_matching.rs:401:23:401:25 | 255 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:401:23:401:25 | 255 | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:401:28:401:30 | 128 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:401:28:401:30 | 128 | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:401:33:401:33 | 0 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:401:33:401:33 | 0 | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:404:11:404:15 | color | | pattern_matching.rs:142:1:143:25 | Color | +| pattern_matching.rs:405:9:405:24 | Color(...) | | pattern_matching.rs:142:1:143:25 | Color | +| pattern_matching.rs:405:15:405:17 | 255 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:405:15:405:17 | 255 | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:405:20:405:20 | 0 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:405:20:405:20 | 0 | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:405:23:405:23 | 0 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:405:23:405:23 | 0 | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:406:17:406:25 | red_color | | pattern_matching.rs:142:1:143:25 | Color | +| pattern_matching.rs:406:29:406:33 | color | | pattern_matching.rs:142:1:143:25 | Color | +| pattern_matching.rs:407:22:407:37 | "Pure red: {:?}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:407:22:407:37 | "Pure red: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:407:22:407:48 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:407:22:407:48 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:407:40:407:48 | red_color | | pattern_matching.rs:142:1:143:25 | Color | +| pattern_matching.rs:409:9:409:22 | Color(...) | | pattern_matching.rs:142:1:143:25 | Color | +| pattern_matching.rs:409:15:409:15 | r | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:409:18:409:18 | g | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:409:21:409:21 | b | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:410:17:410:29 | red_component | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:410:33:410:33 | r | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:411:17:411:31 | green_component | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:411:35:411:35 | g | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:412:17:412:30 | blue_component | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:412:34:412:34 | b | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:414:17:414:37 | "Color: ({}, {}, {})\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:414:17:414:37 | "Color: ({}, {}, {})\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:414:17:415:62 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:414:17:415:62 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:415:17:415:29 | red_component | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:415:32:415:46 | green_component | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:415:49:415:62 | blue_component | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:421:11:421:15 | color | | pattern_matching.rs:142:1:143:25 | Color | +| pattern_matching.rs:422:9:422:22 | Color(...) | | pattern_matching.rs:142:1:143:25 | Color | +| pattern_matching.rs:422:15:422:17 | 255 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:422:15:422:17 | 255 | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:422:20:422:21 | .. | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:423:17:423:29 | reddish_color | | pattern_matching.rs:142:1:143:25 | Color | +| pattern_matching.rs:423:33:423:37 | color | | pattern_matching.rs:142:1:143:25 | Color | +| pattern_matching.rs:424:22:424:42 | "Reddish color: {:?}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:424:22:424:42 | "Reddish color: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:424:22:424:57 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:424:22:424:57 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:424:45:424:57 | reddish_color | | pattern_matching.rs:142:1:143:25 | Color | +| pattern_matching.rs:426:9:426:20 | Color(...) | | pattern_matching.rs:142:1:143:25 | Color | +| pattern_matching.rs:426:15:426:15 | r | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:426:18:426:19 | .. | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:427:17:427:23 | any_red | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:427:27:427:27 | r | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:428:22:428:45 | "Any color with red: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:428:22:428:45 | "Any color with red: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:428:22:428:54 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:428:22:428:54 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:428:48:428:54 | any_red | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:434:9:434:15 | wrapper | | pattern_matching.rs:432:5:433:24 | Wrapper | +| pattern_matching.rs:434:19:434:29 | Wrapper(...) | | pattern_matching.rs:432:5:433:24 | Wrapper | +| pattern_matching.rs:434:27:434:28 | 42 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:435:11:435:17 | wrapper | | pattern_matching.rs:432:5:433:24 | Wrapper | +| pattern_matching.rs:436:9:436:18 | Wrapper(...) | | pattern_matching.rs:432:5:433:24 | Wrapper | +| pattern_matching.rs:436:17:436:17 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:437:17:437:29 | wrapped_value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:437:33:437:33 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:438:22:438:34 | "Wrapped: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:438:22:438:34 | "Wrapped: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:438:22:438:49 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:438:22:438:49 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:438:37:438:49 | wrapped_value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:444:18:444:21 | 1i32 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:444:24:444:27 | 2i64 | | {EXTERNAL LOCATION} | i64 | +| pattern_matching.rs:444:30:444:35 | 3.0f32 | | {EXTERNAL LOCATION} | f32 | +| pattern_matching.rs:448:10:448:10 | 1 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:448:13:448:13 | 2 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:448:16:448:18 | 3.0 | | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:450:22:450:40 | "Exact tuple: {:?}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:450:22:450:40 | "Exact tuple: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:450:22:450:53 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:450:22:450:53 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:456:22:456:42 | "Tuple: ({}, {}, {})\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:456:22:456:42 | "Tuple: ({}, {}, {})\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:456:22:456:79 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:456:22:456:79 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:464:22:464:40 | "First element: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:464:22:464:40 | "First element: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:464:22:464:53 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:464:22:464:53 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:473:22:473:39 | "Unit value: {:?}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:473:22:473:39 | "Unit value: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:473:22:473:51 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:473:22:473:51 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:478:19:478:23 | 42i32 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:482:22:482:47 | "Single element tuple: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:482:22:482:47 | "Single element tuple: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:482:22:482:60 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:482:22:482:60 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:488:9:488:13 | value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:488:17:488:21 | 42i32 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:491:11:491:15 | value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:492:9:492:11 | (...) | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:492:10:492:10 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:493:17:493:27 | paren_bound | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:493:31:493:31 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:494:22:494:48 | "Parenthesized pattern: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:494:22:494:48 | "Parenthesized pattern: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:494:22:494:61 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:494:22:494:61 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:494:51:494:61 | paren_bound | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:499:18:499:21 | 1i32 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:499:24:499:27 | 2i32 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:504:22:504:53 | "Parenthesized in tuple: {}, {... | | file://:0:0:0:0 | & | +| pattern_matching.rs:504:22:504:53 | "Parenthesized in tuple: {}, {... | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:504:22:504:71 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:504:22:504:71 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:510:9:510:13 | slice | | file://:0:0:0:0 | & | +| pattern_matching.rs:510:9:510:13 | slice | &T | file://:0:0:0:0 | [] | +| pattern_matching.rs:510:9:510:13 | slice | &T | file://:0:0:0:0 | [] | +| pattern_matching.rs:510:9:510:13 | slice | &T.[T;...] | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:510:9:510:13 | slice | &T.[T] | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:510:25:510:40 | &... | | file://:0:0:0:0 | & | +| pattern_matching.rs:510:25:510:40 | &... | &T | file://:0:0:0:0 | [] | +| pattern_matching.rs:510:25:510:40 | &... | &T | file://:0:0:0:0 | [] | +| pattern_matching.rs:510:25:510:40 | &... | &T.[T;...] | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:510:25:510:40 | &... | &T.[T] | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:510:26:510:40 | [...] | | file://:0:0:0:0 | [] | +| pattern_matching.rs:510:26:510:40 | [...] | | file://:0:0:0:0 | [] | +| pattern_matching.rs:510:26:510:40 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:510:26:510:40 | [...] | [T] | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:510:27:510:27 | 1 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:510:30:510:30 | 2 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:510:33:510:33 | 3 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:510:36:510:36 | 4 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:510:39:510:39 | 5 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:513:11:513:15 | slice | | file://:0:0:0:0 | & | +| pattern_matching.rs:513:11:513:15 | slice | &T | file://:0:0:0:0 | [] | +| pattern_matching.rs:513:11:513:15 | slice | &T | file://:0:0:0:0 | [] | +| pattern_matching.rs:513:11:513:15 | slice | &T.[T;...] | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:513:11:513:15 | slice | &T.[T] | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:514:9:514:10 | SlicePat | | file://:0:0:0:0 | & | +| pattern_matching.rs:514:9:514:10 | SlicePat | &T | file://:0:0:0:0 | [] | +| pattern_matching.rs:514:9:514:10 | SlicePat | &T | file://:0:0:0:0 | [] | +| pattern_matching.rs:514:9:514:10 | SlicePat | &T.[T;...] | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:514:9:514:10 | SlicePat | &T.[T] | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:515:17:515:27 | empty_slice | | file://:0:0:0:0 | & | +| pattern_matching.rs:515:17:515:27 | empty_slice | &T | file://:0:0:0:0 | [] | +| pattern_matching.rs:515:17:515:27 | empty_slice | &T | file://:0:0:0:0 | [] | +| pattern_matching.rs:515:17:515:27 | empty_slice | &T.[T;...] | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:515:17:515:27 | empty_slice | &T.[T] | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:515:31:515:35 | slice | | file://:0:0:0:0 | & | +| pattern_matching.rs:515:31:515:35 | slice | &T | file://:0:0:0:0 | [] | +| pattern_matching.rs:515:31:515:35 | slice | &T | file://:0:0:0:0 | [] | +| pattern_matching.rs:515:31:515:35 | slice | &T.[T;...] | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:515:31:515:35 | slice | &T.[T] | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:516:22:516:40 | "Empty slice: {:?}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:516:22:516:40 | "Empty slice: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:516:22:516:53 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:516:22:516:53 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:516:43:516:53 | empty_slice | | file://:0:0:0:0 | & | +| pattern_matching.rs:516:43:516:53 | empty_slice | &T | file://:0:0:0:0 | [] | +| pattern_matching.rs:516:43:516:53 | empty_slice | &T | file://:0:0:0:0 | [] | +| pattern_matching.rs:516:43:516:53 | empty_slice | &T.[T;...] | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:516:43:516:53 | empty_slice | &T.[T] | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:518:9:518:11 | SlicePat | | file://:0:0:0:0 | & | +| pattern_matching.rs:518:9:518:11 | SlicePat | &T | file://:0:0:0:0 | [] | +| pattern_matching.rs:518:9:518:11 | SlicePat | &T | file://:0:0:0:0 | [] | +| pattern_matching.rs:518:9:518:11 | SlicePat | &T.[T;...] | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:518:9:518:11 | SlicePat | &T.[T] | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:520:22:520:41 | "Single element: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:520:22:520:41 | "Single element: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:520:22:520:54 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:520:22:520:54 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:522:9:522:23 | SlicePat | | file://:0:0:0:0 | & | +| pattern_matching.rs:522:9:522:23 | SlicePat | &T | file://:0:0:0:0 | [] | +| pattern_matching.rs:522:9:522:23 | SlicePat | &T | file://:0:0:0:0 | [] | +| pattern_matching.rs:522:9:522:23 | SlicePat | &T.[T;...] | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:522:9:522:23 | SlicePat | &T.[T] | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:525:22:525:43 | "Two elements: {}, {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:525:22:525:43 | "Two elements: {}, {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:525:22:525:70 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:525:22:525:70 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:527:9:527:34 | SlicePat | | file://:0:0:0:0 | & | +| pattern_matching.rs:527:9:527:34 | SlicePat | &T | file://:0:0:0:0 | [] | +| pattern_matching.rs:527:9:527:34 | SlicePat | &T | file://:0:0:0:0 | [] | +| pattern_matching.rs:527:9:527:34 | SlicePat | &T.[T;...] | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:527:9:527:34 | SlicePat | &T.[T] | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:532:17:532:53 | "First: {}, last: {}, middle l... | | file://:0:0:0:0 | & | +| pattern_matching.rs:532:17:532:53 | "First: {}, last: {}, middle l... | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:532:17:535:34 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:532:17:535:34 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:541:9:541:13 | array | | file://:0:0:0:0 | [] | +| pattern_matching.rs:541:9:541:13 | array | [T;...] | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:541:17:541:28 | [...] | | file://:0:0:0:0 | [] | +| pattern_matching.rs:541:17:541:28 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:541:18:541:21 | 1i32 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:541:24:541:24 | 2 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:541:27:541:27 | 3 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:542:11:542:15 | array | | file://:0:0:0:0 | [] | +| pattern_matching.rs:542:11:542:15 | array | [T;...] | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:543:9:543:17 | SlicePat | | file://:0:0:0:0 | [] | +| pattern_matching.rs:543:9:543:17 | SlicePat | [T;...] | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:547:22:547:49 | "Array elements: {}, {}, {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:547:22:547:49 | "Array elements: {}, {}, {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:547:22:547:70 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:547:22:547:70 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:554:27:554:28 | 42 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:555:9:555:13 | value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:555:17:555:21 | 42i32 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:557:11:557:15 | value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:558:9:558:16 | CONSTANT | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:559:17:559:27 | const_match | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:559:31:559:35 | value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:560:22:560:43 | "Matches constant: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:560:22:560:43 | "Matches constant: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:560:22:560:56 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:560:22:560:56 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:560:46:560:56 | const_match | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:562:9:562:9 | _ | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:566:9:566:14 | option | | pattern_matching.rs:152:1:156:1 | MyOption | +| pattern_matching.rs:566:9:566:14 | option | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:566:18:566:38 | ...::Some(...) | | pattern_matching.rs:152:1:156:1 | MyOption | +| pattern_matching.rs:566:18:566:38 | ...::Some(...) | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:566:33:566:37 | 10i32 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:567:11:567:16 | option | | pattern_matching.rs:152:1:156:1 | MyOption | +| pattern_matching.rs:567:11:567:16 | option | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:568:9:568:22 | ...::None | | pattern_matching.rs:152:1:156:1 | MyOption | +| pattern_matching.rs:568:9:568:22 | ...::None | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:569:22:569:35 | "None variant\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:569:22:569:35 | "None variant\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:569:22:569:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:569:22:569:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:571:9:571:25 | ...::Some(...) | | pattern_matching.rs:152:1:156:1 | MyOption | +| pattern_matching.rs:571:9:571:25 | ...::Some(...) | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:571:24:571:24 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:572:17:572:26 | some_value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:572:30:572:30 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:573:22:573:37 | "Some value: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:573:22:573:37 | "Some value: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:573:22:573:49 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:573:22:573:49 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:573:40:573:49 | some_value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:578:11:578:51 | ...::Ok::<...>(...) | | {EXTERNAL LOCATION} | Result | +| pattern_matching.rs:578:11:578:51 | ...::Ok::<...>(...) | E | {EXTERNAL LOCATION} | usize | +| pattern_matching.rs:578:11:578:51 | ...::Ok::<...>(...) | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:578:49:578:50 | 42 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:579:9:579:34 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| pattern_matching.rs:579:9:579:34 | ...::Ok(...) | E | {EXTERNAL LOCATION} | usize | +| pattern_matching.rs:579:9:579:34 | ...::Ok(...) | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:579:33:579:33 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:580:17:580:24 | ok_value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:580:28:580:28 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:581:22:581:35 | "Ok value: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:581:22:581:35 | "Ok value: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:581:22:581:45 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:581:22:581:45 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:581:38:581:45 | ok_value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:583:9:583:35 | ...::Err(...) | | {EXTERNAL LOCATION} | Result | +| pattern_matching.rs:583:9:583:35 | ...::Err(...) | E | {EXTERNAL LOCATION} | usize | +| pattern_matching.rs:583:9:583:35 | ...::Err(...) | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:583:34:583:34 | e | | {EXTERNAL LOCATION} | usize | +| pattern_matching.rs:584:17:584:25 | err_value | | {EXTERNAL LOCATION} | usize | +| pattern_matching.rs:584:29:584:29 | e | | {EXTERNAL LOCATION} | usize | +| pattern_matching.rs:585:22:585:32 | "Error: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:585:22:585:32 | "Error: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:585:22:585:43 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:585:22:585:43 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:585:35:585:43 | err_value | | {EXTERNAL LOCATION} | usize | +| pattern_matching.rs:591:9:591:13 | value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:591:17:591:21 | 42i32 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:594:11:594:15 | value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:595:9:595:9 | 1 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:595:9:595:17 | 1 \| 2 \| 3 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:595:13:595:13 | 2 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:595:17:595:17 | 3 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:596:17:596:25 | small_num | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:596:29:596:33 | value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:597:22:597:39 | "Small number: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:597:22:597:39 | "Small number: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:597:22:597:50 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:597:22:597:50 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:597:42:597:50 | small_num | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:599:9:599:10 | 10 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:599:9:599:15 | 10 \| 20 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:599:14:599:15 | 20 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:600:17:600:25 | round_num | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:600:29:600:33 | value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:601:22:601:39 | "Round number: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:601:22:601:39 | "Round number: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:601:22:601:50 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:601:22:601:50 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:601:42:601:50 | round_num | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:603:9:603:9 | _ | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:607:9:607:13 | point | | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:607:17:607:36 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:607:28:607:28 | 0 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:607:34:607:34 | 5 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:608:11:608:15 | point | | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:609:9:609:29 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:609:9:609:53 | ... \| ... | | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:609:20:609:20 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:609:24:609:24 | 0 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:609:27:609:27 | y | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:609:33:609:53 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:609:41:609:41 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:609:47:609:47 | y | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:609:51:609:51 | 0 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:610:17:610:22 | axis_x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:610:26:610:26 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:611:17:611:22 | axis_y | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:611:26:611:26 | y | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:612:22:612:46 | "Point on axis: ({}, {})\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:612:22:612:46 | "Point on axis: ({}, {})\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:612:22:612:62 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:612:22:612:62 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:612:49:612:54 | axis_x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:612:57:612:62 | axis_y | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:614:9:614:9 | _ | | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:618:11:618:15 | value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:619:9:619:9 | 1 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:619:9:619:14 | RangePat | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:619:9:619:25 | ... \| ... | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:619:13:619:14 | 10 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:619:18:619:19 | 90 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:619:18:619:25 | RangePat | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:619:23:619:25 | 100 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:620:17:620:30 | range_or_value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:620:34:620:38 | value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:621:22:621:35 | "In range: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:621:22:621:35 | "In range: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:621:22:621:51 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:621:22:621:51 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:621:38:621:51 | range_or_value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:623:9:623:9 | _ | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:628:18:628:21 | 1i32 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:628:24:628:27 | 2i64 | | {EXTERNAL LOCATION} | i64 | +| pattern_matching.rs:628:30:628:35 | 3.0f32 | | {EXTERNAL LOCATION} | f32 | +| pattern_matching.rs:628:38:628:40 | 4u8 | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:634:22:634:42 | "First with rest: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:634:22:634:42 | "First with rest: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:634:22:634:54 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:634:22:634:54 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:641:22:641:41 | "Last with rest: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:641:22:641:41 | "Last with rest: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:641:22:641:52 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:641:22:641:52 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:649:22:649:45 | "First and last: {}, {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:649:22:649:45 | "First and last: {}, {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:649:22:649:67 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:649:22:649:67 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:654:9:654:13 | point | | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:654:17:654:38 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:654:28:654:29 | 10 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:654:35:654:36 | 20 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:655:11:655:15 | point | | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:656:9:656:23 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:656:17:656:17 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:657:17:657:22 | rest_x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:657:26:657:26 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:658:22:658:39 | "X coordinate: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:658:22:658:39 | "X coordinate: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:658:22:658:47 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:658:22:658:47 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:658:42:658:47 | rest_x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:665:17:665:18 | 42 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:666:17:666:17 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:681:21:681:25 | 42i32 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:681:21:681:25 | 42i32 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:681:28:681:29 | 42 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:682:21:682:25 | 10i32 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:682:21:682:25 | 10i32 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:682:28:682:28 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:687:25:687:44 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:687:36:687:36 | 1 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:687:42:687:42 | 2 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:687:47:687:78 | ...::Some(...) | | pattern_matching.rs:152:1:156:1 | MyOption | +| pattern_matching.rs:687:47:687:78 | ...::Some(...) | T | pattern_matching.rs:142:1:143:25 | Color | +| pattern_matching.rs:687:62:687:77 | Color(...) | | pattern_matching.rs:142:1:143:25 | Color | +| pattern_matching.rs:687:68:687:70 | 255 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:687:68:687:70 | 255 | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:687:73:687:73 | 0 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:687:73:687:73 | 0 | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:687:76:687:76 | 0 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:687:76:687:76 | 0 | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:691:10:691:26 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:691:21:691:21 | 1 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:691:24:691:24 | y | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:691:29:691:60 | ...::Some(...) | | pattern_matching.rs:152:1:156:1 | MyOption | +| pattern_matching.rs:691:29:691:60 | ...::Some(...) | T | pattern_matching.rs:142:1:143:25 | Color | +| pattern_matching.rs:691:44:691:59 | Color(...) | | pattern_matching.rs:142:1:143:25 | Color | +| pattern_matching.rs:691:50:691:52 | 255 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:691:50:691:52 | 255 | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:691:55:691:55 | g | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:691:58:691:58 | b | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:692:17:692:24 | nested_y | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:692:28:692:28 | y | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:693:17:693:24 | nested_g | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:693:28:693:28 | g | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:694:17:694:24 | nested_b | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:694:28:694:28 | b | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:696:17:696:57 | "Complex nested: y={}, green={... | | file://:0:0:0:0 | & | +| pattern_matching.rs:696:17:696:57 | "Complex nested: y={}, green={... | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:696:17:697:44 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:696:17:697:44 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:697:17:697:24 | nested_y | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:697:27:697:34 | nested_g | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:697:37:697:44 | nested_b | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:701:10:701:24 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:701:18:701:18 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:701:46:701:65 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:701:57:701:57 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:701:59:701:59 | 0 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:702:17:702:29 | alt_complex_x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:702:33:702:33 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:703:22:703:50 | "Alternative complex: x={:?}\\n... | | file://:0:0:0:0 | & | +| pattern_matching.rs:703:22:703:50 | "Alternative complex: x={:?}\\n... | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:703:22:703:65 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:703:22:703:65 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:703:53:703:65 | alt_complex_x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:708:22:708:47 | "Other complex data: {:?}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:708:22:708:47 | "Other complex data: {:?}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:708:22:708:62 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:708:22:708:62 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:715:9:715:13 | point | | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:715:17:715:38 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:715:28:715:29 | 10 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:715:35:715:36 | 20 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:716:9:716:22 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:716:17:716:17 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:716:20:716:20 | y | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:716:26:716:30 | point | | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:717:9:717:13 | let_x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:717:17:717:17 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:718:9:718:13 | let_y | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:718:17:718:17 | y | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:720:18:720:21 | 1i32 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:720:24:720:27 | 2i64 | | {EXTERNAL LOCATION} | i64 | +| pattern_matching.rs:720:30:720:35 | 3.0f32 | | {EXTERNAL LOCATION} | f32 | +| pattern_matching.rs:726:9:726:13 | array | | file://:0:0:0:0 | [] | +| pattern_matching.rs:726:9:726:13 | array | [T;...] | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:726:17:726:34 | [...] | | file://:0:0:0:0 | [] | +| pattern_matching.rs:726:17:726:34 | [...] | [T;...] | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:726:18:726:21 | 1i32 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:726:24:726:24 | 2 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:726:27:726:27 | 3 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:726:30:726:30 | 4 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:726:33:726:33 | 5 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:727:9:727:25 | SlicePat | | file://:0:0:0:0 | [] | +| pattern_matching.rs:727:9:727:25 | SlicePat | [T;...] | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:727:29:727:33 | array | | file://:0:0:0:0 | [] | +| pattern_matching.rs:727:29:727:33 | array | [T;...] | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:731:9:731:13 | color | | pattern_matching.rs:142:1:143:25 | Color | +| pattern_matching.rs:731:17:731:34 | Color(...) | | pattern_matching.rs:142:1:143:25 | Color | +| pattern_matching.rs:731:23:731:25 | 255 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:731:23:731:25 | 255 | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:731:28:731:30 | 128 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:731:28:731:30 | 128 | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:731:33:731:33 | 0 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:731:33:731:33 | 0 | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:732:9:732:22 | Color(...) | | pattern_matching.rs:142:1:143:25 | Color | +| pattern_matching.rs:732:15:732:15 | r | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:732:18:732:18 | g | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:732:21:732:21 | b | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:732:26:732:30 | color | | pattern_matching.rs:142:1:143:25 | Color | +| pattern_matching.rs:733:9:733:13 | let_r | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:733:17:733:17 | r | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:734:9:734:13 | let_g | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:734:17:734:17 | g | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:735:9:735:13 | let_b | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:735:17:735:17 | b | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:738:9:738:13 | value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:738:17:738:21 | 42i32 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:739:13:739:19 | ref_val | | file://:0:0:0:0 | & | +| pattern_matching.rs:739:13:739:19 | ref_val | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:739:23:739:27 | value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:740:9:740:15 | let_ref | | file://:0:0:0:0 | & | +| pattern_matching.rs:740:9:740:15 | let_ref | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:740:19:740:25 | ref_val | | file://:0:0:0:0 | & | +| pattern_matching.rs:740:19:740:25 | ref_val | &T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:743:13:743:19 | mut_val | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:743:23:743:27 | 10i32 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:744:9:744:15 | let_mut | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:744:19:744:25 | mut_val | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:750:22:750:35 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:750:30:750:30 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:750:33:750:33 | y | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:751:13:751:19 | param_x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:751:23:751:23 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:752:13:752:19 | param_y | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:752:23:752:23 | y | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:753:10:753:16 | param_x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:753:19:753:25 | param_y | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:756:22:756:35 | Color(...) | | pattern_matching.rs:142:1:143:25 | Color | +| pattern_matching.rs:756:28:756:28 | r | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:756:31:756:31 | _ | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:756:34:756:34 | _ | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:756:51:759:5 | { ... } | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:757:13:757:19 | param_r | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:757:23:757:23 | r | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:758:9:758:15 | param_r | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:768:9:768:13 | point | | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:768:17:768:37 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:768:28:768:28 | 5 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:768:34:768:35 | 10 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:769:35:769:39 | point | | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:771:9:771:13 | color | | pattern_matching.rs:142:1:143:25 | Color | +| pattern_matching.rs:771:17:771:35 | Color(...) | | pattern_matching.rs:142:1:143:25 | Color | +| pattern_matching.rs:771:23:771:25 | 200 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:771:23:771:25 | 200 | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:771:28:771:30 | 100 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:771:28:771:30 | 100 | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:771:33:771:34 | 50 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:771:33:771:34 | 50 | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:772:9:772:11 | red | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:772:15:772:34 | extract_color(...) | | {EXTERNAL LOCATION} | u8 | +| pattern_matching.rs:772:29:772:33 | color | | pattern_matching.rs:142:1:143:25 | Color | +| pattern_matching.rs:774:18:774:22 | 42i32 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:774:25:774:31 | 3.14f64 | | {EXTERNAL LOCATION} | f64 | +| pattern_matching.rs:774:34:774:37 | true | | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:780:23:780:42 | (...) | | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:780:23:780:42 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:780:34:780:34 | 1 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:780:40:780:40 | 2 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:780:45:780:64 | (...) | | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:780:45:780:64 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:780:56:780:56 | 3 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:780:62:780:62 | 4 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:781:9:781:22 | Point {...} | | pattern_matching.rs:135:1:140:1 | Point | +| pattern_matching.rs:781:17:781:17 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:781:20:781:20 | y | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:782:13:782:18 | loop_x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:782:22:782:22 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:783:13:783:18 | loop_y | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:783:22:783:22 | y | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:784:18:784:42 | "Point in loop: ({}, {})\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:784:18:784:42 | "Point in loop: ({}, {})\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:784:18:784:58 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:784:18:784:58 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:784:45:784:50 | loop_x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:784:53:784:58 | loop_y | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:788:9:788:20 | option_value | | pattern_matching.rs:152:1:156:1 | MyOption | +| pattern_matching.rs:788:9:788:20 | option_value | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:788:24:788:44 | ...::Some(...) | | pattern_matching.rs:152:1:156:1 | MyOption | +| pattern_matching.rs:788:24:788:44 | ...::Some(...) | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:788:39:788:43 | 42i32 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:789:12:789:33 | ...::Some(...) | | pattern_matching.rs:152:1:156:1 | MyOption | +| pattern_matching.rs:789:12:789:33 | ...::Some(...) | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:789:27:789:27 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:789:31:789:32 | 42 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:789:37:789:48 | option_value | | pattern_matching.rs:152:1:156:1 | MyOption | +| pattern_matching.rs:789:37:789:48 | option_value | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:790:13:790:20 | if_let_x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:790:24:790:24 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:791:18:791:44 | "If let with @ pattern: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:791:18:791:44 | "If let with @ pattern: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:791:18:791:54 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:791:18:791:54 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:791:47:791:54 | if_let_x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:795:13:795:17 | stack | | {EXTERNAL LOCATION} | Vec | +| pattern_matching.rs:795:13:795:17 | stack | A | {EXTERNAL LOCATION} | Global | +| pattern_matching.rs:795:13:795:17 | stack | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:795:31:795:46 | MacroExpr | | {EXTERNAL LOCATION} | Vec | +| pattern_matching.rs:795:31:795:46 | MacroExpr | A | {EXTERNAL LOCATION} | Global | +| pattern_matching.rs:795:31:795:46 | MacroExpr | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:795:36:795:39 | 1i32 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:795:42:795:42 | 2 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:795:45:795:45 | 3 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:796:15:796:21 | Some(...) | | {EXTERNAL LOCATION} | Option | +| pattern_matching.rs:796:15:796:21 | Some(...) | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:796:20:796:20 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:796:25:796:29 | stack | | {EXTERNAL LOCATION} | Vec | +| pattern_matching.rs:796:25:796:29 | stack | A | {EXTERNAL LOCATION} | Global | +| pattern_matching.rs:796:25:796:29 | stack | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:796:25:796:35 | stack.pop() | | {EXTERNAL LOCATION} | Option | +| pattern_matching.rs:796:25:796:35 | stack.pop() | T | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:797:13:797:23 | while_let_x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:797:27:797:27 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:798:18:798:29 | "Popped: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:798:18:798:29 | "Popped: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:798:18:798:42 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:798:18:798:42 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:798:32:798:42 | while_let_x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:802:9:802:13 | value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:802:17:802:21 | 42i32 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:803:11:803:15 | value | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:804:9:804:9 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:804:14:804:14 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:804:14:804:18 | ... > ... | | {EXTERNAL LOCATION} | bool | +| pattern_matching.rs:804:18:804:18 | 0 | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:805:17:805:23 | guard_x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:805:27:805:27 | x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:806:22:806:35 | "Positive: {}\\n" | | file://:0:0:0:0 | & | +| pattern_matching.rs:806:22:806:35 | "Positive: {}\\n" | &T | {EXTERNAL LOCATION} | str | +| pattern_matching.rs:806:22:806:44 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:806:22:806:44 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| pattern_matching.rs:806:38:806:44 | guard_x | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:808:9:808:9 | _ | | {EXTERNAL LOCATION} | i32 | +| pattern_matching.rs:813:5:813:7 | f(...) | | {EXTERNAL LOCATION} | Option | testFailures From 519905ee9e55ae7a748b04311d8f88d2e6574fed Mon Sep 17 00:00:00 2001 From: Arthur Baars Date: Fri, 11 Jul 2025 15:02:04 +0200 Subject: [PATCH 2/2] Rust: type inference: add test for closure argument --- .../test/library-tests/type-inference/main.rs | 10 ++++++++++ .../type-inference/type-inference.expected | 18 +++++++++++++----- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/rust/ql/test/library-tests/type-inference/main.rs b/rust/ql/test/library-tests/type-inference/main.rs index bdce6f533263..7ab3e0775d74 100644 --- a/rust/ql/test/library-tests/type-inference/main.rs +++ b/rust/ql/test/library-tests/type-inference/main.rs @@ -2378,6 +2378,15 @@ pub mod pattern_matching_experimental { } } +mod closures { + pub fn f() { + Some(1).map(|x| { + let x = x; // $ MISSING: type=x:i32 + println!("{x}"); + }); // $ method=map + } +} + fn main() { field_access::f(); // $ method=f method_impl::f(); // $ method=f @@ -2408,4 +2417,5 @@ fn main() { dereference::test(); // $ method=test pattern_matching::test_all_patterns(); // $ method=test_all_patterns pattern_matching_experimental::box_patterns(); // $ method=box_patterns + closures::f() // $ method=f } diff --git a/rust/ql/test/library-tests/type-inference/type-inference.expected b/rust/ql/test/library-tests/type-inference/type-inference.expected index d6b21fe08b7c..904b4ca24bf5 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -4112,11 +4112,19 @@ inferType | main.rs:2375:26:2375:43 | "Nested boxed: {}\\n" | &T | {EXTERNAL LOCATION} | str | | main.rs:2375:26:2375:59 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:2375:26:2375:59 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | -| main.rs:2383:5:2383:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo | -| main.rs:2384:5:2384:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo | -| main.rs:2384:20:2384:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | -| main.rs:2384:41:2384:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | -| main.rs:2400:5:2400:15 | ...::f(...) | | {EXTERNAL LOCATION} | trait Future | +| main.rs:2383:9:2383:15 | Some(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2383:9:2383:15 | Some(...) | T | {EXTERNAL LOCATION} | i32 | +| main.rs:2383:9:2386:10 | ... .map(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:2383:14:2383:14 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:2385:22:2385:26 | "{x}\\n" | | file://:0:0:0:0 | & | +| main.rs:2385:22:2385:26 | "{x}\\n" | &T | {EXTERNAL LOCATION} | str | +| main.rs:2385:22:2385:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2385:22:2385:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:2392:5:2392:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo | +| main.rs:2393:5:2393:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo | +| main.rs:2393:20:2393:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:2393:41:2393:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:2409:5:2409:15 | ...::f(...) | | {EXTERNAL LOCATION} | trait Future | | pattern_matching.rs:13:26:133:1 | { ... } | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:14:9:14:13 | value | | {EXTERNAL LOCATION} | Option | | pattern_matching.rs:14:9:14:13 | value | T | {EXTERNAL LOCATION} | i32 |