Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
70e5c08e
R
Rust
项目概览
int
/
Rust
大约 1 年 前同步成功
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
Rust
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
70e5c08e
编写于
7月 11, 2013
作者:
M
Michael Woerister
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
debuginfo: Extended test suite with various tests for enums.
上级
a33d1b8f
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
343 addition
and
0 deletion
+343
-0
src/test/debug-info/borrowed-enum.rs
src/test/debug-info/borrowed-enum.rs
+62
-0
src/test/debug-info/evec-in-struct.rs
src/test/debug-info/evec-in-struct.rs
+88
-0
src/test/debug-info/managed-enum.rs
src/test/debug-info/managed-enum.rs
+63
-0
src/test/debug-info/struct-in-enum.rs
src/test/debug-info/struct-in-enum.rs
+67
-0
src/test/debug-info/unique-enum.rs
src/test/debug-info/unique-enum.rs
+63
-0
未找到文件。
src/test/debug-info/borrowed-enum.rs
0 → 100644
浏览文件 @
70e5c08e
// Copyright 2013 The Rust Project Developers. See the COPYRIGHT
// file at the top-level directory of this distribution and at
// http://rust-lang.org/COPYRIGHT.
//
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
// option. This file may not be copied, modified, or distributed
// except according to those terms.
// xfail-win32 Broken because of LLVM bug: http://llvm.org/bugs/show_bug.cgi?id=16249
// compile-flags:-Z extra-debug-info
// debugger:break zzz
// debugger:run
// debugger:finish
// debugger:print *the_a_ref
// check:$1 = {{TheA, x = 0, y = 8970181431921507452}, {TheA, 0, 2088533116, 2088533116}}
// debugger:print *the_b_ref
// check:$2 = {{TheB, x = 0, y = 1229782938247303441}, {TheB, 0, 286331153, 286331153}}
// debugger:print *univariant_ref
// check:$3 = {{4820353753753434}}
// The first element is to ensure proper alignment, irrespective of the machines word size. Since
// the size of the discriminant value is machine dependent, this has be taken into account when
// datatype layout should be predictable as in this case.
enum
ABC
{
TheA
{
x
:
i64
,
y
:
i64
},
TheB
(
i64
,
i32
,
i32
),
}
// This is a special case since it does not have the implicit discriminant field.
enum
Univariant
{
TheOnlyCase
(
i64
)
}
fn
main
()
{
// 0b0111110001111100011111000111110001111100011111000111110001111100 = 8970181431921507452
// 0b01111100011111000111110001111100 = 2088533116
// 0b0111110001111100 = 31868
// 0b01111100 = 124
let
the_a
=
TheA
{
x
:
0
,
y
:
8970181431921507452
};
let
the_a_ref
:
&
ABC
=
&
the_a
;
// 0b0001000100010001000100010001000100010001000100010001000100010001 = 1229782938247303441
// 0b00010001000100010001000100010001 = 286331153
// 0b0001000100010001 = 4369
// 0b00010001 = 17
let
the_b
=
TheB
(
0
,
286331153
,
286331153
);
let
the_b_ref
:
&
ABC
=
&
the_b
;
let
univariant
=
TheOnlyCase
(
4820353753753434
);
let
univariant_ref
:
&
Univariant
=
&
univariant
;
zzz
();
}
fn
zzz
()
{()}
\ No newline at end of file
src/test/debug-info/evec-in-struct.rs
0 → 100644
浏览文件 @
70e5c08e
// Copyright 2013 The Rust Project Developers. See the COPYRIGHT
// file at the top-level directory of this distribution and at
// http://rust-lang.org/COPYRIGHT.
//
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
// option. This file may not be copied, modified, or distributed
// except according to those terms.
// xfail-win32 Broken because of LLVM bug: http://llvm.org/bugs/show_bug.cgi?id=16249
// compile-flags:-Z extra-debug-info
// debugger:set print pretty off
// debugger:break zzz
// debugger:run
// debugger:finish
// debugger:print no_padding1
// check:$1 = {x = {0, 1, 2}, y = -3, z = {4.5, 5.5}}
// debugger:print no_padding2
// check:$2 = {x = {6, 7, 8}, y = {{9, 10}, {11, 12}}}
// debugger:print struct_internal_padding
// check:$3 = {x = {13, 14}, y = {15, 16}}
// debugger:print single_vec
// check:$4 = {x = {17, 18, 19, 20, 21}}
// debugger:print struct_padded_at_end
// check:$5 = {x = {22, 23}, y = {24, 25}}
struct
NoPadding1
{
x
:
[
u32
,
..
3
],
y
:
i32
,
z
:
[
f32
,
..
2
]
}
struct
NoPadding2
{
x
:
[
u32
,
..
3
],
y
:
[[
u32
,
..
2
],
..
2
]
}
struct
StructInternalPadding
{
x
:
[
i16
,
..
2
],
y
:
[
i64
,
..
2
]
}
struct
SingleVec
{
x
:
[
i16
,
..
5
]
}
struct
StructPaddedAtEnd
{
x
:
[
i64
,
..
2
],
y
:
[
i16
,
..
2
]
}
fn
main
()
{
let
no_padding1
=
NoPadding1
{
x
:
[
0
,
1
,
2
],
y
:
-
3
,
z
:
[
4.5
,
5.5
]
};
let
no_padding2
=
NoPadding2
{
x
:
[
6
,
7
,
8
],
y
:
[[
9
,
10
],
[
11
,
12
]]
};
let
struct_internal_padding
=
StructInternalPadding
{
x
:
[
13
,
14
],
y
:
[
15
,
16
]
};
let
single_vec
=
SingleVec
{
x
:
[
17
,
18
,
19
,
20
,
21
]
};
let
struct_padded_at_end
=
StructPaddedAtEnd
{
x
:
[
22
,
23
],
y
:
[
24
,
25
]
};
zzz
();
}
fn
zzz
()
{()}
\ No newline at end of file
src/test/debug-info/managed-enum.rs
0 → 100644
浏览文件 @
70e5c08e
// Copyright 2013 The Rust Project Developers. See the COPYRIGHT
// file at the top-level directory of this distribution and at
// http://rust-lang.org/COPYRIGHT.
//
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
// option. This file may not be copied, modified, or distributed
// except according to those terms.
// xfail-win32 Broken because of LLVM bug: http://llvm.org/bugs/show_bug.cgi?id=16249
// compile-flags:-Z extra-debug-info
// debugger:break zzz
// debugger:run
// debugger:finish
// debugger:print the_a->val
// check:$1 = {{TheA, x = 0, y = 8970181431921507452}, {TheA, 0, 2088533116, 2088533116}}
// debugger:print the_b->val
// check:$2 = {{TheB, x = 0, y = 1229782938247303441}, {TheB, 0, 286331153, 286331153}}
// debugger:print univariant->val
// check:$3 = {{-9747455}}
// The first element is to ensure proper alignment, irrespective of the machines word size. Since
// the size of the discriminant value is machine dependent, this has be taken into account when
// datatype layout should be predictable as in this case.
enum
ABC
{
TheA
{
x
:
i64
,
y
:
i64
},
TheB
(
i64
,
i32
,
i32
),
}
// This is a special case since it does not have the implicit discriminant field.
enum
Univariant
{
TheOnlyCase
(
i64
)
}
fn
main
()
{
// In order to avoid endianess trouble all of the following test values consist of a single
// repeated byte. This way each interpretation of the union should look the same, no matter if
// this is a big or little endian machine.
// 0b0111110001111100011111000111110001111100011111000111110001111100 = 8970181431921507452
// 0b01111100011111000111110001111100 = 2088533116
// 0b0111110001111100 = 31868
// 0b01111100 = 124
let
the_a
=
@
TheA
{
x
:
0
,
y
:
8970181431921507452
};
// 0b0001000100010001000100010001000100010001000100010001000100010001 = 1229782938247303441
// 0b00010001000100010001000100010001 = 286331153
// 0b0001000100010001 = 4369
// 0b00010001 = 17
let
the_b
=
@
TheB
(
0
,
286331153
,
286331153
);
let
univariant
=
@
TheOnlyCase
(
-
9747455
);
zzz
();
}
fn
zzz
()
{()}
\ No newline at end of file
src/test/debug-info/struct-in-enum.rs
0 → 100644
浏览文件 @
70e5c08e
// Copyright 2013 The Rust Project Developers. See the COPYRIGHT
// file at the top-level directory of this distribution and at
// http://rust-lang.org/COPYRIGHT.
//
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
// option. This file may not be copied, modified, or distributed
// except according to those terms.
// compile-flags:-Z extra-debug-info
// debugger:set print union on
// debugger:break zzz
// debugger:run
// debugger:finish
// debugger:print case1
// check:$1 = {{Case1, 0, {x = 2088533116, y = 2088533116, z = 31868}}, {Case1, 0, 8970181431921507452, 31868}}
// debugger:print case2
// check:$2 = {{Case2, 0, {x = 286331153, y = 286331153, z = 4369}}, {Case2, 0, 1229782938247303441, 4369}}
// debugger:print univariant
// check:$3 = {{{x = 123, y = 456, z = 789}}}
struct
Struct
{
x
:
u32
,
y
:
i32
,
z
:
i16
}
// The first element is to ensure proper alignment, irrespective of the machines word size. Since
// the size of the discriminant value is machine dependent, this has be taken into account when
// datatype layout should be predictable as in this case.
enum
Regular
{
Case1
(
u64
,
Struct
),
Case2
(
u64
,
u64
,
i16
)
}
enum
Univariant
{
TheOnlyCase
(
Struct
)
}
fn
main
()
{
// In order to avoid endianess trouble all of the following test values consist of a single
// repeated byte. This way each interpretation of the union should look the same, no matter if
// this is a big or little endian machine.
// 0b0111110001111100011111000111110001111100011111000111110001111100 = 8970181431921507452
// 0b01111100011111000111110001111100 = 2088533116
// 0b0111110001111100 = 31868
// 0b01111100 = 124
let
case1
=
Case1
(
0
,
Struct
{
x
:
2088533116
,
y
:
2088533116
,
z
:
31868
});
// 0b0001000100010001000100010001000100010001000100010001000100010001 = 1229782938247303441
// 0b00010001000100010001000100010001 = 286331153
// 0b0001000100010001 = 4369
// 0b00010001 = 17
let
case2
=
Case2
(
0
,
1229782938247303441
,
4369
);
let
univariant
=
TheOnlyCase
(
Struct
{
x
:
123
,
y
:
456
,
z
:
789
});
zzz
();
}
fn
zzz
()
{()}
src/test/debug-info/unique-enum.rs
0 → 100644
浏览文件 @
70e5c08e
// Copyright 2013 The Rust Project Developers. See the COPYRIGHT
// file at the top-level directory of this distribution and at
// http://rust-lang.org/COPYRIGHT.
//
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
// option. This file may not be copied, modified, or distributed
// except according to those terms.
// xfail-win32 Broken because of LLVM bug: http://llvm.org/bugs/show_bug.cgi?id=16249
// compile-flags:-Z extra-debug-info
// debugger:break zzz
// debugger:run
// debugger:finish
// debugger:print *the_a
// check:$1 = {{TheA, x = 0, y = 8970181431921507452}, {TheA, 0, 2088533116, 2088533116}}
// debugger:print *the_b
// check:$2 = {{TheB, x = 0, y = 1229782938247303441}, {TheB, 0, 286331153, 286331153}}
// debugger:print *univariant
// check:$3 = {{123234}}
// The first element is to ensure proper alignment, irrespective of the machines word size. Since
// the size of the discriminant value is machine dependent, this has be taken into account when
// datatype layout should be predictable as in this case.
enum
ABC
{
TheA
{
x
:
i64
,
y
:
i64
},
TheB
(
i64
,
i32
,
i32
),
}
// This is a special case since it does not have the implicit discriminant field.
enum
Univariant
{
TheOnlyCase
(
i64
)
}
fn
main
()
{
// In order to avoid endianess trouble all of the following test values consist of a single
// repeated byte. This way each interpretation of the union should look the same, no matter if
// this is a big or little endian machine.
// 0b0111110001111100011111000111110001111100011111000111110001111100 = 8970181431921507452
// 0b01111100011111000111110001111100 = 2088533116
// 0b0111110001111100 = 31868
// 0b01111100 = 124
let
the_a
=
~
TheA
{
x
:
0
,
y
:
8970181431921507452
};
// 0b0001000100010001000100010001000100010001000100010001000100010001 = 1229782938247303441
// 0b00010001000100010001000100010001 = 286331153
// 0b0001000100010001 = 4369
// 0b00010001 = 17
let
the_b
=
~
TheB
(
0
,
286331153
,
286331153
);
let
univariant
=
~
TheOnlyCase
(
123234
);
zzz
();
}
fn
zzz
()
{()}
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录