Skip to content

Commit 5c59ee6

Browse files
authored
Update global tests (#5552)
Updates in the vein of #5455. Note this seems a little like it could be merged into `var`, which already has global tests. But the merge felt a little more complex than just doing this update.
1 parent 11e82e9 commit 5c59ee6

File tree

6 files changed

+189
-390
lines changed

6 files changed

+189
-390
lines changed

toolchain/check/testdata/global/class_obj.carbon

Lines changed: 0 additions & 65 deletions
This file was deleted.

toolchain/check/testdata/global/class_with_fun.carbon

Lines changed: 0 additions & 88 deletions
This file was deleted.

toolchain/check/testdata/global/decl.carbon

Lines changed: 0 additions & 48 deletions
This file was deleted.
Lines changed: 189 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,189 @@
1+
// Part of the Carbon Language project, under the Apache License v2.0 with LLVM
2+
// Exceptions. See /LICENSE for license information.
3+
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
4+
//
5+
// AUTOUPDATE
6+
// TIP: To test this file alone, run:
7+
// TIP: bazel test //toolchain/testing:file_test --test_arg=--file_tests=toolchain/check/testdata/global/no_prelude/basics.carbon
8+
// TIP: To dump output, run:
9+
// TIP: bazel run //toolchain/testing:file_test -- --dump_output --file_tests=toolchain/check/testdata/global/no_prelude/basics.carbon
10+
11+
// --- decl.carbon
12+
library "[[@TEST_NAME]]";
13+
14+
//@dump-sem-ir-begin
15+
var a: {};
16+
//@dump-sem-ir-end
17+
18+
// --- simple_init.carbon
19+
library "[[@TEST_NAME]]";
20+
21+
//@dump-sem-ir-begin
22+
var a: {} = {};
23+
//@dump-sem-ir-end
24+
25+
// --- simple_init_with_fn.carbon
26+
library "[[@TEST_NAME]]";
27+
28+
fn Make() -> {};
29+
30+
//@dump-sem-ir-begin
31+
var a: {} = Make();
32+
//@dump-sem-ir-end
33+
34+
// --- class_init.carbon
35+
library "[[@TEST_NAME]]";
36+
37+
class A {}
38+
39+
//@dump-sem-ir-begin
40+
var a: A = {};
41+
//@dump-sem-ir-end
42+
43+
// --- class_init_from_fn.carbon
44+
library "[[@TEST_NAME]]";
45+
46+
class A {}
47+
48+
fn Make() -> A;
49+
50+
//@dump-sem-ir-begin
51+
var a: A = Make();
52+
//@dump-sem-ir-end
53+
54+
// CHECK:STDOUT: --- decl.carbon
55+
// CHECK:STDOUT:
56+
// CHECK:STDOUT: constants {
57+
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
58+
// CHECK:STDOUT: %pattern_type: type = pattern_type %empty_struct_type [concrete]
59+
// CHECK:STDOUT: }
60+
// CHECK:STDOUT:
61+
// CHECK:STDOUT: file {
62+
// CHECK:STDOUT: name_binding_decl {
63+
// CHECK:STDOUT: %a.patt: %pattern_type = binding_pattern a [concrete]
64+
// CHECK:STDOUT: %a.var_patt: %pattern_type = var_pattern %a.patt [concrete]
65+
// CHECK:STDOUT: }
66+
// CHECK:STDOUT: %a.var: ref %empty_struct_type = var %a.var_patt [concrete]
67+
// CHECK:STDOUT: %.loc4_9.1: type = splice_block %.loc4_9.3 [concrete = constants.%empty_struct_type] {
68+
// CHECK:STDOUT: %.loc4_9.2: %empty_struct_type = struct_literal ()
69+
// CHECK:STDOUT: %.loc4_9.3: type = converted %.loc4_9.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type]
70+
// CHECK:STDOUT: }
71+
// CHECK:STDOUT: %a: ref %empty_struct_type = bind_name a, %a.var [concrete = %a.var]
72+
// CHECK:STDOUT: }
73+
// CHECK:STDOUT:
74+
// CHECK:STDOUT: --- simple_init.carbon
75+
// CHECK:STDOUT:
76+
// CHECK:STDOUT: constants {
77+
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
78+
// CHECK:STDOUT: %pattern_type: type = pattern_type %empty_struct_type [concrete]
79+
// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete]
80+
// CHECK:STDOUT: }
81+
// CHECK:STDOUT:
82+
// CHECK:STDOUT: file {
83+
// CHECK:STDOUT: name_binding_decl {
84+
// CHECK:STDOUT: %a.patt: %pattern_type = binding_pattern a [concrete]
85+
// CHECK:STDOUT: %a.var_patt: %pattern_type = var_pattern %a.patt [concrete]
86+
// CHECK:STDOUT: }
87+
// CHECK:STDOUT: %a.var: ref %empty_struct_type = var %a.var_patt [concrete]
88+
// CHECK:STDOUT: %.loc4_9.1: type = splice_block %.loc4_9.3 [concrete = constants.%empty_struct_type] {
89+
// CHECK:STDOUT: %.loc4_9.2: %empty_struct_type = struct_literal ()
90+
// CHECK:STDOUT: %.loc4_9.3: type = converted %.loc4_9.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type]
91+
// CHECK:STDOUT: }
92+
// CHECK:STDOUT: %a: ref %empty_struct_type = bind_name a, %a.var [concrete = %a.var]
93+
// CHECK:STDOUT: }
94+
// CHECK:STDOUT:
95+
// CHECK:STDOUT: fn @__global_init() {
96+
// CHECK:STDOUT: !entry:
97+
// CHECK:STDOUT: %.loc4_14.1: %empty_struct_type = struct_literal ()
98+
// CHECK:STDOUT: %.loc4_14.2: init %empty_struct_type = struct_init () to file.%a.var [concrete = constants.%empty_struct]
99+
// CHECK:STDOUT: %.loc4_1: init %empty_struct_type = converted %.loc4_14.1, %.loc4_14.2 [concrete = constants.%empty_struct]
100+
// CHECK:STDOUT: assign file.%a.var, %.loc4_1
101+
// CHECK:STDOUT: <elided>
102+
// CHECK:STDOUT: }
103+
// CHECK:STDOUT:
104+
// CHECK:STDOUT: --- simple_init_with_fn.carbon
105+
// CHECK:STDOUT:
106+
// CHECK:STDOUT: constants {
107+
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
108+
// CHECK:STDOUT: %pattern_type: type = pattern_type %empty_struct_type [concrete]
109+
// CHECK:STDOUT: %Make.type: type = fn_type @Make [concrete]
110+
// CHECK:STDOUT: %Make: %Make.type = struct_value () [concrete]
111+
// CHECK:STDOUT: }
112+
// CHECK:STDOUT:
113+
// CHECK:STDOUT: file {
114+
// CHECK:STDOUT: name_binding_decl {
115+
// CHECK:STDOUT: %a.patt: %pattern_type = binding_pattern a [concrete]
116+
// CHECK:STDOUT: %a.var_patt: %pattern_type = var_pattern %a.patt [concrete]
117+
// CHECK:STDOUT: }
118+
// CHECK:STDOUT: %a.var: ref %empty_struct_type = var %a.var_patt [concrete]
119+
// CHECK:STDOUT: %.loc6_9.1: type = splice_block %.loc6_9.3 [concrete = constants.%empty_struct_type] {
120+
// CHECK:STDOUT: %.loc6_9.2: %empty_struct_type = struct_literal ()
121+
// CHECK:STDOUT: %.loc6_9.3: type = converted %.loc6_9.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type]
122+
// CHECK:STDOUT: }
123+
// CHECK:STDOUT: %a: ref %empty_struct_type = bind_name a, %a.var [concrete = %a.var]
124+
// CHECK:STDOUT: }
125+
// CHECK:STDOUT:
126+
// CHECK:STDOUT: fn @__global_init() {
127+
// CHECK:STDOUT: !entry:
128+
// CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, file.%Make.decl [concrete = constants.%Make]
129+
// CHECK:STDOUT: %Make.call: init %empty_struct_type = call %Make.ref()
130+
// CHECK:STDOUT: assign file.%a.var, %Make.call
131+
// CHECK:STDOUT: <elided>
132+
// CHECK:STDOUT: }
133+
// CHECK:STDOUT:
134+
// CHECK:STDOUT: --- class_init.carbon
135+
// CHECK:STDOUT:
136+
// CHECK:STDOUT: constants {
137+
// CHECK:STDOUT: %A: type = class_type @A [concrete]
138+
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
139+
// CHECK:STDOUT: %pattern_type: type = pattern_type %A [concrete]
140+
// CHECK:STDOUT: %A.val: %A = struct_value () [concrete]
141+
// CHECK:STDOUT: }
142+
// CHECK:STDOUT:
143+
// CHECK:STDOUT: file {
144+
// CHECK:STDOUT: name_binding_decl {
145+
// CHECK:STDOUT: %a.patt: %pattern_type = binding_pattern a [concrete]
146+
// CHECK:STDOUT: %a.var_patt: %pattern_type = var_pattern %a.patt [concrete]
147+
// CHECK:STDOUT: }
148+
// CHECK:STDOUT: %a.var: ref %A = var %a.var_patt [concrete]
149+
// CHECK:STDOUT: %A.ref: type = name_ref A, %A.decl [concrete = constants.%A]
150+
// CHECK:STDOUT: %a: ref %A = bind_name a, %a.var [concrete = %a.var]
151+
// CHECK:STDOUT: }
152+
// CHECK:STDOUT:
153+
// CHECK:STDOUT: fn @__global_init() {
154+
// CHECK:STDOUT: !entry:
155+
// CHECK:STDOUT: %.loc6_13.1: %empty_struct_type = struct_literal ()
156+
// CHECK:STDOUT: %.loc6_13.2: init %A = class_init (), file.%a.var [concrete = constants.%A.val]
157+
// CHECK:STDOUT: %.loc6_1: init %A = converted %.loc6_13.1, %.loc6_13.2 [concrete = constants.%A.val]
158+
// CHECK:STDOUT: assign file.%a.var, %.loc6_1
159+
// CHECK:STDOUT: <elided>
160+
// CHECK:STDOUT: }
161+
// CHECK:STDOUT:
162+
// CHECK:STDOUT: --- class_init_from_fn.carbon
163+
// CHECK:STDOUT:
164+
// CHECK:STDOUT: constants {
165+
// CHECK:STDOUT: %A: type = class_type @A [concrete]
166+
// CHECK:STDOUT: %pattern_type: type = pattern_type %A [concrete]
167+
// CHECK:STDOUT: %Make.type: type = fn_type @Make [concrete]
168+
// CHECK:STDOUT: %Make: %Make.type = struct_value () [concrete]
169+
// CHECK:STDOUT: }
170+
// CHECK:STDOUT:
171+
// CHECK:STDOUT: file {
172+
// CHECK:STDOUT: name_binding_decl {
173+
// CHECK:STDOUT: %a.patt: %pattern_type = binding_pattern a [concrete]
174+
// CHECK:STDOUT: %a.var_patt: %pattern_type = var_pattern %a.patt [concrete]
175+
// CHECK:STDOUT: }
176+
// CHECK:STDOUT: %a.var: ref %A = var %a.var_patt [concrete]
177+
// CHECK:STDOUT: %A.ref: type = name_ref A, %A.decl [concrete = constants.%A]
178+
// CHECK:STDOUT: %a: ref %A = bind_name a, %a.var [concrete = %a.var]
179+
// CHECK:STDOUT: }
180+
// CHECK:STDOUT:
181+
// CHECK:STDOUT: fn @__global_init() {
182+
// CHECK:STDOUT: !entry:
183+
// CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, file.%Make.decl [concrete = constants.%Make]
184+
// CHECK:STDOUT: %.loc8: ref %A = splice_block file.%a.var [concrete = file.%a.var] {}
185+
// CHECK:STDOUT: %Make.call: init %A = call %Make.ref() to %.loc8
186+
// CHECK:STDOUT: assign file.%a.var, %Make.call
187+
// CHECK:STDOUT: <elided>
188+
// CHECK:STDOUT: }
189+
// CHECK:STDOUT:

0 commit comments

Comments
 (0)