1RUN: llvm-cxxfilt -n  < %s | FileCheck --match-full-lines %s
2
3CHECK: a::main
4       _RNvC1a4main
5
6CHECK: hello::rust
7       _RNvCshGpAVYOtgW1_5hello4rust
8
9CHECK: a::b::c
10       _RNvNvC1a1b1c
11
12; Closure namespace
13
14CHECK: crate::{closure#0}
15       _RNCC5crate0
16
17CHECK: crate::{closure#1}
18       _RNCC5crates_0
19
20CHECK: crate::{closure:foo#0}
21       _RNCC5crate3foo
22
23CHECK: crate::{closure:foo#1}
24       _RNCC5crates_3foo
25
26; Shim namespace
27
28CHECK: crate::{shim:reify#0}
29       _RNSC5crate5reify
30
31; Unrecognized special namespace
32
33CHECK: crate::{Z:ident#10}
34       _RNZC5crates8_5ident
35
36; Generic type arguments
37
38CHECK: generic::<_>
39       _RIC7genericpE
40
41CHECK: generic::<_, _>
42       _RIC7genericppE
43
44CHECK: generic::<_, _, _>
45       _RIC7genericpppE
46
47; Basic types
48
49CHECK: basic::<i8>
50       _RIC5basicaE
51
52CHECK: basic::<bool>
53       _RIC5basicbE
54
55CHECK: basic::<char>
56       _RIC5basiccE
57
58CHECK: basic::<f64>
59       _RIC5basicdE
60
61CHECK: basic::<str>
62       _RIC5basiceE
63
64CHECK: basic::<f32>
65       _RIC5basicfE
66
67CHECK: basic::<u8>
68       _RIC5basichE
69
70CHECK: basic::<isize>
71       _RIC5basiciE
72
73CHECK: basic::<usize>
74       _RIC5basicjE
75
76CHECK: basic::<i32>
77       _RIC5basiclE
78
79CHECK: basic::<u32>
80       _RIC5basicmE
81
82CHECK: basic::<i128>
83       _RIC5basicnE
84
85CHECK: basic::<u128>
86       _RIC5basicoE
87
88CHECK: basic::<_>
89       _RIC5basicpE
90
91CHECK: basic::<i16>
92       _RIC5basicsE
93
94CHECK: basic::<u16>
95       _RIC5basictE
96
97CHECK: basic::<()>
98       _RIC5basicuE
99
100CHECK: basic::<...>
101       _RIC5basicvE
102
103CHECK: basic::<i64>
104       _RIC5basicxE
105
106CHECK: basic::<u64>
107       _RIC5basicyE
108
109CHECK: basic::<!>
110       _RIC5basiczE
111
112; Invalid mangled characters
113
114CHECK: _RNvC2a.1c
115       _RNvC2a.1c
116
117CHECK: _RNvC2a$1c
118       _RNvC2a$1c
119
120; Invalid namespace (not in [a-zA-Z]).
121
122CHECK: _RN_C5crate4main
123       _RN_C5crate4main
124
125; Invalid identifier length (UINT64_MAX + 3, which happens to be ok after a wraparound).
126
127CHECK: _RNvC2ab18446744073709551618xy
128       _RNvC2ab18446744073709551618xy
129
130; Mangling scheme includes an optional encoding version. When present it would
131; indicate an encoding we don't support yet. Check that it is rejected:
132
133CHECK: _R0NvC1a4main
134       _R0NvC1a4main
135
136; Early EOF
137
138CHECK: _RNv
139       _RNv
140
141CHECK: _RNvC
142       _RNvC
143
144CHECK: _RNvC1a5main
145       _RNvC1a5main
146
147CHECK: _RNvC1a20abc
148       _RNvC1a20abc
149