mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-05 22:02:55 +01:00
Make SemIR::TypeType be an empty FacetType instruction (#7813)
The type `type` is now a `FacetType` inst with no constraints. This brings the model implemented in the toolchain into better alignment with the language design. The `SemIR::TypeType` struct remains as a scope for holding the `TypeInstId`, `ConstantId`, and `TypeId` constants, but is not an `InstKind` anymore. The `TypeType` inst looks a lot like singletons, but there are many `FacetType` insts so it doesn't quite fit that model. So we put it alongside singletons with a fixed inst id but refer to it as a more general "builtin" inst that is not a singleton. `Namespace::PackageInstId` is similar, and we group it with `TypeType` conceptually as another builtin instruction with a fixed id. No conversion is needed anymore to use a `type` as a facet, since types also have a `FacetType` type. This simplifies and removes a number of helpers and branches throughout the code. The `TypeType` inst is now part of the constant store, so we end up printing it in the constants block in every test. But it's also named `type` rather than `%type` to preserve the majority of existing formatting behaviour, though this does look different from other constants. Assisted-by: Opus 5 was used to generate a first draft and validate the refactoring. Though nearly everything non-trivial the tool wrote has been modified or rewritten.
This commit is contained in:
@@ -51,6 +51,7 @@ var y: ((), ()) = x;
|
||||
// CHECK:STDOUT: --- empty.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: type: type = facet_type <type> [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %empty_tuple.type [concrete]
|
||||
@@ -99,6 +100,7 @@ var y: ((), ()) = x;
|
||||
// CHECK:STDOUT: --- nested_tuple.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: type: type = facet_type <type> [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.bcd: type = tuple_type (%empty_tuple.type, %empty_tuple.type) [concrete]
|
||||
@@ -166,6 +168,7 @@ var y: ((), ()) = x;
|
||||
// CHECK:STDOUT: --- one_element.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: type: type = facet_type <type> [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete]
|
||||
// CHECK:STDOUT: %tuple.type: type = tuple_type (%empty_tuple.type) [concrete]
|
||||
@@ -230,6 +233,7 @@ var y: ((), ()) = x;
|
||||
// CHECK:STDOUT: --- two_elements.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: type: type = facet_type <type> [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete]
|
||||
// CHECK:STDOUT: %tuple.type: type = tuple_type (%empty_tuple.type, %empty_tuple.type) [concrete]
|
||||
|
||||
@@ -204,6 +204,7 @@ var b: i32 = a.({.index = 2}.index);
|
||||
// CHECK:STDOUT: --- basics.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: type: type = facet_type <type> [concrete]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete]
|
||||
// CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete]
|
||||
@@ -259,6 +260,7 @@ var b: i32 = a.({.index = 2}.index);
|
||||
// CHECK:STDOUT: --- index_not_literal.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: type: type = facet_type <type> [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete]
|
||||
@@ -434,6 +436,7 @@ var b: i32 = a.({.index = 2}.index);
|
||||
// CHECK:STDOUT: --- return_value_access.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: type: type = facet_type <type> [concrete]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete]
|
||||
// CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete]
|
||||
|
||||
+18
-16
@@ -84,14 +84,15 @@ fn F() -> (i32,) {
|
||||
// CHECK:STDOUT: --- implicit.impl.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: type: type = facet_type <type> [concrete]
|
||||
// CHECK:STDOUT: %To: Core.IntLiteral = symbolic_binding To, 0 [symbolic]
|
||||
// CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.e74: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic]
|
||||
// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.845: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.e74 = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.85c: type = tuple_type (type) [concrete]
|
||||
// CHECK:STDOUT: %tuple.19c: %tuple.type.85c = tuple_value (%i32) [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.135: type = tuple_type (type) [concrete]
|
||||
// CHECK:STDOUT: %tuple.e3d: %tuple.type.135 = tuple_value (%i32) [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.a8a: type = tuple_type (%i32) [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.e71: type = pattern_type %tuple.type.a8a [concrete]
|
||||
// CHECK:STDOUT: %a.patt: %pattern_type.e71 = ref_binding_pattern a [concrete]
|
||||
@@ -109,12 +110,12 @@ fn F() -> (i32,) {
|
||||
// CHECK:STDOUT: %Copy.WithSelf.Op.type.381: type = fn_type @Copy.WithSelf.Op, @Copy.WithSelf(%Copy.facet) [concrete]
|
||||
// CHECK:STDOUT: %.737: type = fn_type_with_self_type %Copy.WithSelf.Op.type.381, %Copy.facet [concrete]
|
||||
// CHECK:STDOUT: %Int.as.Copy.impl.Op.specific_fn: <specific function> = specific_function %Int.as.Copy.impl.Op.4f6, @Int.as.Copy.impl.Op(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.8c7: type = tuple_type (%tuple.type.85c, type) [concrete]
|
||||
// CHECK:STDOUT: %tuple.8ca: %tuple.type.8c7 = tuple_value (%tuple.19c, %i32) [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete]
|
||||
// CHECK:STDOUT: %tuple.b59: %tuple.type.24b = tuple_value (%i32, %i32) [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.58c: type = tuple_type (%tuple.type.8c7, %tuple.type.24b) [concrete]
|
||||
// CHECK:STDOUT: %tuple.368: %tuple.type.58c = tuple_value (%tuple.8ca, %tuple.b59) [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.bbc: type = tuple_type (%tuple.type.135, type) [concrete]
|
||||
// CHECK:STDOUT: %tuple.450: %tuple.type.bbc = tuple_value (%tuple.e3d, %i32) [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.693: type = tuple_type (type, type) [concrete]
|
||||
// CHECK:STDOUT: %tuple.94e: %tuple.type.693 = tuple_value (%i32, %i32) [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.a3a: type = tuple_type (%tuple.type.bbc, %tuple.type.693) [concrete]
|
||||
// CHECK:STDOUT: %tuple.4d1: %tuple.type.a3a = tuple_value (%tuple.450, %tuple.94e) [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.cc8: type = tuple_type (%tuple.type.a8a, %i32) [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.e55: type = tuple_type (%i32, %i32) [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.e23: type = tuple_type (%tuple.type.cc8, %tuple.type.e55) [concrete]
|
||||
@@ -182,7 +183,7 @@ fn F() -> (i32,) {
|
||||
// CHECK:STDOUT: %a.var: ref %tuple.type.a8a = var_storage %a.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc5_13.1: type = splice_block %.loc5_13.3 [concrete = constants.%tuple.type.a8a] {
|
||||
// CHECK:STDOUT: %i32.loc5: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %.loc5_13.2: %tuple.type.85c = tuple_literal (%i32.loc5) [concrete = constants.%tuple.19c]
|
||||
// CHECK:STDOUT: %.loc5_13.2: %tuple.type.135 = tuple_literal (%i32.loc5) [concrete = constants.%tuple.e3d]
|
||||
// CHECK:STDOUT: %.loc5_13.3: type = converted %.loc5_13.2, constants.%tuple.type.a8a [concrete = constants.%tuple.type.a8a]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %a: ref %tuple.type.a8a = wrapper_binding a, %a.var [concrete = %a.var]
|
||||
@@ -193,16 +194,16 @@ fn F() -> (i32,) {
|
||||
// CHECK:STDOUT: %b.var: ref %tuple.type.e23 = var_storage %b.var_patt [concrete]
|
||||
// CHECK:STDOUT: %.loc6_34.1: type = splice_block %.loc6_34.6 [concrete = constants.%tuple.type.e23] {
|
||||
// CHECK:STDOUT: %i32.loc6_11: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %.loc6_15: %tuple.type.85c = tuple_literal (%i32.loc6_11) [concrete = constants.%tuple.19c]
|
||||
// CHECK:STDOUT: %.loc6_15: %tuple.type.135 = tuple_literal (%i32.loc6_11) [concrete = constants.%tuple.e3d]
|
||||
// CHECK:STDOUT: %i32.loc6_18: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %.loc6_21: %tuple.type.8c7 = tuple_literal (%.loc6_15, %i32.loc6_18) [concrete = constants.%tuple.8ca]
|
||||
// CHECK:STDOUT: %.loc6_21: %tuple.type.bbc = tuple_literal (%.loc6_15, %i32.loc6_18) [concrete = constants.%tuple.450]
|
||||
// CHECK:STDOUT: %i32.loc6_25: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %i32.loc6_30: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %.loc6_33: %tuple.type.24b = tuple_literal (%i32.loc6_25, %i32.loc6_30) [concrete = constants.%tuple.b59]
|
||||
// CHECK:STDOUT: %.loc6_34.2: %tuple.type.58c = tuple_literal (%.loc6_21, %.loc6_33) [concrete = constants.%tuple.368]
|
||||
// CHECK:STDOUT: %.loc6_34.3: type = converted constants.%tuple.19c, constants.%tuple.type.a8a [concrete = constants.%tuple.type.a8a]
|
||||
// CHECK:STDOUT: %.loc6_34.4: type = converted constants.%tuple.8ca, constants.%tuple.type.cc8 [concrete = constants.%tuple.type.cc8]
|
||||
// CHECK:STDOUT: %.loc6_34.5: type = converted constants.%tuple.b59, constants.%tuple.type.e55 [concrete = constants.%tuple.type.e55]
|
||||
// CHECK:STDOUT: %.loc6_33: %tuple.type.693 = tuple_literal (%i32.loc6_25, %i32.loc6_30) [concrete = constants.%tuple.94e]
|
||||
// CHECK:STDOUT: %.loc6_34.2: %tuple.type.a3a = tuple_literal (%.loc6_21, %.loc6_33) [concrete = constants.%tuple.4d1]
|
||||
// CHECK:STDOUT: %.loc6_34.3: type = converted constants.%tuple.e3d, constants.%tuple.type.a8a [concrete = constants.%tuple.type.a8a]
|
||||
// CHECK:STDOUT: %.loc6_34.4: type = converted constants.%tuple.450, constants.%tuple.type.cc8 [concrete = constants.%tuple.type.cc8]
|
||||
// CHECK:STDOUT: %.loc6_34.5: type = converted constants.%tuple.94e, constants.%tuple.type.e55 [concrete = constants.%tuple.type.e55]
|
||||
// CHECK:STDOUT: %.loc6_34.6: type = converted %.loc6_34.2, constants.%tuple.type.e23 [concrete = constants.%tuple.type.e23]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %b: ref %tuple.type.e23 = wrapper_binding b, %b.var [concrete = %b.var]
|
||||
@@ -315,6 +316,7 @@ fn F() -> (i32,) {
|
||||
// CHECK:STDOUT: --- import_symbolic_decl.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: type: type = facet_type <type> [concrete]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete]
|
||||
// CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete]
|
||||
|
||||
+19
-17
@@ -49,12 +49,13 @@ fn H() {
|
||||
// CHECK:STDOUT: --- in_place_tuple_init.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: type: type = facet_type <type> [concrete]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %N: Core.IntLiteral = symbolic_binding N, 0 [symbolic]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete]
|
||||
// CHECK:STDOUT: %tuple.b59: %tuple.type.24b = tuple_value (%i32, %i32) [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.693: type = tuple_type (type, type) [concrete]
|
||||
// CHECK:STDOUT: %tuple.94e: %tuple.type.693 = tuple_value (%i32, %i32) [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.e55: type = tuple_type (%i32, %i32) [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.394: type = pattern_type %tuple.type.e55 [concrete]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
@@ -94,7 +95,7 @@ fn H() {
|
||||
// CHECK:STDOUT: %.loc7_19.1: type = splice_block %.loc7_19.3 [concrete = constants.%tuple.type.e55] {
|
||||
// CHECK:STDOUT: %i32.loc7_11: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %i32.loc7_16: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %.loc7_19.2: %tuple.type.24b = tuple_literal (%i32.loc7_11, %i32.loc7_16) [concrete = constants.%tuple.b59]
|
||||
// CHECK:STDOUT: %.loc7_19.2: %tuple.type.693 = tuple_literal (%i32.loc7_11, %i32.loc7_16) [concrete = constants.%tuple.94e]
|
||||
// CHECK:STDOUT: %.loc7_19.3: type = converted %.loc7_19.2, constants.%tuple.type.e55 [concrete = constants.%tuple.type.e55]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %v: ref %tuple.type.e55 = wrapper_binding v, %v.var
|
||||
@@ -149,16 +150,17 @@ fn H() {
|
||||
// CHECK:STDOUT: --- nested_tuple_in_place.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: type: type = facet_type <type> [concrete]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.ff9: type = tuple_type (type, type, type) [concrete]
|
||||
// CHECK:STDOUT: %tuple.04d: %tuple.type.ff9 = tuple_value (%i32, %i32, %i32) [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.531: type = tuple_type (type, type, type) [concrete]
|
||||
// CHECK:STDOUT: %tuple.276: %tuple.type.531 = tuple_value (%i32, %i32, %i32) [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.555: type = tuple_type (%i32, %i32, %i32) [concrete]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.f9f: type = tuple_type (%tuple.type.ff9, %tuple.type.ff9) [concrete]
|
||||
// CHECK:STDOUT: %tuple.6a5: %tuple.type.f9f = tuple_value (%tuple.04d, %tuple.04d) [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.d58: type = tuple_type (%tuple.type.531, %tuple.type.531) [concrete]
|
||||
// CHECK:STDOUT: %tuple.4cf: %tuple.type.d58 = tuple_value (%tuple.276, %tuple.276) [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.015: type = tuple_type (%tuple.type.555, %tuple.type.555) [concrete]
|
||||
// CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.e12: type = pattern_type %tuple.type.015 [concrete]
|
||||
@@ -166,8 +168,8 @@ fn H() {
|
||||
// CHECK:STDOUT: %v.var_patt.678: %pattern_type.e12 = var_pattern %v.patt.dde [concrete]
|
||||
// CHECK:STDOUT: %Destroy.WithSelf.Op.type.ef016f.4: type = fn_type @Destroy.WithSelf.Op.loc7_3.4 [concrete]
|
||||
// CHECK:STDOUT: %Destroy.WithSelf.Op.403171.4: %Destroy.WithSelf.Op.type.ef016f.4 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.3a3: type = tuple_type (type, %tuple.type.ff9, type) [concrete]
|
||||
// CHECK:STDOUT: %tuple.82e: %tuple.type.3a3 = tuple_value (%i32, %tuple.04d, %i32) [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.f8d: type = tuple_type (type, %tuple.type.531, type) [concrete]
|
||||
// CHECK:STDOUT: %tuple.a61: %tuple.type.f8d = tuple_value (%i32, %tuple.276, %i32) [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.b7e: type = tuple_type (%i32, %tuple.type.555, %i32) [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.f8e: type = pattern_type %tuple.type.b7e [concrete]
|
||||
// CHECK:STDOUT: %v.patt.7e2: %pattern_type.f8e = ref_binding_pattern v [concrete]
|
||||
@@ -218,14 +220,14 @@ fn H() {
|
||||
// CHECK:STDOUT: %i32.loc7_19: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %i32.loc7_24: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %i32.loc7_29: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %.loc7_32: %tuple.type.ff9 = tuple_literal (%i32.loc7_19, %i32.loc7_24, %i32.loc7_29) [concrete = constants.%tuple.04d]
|
||||
// CHECK:STDOUT: %.loc7_32: %tuple.type.531 = tuple_literal (%i32.loc7_19, %i32.loc7_24, %i32.loc7_29) [concrete = constants.%tuple.276]
|
||||
// CHECK:STDOUT: %i32.loc7_36: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %i32.loc7_41: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %i32.loc7_46: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %.loc7_49: %tuple.type.ff9 = tuple_literal (%i32.loc7_36, %i32.loc7_41, %i32.loc7_46) [concrete = constants.%tuple.04d]
|
||||
// CHECK:STDOUT: %.loc7_50.2: %tuple.type.f9f = tuple_literal (%.loc7_32, %.loc7_49) [concrete = constants.%tuple.6a5]
|
||||
// CHECK:STDOUT: %.loc7_50.3: type = converted constants.%tuple.04d, constants.%tuple.type.555 [concrete = constants.%tuple.type.555]
|
||||
// CHECK:STDOUT: %.loc7_50.4: type = converted constants.%tuple.04d, constants.%tuple.type.555 [concrete = constants.%tuple.type.555]
|
||||
// CHECK:STDOUT: %.loc7_49: %tuple.type.531 = tuple_literal (%i32.loc7_36, %i32.loc7_41, %i32.loc7_46) [concrete = constants.%tuple.276]
|
||||
// CHECK:STDOUT: %.loc7_50.2: %tuple.type.d58 = tuple_literal (%.loc7_32, %.loc7_49) [concrete = constants.%tuple.4cf]
|
||||
// CHECK:STDOUT: %.loc7_50.3: type = converted constants.%tuple.276, constants.%tuple.type.555 [concrete = constants.%tuple.type.555]
|
||||
// CHECK:STDOUT: %.loc7_50.4: type = converted constants.%tuple.276, constants.%tuple.type.555 [concrete = constants.%tuple.type.555]
|
||||
// CHECK:STDOUT: %.loc7_50.5: type = converted %.loc7_50.2, constants.%tuple.type.015 [concrete = constants.%tuple.type.015]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %v: ref %tuple.type.015 = wrapper_binding v, %v.var
|
||||
@@ -288,10 +290,10 @@ fn H() {
|
||||
// CHECK:STDOUT: %i32.loc13_24: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %i32.loc13_29: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %i32.loc13_34: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %.loc13_37: %tuple.type.ff9 = tuple_literal (%i32.loc13_24, %i32.loc13_29, %i32.loc13_34) [concrete = constants.%tuple.04d]
|
||||
// CHECK:STDOUT: %.loc13_37: %tuple.type.531 = tuple_literal (%i32.loc13_24, %i32.loc13_29, %i32.loc13_34) [concrete = constants.%tuple.276]
|
||||
// CHECK:STDOUT: %i32.loc13_40: type = type_literal constants.%i32 [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %.loc13_43.2: %tuple.type.3a3 = tuple_literal (%i32.loc13_18, %.loc13_37, %i32.loc13_40) [concrete = constants.%tuple.82e]
|
||||
// CHECK:STDOUT: %.loc13_43.3: type = converted constants.%tuple.04d, constants.%tuple.type.555 [concrete = constants.%tuple.type.555]
|
||||
// CHECK:STDOUT: %.loc13_43.2: %tuple.type.f8d = tuple_literal (%i32.loc13_18, %.loc13_37, %i32.loc13_40) [concrete = constants.%tuple.a61]
|
||||
// CHECK:STDOUT: %.loc13_43.3: type = converted constants.%tuple.276, constants.%tuple.type.555 [concrete = constants.%tuple.type.555]
|
||||
// CHECK:STDOUT: %.loc13_43.4: type = converted %.loc13_43.2, constants.%tuple.type.b7e [concrete = constants.%tuple.type.b7e]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %v: ref %tuple.type.b7e = wrapper_binding v, %v.var
|
||||
|
||||
@@ -98,6 +98,7 @@ let (a: {}, b: {}) = ({}, {}, {});
|
||||
// CHECK:STDOUT: --- basic.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: type: type = facet_type <type> [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.b6b: type = tuple_type (%empty_struct_type, %empty_struct_type) [concrete]
|
||||
@@ -227,6 +228,7 @@ let (a: {}, b: {}) = ({}, {}, {});
|
||||
// CHECK:STDOUT: --- variable.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: type: type = facet_type <type> [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete]
|
||||
@@ -426,6 +428,7 @@ let (a: {}, b: {}) = ({}, {}, {});
|
||||
// CHECK:STDOUT: --- nested.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: type: type = facet_type <type> [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.a96: type = pattern_type %empty_struct_type [concrete]
|
||||
@@ -483,6 +486,7 @@ let (a: {}, b: {}) = ({}, {}, {});
|
||||
// CHECK:STDOUT: --- package_scope.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: type: type = facet_type <type> [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.a96: type = pattern_type %empty_struct_type [concrete]
|
||||
|
||||
Reference in New Issue
Block a user