]> git.lizzy.rs Git - rust.git/blob - tests/debuginfo/constant-in-match-pattern.rs
Merge commit '7d53619064ab7045c383644cb445052d2a3d46db' into sync_cg_clif-2023-02-09
[rust.git] / tests / debuginfo / constant-in-match-pattern.rs
1 // min-lldb-version: 310
2
3 // compile-flags:-g
4
5 #![allow(dead_code, unused_variables)]
6 #![feature(omit_gdb_pretty_printer_section)]
7 #![omit_gdb_pretty_printer_section]
8
9 // This test makes sure that the compiler doesn't crash when trying to assign
10 // debug locations to 'constant' patterns in match expressions.
11
12 const CONSTANT: u64 = 3;
13
14 #[derive(PartialEq, Eq)]
15 struct Struct {
16     a: isize,
17     b: usize,
18 }
19 const STRUCT: Struct = Struct { a: 1, b: 2 };
20
21 #[derive(PartialEq, Eq)]
22 struct TupleStruct(u32);
23 const TUPLE_STRUCT: TupleStruct = TupleStruct(4);
24
25 #[derive(PartialEq, Eq)]
26 enum Enum {
27     Variant1(char),
28     Variant2 { a: u8 },
29     Variant3
30 }
31 const VARIANT1: Enum = Enum::Variant1('v');
32 const VARIANT2: Enum = Enum::Variant2 { a: 2 };
33 const VARIANT3: Enum = Enum::Variant3;
34
35 const STRING: &'static str = "String";
36
37 fn main() {
38
39     match 1 {
40         CONSTANT => {}
41         _ => {}
42     };
43
44     // if let 3 = CONSTANT {}
45
46     match (Struct { a: 2, b: 2 }) {
47         STRUCT => {}
48         _ => {}
49     };
50
51     // if let STRUCT = STRUCT {}
52
53     match TupleStruct(3) {
54         TUPLE_STRUCT => {}
55         _ => {}
56     };
57
58     // if let TupleStruct(4) = TUPLE_STRUCT {}
59
60     match VARIANT3 {
61         VARIANT1 => {},
62         VARIANT2 => {},
63         VARIANT3 => {},
64         _ => {}
65     };
66
67     match (VARIANT3, VARIANT2) {
68         (VARIANT1, VARIANT3) => {},
69         (VARIANT2, VARIANT2) => {},
70         (VARIANT3, VARIANT1) => {},
71         _ => {}
72     };
73
74     // if let VARIANT1 = Enum::Variant3 {}
75     // if let VARIANT2 = Enum::Variant3 {}
76     // if let VARIANT3 = Enum::Variant3 {}
77
78     match "abc" {
79         STRING => {},
80         _ => {}
81     }
82
83     if let STRING = "def" {}
84 }