Start including the prelude for testing. (#3861)

- Adds an empty prelude.carbon file
- Imports that file in any non-Core package file
  - Adds --disable-prelude-import to avoid that
- Adds --exclude-dump-file-prefix to be able to hide files from dumping
- Used to hide core files (we can't do this by package name due to lex
dumps, for example)
- Restructures some tests to not rely on `i32`, particularly `alias`
tests (which rely on a name ref) and tests with no prelude.

I'm adding the framework for switching i32 to calling Int32 in the
prelude, but I'm running into a separate error actually switching over.
So that *mostly* works, but isn't quite ready for prime time. However,
maybe the current state of this PR is still useful to review since it
does a lot of the infrastructure work and adds the %Core everywhere?
This commit is contained in:
Jon Ross-Perkins
2024-04-07 17:11:42 +00:00
committed by GitHub
parent f1dc7d0093
commit 895e90e791
497 changed files with 2902 additions and 1210 deletions
@@ -56,8 +56,10 @@ class C {
// CHECK:STDOUT:
// CHECK:STDOUT: file {
// CHECK:STDOUT: package: <namespace> = namespace [template] {
// CHECK:STDOUT: .Core = %Core
// CHECK:STDOUT: .F = %F
// CHECK:STDOUT: }
// CHECK:STDOUT: %Core: <namespace> = namespace [template] {}
// CHECK:STDOUT: %F: <function> = fn_decl @F [template] {}
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -67,8 +69,10 @@ class C {
// CHECK:STDOUT:
// CHECK:STDOUT: file {
// CHECK:STDOUT: package: <namespace> = namespace [template] {
// CHECK:STDOUT: .Core = %Core
// CHECK:STDOUT: .F = %F.loc4
// CHECK:STDOUT: }
// CHECK:STDOUT: %Core: <namespace> = namespace [template] {}
// CHECK:STDOUT: %F.loc4: <function> = fn_decl @F [template] {}
// CHECK:STDOUT: %F.loc12: <function> = fn_decl @F [template] {}
// CHECK:STDOUT: }
@@ -79,8 +83,10 @@ class C {
// CHECK:STDOUT:
// CHECK:STDOUT: file {
// CHECK:STDOUT: package: <namespace> = namespace [template] {
// CHECK:STDOUT: .Core = %Core
// CHECK:STDOUT: .F = %F.loc12
// CHECK:STDOUT: }
// CHECK:STDOUT: %Core: <namespace> = namespace [template] {}
// CHECK:STDOUT: %F.loc4: <function> = fn_decl @F [template] {}
// CHECK:STDOUT: %F.loc12: <function> = fn_decl @F [template] {}
// CHECK:STDOUT: }
@@ -96,8 +102,10 @@ class C {
// CHECK:STDOUT:
// CHECK:STDOUT: file {
// CHECK:STDOUT: package: <namespace> = namespace [template] {
// CHECK:STDOUT: .Core = %Core
// CHECK:STDOUT: .C = %C.decl
// CHECK:STDOUT: }
// CHECK:STDOUT: %Core: <namespace> = namespace [template] {}
// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {}
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -98,6 +98,7 @@ extern private fn ExternOrderAndConflict() {}
// CHECK:STDOUT:
// CHECK:STDOUT: file {
// CHECK:STDOUT: package: <namespace> = namespace [template] {
// CHECK:STDOUT: .Core = %Core
// CHECK:STDOUT: .WrongOrder = %WrongOrder
// CHECK:STDOUT: .DuplicateVirtual = %DuplicateVirtual
// CHECK:STDOUT: .TwoAccess = %TwoAccess
@@ -106,6 +107,7 @@ extern private fn ExternOrderAndConflict() {}
// CHECK:STDOUT: .ModifiersConflict2 = %ModifiersConflict2
// CHECK:STDOUT: .ExternOrderAndConflict = %ExternOrderAndConflict
// CHECK:STDOUT: }
// CHECK:STDOUT: %Core: <namespace> = namespace [template] {}
// CHECK:STDOUT: %WrongOrder: <function> = fn_decl @WrongOrder [template] {}
// CHECK:STDOUT: %DuplicateVirtual: <function> = fn_decl @DuplicateVirtual [template] {}
// CHECK:STDOUT: %TwoAccess: <function> = fn_decl @TwoAccess [template] {}
@@ -13,8 +13,10 @@ fn F(n: i32, a: [i32; n]*);
// CHECK:STDOUT:
// CHECK:STDOUT: file {
// CHECK:STDOUT: package: <namespace> = namespace [template] {
// CHECK:STDOUT: .Core = %Core
// CHECK:STDOUT: .F = %F
// CHECK:STDOUT: }
// CHECK:STDOUT: %Core: <namespace> = namespace [template] {}
// CHECK:STDOUT: %F: <function> = fn_decl @F [template] {
// CHECK:STDOUT: %n.loc10_6.1: i32 = param n
// CHECK:STDOUT: @F.%n: i32 = bind_name n, %n.loc10_6.1
@@ -16,8 +16,10 @@ fn F(n: i32, n: i32);
// CHECK:STDOUT:
// CHECK:STDOUT: file {
// CHECK:STDOUT: package: <namespace> = namespace [template] {
// CHECK:STDOUT: .Core = %Core
// CHECK:STDOUT: .F = %F
// CHECK:STDOUT: }
// CHECK:STDOUT: %Core: <namespace> = namespace [template] {}
// CHECK:STDOUT: %F: <function> = fn_decl @F [template] {
// CHECK:STDOUT: %n.loc13_6.1: i32 = param n
// CHECK:STDOUT: @F.%n.loc13_6: i32 = bind_name n, %n.loc13_6.1
@@ -57,12 +57,14 @@ fn E() {}
// CHECK:STDOUT:
// CHECK:STDOUT: file {
// CHECK:STDOUT: package: <namespace> = namespace [template] {
// CHECK:STDOUT: .Core = %Core
// CHECK:STDOUT: .A = %A.loc7
// CHECK:STDOUT: .B = %B.loc17
// CHECK:STDOUT: .C = %C
// CHECK:STDOUT: .D = %D.loc37
// CHECK:STDOUT: .E = %E.loc47
// CHECK:STDOUT: }
// CHECK:STDOUT: %Core: <namespace> = namespace [template] {}
// CHECK:STDOUT: %A.loc7: <function> = fn_decl @A [template] {}
// CHECK:STDOUT: %A.loc15: <function> = fn_decl @A [template] {}
// CHECK:STDOUT: %B.loc17: <function> = fn_decl @B [template] {
@@ -13,8 +13,10 @@ private fn F();
// CHECK:STDOUT:
// CHECK:STDOUT: file {
// CHECK:STDOUT: package: <namespace> = namespace [template] {
// CHECK:STDOUT: .Core = %Core
// CHECK:STDOUT: .F = %F
// CHECK:STDOUT: }
// CHECK:STDOUT: %Core: <namespace> = namespace [template] {}
// CHECK:STDOUT: %F: <function> = fn_decl @F [template] {}
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -63,8 +63,10 @@ extern fn A();
// CHECK:STDOUT:
// CHECK:STDOUT: file {
// CHECK:STDOUT: package: <namespace> = namespace [template] {
// CHECK:STDOUT: .Core = %Core
// CHECK:STDOUT: .A = %A
// CHECK:STDOUT: }
// CHECK:STDOUT: %Core: <namespace> = namespace [template] {}
// CHECK:STDOUT: %A: <function> = fn_decl @A [template] {}
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -74,9 +76,11 @@ extern fn A();
// CHECK:STDOUT:
// CHECK:STDOUT: file {
// CHECK:STDOUT: package: <namespace> = namespace [template] {
// CHECK:STDOUT: .Core = %Core
// CHECK:STDOUT: .A = %A
// CHECK:STDOUT: }
// CHECK:STDOUT: %import_ref: <function> = import_ref ir1, inst+1, loaded [template = imports.%A]
// CHECK:STDOUT: %import_ref: <function> = import_ref ir1, inst+2, loaded [template = imports.%A]
// CHECK:STDOUT: %Core: <namespace> = namespace [template] {}
// CHECK:STDOUT: %A: <function> = fn_decl @A [template] {}
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -86,8 +90,10 @@ extern fn A();
// CHECK:STDOUT:
// CHECK:STDOUT: file {
// CHECK:STDOUT: package: <namespace> = namespace [template] {
// CHECK:STDOUT: .Core = %Core
// CHECK:STDOUT: .A = %A
// CHECK:STDOUT: }
// CHECK:STDOUT: %Core: <namespace> = namespace [template] {}
// CHECK:STDOUT: %A: <function> = fn_decl @A [template] {}
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -97,9 +103,11 @@ extern fn A();
// CHECK:STDOUT:
// CHECK:STDOUT: file {
// CHECK:STDOUT: package: <namespace> = namespace [template] {
// CHECK:STDOUT: .Core = %Core
// CHECK:STDOUT: .A = %A
// CHECK:STDOUT: }
// CHECK:STDOUT: %import_ref: <function> = import_ref ir1, inst+1, loaded [template = imports.%A]
// CHECK:STDOUT: %import_ref: <function> = import_ref ir1, inst+2, loaded [template = imports.%A]
// CHECK:STDOUT: %Core: <namespace> = namespace [template] {}
// CHECK:STDOUT: %A: <function> = fn_decl @A [template] {}
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -109,8 +117,10 @@ extern fn A();
// CHECK:STDOUT:
// CHECK:STDOUT: file {
// CHECK:STDOUT: package: <namespace> = namespace [template] {
// CHECK:STDOUT: .Core = %Core
// CHECK:STDOUT: .A = %A
// CHECK:STDOUT: }
// CHECK:STDOUT: %Core: <namespace> = namespace [template] {}
// CHECK:STDOUT: %A: <function> = fn_decl @A [template] {}
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -120,9 +130,11 @@ extern fn A();
// CHECK:STDOUT:
// CHECK:STDOUT: file {
// CHECK:STDOUT: package: <namespace> = namespace [template] {
// CHECK:STDOUT: .Core = %Core
// CHECK:STDOUT: .A = %A
// CHECK:STDOUT: }
// CHECK:STDOUT: %import_ref: <function> = import_ref ir1, inst+1, loaded [template = imports.%A]
// CHECK:STDOUT: %import_ref: <function> = import_ref ir1, inst+2, loaded [template = imports.%A]
// CHECK:STDOUT: %Core: <namespace> = namespace [template] {}
// CHECK:STDOUT: %A: <function> = fn_decl @A [template] {}
// CHECK:STDOUT: }
// CHECK:STDOUT:
+107 -81
View File
@@ -199,12 +199,14 @@ import library "extern_api";
// CHECK:STDOUT:
// CHECK:STDOUT: file {
// CHECK:STDOUT: package: <namespace> = namespace [template] {
// CHECK:STDOUT: .Core = %Core
// CHECK:STDOUT: .A = %A
// CHECK:STDOUT: .B = %B
// CHECK:STDOUT: .C = %C
// CHECK:STDOUT: .D = %D
// CHECK:STDOUT: .NS = %NS
// CHECK:STDOUT: }
// CHECK:STDOUT: %Core: <namespace> = namespace [template] {}
// CHECK:STDOUT: %A: <function> = fn_decl @A [template] {}
// CHECK:STDOUT: %B: <function> = fn_decl @B [template] {
// CHECK:STDOUT: %b.loc5_6.1: i32 = param b
@@ -246,12 +248,14 @@ import library "extern_api";
// CHECK:STDOUT:
// CHECK:STDOUT: file {
// CHECK:STDOUT: package: <namespace> = namespace [template] {
// CHECK:STDOUT: .Core = %Core
// CHECK:STDOUT: .A = %A
// CHECK:STDOUT: .B = %B
// CHECK:STDOUT: .C = %C
// CHECK:STDOUT: .D = %D
// CHECK:STDOUT: .NS = %NS
// CHECK:STDOUT: }
// CHECK:STDOUT: %Core: <namespace> = namespace [template] {}
// CHECK:STDOUT: %A: <function> = fn_decl @A [template] {}
// CHECK:STDOUT: %B: <function> = fn_decl @B [template] {
// CHECK:STDOUT: %b.loc5_13.1: i32 = param b
@@ -300,21 +304,23 @@ import library "extern_api";
// CHECK:STDOUT: .C = %import_ref.3
// CHECK:STDOUT: .D = %import_ref.4
// CHECK:STDOUT: .NS = %NS
// CHECK:STDOUT: .Core = %Core
// CHECK:STDOUT: .a = %a
// CHECK:STDOUT: .b = %b
// CHECK:STDOUT: .c = %c
// CHECK:STDOUT: .d = %d
// CHECK:STDOUT: .e = %e
// CHECK:STDOUT: }
// CHECK:STDOUT: %import_ref.1: <function> = import_ref ir2, inst+1, loc_15 [template = imports.%A]
// CHECK:STDOUT: %import_ref.2: <function> = import_ref ir2, inst+5, loc_24 [template = imports.%B]
// CHECK:STDOUT: %import_ref.3: <function> = import_ref ir2, inst+17, loc_39 [template = imports.%C]
// CHECK:STDOUT: %import_ref.4: <function> = import_ref ir2, inst+18, loc_53 [template = imports.%D]
// CHECK:STDOUT: %import_ref.5: <namespace> = import_ref ir2, inst+19, loaded
// CHECK:STDOUT: %import_ref.1: <function> = import_ref ir2, inst+2, loc_15 [template = imports.%A]
// CHECK:STDOUT: %import_ref.2: <function> = import_ref ir2, inst+6, loc_24 [template = imports.%B]
// CHECK:STDOUT: %import_ref.3: <function> = import_ref ir2, inst+18, loc_39 [template = imports.%C]
// CHECK:STDOUT: %import_ref.4: <function> = import_ref ir2, inst+19, loc_53 [template = imports.%D]
// CHECK:STDOUT: %import_ref.5: <namespace> = import_ref ir2, inst+20, loaded
// CHECK:STDOUT: %NS: <namespace> = namespace %import_ref.5, [template] {
// CHECK:STDOUT: .E = %import_ref.6
// CHECK:STDOUT: }
// CHECK:STDOUT: %import_ref.6: <function> = import_ref ir2, inst+20, loc_65 [template = imports.%E]
// CHECK:STDOUT: %import_ref.6: <function> = import_ref ir2, inst+21, loc_65 [template = imports.%E]
// CHECK:STDOUT: %Core: <namespace> = namespace [template] {}
// CHECK:STDOUT: %.loc6_9.1: () = tuple_literal ()
// CHECK:STDOUT: %.loc6_9.2: type = converted %.loc6_9.1, constants.%.1 [template = constants.%.1]
// CHECK:STDOUT: %a.var: ref () = var a
@@ -384,6 +390,7 @@ import library "extern_api";
// CHECK:STDOUT: file {
// CHECK:STDOUT: package: <namespace> = namespace [template] {
// CHECK:STDOUT: .NS = %NS
// CHECK:STDOUT: .Core = %Core
// CHECK:STDOUT: .A = %A
// CHECK:STDOUT: .B = %B
// CHECK:STDOUT: .C = %C
@@ -394,15 +401,16 @@ import library "extern_api";
// CHECK:STDOUT: .d = %d
// CHECK:STDOUT: .e = %e
// CHECK:STDOUT: }
// CHECK:STDOUT: %import_ref.1: <function> = import_ref ir2, inst+1, loaded [template = imports.%A]
// CHECK:STDOUT: %import_ref.2: <function> = import_ref ir2, inst+5, loaded [template = imports.%B]
// CHECK:STDOUT: %import_ref.3: <function> = import_ref ir2, inst+17, loaded [template = imports.%C]
// CHECK:STDOUT: %import_ref.4: <function> = import_ref ir2, inst+18, loaded [template = imports.%D]
// CHECK:STDOUT: %import_ref.5: <namespace> = import_ref ir2, inst+19, loaded
// CHECK:STDOUT: %import_ref.1: <function> = import_ref ir2, inst+2, loaded [template = imports.%A]
// CHECK:STDOUT: %import_ref.2: <function> = import_ref ir2, inst+6, loaded [template = imports.%B]
// CHECK:STDOUT: %import_ref.3: <function> = import_ref ir2, inst+18, loaded [template = imports.%C]
// CHECK:STDOUT: %import_ref.4: <function> = import_ref ir2, inst+19, loaded [template = imports.%D]
// CHECK:STDOUT: %import_ref.5: <namespace> = import_ref ir2, inst+20, loaded
// CHECK:STDOUT: %NS: <namespace> = namespace %import_ref.5, [template] {
// CHECK:STDOUT: .E = %E
// CHECK:STDOUT: }
// CHECK:STDOUT: %import_ref.6: <function> = import_ref ir2, inst+20, loaded [template = imports.%E]
// CHECK:STDOUT: %import_ref.6: <function> = import_ref ir2, inst+21, loaded [template = imports.%E]
// CHECK:STDOUT: %Core: <namespace> = namespace [template] {}
// CHECK:STDOUT: %A: <function> = fn_decl @A [template] {}
// CHECK:STDOUT: %B: <function> = fn_decl @B [template] {
// CHECK:STDOUT: %b.loc7_13.1: i32 = param b
@@ -488,6 +496,7 @@ import library "extern_api";
// CHECK:STDOUT: file {
// CHECK:STDOUT: package: <namespace> = namespace [template] {
// CHECK:STDOUT: .NS = %NS
// CHECK:STDOUT: .Core = %Core
// CHECK:STDOUT: .A = %A
// CHECK:STDOUT: .B = %B
// CHECK:STDOUT: .C = %C
@@ -498,15 +507,16 @@ import library "extern_api";
// CHECK:STDOUT: .d = %d
// CHECK:STDOUT: .e = %e
// CHECK:STDOUT: }
// CHECK:STDOUT: %import_ref.1: <function> = import_ref ir2, inst+1, loaded [template = imports.%A]
// CHECK:STDOUT: %import_ref.2: <function> = import_ref ir2, inst+5, loaded [template = imports.%B]
// CHECK:STDOUT: %import_ref.3: <function> = import_ref ir2, inst+17, loaded [template = imports.%C]
// CHECK:STDOUT: %import_ref.4: <function> = import_ref ir2, inst+18, loaded [template = imports.%D]
// CHECK:STDOUT: %import_ref.5: <namespace> = import_ref ir2, inst+19, loaded
// CHECK:STDOUT: %import_ref.1: <function> = import_ref ir2, inst+2, loaded [template = imports.%A]
// CHECK:STDOUT: %import_ref.2: <function> = import_ref ir2, inst+6, loaded [template = imports.%B]
// CHECK:STDOUT: %import_ref.3: <function> = import_ref ir2, inst+18, loaded [template = imports.%C]
// CHECK:STDOUT: %import_ref.4: <function> = import_ref ir2, inst+19, loaded [template = imports.%D]
// CHECK:STDOUT: %import_ref.5: <namespace> = import_ref ir2, inst+20, loaded
// CHECK:STDOUT: %NS: <namespace> = namespace %import_ref.5, [template] {
// CHECK:STDOUT: .E = %E
// CHECK:STDOUT: }
// CHECK:STDOUT: %import_ref.6: <function> = import_ref ir2, inst+20, loaded [template = imports.%E]
// CHECK:STDOUT: %import_ref.6: <function> = import_ref ir2, inst+21, loaded [template = imports.%E]
// CHECK:STDOUT: %Core: <namespace> = namespace [template] {}
// CHECK:STDOUT: %A: <function> = fn_decl @A [template] {}
// CHECK:STDOUT: %B: <function> = fn_decl @B [template] {
// CHECK:STDOUT: %b.loc7_13.1: i32 = param b
@@ -595,26 +605,28 @@ import library "extern_api";
// CHECK:STDOUT: .C = %import_ref.3
// CHECK:STDOUT: .D = %import_ref.4
// CHECK:STDOUT: .NS = %NS
// CHECK:STDOUT: .Core = %Core
// CHECK:STDOUT: .a = %a
// CHECK:STDOUT: .b = %b
// CHECK:STDOUT: .c = %c
// CHECK:STDOUT: .d = %d
// CHECK:STDOUT: .e = %e
// CHECK:STDOUT: }
// CHECK:STDOUT: %import_ref.1: <function> = import_ref ir2, inst+1, loc_19 [template = imports.%A.1]
// CHECK:STDOUT: %import_ref.2: <function> = import_ref ir2, inst+5, loc_28 [template = imports.%B.1]
// CHECK:STDOUT: %import_ref.3: <function> = import_ref ir2, inst+17, loc_43 [template = imports.%C.1]
// CHECK:STDOUT: %import_ref.4: <function> = import_ref ir2, inst+18, loc_57 [template = imports.%D.1]
// CHECK:STDOUT: %import_ref.5: <namespace> = import_ref ir2, inst+19, loaded
// CHECK:STDOUT: %import_ref.1: <function> = import_ref ir2, inst+2, loc_19 [template = imports.%A.1]
// CHECK:STDOUT: %import_ref.2: <function> = import_ref ir2, inst+6, loc_28 [template = imports.%B.1]
// CHECK:STDOUT: %import_ref.3: <function> = import_ref ir2, inst+18, loc_43 [template = imports.%C.1]
// CHECK:STDOUT: %import_ref.4: <function> = import_ref ir2, inst+19, loc_57 [template = imports.%D.1]
// CHECK:STDOUT: %import_ref.5: <namespace> = import_ref ir2, inst+20, loaded
// CHECK:STDOUT: %NS: <namespace> = namespace %import_ref.5, [template] {
// CHECK:STDOUT: .E = %import_ref.6
// CHECK:STDOUT: }
// CHECK:STDOUT: %import_ref.6: <function> = import_ref ir2, inst+20, loc_69 [template = imports.%E.1]
// CHECK:STDOUT: %import_ref.7: <function> = import_ref ir3, inst+1, loaded [template = imports.%A.2]
// CHECK:STDOUT: %import_ref.8: <function> = import_ref ir3, inst+5, loaded [template = imports.%B.2]
// CHECK:STDOUT: %import_ref.9: <function> = import_ref ir3, inst+17, loaded [template = imports.%C.2]
// CHECK:STDOUT: %import_ref.10: <function> = import_ref ir3, inst+18, loaded [template = imports.%D.2]
// CHECK:STDOUT: %import_ref.11: <function> = import_ref ir3, inst+20, loaded [template = imports.%E.2]
// CHECK:STDOUT: %import_ref.6: <function> = import_ref ir2, inst+21, loc_69 [template = imports.%E.1]
// CHECK:STDOUT: %import_ref.7: <function> = import_ref ir3, inst+2, loaded [template = imports.%A.2]
// CHECK:STDOUT: %import_ref.8: <function> = import_ref ir3, inst+6, loaded [template = imports.%B.2]
// CHECK:STDOUT: %import_ref.9: <function> = import_ref ir3, inst+18, loaded [template = imports.%C.2]
// CHECK:STDOUT: %import_ref.10: <function> = import_ref ir3, inst+19, loaded [template = imports.%D.2]
// CHECK:STDOUT: %import_ref.11: <function> = import_ref ir3, inst+21, loaded [template = imports.%E.2]
// CHECK:STDOUT: %Core: <namespace> = namespace [template] {}
// CHECK:STDOUT: %.loc7_9.1: () = tuple_literal ()
// CHECK:STDOUT: %.loc7_9.2: type = converted %.loc7_9.1, constants.%.3 [template = constants.%.3]
// CHECK:STDOUT: %a.var: ref () = var a
@@ -697,26 +709,28 @@ import library "extern_api";
// CHECK:STDOUT: .A = imports.%A.2
// CHECK:STDOUT: .B = imports.%B.2
// CHECK:STDOUT: .C = imports.%C.2
// CHECK:STDOUT: .Core = %Core
// CHECK:STDOUT: .a = %a
// CHECK:STDOUT: .b = %b
// CHECK:STDOUT: .c = %c
// CHECK:STDOUT: .d = %d
// CHECK:STDOUT: .e = %e
// CHECK:STDOUT: }
// CHECK:STDOUT: %import_ref.1: <function> = import_ref ir2, inst+1, loaded [template = imports.%A.1]
// CHECK:STDOUT: %import_ref.2: <function> = import_ref ir2, inst+5, loaded [template = imports.%B.1]
// CHECK:STDOUT: %import_ref.3: <function> = import_ref ir2, inst+17, loaded [template = imports.%C.1]
// CHECK:STDOUT: %import_ref.4: <function> = import_ref ir2, inst+18, loc_57 [template = imports.%D.1]
// CHECK:STDOUT: %import_ref.5: <namespace> = import_ref ir2, inst+19, loaded
// CHECK:STDOUT: %import_ref.1: <function> = import_ref ir2, inst+2, loaded [template = imports.%A.1]
// CHECK:STDOUT: %import_ref.2: <function> = import_ref ir2, inst+6, loaded [template = imports.%B.1]
// CHECK:STDOUT: %import_ref.3: <function> = import_ref ir2, inst+18, loaded [template = imports.%C.1]
// CHECK:STDOUT: %import_ref.4: <function> = import_ref ir2, inst+19, loc_57 [template = imports.%D.1]
// CHECK:STDOUT: %import_ref.5: <namespace> = import_ref ir2, inst+20, loaded
// CHECK:STDOUT: %NS: <namespace> = namespace %import_ref.5, [template] {
// CHECK:STDOUT: .E = imports.%E.2
// CHECK:STDOUT: }
// CHECK:STDOUT: %import_ref.6: <function> = import_ref ir2, inst+20, loaded [template = imports.%E.1]
// CHECK:STDOUT: %import_ref.7: <function> = import_ref ir3, inst+1, loaded [template = imports.%A.2]
// CHECK:STDOUT: %import_ref.8: <function> = import_ref ir3, inst+5, loaded [template = imports.%B.2]
// CHECK:STDOUT: %import_ref.9: <function> = import_ref ir3, inst+17, loaded [template = imports.%C.2]
// CHECK:STDOUT: %import_ref.10: <function> = import_ref ir3, inst+18, loaded [template = imports.%D.2]
// CHECK:STDOUT: %import_ref.11: <function> = import_ref ir3, inst+20, loaded [template = imports.%E.2]
// CHECK:STDOUT: %import_ref.6: <function> = import_ref ir2, inst+21, loaded [template = imports.%E.1]
// CHECK:STDOUT: %import_ref.7: <function> = import_ref ir3, inst+2, loaded [template = imports.%A.2]
// CHECK:STDOUT: %import_ref.8: <function> = import_ref ir3, inst+6, loaded [template = imports.%B.2]
// CHECK:STDOUT: %import_ref.9: <function> = import_ref ir3, inst+18, loaded [template = imports.%C.2]
// CHECK:STDOUT: %import_ref.10: <function> = import_ref ir3, inst+19, loaded [template = imports.%D.2]
// CHECK:STDOUT: %import_ref.11: <function> = import_ref ir3, inst+21, loaded [template = imports.%E.2]
// CHECK:STDOUT: %Core: <namespace> = namespace [template] {}
// CHECK:STDOUT: %.loc7_9.1: () = tuple_literal ()
// CHECK:STDOUT: %.loc7_9.2: type = converted %.loc7_9.1, constants.%.3 [template = constants.%.3]
// CHECK:STDOUT: %a.var: ref () = var a
@@ -794,18 +808,20 @@ import library "extern_api";
// CHECK:STDOUT: .C = %import_ref.3
// CHECK:STDOUT: .D = %import_ref.4
// CHECK:STDOUT: .NS = %NS
// CHECK:STDOUT: .Core = %Core
// CHECK:STDOUT: .a = %a
// CHECK:STDOUT: .A = %A
// CHECK:STDOUT: }
// CHECK:STDOUT: %import_ref.1: <function> = import_ref ir2, inst+1, loc_15 [template = imports.%A]
// CHECK:STDOUT: %import_ref.2 = import_ref ir2, inst+5, unloaded
// CHECK:STDOUT: %import_ref.3 = import_ref ir2, inst+17, unloaded
// CHECK:STDOUT: %import_ref.4 = import_ref ir2, inst+18, unloaded
// CHECK:STDOUT: %import_ref.5: <namespace> = import_ref ir2, inst+19, loaded
// CHECK:STDOUT: %import_ref.1: <function> = import_ref ir2, inst+2, loc_15 [template = imports.%A]
// CHECK:STDOUT: %import_ref.2 = import_ref ir2, inst+6, unloaded
// CHECK:STDOUT: %import_ref.3 = import_ref ir2, inst+18, unloaded
// CHECK:STDOUT: %import_ref.4 = import_ref ir2, inst+19, unloaded
// CHECK:STDOUT: %import_ref.5: <namespace> = import_ref ir2, inst+20, loaded
// CHECK:STDOUT: %NS: <namespace> = namespace %import_ref.5, [template] {
// CHECK:STDOUT: .E = %import_ref.6
// CHECK:STDOUT: }
// CHECK:STDOUT: %import_ref.6 = import_ref ir2, inst+20, unloaded
// CHECK:STDOUT: %import_ref.6 = import_ref ir2, inst+21, unloaded
// CHECK:STDOUT: %Core: <namespace> = namespace [template] {}
// CHECK:STDOUT: %.loc6_9.1: () = tuple_literal ()
// CHECK:STDOUT: %.loc6_9.2: type = converted %.loc6_9.1, constants.%.1 [template = constants.%.1]
// CHECK:STDOUT: %a.var: ref () = var a
@@ -836,17 +852,19 @@ import library "extern_api";
// CHECK:STDOUT: .C = %import_ref.3
// CHECK:STDOUT: .D = %import_ref.4
// CHECK:STDOUT: .NS = %NS
// CHECK:STDOUT: .Core = %Core
// CHECK:STDOUT: .a = %a
// CHECK:STDOUT: }
// CHECK:STDOUT: %import_ref.1: <function> = import_ref ir2, inst+1, loc_15 [template = imports.%A]
// CHECK:STDOUT: %import_ref.2 = import_ref ir2, inst+5, unloaded
// CHECK:STDOUT: %import_ref.3 = import_ref ir2, inst+17, unloaded
// CHECK:STDOUT: %import_ref.4 = import_ref ir2, inst+18, unloaded
// CHECK:STDOUT: %import_ref.5: <namespace> = import_ref ir2, inst+19, loaded
// CHECK:STDOUT: %import_ref.1: <function> = import_ref ir2, inst+2, loc_15 [template = imports.%A]
// CHECK:STDOUT: %import_ref.2 = import_ref ir2, inst+6, unloaded
// CHECK:STDOUT: %import_ref.3 = import_ref ir2, inst+18, unloaded
// CHECK:STDOUT: %import_ref.4 = import_ref ir2, inst+19, unloaded
// CHECK:STDOUT: %import_ref.5: <namespace> = import_ref ir2, inst+20, loaded
// CHECK:STDOUT: %NS: <namespace> = namespace %import_ref.5, [template] {
// CHECK:STDOUT: .E = %import_ref.6
// CHECK:STDOUT: }
// CHECK:STDOUT: %import_ref.6 = import_ref ir2, inst+20, unloaded
// CHECK:STDOUT: %import_ref.6 = import_ref ir2, inst+21, unloaded
// CHECK:STDOUT: %Core: <namespace> = namespace [template] {}
// CHECK:STDOUT: %.loc6_9.1: () = tuple_literal ()
// CHECK:STDOUT: %.loc6_9.2: type = converted %.loc6_9.1, constants.%.1 [template = constants.%.1]
// CHECK:STDOUT: %a.var: ref () = var a
@@ -880,18 +898,20 @@ import library "extern_api";
// CHECK:STDOUT: .C = %import_ref.3
// CHECK:STDOUT: .D = %import_ref.4
// CHECK:STDOUT: .NS = %NS
// CHECK:STDOUT: .Core = %Core
// CHECK:STDOUT: .a = %a
// CHECK:STDOUT: .A = %A
// CHECK:STDOUT: }
// CHECK:STDOUT: %import_ref.1: <function> = import_ref ir2, inst+1, loc_15 [template = imports.%A]
// CHECK:STDOUT: %import_ref.2 = import_ref ir2, inst+5, unloaded
// CHECK:STDOUT: %import_ref.3 = import_ref ir2, inst+17, unloaded
// CHECK:STDOUT: %import_ref.4 = import_ref ir2, inst+18, unloaded
// CHECK:STDOUT: %import_ref.5: <namespace> = import_ref ir2, inst+19, loaded
// CHECK:STDOUT: %import_ref.1: <function> = import_ref ir2, inst+2, loc_15 [template = imports.%A]
// CHECK:STDOUT: %import_ref.2 = import_ref ir2, inst+6, unloaded
// CHECK:STDOUT: %import_ref.3 = import_ref ir2, inst+18, unloaded
// CHECK:STDOUT: %import_ref.4 = import_ref ir2, inst+19, unloaded
// CHECK:STDOUT: %import_ref.5: <namespace> = import_ref ir2, inst+20, loaded
// CHECK:STDOUT: %NS: <namespace> = namespace %import_ref.5, [template] {
// CHECK:STDOUT: .E = %import_ref.6
// CHECK:STDOUT: }
// CHECK:STDOUT: %import_ref.6 = import_ref ir2, inst+20, unloaded
// CHECK:STDOUT: %import_ref.6 = import_ref ir2, inst+21, unloaded
// CHECK:STDOUT: %Core: <namespace> = namespace [template] {}
// CHECK:STDOUT: %.loc6_9.1: () = tuple_literal ()
// CHECK:STDOUT: %.loc6_9.2: type = converted %.loc6_9.1, constants.%.1 [template = constants.%.1]
// CHECK:STDOUT: %a.var: ref () = var a
@@ -918,16 +938,18 @@ import library "extern_api";
// CHECK:STDOUT: .C = %import_ref.3
// CHECK:STDOUT: .D = %import_ref.4
// CHECK:STDOUT: .NS = %NS
// CHECK:STDOUT: .Core = %Core
// CHECK:STDOUT: }
// CHECK:STDOUT: %import_ref.1 = import_ref ir2, inst+1, unloaded
// CHECK:STDOUT: %import_ref.2 = import_ref ir2, inst+5, unloaded
// CHECK:STDOUT: %import_ref.3 = import_ref ir2, inst+17, unloaded
// CHECK:STDOUT: %import_ref.4 = import_ref ir2, inst+18, unloaded
// CHECK:STDOUT: %import_ref.5: <namespace> = import_ref ir2, inst+19, loaded
// CHECK:STDOUT: %import_ref.1 = import_ref ir2, inst+2, unloaded
// CHECK:STDOUT: %import_ref.2 = import_ref ir2, inst+6, unloaded
// CHECK:STDOUT: %import_ref.3 = import_ref ir2, inst+18, unloaded
// CHECK:STDOUT: %import_ref.4 = import_ref ir2, inst+19, unloaded
// CHECK:STDOUT: %import_ref.5: <namespace> = import_ref ir2, inst+20, loaded
// CHECK:STDOUT: %NS: <namespace> = namespace %import_ref.5, [template] {
// CHECK:STDOUT: .E = %import_ref.6
// CHECK:STDOUT: }
// CHECK:STDOUT: %import_ref.6 = import_ref ir2, inst+20, unloaded
// CHECK:STDOUT: %import_ref.6 = import_ref ir2, inst+21, unloaded
// CHECK:STDOUT: %Core: <namespace> = namespace [template] {}
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: --- unloaded_extern.carbon
@@ -939,16 +961,18 @@ import library "extern_api";
// CHECK:STDOUT: .C = %import_ref.3
// CHECK:STDOUT: .D = %import_ref.4
// CHECK:STDOUT: .NS = %NS
// CHECK:STDOUT: .Core = %Core
// CHECK:STDOUT: }
// CHECK:STDOUT: %import_ref.1 = import_ref ir2, inst+1, unloaded
// CHECK:STDOUT: %import_ref.2 = import_ref ir2, inst+5, unloaded
// CHECK:STDOUT: %import_ref.3 = import_ref ir2, inst+17, unloaded
// CHECK:STDOUT: %import_ref.4 = import_ref ir2, inst+18, unloaded
// CHECK:STDOUT: %import_ref.5: <namespace> = import_ref ir2, inst+19, loaded
// CHECK:STDOUT: %import_ref.1 = import_ref ir2, inst+2, unloaded
// CHECK:STDOUT: %import_ref.2 = import_ref ir2, inst+6, unloaded
// CHECK:STDOUT: %import_ref.3 = import_ref ir2, inst+18, unloaded
// CHECK:STDOUT: %import_ref.4 = import_ref ir2, inst+19, unloaded
// CHECK:STDOUT: %import_ref.5: <namespace> = import_ref ir2, inst+20, loaded
// CHECK:STDOUT: %NS: <namespace> = namespace %import_ref.5, [template] {
// CHECK:STDOUT: .E = %import_ref.6
// CHECK:STDOUT: }
// CHECK:STDOUT: %import_ref.6 = import_ref ir2, inst+20, unloaded
// CHECK:STDOUT: %import_ref.6 = import_ref ir2, inst+21, unloaded
// CHECK:STDOUT: %Core: <namespace> = namespace [template] {}
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: --- loaded_merge.carbon
@@ -965,21 +989,23 @@ import library "extern_api";
// CHECK:STDOUT: .C = %import_ref.3
// CHECK:STDOUT: .D = %import_ref.4
// CHECK:STDOUT: .NS = %NS
// CHECK:STDOUT: .Core = %Core
// CHECK:STDOUT: }
// CHECK:STDOUT: %import_ref.1: <function> = import_ref ir2, inst+1, loaded [template = imports.%A.1]
// CHECK:STDOUT: %import_ref.2: <function> = import_ref ir2, inst+5, loaded [template = imports.%B.1]
// CHECK:STDOUT: %import_ref.3: <function> = import_ref ir2, inst+17, loaded [template = imports.%C.1]
// CHECK:STDOUT: %import_ref.4: <function> = import_ref ir2, inst+18, loaded [template = imports.%D.1]
// CHECK:STDOUT: %import_ref.5: <namespace> = import_ref ir2, inst+19, loaded
// CHECK:STDOUT: %import_ref.1: <function> = import_ref ir2, inst+2, loaded [template = imports.%A.1]
// CHECK:STDOUT: %import_ref.2: <function> = import_ref ir2, inst+6, loaded [template = imports.%B.1]
// CHECK:STDOUT: %import_ref.3: <function> = import_ref ir2, inst+18, loaded [template = imports.%C.1]
// CHECK:STDOUT: %import_ref.4: <function> = import_ref ir2, inst+19, loaded [template = imports.%D.1]
// CHECK:STDOUT: %import_ref.5: <namespace> = import_ref ir2, inst+20, loaded
// CHECK:STDOUT: %NS: <namespace> = namespace %import_ref.5, [template] {
// CHECK:STDOUT: .E = %import_ref.6
// CHECK:STDOUT: }
// CHECK:STDOUT: %import_ref.6: <function> = import_ref ir2, inst+20, loaded [template = imports.%E.1]
// CHECK:STDOUT: %import_ref.7: <function> = import_ref ir3, inst+1, loaded [template = imports.%A.2]
// CHECK:STDOUT: %import_ref.8: <function> = import_ref ir3, inst+5, loaded [template = imports.%B.2]
// CHECK:STDOUT: %import_ref.9: <function> = import_ref ir3, inst+17, loaded [template = imports.%C.2]
// CHECK:STDOUT: %import_ref.10: <function> = import_ref ir3, inst+18, loaded [template = imports.%D.2]
// CHECK:STDOUT: %import_ref.11: <function> = import_ref ir3, inst+20, loaded [template = imports.%E.2]
// CHECK:STDOUT: %import_ref.6: <function> = import_ref ir2, inst+21, loaded [template = imports.%E.1]
// CHECK:STDOUT: %import_ref.7: <function> = import_ref ir3, inst+2, loaded [template = imports.%A.2]
// CHECK:STDOUT: %import_ref.8: <function> = import_ref ir3, inst+6, loaded [template = imports.%B.2]
// CHECK:STDOUT: %import_ref.9: <function> = import_ref ir3, inst+18, loaded [template = imports.%C.2]
// CHECK:STDOUT: %import_ref.10: <function> = import_ref ir3, inst+19, loaded [template = imports.%D.2]
// CHECK:STDOUT: %import_ref.11: <function> = import_ref ir3, inst+21, loaded [template = imports.%E.2]
// CHECK:STDOUT: %Core: <namespace> = namespace [template] {}
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: extern fn @A.1();
@@ -12,9 +12,11 @@ fn G(a: i32);
// CHECK:STDOUT:
// CHECK:STDOUT: file {
// CHECK:STDOUT: package: <namespace> = namespace [template] {
// CHECK:STDOUT: .Core = %Core
// CHECK:STDOUT: .F = %F
// CHECK:STDOUT: .G = %G
// CHECK:STDOUT: }
// CHECK:STDOUT: %Core: <namespace> = namespace [template] {}
// CHECK:STDOUT: %F: <function> = fn_decl @F [template] {
// CHECK:STDOUT: %a.loc7_6.1: i32 = param a
// CHECK:STDOUT: @F.%a: i32 = bind_name a, %a.loc7_6.1
@@ -16,9 +16,11 @@ fn G() { F(); }
// CHECK:STDOUT:
// CHECK:STDOUT: file {
// CHECK:STDOUT: package: <namespace> = namespace [template] {
// CHECK:STDOUT: .Core = %Core
// CHECK:STDOUT: .F = %F
// CHECK:STDOUT: .G = %G
// CHECK:STDOUT: }
// CHECK:STDOUT: %Core: <namespace> = namespace [template] {}
// CHECK:STDOUT: %F: <function> = fn_decl @F [template] {}
// CHECK:STDOUT: %G: <function> = fn_decl @G [template] {}
// CHECK:STDOUT: }