]> git.proxmox.com Git - rustc.git/blame - src/test/debuginfo/vec-slices.rs
New upstream version 1.14.0+dfsg1
[rustc.git] / src / test / debuginfo / vec-slices.rs
CommitLineData
1a4d82fc
JJ
1// Copyright 2013-2014 The Rust Project Developers. See the COPYRIGHT
2// file at the top-level directory of this distribution and at
3// http://rust-lang.org/COPYRIGHT.
4//
5// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8// option. This file may not be copied, modified, or distributed
9// except according to those terms.
10
85aaf69f 11// ignore-windows
1a4d82fc
JJ
12// min-lldb-version: 310
13
14// compile-flags:-g
15
16// === GDB TESTS ===================================================================================
17
18// gdb-command:run
19// gdb-command:print empty.length
20// gdb-check:$1 = 0
21
22// gdb-command:print singleton.length
23// gdb-check:$2 = 1
c30ab7b3
SL
24// gdbg-command:print *((int64_t[1]*)(singleton.data_ptr))
25// gdbr-command:print *(singleton.data_ptr as &[i64; 1])
26// gdbg-check:$3 = {1}
27// gdbr-check:$3 = [1]
1a4d82fc
JJ
28
29// gdb-command:print multiple.length
30// gdb-check:$4 = 4
c30ab7b3
SL
31// gdbg-command:print *((int64_t[4]*)(multiple.data_ptr))
32// gdbr-command:print *(multiple.data_ptr as &[i64; 4])
33// gdbg-check:$5 = {2, 3, 4, 5}
34// gdbr-check:$5 = [2, 3, 4, 5]
1a4d82fc
JJ
35
36// gdb-command:print slice_of_slice.length
37// gdb-check:$6 = 2
c30ab7b3
SL
38// gdbg-command:print *((int64_t[2]*)(slice_of_slice.data_ptr))
39// gdbr-command:print *(slice_of_slice.data_ptr as &[i64; 2])
40// gdbg-check:$7 = {3, 4}
41// gdbr-check:$7 = [3, 4]
1a4d82fc
JJ
42
43// gdb-command:print padded_tuple.length
44// gdb-check:$8 = 2
45// gdb-command:print padded_tuple.data_ptr[0]
c30ab7b3
SL
46// gdbg-check:$9 = {__0 = 6, __1 = 7}
47// gdbr-check:$9 = (6, 7)
1a4d82fc 48// gdb-command:print padded_tuple.data_ptr[1]
c30ab7b3
SL
49// gdbg-check:$10 = {__0 = 8, __1 = 9}
50// gdbr-check:$10 = (8, 9)
1a4d82fc
JJ
51
52// gdb-command:print padded_struct.length
53// gdb-check:$11 = 2
54// gdb-command:print padded_struct.data_ptr[0]
c30ab7b3
SL
55// gdbg-check:$12 = {x = 10, y = 11, z = 12}
56// gdbr-check:$12 = vec_slices::AStruct {x: 10, y: 11, z: 12}
1a4d82fc 57// gdb-command:print padded_struct.data_ptr[1]
c30ab7b3
SL
58// gdbg-check:$13 = {x = 13, y = 14, z = 15}
59// gdbr-check:$13 = vec_slices::AStruct {x: 13, y: 14, z: 15}
1a4d82fc 60
c30ab7b3
SL
61// gdbg-command:print 'vec_slices::MUT_VECT_SLICE'.length
62// gdbr-command:print MUT_VECT_SLICE.length
1a4d82fc 63// gdb-check:$14 = 2
c30ab7b3
SL
64// gdbg-command:print *((int64_t[2]*)('vec_slices::MUT_VECT_SLICE'.data_ptr))
65// gdbr-command:print *(MUT_VECT_SLICE.data_ptr as &[i64; 2])
66// gdbg-check:$15 = {64, 65}
67// gdbr-check:$15 = [64, 65]
1a4d82fc 68
3157f602
XL
69//gdb-command:print mut_slice.length
70//gdb-check:$16 = 5
c30ab7b3
SL
71//gdbg-command:print *((int64_t[5]*)(mut_slice.data_ptr))
72//gdbr-command:print *(mut_slice.data_ptr as &[i64; 5])
73//gdbg-check:$17 = {1, 2, 3, 4, 5}
74//gdbr-check:$17 = [1, 2, 3, 4, 5]
3157f602 75
1a4d82fc
JJ
76
77// === LLDB TESTS ==================================================================================
78
79// lldb-command:run
80
81// lldb-command:print empty
82// lldb-check:[...]$0 = &[]
83
84// lldb-command:print singleton
85// lldb-check:[...]$1 = &[1]
86
87// lldb-command:print multiple
88// lldb-check:[...]$2 = &[2, 3, 4, 5]
89
90// lldb-command:print slice_of_slice
91// lldb-check:[...]$3 = &[3, 4]
92
93// lldb-command:print padded_tuple
94// lldb-check:[...]$4 = &[(6, 7), (8, 9)]
95
96// lldb-command:print padded_struct
97// lldb-check:[...]$5 = &[AStruct { x: 10, y: 11, z: 12 }, AStruct { x: 13, y: 14, z: 15 }]
98
d9579d0f 99#![allow(dead_code, unused_variables)]
b039eaaf 100#![feature(omit_gdb_pretty_printer_section)]
1a4d82fc
JJ
101#![omit_gdb_pretty_printer_section]
102
103struct AStruct {
104 x: i16,
105 y: i32,
106 z: i16
107}
108
109static VECT_SLICE: &'static [i64] = &[64, 65];
110static mut MUT_VECT_SLICE: &'static [i64] = &[32];
111
112fn main() {
113 let empty: &[i64] = &[];
114 let singleton: &[i64] = &[1];
115 let multiple: &[i64] = &[2, 3, 4, 5];
116 let slice_of_slice = &multiple[1..3];
117
118 let padded_tuple: &[(i32, i16)] = &[(6, 7), (8, 9)];
119
120 let padded_struct: &[AStruct] = &[
121 AStruct { x: 10, y: 11, z: 12 },
122 AStruct { x: 13, y: 14, z: 15 }
123 ];
124
125 unsafe {
126 MUT_VECT_SLICE = VECT_SLICE;
127 }
128
3157f602
XL
129 let mut_slice: &mut [i64] = &mut [1, 2, 3, 4, 5];
130
1a4d82fc
JJ
131 zzz(); // #break
132}
133
134fn zzz() {()}