mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-05 22:02:55 +01:00
Rename template constant -> concrete constant. (#4939)
This implements a direction decided in a [recent discussion](https://docs.google.com/document/d/1Iut5f2TQBrtBNIduF4vJYOKfw7MbS8xH_J01_Q4e6Rk/edit?resourcekey=0-mc_vh5UzrzXfU4kO-3tOjA&tab=t.0#heading=h.mas1g68xx9ct) to switch away from "template constant" when naming a constant that doesn't depend on any generic parameters, because that creates confusion with template-dependent constant values that depend on a template parameter.
This commit is contained in:
+203
-203
@@ -102,46 +102,46 @@ fn CallF() {
|
||||
// CHECK:STDOUT: --- assoc_const_self.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [template]
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete]
|
||||
// CHECK:STDOUT: %Self.826: %I.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Self.as_type.b70: type = facet_access_type %Self.826 [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.9b1: <witness> = require_complete_type %Self.as_type.b70 [symbolic]
|
||||
// CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type %I.type [template]
|
||||
// CHECK:STDOUT: %assoc0.a1d: %I.assoc_type = assoc_entity element0, @I.%V [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type %I.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0.a1d: %I.assoc_type = assoc_entity element0, @I.%V [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %.Self: %I.type = bind_symbolic_name .Self [symbolic]
|
||||
// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic]
|
||||
// CHECK:STDOUT: %.Self.as_wit: <witness> = facet_access_witness %.Self [symbolic]
|
||||
// CHECK:STDOUT: %I.facet.1f7: %I.type = facet_value %.Self.as_type, %.Self.as_wit [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.d0c: <witness> = require_complete_type %.Self.as_type [symbolic]
|
||||
// CHECK:STDOUT: %impl.elem0: %.Self.as_type = impl_witness_access %.Self.as_wit, element0 [symbolic]
|
||||
// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [template]
|
||||
// CHECK:STDOUT: %I_where.type.5de: type = facet_type <@I where %impl.elem0 = %empty_struct> [template]
|
||||
// CHECK:STDOUT: %impl_witness.a4f: <witness> = impl_witness (%empty_struct) [template]
|
||||
// CHECK:STDOUT: %I.facet.27e: %I.type = facet_value %empty_struct_type, %impl_witness.a4f [template]
|
||||
// CHECK:STDOUT: %complete_type.357: <witness> = complete_type_witness %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template]
|
||||
// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [template]
|
||||
// CHECK:STDOUT: %I_where.type.cad: type = facet_type <@I where %impl.elem0 = %int_0.5c6> [template]
|
||||
// CHECK:STDOUT: %impl_witness.6f4: <witness> = impl_witness (%int_0.6a9) [template]
|
||||
// CHECK:STDOUT: %I.facet.401: %I.type = facet_value %i32, %impl_witness.6f4 [template]
|
||||
// CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [template]
|
||||
// CHECK:STDOUT: %complete_type.f8a: <witness> = complete_type_witness %i32.builtin [template]
|
||||
// CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [template]
|
||||
// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [template]
|
||||
// CHECK:STDOUT: %impl_witness.d39: <witness> = impl_witness (imports.%Core.import_ref.a5b), @impl.2(%int_32) [template]
|
||||
// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @impl.2(%int_32) [template]
|
||||
// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [template]
|
||||
// CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, %impl_witness.d39 [template]
|
||||
// CHECK:STDOUT: %.a0b: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [template]
|
||||
// CHECK:STDOUT: %Convert.bound: <bound method> = bound_method %int_0.5c6, %Convert.956 [template]
|
||||
// CHECK:STDOUT: %Convert.specific_fn: <specific function> = specific_function %Convert.bound, @Convert.2(%int_32) [template]
|
||||
// CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [template]
|
||||
// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %I_where.type.5de: type = facet_type <@I where %impl.elem0 = %empty_struct> [concrete]
|
||||
// CHECK:STDOUT: %impl_witness.a4f: <witness> = impl_witness (%empty_struct) [concrete]
|
||||
// CHECK:STDOUT: %I.facet.27e: %I.type = facet_value %empty_struct_type, %impl_witness.a4f [concrete]
|
||||
// CHECK:STDOUT: %complete_type.357: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %int_0.5c6: Core.IntLiteral = int_value 0 [concrete]
|
||||
// CHECK:STDOUT: %I_where.type.cad: type = facet_type <@I where %impl.elem0 = %int_0.5c6> [concrete]
|
||||
// CHECK:STDOUT: %impl_witness.6f4: <witness> = impl_witness (%int_0.6a9) [concrete]
|
||||
// CHECK:STDOUT: %I.facet.401: %I.type = facet_value %i32, %impl_witness.6f4 [concrete]
|
||||
// CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [concrete]
|
||||
// CHECK:STDOUT: %complete_type.f8a: <witness> = complete_type_witness %i32.builtin [concrete]
|
||||
// CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete]
|
||||
// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete]
|
||||
// CHECK:STDOUT: %impl_witness.d39: <witness> = impl_witness (imports.%Core.import_ref.a5b), @impl.2(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @impl.2(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, %impl_witness.d39 [concrete]
|
||||
// CHECK:STDOUT: %.a0b: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete]
|
||||
// CHECK:STDOUT: %Convert.bound: <bound method> = bound_method %int_0.5c6, %Convert.956 [concrete]
|
||||
// CHECK:STDOUT: %Convert.specific_fn: <specific function> = specific_function %Convert.bound, @Convert.2(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %int_0.6a9: %i32 = int_value 0 [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
|
||||
// CHECK:STDOUT: .Int = %Core.Int
|
||||
// CHECK:STDOUT: .ImplicitAs = %Core.ImplicitAs
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
@@ -150,60 +150,60 @@ fn CallF() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Core = imports.%Core
|
||||
// CHECK:STDOUT: .I = %I.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [template = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl.1 [template] {} {
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl.1 [concrete] {} {
|
||||
// CHECK:STDOUT: %.loc8_7.1: %empty_struct_type = struct_literal ()
|
||||
// CHECK:STDOUT: %.loc8_7.2: type = converted %.loc8_7.1, constants.%empty_struct_type [template = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type]
|
||||
// CHECK:STDOUT: %.loc8_7.2: type = converted %.loc8_7.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: %.Self: %I.type = bind_symbolic_name .Self [symbolic = constants.%.Self]
|
||||
// CHECK:STDOUT: %.Self.ref: %I.type = name_ref .Self, %.Self [symbolic = constants.%.Self]
|
||||
// CHECK:STDOUT: %V.ref: %I.assoc_type = name_ref V, @V.%assoc0 [template = constants.%assoc0.a1d]
|
||||
// CHECK:STDOUT: %V.ref: %I.assoc_type = name_ref V, @V.%assoc0 [concrete = constants.%assoc0.a1d]
|
||||
// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic = constants.%.Self.as_type]
|
||||
// CHECK:STDOUT: %.loc8_20: type = converted %.Self.ref, %.Self.as_type [symbolic = constants.%.Self.as_type]
|
||||
// CHECK:STDOUT: %.Self.as_wit: <witness> = facet_access_witness %.Self.ref [symbolic = constants.%.Self.as_wit]
|
||||
// CHECK:STDOUT: %impl.elem0: %.Self.as_type = impl_witness_access %.Self.as_wit, element0 [symbolic = constants.%impl.elem0]
|
||||
// CHECK:STDOUT: %.loc8_26.1: %empty_struct_type = struct_literal ()
|
||||
// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [template = constants.%empty_struct]
|
||||
// CHECK:STDOUT: %.loc8_26.2: %empty_struct_type = converted %.loc8_26.1, %empty_struct [template = constants.%empty_struct]
|
||||
// CHECK:STDOUT: %.loc8_14: type = where_expr %.Self [template = constants.%I_where.type.5de] {
|
||||
// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete = constants.%empty_struct]
|
||||
// CHECK:STDOUT: %.loc8_26.2: %empty_struct_type = converted %.loc8_26.1, %empty_struct [concrete = constants.%empty_struct]
|
||||
// CHECK:STDOUT: %.loc8_14: type = where_expr %.Self [concrete = constants.%I_where.type.5de] {
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc8_26.2
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness.loc8: <witness> = impl_witness (constants.%empty_struct) [template = constants.%impl_witness.a4f]
|
||||
// CHECK:STDOUT: impl_decl @impl.45 [template] {} {
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type]
|
||||
// CHECK:STDOUT: %impl_witness.loc8: <witness> = impl_witness (constants.%empty_struct) [concrete = constants.%impl_witness.a4f]
|
||||
// CHECK:STDOUT: impl_decl @impl.45 [concrete] {} {
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: %.Self: %I.type = bind_symbolic_name .Self [symbolic = constants.%.Self]
|
||||
// CHECK:STDOUT: %.Self.ref: %I.type = name_ref .Self, %.Self [symbolic = constants.%.Self]
|
||||
// CHECK:STDOUT: %V.ref: %I.assoc_type = name_ref V, @V.%assoc0 [template = constants.%assoc0.a1d]
|
||||
// CHECK:STDOUT: %V.ref: %I.assoc_type = name_ref V, @V.%assoc0 [concrete = constants.%assoc0.a1d]
|
||||
// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic = constants.%.Self.as_type]
|
||||
// CHECK:STDOUT: %.loc10_21: type = converted %.Self.ref, %.Self.as_type [symbolic = constants.%.Self.as_type]
|
||||
// CHECK:STDOUT: %.Self.as_wit: <witness> = facet_access_witness %.Self.ref [symbolic = constants.%.Self.as_wit]
|
||||
// CHECK:STDOUT: %impl.elem0: %.Self.as_type = impl_witness_access %.Self.as_wit, element0 [symbolic = constants.%impl.elem0]
|
||||
// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0.5c6]
|
||||
// CHECK:STDOUT: %.loc10_15: type = where_expr %.Self [template = constants.%I_where.type.cad] {
|
||||
// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0.5c6]
|
||||
// CHECK:STDOUT: %.loc10_15: type = where_expr %.Self [concrete = constants.%I_where.type.cad] {
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0, %int_0
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness.loc10: <witness> = impl_witness (constants.%int_0.6a9) [template = constants.%impl_witness.6f4]
|
||||
// CHECK:STDOUT: %impl.elem0: %.a0b = impl_witness_access constants.%impl_witness.d39, element0 [template = constants.%Convert.956]
|
||||
// CHECK:STDOUT: %bound_method: <bound method> = bound_method constants.%int_0.5c6, %impl.elem0 [template = constants.%Convert.bound]
|
||||
// CHECK:STDOUT: %specific_fn: <specific function> = specific_function %bound_method, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn]
|
||||
// CHECK:STDOUT: %int.convert_checked: init %i32 = call %specific_fn(constants.%int_0.5c6) [template = constants.%int_0.6a9]
|
||||
// CHECK:STDOUT: %.loc10_15.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_0.6a9]
|
||||
// CHECK:STDOUT: %.loc10_15.2: %i32 = converted constants.%int_0.5c6, %.loc10_15.1 [template = constants.%int_0.6a9]
|
||||
// CHECK:STDOUT: %impl_witness.loc10: <witness> = impl_witness (constants.%int_0.6a9) [concrete = constants.%impl_witness.6f4]
|
||||
// CHECK:STDOUT: %impl.elem0: %.a0b = impl_witness_access constants.%impl_witness.d39, element0 [concrete = constants.%Convert.956]
|
||||
// CHECK:STDOUT: %bound_method: <bound method> = bound_method constants.%int_0.5c6, %impl.elem0 [concrete = constants.%Convert.bound]
|
||||
// CHECK:STDOUT: %specific_fn: <specific function> = specific_function %bound_method, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn]
|
||||
// CHECK:STDOUT: %int.convert_checked: init %i32 = call %specific_fn(constants.%int_0.5c6) [concrete = constants.%int_0.6a9]
|
||||
// CHECK:STDOUT: %.loc10_15.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_0.6a9]
|
||||
// CHECK:STDOUT: %.loc10_15.2: %i32 = converted constants.%int_0.5c6, %.loc10_15.1 [concrete = constants.%int_0.6a9]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @I {
|
||||
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.826]
|
||||
// CHECK:STDOUT: %V: @V.%Self.as_type (%Self.as_type.b70) = assoc_const_decl @V [template] {
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%V [template = constants.%assoc0.a1d]
|
||||
// CHECK:STDOUT: %V: @V.%Self.as_type (%Self.as_type.b70) = assoc_const_decl @V [concrete] {
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%V [concrete = constants.%assoc0.a1d]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -257,28 +257,28 @@ fn CallF() {
|
||||
// CHECK:STDOUT: --- fail_assoc_const_mismatch.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [template]
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete]
|
||||
// CHECK:STDOUT: %Self.826: %I.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Self.as_type.b70: type = facet_access_type %Self.826 [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.9b1: <witness> = require_complete_type %Self.as_type.b70 [symbolic]
|
||||
// CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type %I.type [template]
|
||||
// CHECK:STDOUT: %assoc0.a1d: %I.assoc_type = assoc_entity element0, @I.%V [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type %I.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0.a1d: %I.assoc_type = assoc_entity element0, @I.%V [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %.Self: %I.type = bind_symbolic_name .Self [symbolic]
|
||||
// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic]
|
||||
// CHECK:STDOUT: %.Self.as_wit: <witness> = facet_access_witness %.Self [symbolic]
|
||||
// CHECK:STDOUT: %I.facet.1f7: %I.type = facet_value %.Self.as_type, %.Self.as_wit [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.d0c: <witness> = require_complete_type %.Self.as_type [symbolic]
|
||||
// CHECK:STDOUT: %impl.elem0: %.Self.as_type = impl_witness_access %.Self.as_wit, element0 [symbolic]
|
||||
// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template]
|
||||
// CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0 = %int_0> [template]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (<error>) [template]
|
||||
// CHECK:STDOUT: %I.facet.c20: %I.type = facet_value %empty_struct_type, %impl_witness [template]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete]
|
||||
// CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0 = %int_0> [concrete]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (<error>) [concrete]
|
||||
// CHECK:STDOUT: %I.facet.c20: %I.type = facet_value %empty_struct_type, %impl_witness [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
|
||||
// CHECK:STDOUT: .ImplicitAs = %Core.ImplicitAs
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
@@ -286,36 +286,36 @@ fn CallF() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Core = imports.%Core
|
||||
// CHECK:STDOUT: .I = %I.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [template = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [template] {} {
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [concrete] {} {
|
||||
// CHECK:STDOUT: %.loc15_7.1: %empty_struct_type = struct_literal ()
|
||||
// CHECK:STDOUT: %.loc15_7.2: type = converted %.loc15_7.1, constants.%empty_struct_type [template = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type]
|
||||
// CHECK:STDOUT: %.loc15_7.2: type = converted %.loc15_7.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: %.Self: %I.type = bind_symbolic_name .Self [symbolic = constants.%.Self]
|
||||
// CHECK:STDOUT: %.Self.ref: %I.type = name_ref .Self, %.Self [symbolic = constants.%.Self]
|
||||
// CHECK:STDOUT: %V.ref: %I.assoc_type = name_ref V, @V.%assoc0 [template = constants.%assoc0.a1d]
|
||||
// CHECK:STDOUT: %V.ref: %I.assoc_type = name_ref V, @V.%assoc0 [concrete = constants.%assoc0.a1d]
|
||||
// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic = constants.%.Self.as_type]
|
||||
// CHECK:STDOUT: %.loc15_20: type = converted %.Self.ref, %.Self.as_type [symbolic = constants.%.Self.as_type]
|
||||
// CHECK:STDOUT: %.Self.as_wit: <witness> = facet_access_witness %.Self.ref [symbolic = constants.%.Self.as_wit]
|
||||
// CHECK:STDOUT: %impl.elem0: %.Self.as_type = impl_witness_access %.Self.as_wit, element0 [symbolic = constants.%impl.elem0]
|
||||
// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0]
|
||||
// CHECK:STDOUT: %.loc15_14: type = where_expr %.Self [template = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0]
|
||||
// CHECK:STDOUT: %.loc15_14: type = where_expr %.Self [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0, %int_0
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (<error>) [template = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %.loc15: %empty_struct_type = converted constants.%int_0, <error> [template = <error>]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (<error>) [concrete = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %.loc15: %empty_struct_type = converted constants.%int_0, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @I {
|
||||
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.826]
|
||||
// CHECK:STDOUT: %V: @V.%Self.as_type (%Self.as_type.b70) = assoc_const_decl @V [template] {
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%V [template = constants.%assoc0.a1d]
|
||||
// CHECK:STDOUT: %V: @V.%Self.as_type (%Self.as_type.b70) = assoc_const_decl @V [concrete] {
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%V [concrete = constants.%assoc0.a1d]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -358,86 +358,86 @@ fn CallF() {
|
||||
// CHECK:STDOUT: --- fail_assoc_const_not_constant_after_conversion.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [template]
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete]
|
||||
// CHECK:STDOUT: %Self.826: %I.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Self.as_type.b70: type = facet_access_type %Self.826 [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.9b1: <witness> = require_complete_type %Self.as_type.b70 [symbolic]
|
||||
// CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type %I.type [template]
|
||||
// CHECK:STDOUT: %assoc0.a1d: %I.assoc_type = assoc_entity element0, @I.%V [template]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [template]
|
||||
// CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [template]
|
||||
// CHECK:STDOUT: %ImplicitAs.type.15e: type = facet_type <@ImplicitAs, @ImplicitAs(%C)> [template]
|
||||
// CHECK:STDOUT: %Convert.type.56d: type = fn_type @Convert.1, @ImplicitAs(%C) [template]
|
||||
// CHECK:STDOUT: %impl_witness.3db: <witness> = impl_witness (@impl.1.%Convert.decl) [template]
|
||||
// CHECK:STDOUT: %Convert.type.721: type = fn_type @Convert.2 [template]
|
||||
// CHECK:STDOUT: %Convert.155: %Convert.type.721 = struct_value () [template]
|
||||
// CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.15e = facet_value %empty_tuple.type, %impl_witness.3db [template]
|
||||
// CHECK:STDOUT: %C.val: %C = struct_value () [template]
|
||||
// CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type %I.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0.a1d: %I.assoc_type = assoc_entity element0, @I.%V [concrete]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete]
|
||||
// CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %ImplicitAs.type.15e: type = facet_type <@ImplicitAs, @ImplicitAs(%C)> [concrete]
|
||||
// CHECK:STDOUT: %Convert.type.56d: type = fn_type @Convert.1, @ImplicitAs(%C) [concrete]
|
||||
// CHECK:STDOUT: %impl_witness.3db: <witness> = impl_witness (@impl.1.%Convert.decl) [concrete]
|
||||
// CHECK:STDOUT: %Convert.type.721: type = fn_type @Convert.2 [concrete]
|
||||
// CHECK:STDOUT: %Convert.155: %Convert.type.721 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.15e = facet_value %empty_tuple.type, %impl_witness.3db [concrete]
|
||||
// CHECK:STDOUT: %C.val: %C = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %.Self: %I.type = bind_symbolic_name .Self [symbolic]
|
||||
// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic]
|
||||
// CHECK:STDOUT: %.Self.as_wit: <witness> = facet_access_witness %.Self [symbolic]
|
||||
// CHECK:STDOUT: %I.facet.1f7: %I.type = facet_value %.Self.as_type, %.Self.as_wit [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.d0c: <witness> = require_complete_type %.Self.as_type [symbolic]
|
||||
// CHECK:STDOUT: %impl.elem0: %.Self.as_type = impl_witness_access %.Self.as_wit, element0 [symbolic]
|
||||
// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [template]
|
||||
// CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0 = %empty_tuple> [template]
|
||||
// CHECK:STDOUT: %impl_witness.85b: <witness> = impl_witness (<error>) [template]
|
||||
// CHECK:STDOUT: %I.facet.b45: %I.type = facet_value %C, %impl_witness.85b [template]
|
||||
// CHECK:STDOUT: %.d4d: type = fn_type_with_self_type %Convert.type.56d, %ImplicitAs.facet [template]
|
||||
// CHECK:STDOUT: %Convert.bound: <bound method> = bound_method %empty_tuple, %Convert.155 [template]
|
||||
// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete]
|
||||
// CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0 = %empty_tuple> [concrete]
|
||||
// CHECK:STDOUT: %impl_witness.85b: <witness> = impl_witness (<error>) [concrete]
|
||||
// CHECK:STDOUT: %I.facet.b45: %I.type = facet_value %C, %impl_witness.85b [concrete]
|
||||
// CHECK:STDOUT: %.d4d: type = fn_type_with_self_type %Convert.type.56d, %ImplicitAs.facet [concrete]
|
||||
// CHECK:STDOUT: %Convert.bound: <bound method> = bound_method %empty_tuple, %Convert.155 [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
|
||||
// CHECK:STDOUT: .ImplicitAs = %Core.ImplicitAs
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [template = constants.%ImplicitAs.generic]
|
||||
// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Core = imports.%Core
|
||||
// CHECK:STDOUT: .I = %I.decl
|
||||
// CHECK:STDOUT: .C = %C.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [template = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl.1 [template] {} {
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl.1 [concrete] {} {
|
||||
// CHECK:STDOUT: %.loc10_7.1: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc10_7.2: type = converted %.loc10_7.1, constants.%empty_tuple.type [template = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %Core.ref: <namespace> = name_ref Core, imports.%Core [template = imports.%Core]
|
||||
// CHECK:STDOUT: %ImplicitAs.ref: %ImplicitAs.type.cc7 = name_ref ImplicitAs, imports.%Core.ImplicitAs [template = constants.%ImplicitAs.generic]
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%C)> [template = constants.%ImplicitAs.type.15e]
|
||||
// CHECK:STDOUT: %.loc10_7.2: type = converted %.loc10_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %Core.ref: <namespace> = name_ref Core, imports.%Core [concrete = imports.%Core]
|
||||
// CHECK:STDOUT: %ImplicitAs.ref: %ImplicitAs.type.cc7 = name_ref ImplicitAs, imports.%Core.ImplicitAs [concrete = constants.%ImplicitAs.generic]
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%C)> [concrete = constants.%ImplicitAs.type.15e]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness.loc10: <witness> = impl_witness (@impl.1.%Convert.decl) [template = constants.%impl_witness.3db]
|
||||
// CHECK:STDOUT: impl_decl @impl.2 [template] {} {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type]
|
||||
// CHECK:STDOUT: %impl_witness.loc10: <witness> = impl_witness (@impl.1.%Convert.decl) [concrete = constants.%impl_witness.3db]
|
||||
// CHECK:STDOUT: impl_decl @impl.2 [concrete] {} {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: %.Self: %I.type = bind_symbolic_name .Self [symbolic = constants.%.Self]
|
||||
// CHECK:STDOUT: %.Self.ref: %I.type = name_ref .Self, %.Self [symbolic = constants.%.Self]
|
||||
// CHECK:STDOUT: %V.ref: %I.assoc_type = name_ref V, @V.%assoc0 [template = constants.%assoc0.a1d]
|
||||
// CHECK:STDOUT: %V.ref: %I.assoc_type = name_ref V, @V.%assoc0 [concrete = constants.%assoc0.a1d]
|
||||
// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic = constants.%.Self.as_type]
|
||||
// CHECK:STDOUT: %.loc18_19: type = converted %.Self.ref, %.Self.as_type [symbolic = constants.%.Self.as_type]
|
||||
// CHECK:STDOUT: %.Self.as_wit: <witness> = facet_access_witness %.Self.ref [symbolic = constants.%.Self.as_wit]
|
||||
// CHECK:STDOUT: %impl.elem0: %.Self.as_type = impl_witness_access %.Self.as_wit, element0 [symbolic = constants.%impl.elem0]
|
||||
// CHECK:STDOUT: %.loc18_25.1: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [template = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc18_25.2: %empty_tuple.type = converted %.loc18_25.1, %empty_tuple [template = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc18_13: type = where_expr %.Self [template = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc18_25.2: %empty_tuple.type = converted %.loc18_25.1, %empty_tuple [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc18_13: type = where_expr %.Self [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc18_25.2
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness.loc18: <witness> = impl_witness (<error>) [template = constants.%impl_witness.85b]
|
||||
// CHECK:STDOUT: %impl.elem0: %.d4d = impl_witness_access constants.%impl_witness.3db, element0 [template = constants.%Convert.155]
|
||||
// CHECK:STDOUT: %bound_method: <bound method> = bound_method constants.%empty_tuple, %impl.elem0 [template = constants.%Convert.bound]
|
||||
// CHECK:STDOUT: %impl_witness.loc18: <witness> = impl_witness (<error>) [concrete = constants.%impl_witness.85b]
|
||||
// CHECK:STDOUT: %impl.elem0: %.d4d = impl_witness_access constants.%impl_witness.3db, element0 [concrete = constants.%Convert.155]
|
||||
// CHECK:STDOUT: %bound_method: <bound method> = bound_method constants.%empty_tuple, %impl.elem0 [concrete = constants.%Convert.bound]
|
||||
// CHECK:STDOUT: %.loc18_13.1: ref %C = temporary_storage
|
||||
// CHECK:STDOUT: %Convert.call: init %C = call %bound_method(constants.%empty_tuple) to %.loc18_13.1
|
||||
// CHECK:STDOUT: %.loc18_13.2: init %C = converted constants.%empty_tuple, %Convert.call
|
||||
@@ -447,8 +447,8 @@ fn CallF() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @I {
|
||||
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.826]
|
||||
// CHECK:STDOUT: %V: @V.%Self.as_type (%Self.as_type.b70) = assoc_const_decl @V [template] {
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%V [template = constants.%assoc0.a1d]
|
||||
// CHECK:STDOUT: %V: @V.%Self.as_type (%Self.as_type.b70) = assoc_const_decl @V [concrete] {
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%V [concrete = constants.%assoc0.a1d]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -466,17 +466,17 @@ fn CallF() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl.1: %.loc10_7.2 as %ImplicitAs.type {
|
||||
// CHECK:STDOUT: %Convert.decl: %Convert.type.721 = fn_decl @Convert.2 [template = constants.%Convert.155] {
|
||||
// CHECK:STDOUT: %Convert.decl: %Convert.type.721 = fn_decl @Convert.2 [concrete = constants.%Convert.155] {
|
||||
// CHECK:STDOUT: %self.patt: %empty_tuple.type = binding_pattern self
|
||||
// CHECK:STDOUT: %self.param_patt: %empty_tuple.type = value_param_pattern %self.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: %C = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %C = out_param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %self.param: %empty_tuple.type = value_param runtime_param0
|
||||
// CHECK:STDOUT: %.loc11_21.1: type = splice_block %.loc11_21.3 [template = constants.%empty_tuple.type] {
|
||||
// CHECK:STDOUT: %.loc11_21.1: type = splice_block %.loc11_21.3 [concrete = constants.%empty_tuple.type] {
|
||||
// CHECK:STDOUT: %.loc11_21.2: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc11_21.3: type = converted %.loc11_21.2, constants.%empty_tuple.type [template = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %.loc11_21.3: type = converted %.loc11_21.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %self: %empty_tuple.type = bind_name self, %self.param
|
||||
// CHECK:STDOUT: %return.param: ref %C = out_param runtime_param1
|
||||
@@ -494,7 +494,7 @@ fn CallF() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @C {
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -504,8 +504,8 @@ fn CallF() {
|
||||
// CHECK:STDOUT: fn @Convert.2[%self.param_patt: %empty_tuple.type]() -> %return.param_patt: %C {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %.loc11_41.1: %empty_struct_type = struct_literal ()
|
||||
// CHECK:STDOUT: %.loc11_41.2: init %C = class_init (), %return [template = constants.%C.val]
|
||||
// CHECK:STDOUT: %.loc11_42: init %C = converted %.loc11_41.1, %.loc11_41.2 [template = constants.%C.val]
|
||||
// CHECK:STDOUT: %.loc11_41.2: init %C = class_init (), %return [concrete = constants.%C.val]
|
||||
// CHECK:STDOUT: %.loc11_42: init %C = converted %.loc11_41.1, %.loc11_41.2 [concrete = constants.%C.val]
|
||||
// CHECK:STDOUT: return %.loc11_42 to %return
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -530,13 +530,13 @@ fn CallF() {
|
||||
// CHECK:STDOUT: --- fail_monomorphization_failure.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %IntLiteral.type: type = fn_type @IntLiteral [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %IntLiteral: %IntLiteral.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %IntLiteral.type: type = fn_type @IntLiteral [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %IntLiteral: %IntLiteral.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic]
|
||||
// CHECK:STDOUT: %N.patt: Core.IntLiteral = symbolic_binding_pattern N, 0 [symbolic]
|
||||
// CHECK:STDOUT: %I.type.dac: type = generic_interface_type @I [template]
|
||||
// CHECK:STDOUT: %I.generic: %I.type.dac = struct_value () [template]
|
||||
// CHECK:STDOUT: %I.type.dac: type = generic_interface_type @I [concrete]
|
||||
// CHECK:STDOUT: %I.generic: %I.type.dac = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %I.type.8a1: type = facet_type <@I, @I(%N)> [symbolic]
|
||||
// CHECK:STDOUT: %Self.3a0: %I.type.8a1 = bind_symbolic_name Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: %Self.as_type.72b: type = facet_access_type %Self.3a0 [symbolic]
|
||||
@@ -544,21 +544,21 @@ fn CallF() {
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %array_type [symbolic]
|
||||
// CHECK:STDOUT: %I.assoc_type.656: type = assoc_entity_type %I.type.8a1 [symbolic]
|
||||
// CHECK:STDOUT: %assoc0.6db: %I.assoc_type.656 = assoc_entity element0, @I.%V [symbolic]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template]
|
||||
// CHECK:STDOUT: %Negate.type: type = facet_type <@Negate> [template]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (imports.%Core.import_ref.c15) [template]
|
||||
// CHECK:STDOUT: %Op.type.e42: type = fn_type @Op.1 [template]
|
||||
// CHECK:STDOUT: %Negate.facet: %Negate.type = facet_value Core.IntLiteral, %impl_witness [template]
|
||||
// CHECK:STDOUT: %.45d: type = fn_type_with_self_type %Op.type.e42, %Negate.facet [template]
|
||||
// CHECK:STDOUT: %Op.type.1be: type = fn_type @Op.2 [template]
|
||||
// CHECK:STDOUT: %Op.bba: %Op.type.1be = struct_value () [template]
|
||||
// CHECK:STDOUT: %Op.bound: <bound method> = bound_method %int_1, %Op.bba [template]
|
||||
// CHECK:STDOUT: %int_-1: Core.IntLiteral = int_value -1 [template]
|
||||
// CHECK:STDOUT: %I.type.057: type = facet_type <@I, @I(%int_-1)> [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete]
|
||||
// CHECK:STDOUT: %Negate.type: type = facet_type <@Negate> [concrete]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (imports.%Core.import_ref.c15) [concrete]
|
||||
// CHECK:STDOUT: %Op.type.e42: type = fn_type @Op.1 [concrete]
|
||||
// CHECK:STDOUT: %Negate.facet: %Negate.type = facet_value Core.IntLiteral, %impl_witness [concrete]
|
||||
// CHECK:STDOUT: %.45d: type = fn_type_with_self_type %Op.type.e42, %Negate.facet [concrete]
|
||||
// CHECK:STDOUT: %Op.type.1be: type = fn_type @Op.2 [concrete]
|
||||
// CHECK:STDOUT: %Op.bba: %Op.type.1be = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Op.bound: <bound method> = bound_method %int_1, %Op.bba [concrete]
|
||||
// CHECK:STDOUT: %int_-1: Core.IntLiteral = int_value -1 [concrete]
|
||||
// CHECK:STDOUT: %I.type.057: type = facet_type <@I, @I(%int_-1)> [concrete]
|
||||
// CHECK:STDOUT: %.Self: %I.type.057 = bind_symbolic_name .Self [symbolic]
|
||||
// CHECK:STDOUT: %I.assoc_type.3f5: type = assoc_entity_type %I.type.057 [template]
|
||||
// CHECK:STDOUT: %assoc0.34f: %I.assoc_type.3f5 = assoc_entity element0, @I.%V [template]
|
||||
// CHECK:STDOUT: %I.assoc_type.3f5: type = assoc_entity_type %I.type.057 [concrete]
|
||||
// CHECK:STDOUT: %assoc0.34f: %I.assoc_type.3f5 = assoc_entity element0, @I.%V [concrete]
|
||||
// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic]
|
||||
// CHECK:STDOUT: %.Self.as_wit: <witness> = facet_access_witness %.Self [symbolic]
|
||||
// CHECK:STDOUT: %I.facet: %I.type.057 = facet_value %.Self.as_type, %.Self.as_wit [symbolic]
|
||||
@@ -566,56 +566,56 @@ fn CallF() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
|
||||
// CHECK:STDOUT: .IntLiteral = %Core.IntLiteral
|
||||
// CHECK:STDOUT: .Negate = %Core.Negate
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.IntLiteral: %IntLiteral.type = import_ref Core//prelude/types/int_literal, IntLiteral, loaded [template = constants.%IntLiteral]
|
||||
// CHECK:STDOUT: %Core.IntLiteral: %IntLiteral.type = import_ref Core//prelude/types/int_literal, IntLiteral, loaded [concrete = constants.%IntLiteral]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Core = imports.%Core
|
||||
// CHECK:STDOUT: .I = %I.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %I.decl: %I.type.dac = interface_decl @I [template = constants.%I.generic] {
|
||||
// CHECK:STDOUT: %I.decl: %I.type.dac = interface_decl @I [concrete = constants.%I.generic] {
|
||||
// CHECK:STDOUT: %N.patt.loc4_13.1: Core.IntLiteral = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc4_13.2 (constants.%N.patt)]
|
||||
// CHECK:STDOUT: %N.param_patt: Core.IntLiteral = value_param_pattern %N.patt.loc4_13.1, runtime_param<none> [symbolic = %N.patt.loc4_13.2 (constants.%N.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %N.param: Core.IntLiteral = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %.loc4_33.1: type = splice_block %.loc4_33.3 [template = Core.IntLiteral] {
|
||||
// CHECK:STDOUT: %Core.ref: <namespace> = name_ref Core, imports.%Core [template = imports.%Core]
|
||||
// CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, imports.%Core.IntLiteral [template = constants.%IntLiteral]
|
||||
// CHECK:STDOUT: %int_literal.make_type: init type = call %IntLiteral.ref() [template = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %.loc4_33.2: type = value_of_initializer %int_literal.make_type [template = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %.loc4_33.3: type = converted %int_literal.make_type, %.loc4_33.2 [template = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %.loc4_33.1: type = splice_block %.loc4_33.3 [concrete = Core.IntLiteral] {
|
||||
// CHECK:STDOUT: %Core.ref: <namespace> = name_ref Core, imports.%Core [concrete = imports.%Core]
|
||||
// CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, imports.%Core.IntLiteral [concrete = constants.%IntLiteral]
|
||||
// CHECK:STDOUT: %int_literal.make_type: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %.loc4_33.2: type = value_of_initializer %int_literal.make_type [concrete = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %.loc4_33.3: type = converted %int_literal.make_type, %.loc4_33.2 [concrete = Core.IntLiteral]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %N.loc4_13.1: Core.IntLiteral = bind_symbolic_name N, 0, %N.param [symbolic = %N.loc4_13.2 (constants.%N)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: impl_decl @impl.7 [template] {} {
|
||||
// CHECK:STDOUT: impl_decl @impl.7 [concrete] {} {
|
||||
// CHECK:STDOUT: %.loc15_7.1: %empty_struct_type = struct_literal ()
|
||||
// CHECK:STDOUT: %.loc15_7.2: type = converted %.loc15_7.1, constants.%empty_struct_type [template = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %I.ref: %I.type.dac = name_ref I, file.%I.decl [template = constants.%I.generic]
|
||||
// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1]
|
||||
// CHECK:STDOUT: %impl.elem0.loc15_14: %.45d = impl_witness_access constants.%impl_witness, element0 [template = constants.%Op.bba]
|
||||
// CHECK:STDOUT: %bound_method: <bound method> = bound_method %int_1, %impl.elem0.loc15_14 [template = constants.%Op.bound]
|
||||
// CHECK:STDOUT: %int.snegate: init Core.IntLiteral = call %bound_method(%int_1) [template = constants.%int_-1]
|
||||
// CHECK:STDOUT: %.loc15_16.1: Core.IntLiteral = value_of_initializer %int.snegate [template = constants.%int_-1]
|
||||
// CHECK:STDOUT: %.loc15_16.2: Core.IntLiteral = converted %int.snegate, %.loc15_16.1 [template = constants.%int_-1]
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(constants.%int_-1)> [template = constants.%I.type.057]
|
||||
// CHECK:STDOUT: %.loc15_7.2: type = converted %.loc15_7.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %I.ref: %I.type.dac = name_ref I, file.%I.decl [concrete = constants.%I.generic]
|
||||
// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1]
|
||||
// CHECK:STDOUT: %impl.elem0.loc15_14: %.45d = impl_witness_access constants.%impl_witness, element0 [concrete = constants.%Op.bba]
|
||||
// CHECK:STDOUT: %bound_method: <bound method> = bound_method %int_1, %impl.elem0.loc15_14 [concrete = constants.%Op.bound]
|
||||
// CHECK:STDOUT: %int.snegate: init Core.IntLiteral = call %bound_method(%int_1) [concrete = constants.%int_-1]
|
||||
// CHECK:STDOUT: %.loc15_16.1: Core.IntLiteral = value_of_initializer %int.snegate [concrete = constants.%int_-1]
|
||||
// CHECK:STDOUT: %.loc15_16.2: Core.IntLiteral = converted %int.snegate, %.loc15_16.1 [concrete = constants.%int_-1]
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(constants.%int_-1)> [concrete = constants.%I.type.057]
|
||||
// CHECK:STDOUT: %.Self: %I.type.057 = bind_symbolic_name .Self [symbolic = constants.%.Self]
|
||||
// CHECK:STDOUT: %.Self.ref: %I.type.057 = name_ref .Self, %.Self [symbolic = constants.%.Self]
|
||||
// CHECK:STDOUT: %.loc15_24.1: %I.assoc_type.3f5 = specific_constant @V.%assoc0, @I(constants.%int_-1) [template = constants.%assoc0.34f]
|
||||
// CHECK:STDOUT: %V.ref: %I.assoc_type.3f5 = name_ref V, %.loc15_24.1 [template = constants.%assoc0.34f]
|
||||
// CHECK:STDOUT: %.loc15_24.1: %I.assoc_type.3f5 = specific_constant @V.%assoc0, @I(constants.%int_-1) [concrete = constants.%assoc0.34f]
|
||||
// CHECK:STDOUT: %V.ref: %I.assoc_type.3f5 = name_ref V, %.loc15_24.1 [concrete = constants.%assoc0.34f]
|
||||
// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic = constants.%.Self.as_type]
|
||||
// CHECK:STDOUT: %.loc15_24.2: type = converted %.Self.ref, %.Self.as_type [symbolic = constants.%.Self.as_type]
|
||||
// CHECK:STDOUT: %.Self.as_wit: <witness> = facet_access_witness %.Self.ref [symbolic = constants.%.Self.as_wit]
|
||||
// CHECK:STDOUT: %impl.elem0.loc15_24: <error> = impl_witness_access %.Self.as_wit, element0 [symbolic = constants.%impl.elem0]
|
||||
// CHECK:STDOUT: %.loc15_30: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc15_18: type = where_expr %.Self [template = <error>] {
|
||||
// CHECK:STDOUT: %.loc15_18: type = where_expr %.Self [concrete = <error>] {
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc15_24, <error>
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -633,7 +633,7 @@ fn CallF() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface {
|
||||
// CHECK:STDOUT: %Self.1: @I.%I.type (%I.type.8a1) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.3a0)]
|
||||
// CHECK:STDOUT: %V: @V.%array_type (%array_type) = assoc_const_decl @V [template] {
|
||||
// CHECK:STDOUT: %V: @V.%array_type (%array_type) = assoc_const_decl @V [concrete] {
|
||||
// CHECK:STDOUT: %assoc0: @I.%I.assoc_type (%I.assoc_type.656) = assoc_entity element0, @I.%V [symbolic = @I.%assoc0 (constants.%assoc0.6db)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -701,89 +701,89 @@ fn CallF() {
|
||||
// CHECK:STDOUT: --- fail_todo_constrained_fn.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [template]
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete]
|
||||
// CHECK:STDOUT: %Self.826: %I.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Self.as_type.b70: type = facet_access_type %Self.826 [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.9b1: <witness> = require_complete_type %Self.as_type.b70 [symbolic]
|
||||
// CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type %I.type [template]
|
||||
// CHECK:STDOUT: %assoc0.a1d: %I.assoc_type = assoc_entity element0, @I.%V [template]
|
||||
// CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type %I.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0.a1d: %I.assoc_type = assoc_entity element0, @I.%V [concrete]
|
||||
// CHECK:STDOUT: %.Self: %I.type = bind_symbolic_name .Self [symbolic]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [template]
|
||||
// CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete]
|
||||
// CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic]
|
||||
// CHECK:STDOUT: %ImplicitAs.type.2a8: type = facet_type <@ImplicitAs, @ImplicitAs(%.Self.as_type)> [symbolic]
|
||||
// CHECK:STDOUT: %.Self.as_wit: <witness> = facet_access_witness %.Self [symbolic]
|
||||
// CHECK:STDOUT: %I.facet: %I.type = facet_value %.Self.as_type, %.Self.as_wit [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.d0c: <witness> = require_complete_type %.Self.as_type [symbolic]
|
||||
// CHECK:STDOUT: %impl.elem0: %.Self.as_type = impl_witness_access %.Self.as_wit, element0 [symbolic]
|
||||
// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [template]
|
||||
// CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0 = %empty_struct and TODO> [template]
|
||||
// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0 = %empty_struct and TODO> [concrete]
|
||||
// CHECK:STDOUT: %T: %I_where.type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt: %I_where.type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %CallF.type: type = fn_type @CallF [template]
|
||||
// CHECK:STDOUT: %CallF: %CallF.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %CallF.type: type = fn_type @CallF [concrete]
|
||||
// CHECK:STDOUT: %CallF: %CallF.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
|
||||
// CHECK:STDOUT: .ImplicitAs = %Core.ImplicitAs
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [template = constants.%ImplicitAs.generic]
|
||||
// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/operators/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Core = imports.%Core
|
||||
// CHECK:STDOUT: .I = %I.decl
|
||||
// CHECK:STDOUT: .F = %F.decl
|
||||
// CHECK:STDOUT: .CallF = %CallF.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [template = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {
|
||||
// CHECK:STDOUT: %T.patt.loc8_6.1: %I_where.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_6.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: %I_where.type = value_param_pattern %T.patt.loc8_6.1, runtime_param<none> [symbolic = %T.patt.loc8_6.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.param: %I_where.type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %.loc8_12.1: type = splice_block %.loc8_12.2 [template = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type]
|
||||
// CHECK:STDOUT: %.loc8_12.1: type = splice_block %.loc8_12.2 [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: %.Self: %I.type = bind_symbolic_name .Self [symbolic = constants.%.Self]
|
||||
// CHECK:STDOUT: %.loc8_19.1: %empty_struct_type = struct_literal ()
|
||||
// CHECK:STDOUT: %Core.ref: <namespace> = name_ref Core, imports.%Core [template = imports.%Core]
|
||||
// CHECK:STDOUT: %ImplicitAs.ref: %ImplicitAs.type.cc7 = name_ref ImplicitAs, imports.%Core.ImplicitAs [template = constants.%ImplicitAs.generic]
|
||||
// CHECK:STDOUT: %Core.ref: <namespace> = name_ref Core, imports.%Core [concrete = imports.%Core]
|
||||
// CHECK:STDOUT: %ImplicitAs.ref: %ImplicitAs.type.cc7 = name_ref ImplicitAs, imports.%Core.ImplicitAs [concrete = constants.%ImplicitAs.generic]
|
||||
// CHECK:STDOUT: %.Self.ref.loc8_43: %I.type = name_ref .Self, %.Self [symbolic = constants.%.Self]
|
||||
// CHECK:STDOUT: %.Self.as_type.loc8_48: type = facet_access_type %.Self.ref.loc8_43 [symbolic = constants.%.Self.as_type]
|
||||
// CHECK:STDOUT: %.loc8_48: type = converted %.Self.ref.loc8_43, %.Self.as_type.loc8_48 [symbolic = constants.%.Self.as_type]
|
||||
// CHECK:STDOUT: %ImplicitAs.type: type = facet_type <@ImplicitAs, @ImplicitAs(constants.%.Self.as_type)> [symbolic = constants.%ImplicitAs.type.2a8]
|
||||
// CHECK:STDOUT: %.loc8_19.2: type = converted %.loc8_19.1, constants.%empty_struct_type [template = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %.loc8_19.2: type = converted %.loc8_19.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %.Self.ref.loc8_54: %I.type = name_ref .Self, %.Self [symbolic = constants.%.Self]
|
||||
// CHECK:STDOUT: %V.ref: %I.assoc_type = name_ref V, @V.%assoc0 [template = constants.%assoc0.a1d]
|
||||
// CHECK:STDOUT: %V.ref: %I.assoc_type = name_ref V, @V.%assoc0 [concrete = constants.%assoc0.a1d]
|
||||
// CHECK:STDOUT: %.Self.as_type.loc8_54: type = facet_access_type %.Self.ref.loc8_54 [symbolic = constants.%.Self.as_type]
|
||||
// CHECK:STDOUT: %.loc8_54: type = converted %.Self.ref.loc8_54, %.Self.as_type.loc8_54 [symbolic = constants.%.Self.as_type]
|
||||
// CHECK:STDOUT: %.Self.as_wit: <witness> = facet_access_witness %.Self.ref.loc8_54 [symbolic = constants.%.Self.as_wit]
|
||||
// CHECK:STDOUT: %impl.elem0: %.Self.as_type = impl_witness_access %.Self.as_wit, element0 [symbolic = constants.%impl.elem0]
|
||||
// CHECK:STDOUT: %.loc8_60.1: %empty_struct_type = struct_literal ()
|
||||
// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [template = constants.%empty_struct]
|
||||
// CHECK:STDOUT: %.loc8_60.2: %empty_struct_type = converted %.loc8_60.1, %empty_struct [template = constants.%empty_struct]
|
||||
// CHECK:STDOUT: %.loc8_12.2: type = where_expr %.Self [template = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete = constants.%empty_struct]
|
||||
// CHECK:STDOUT: %.loc8_60.2: %empty_struct_type = converted %.loc8_60.1, %empty_struct [concrete = constants.%empty_struct]
|
||||
// CHECK:STDOUT: %.loc8_12.2: type = where_expr %.Self [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: requirement_impls %.loc8_19.2, %ImplicitAs.type
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc8_60.2
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %T.loc8_6.1: %I_where.type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc8_6.2 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %CallF.decl: %CallF.type = fn_decl @CallF [template = constants.%CallF] {} {}
|
||||
// CHECK:STDOUT: %CallF.decl: %CallF.type = fn_decl @CallF [concrete = constants.%CallF] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @I {
|
||||
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.826]
|
||||
// CHECK:STDOUT: %V: @V.%Self.as_type (%Self.as_type.b70) = assoc_const_decl @V [template] {
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%V [template = constants.%assoc0.a1d]
|
||||
// CHECK:STDOUT: %V: @V.%Self.as_type (%Self.as_type.b70) = assoc_const_decl @V [concrete] {
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%V [concrete = constants.%assoc0.a1d]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -809,9 +809,9 @@ fn CallF() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @CallF() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [template = constants.%F]
|
||||
// CHECK:STDOUT: %F.ref: %F.type = name_ref F, file.%F.decl [concrete = constants.%F]
|
||||
// CHECK:STDOUT: %.loc22_6: %empty_struct_type = struct_literal ()
|
||||
// CHECK:STDOUT: %.loc22_7: %I_where.type = converted %.loc22_6, <error> [template = <error>]
|
||||
// CHECK:STDOUT: %.loc22_7: %I_where.type = converted %.loc22_6, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+75
-75
@@ -37,40 +37,40 @@ fn InstanceCallIndirect(p: i32*) {
|
||||
// CHECK:STDOUT: --- compound.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %Simple.type: type = facet_type <@Simple> [template]
|
||||
// CHECK:STDOUT: %Simple.type: type = facet_type <@Simple> [concrete]
|
||||
// CHECK:STDOUT: %Self.3c9: %Simple.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %F.type.e2e: type = fn_type @F.1 [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %F.df8: %F.type.e2e = struct_value () [template]
|
||||
// CHECK:STDOUT: %Simple.assoc_type: type = assoc_entity_type %Simple.type [template]
|
||||
// CHECK:STDOUT: %assoc0.9ca: %Simple.assoc_type = assoc_entity element0, @Simple.%F.decl [template]
|
||||
// CHECK:STDOUT: %F.type.e2e: type = fn_type @F.1 [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %F.df8: %F.type.e2e = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Simple.assoc_type: type = assoc_entity_type %Simple.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0.9ca: %Simple.assoc_type = assoc_entity element0, @Simple.%F.decl [concrete]
|
||||
// CHECK:STDOUT: %Self.as_type.716: type = facet_access_type %Self.3c9 [symbolic]
|
||||
// CHECK:STDOUT: %G.type.b60: type = fn_type @G.1 [template]
|
||||
// CHECK:STDOUT: %G.cb0: %G.type.b60 = struct_value () [template]
|
||||
// CHECK:STDOUT: %assoc1: %Simple.assoc_type = assoc_entity element1, @Simple.%G.decl [template]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template]
|
||||
// CHECK:STDOUT: %impl_witness.5b2: <witness> = impl_witness (@impl.1.%F.decl, @impl.1.%G.decl) [template]
|
||||
// CHECK:STDOUT: %F.type.758: type = fn_type @F.2 [template]
|
||||
// CHECK:STDOUT: %F.df1: %F.type.758 = struct_value () [template]
|
||||
// CHECK:STDOUT: %G.type.c98: type = fn_type @G.2 [template]
|
||||
// CHECK:STDOUT: %G.e73: %G.type.c98 = struct_value () [template]
|
||||
// CHECK:STDOUT: %Simple.facet: %Simple.type = facet_value %i32, %impl_witness.5b2 [template]
|
||||
// CHECK:STDOUT: %NonInstanceCall.type: type = fn_type @NonInstanceCall [template]
|
||||
// CHECK:STDOUT: %NonInstanceCall: %NonInstanceCall.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.187: type = fn_type_with_self_type %F.type.e2e, %Simple.facet [template]
|
||||
// CHECK:STDOUT: %InstanceCall.type: type = fn_type @InstanceCall [template]
|
||||
// CHECK:STDOUT: %InstanceCall: %InstanceCall.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.b73: type = fn_type_with_self_type %G.type.b60, %Simple.facet [template]
|
||||
// CHECK:STDOUT: %ptr: type = ptr_type %i32 [template]
|
||||
// CHECK:STDOUT: %NonInstanceCallIndirect.type: type = fn_type @NonInstanceCallIndirect [template]
|
||||
// CHECK:STDOUT: %NonInstanceCallIndirect: %NonInstanceCallIndirect.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %InstanceCallIndirect.type: type = fn_type @InstanceCallIndirect [template]
|
||||
// CHECK:STDOUT: %InstanceCallIndirect: %InstanceCallIndirect.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %G.type.b60: type = fn_type @G.1 [concrete]
|
||||
// CHECK:STDOUT: %G.cb0: %G.type.b60 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %assoc1: %Simple.assoc_type = assoc_entity element1, @Simple.%G.decl [concrete]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %impl_witness.5b2: <witness> = impl_witness (@impl.1.%F.decl, @impl.1.%G.decl) [concrete]
|
||||
// CHECK:STDOUT: %F.type.758: type = fn_type @F.2 [concrete]
|
||||
// CHECK:STDOUT: %F.df1: %F.type.758 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %G.type.c98: type = fn_type @G.2 [concrete]
|
||||
// CHECK:STDOUT: %G.e73: %G.type.c98 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Simple.facet: %Simple.type = facet_value %i32, %impl_witness.5b2 [concrete]
|
||||
// CHECK:STDOUT: %NonInstanceCall.type: type = fn_type @NonInstanceCall [concrete]
|
||||
// CHECK:STDOUT: %NonInstanceCall: %NonInstanceCall.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %.187: type = fn_type_with_self_type %F.type.e2e, %Simple.facet [concrete]
|
||||
// CHECK:STDOUT: %InstanceCall.type: type = fn_type @InstanceCall [concrete]
|
||||
// CHECK:STDOUT: %InstanceCall: %InstanceCall.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %.b73: type = fn_type_with_self_type %G.type.b60, %Simple.facet [concrete]
|
||||
// CHECK:STDOUT: %ptr: type = ptr_type %i32 [concrete]
|
||||
// CHECK:STDOUT: %NonInstanceCallIndirect.type: type = fn_type @NonInstanceCallIndirect [concrete]
|
||||
// CHECK:STDOUT: %NonInstanceCallIndirect: %NonInstanceCallIndirect.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %InstanceCallIndirect.type: type = fn_type @InstanceCallIndirect [concrete]
|
||||
// CHECK:STDOUT: %InstanceCallIndirect: %InstanceCallIndirect.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
|
||||
// CHECK:STDOUT: .Int = %Core.Int
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
@@ -78,7 +78,7 @@ fn InstanceCallIndirect(p: i32*) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Core = imports.%Core
|
||||
// CHECK:STDOUT: .Simple = %Simple.decl
|
||||
// CHECK:STDOUT: .NonInstanceCall = %NonInstanceCall.decl
|
||||
@@ -87,56 +87,56 @@ fn InstanceCallIndirect(p: i32*) {
|
||||
// CHECK:STDOUT: .InstanceCallIndirect = %InstanceCallIndirect.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %Simple.decl: type = interface_decl @Simple [template = constants.%Simple.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl.1 [template] {} {
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: %Simple.ref: type = name_ref Simple, file.%Simple.decl [template = constants.%Simple.type]
|
||||
// CHECK:STDOUT: %Simple.decl: type = interface_decl @Simple [concrete = constants.%Simple.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl.1 [concrete] {} {
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %Simple.ref: type = name_ref Simple, file.%Simple.decl [concrete = constants.%Simple.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.1.%F.decl, @impl.1.%G.decl) [template = constants.%impl_witness.5b2]
|
||||
// CHECK:STDOUT: %NonInstanceCall.decl: %NonInstanceCall.type = fn_decl @NonInstanceCall [template = constants.%NonInstanceCall] {
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.1.%F.decl, @impl.1.%G.decl) [concrete = constants.%impl_witness.5b2]
|
||||
// CHECK:STDOUT: %NonInstanceCall.decl: %NonInstanceCall.type = fn_decl @NonInstanceCall [concrete = constants.%NonInstanceCall] {
|
||||
// CHECK:STDOUT: %n.patt: %i32 = binding_pattern n
|
||||
// CHECK:STDOUT: %n.param_patt: %i32 = value_param_pattern %n.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %n.param: %i32 = value_param runtime_param0
|
||||
// CHECK:STDOUT: %.loc21: type = splice_block %i32 [template = constants.%i32] {
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: %.loc21: type = splice_block %i32 [concrete = constants.%i32] {
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %n: %i32 = bind_name n, %n.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %InstanceCall.decl: %InstanceCall.type = fn_decl @InstanceCall [template = constants.%InstanceCall] {
|
||||
// CHECK:STDOUT: %InstanceCall.decl: %InstanceCall.type = fn_decl @InstanceCall [concrete = constants.%InstanceCall] {
|
||||
// CHECK:STDOUT: %n.patt: %i32 = binding_pattern n
|
||||
// CHECK:STDOUT: %n.param_patt: %i32 = value_param_pattern %n.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %n.param: %i32 = value_param runtime_param0
|
||||
// CHECK:STDOUT: %.loc25: type = splice_block %i32 [template = constants.%i32] {
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: %.loc25: type = splice_block %i32 [concrete = constants.%i32] {
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %n: %i32 = bind_name n, %n.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %NonInstanceCallIndirect.decl: %NonInstanceCallIndirect.type = fn_decl @NonInstanceCallIndirect [template = constants.%NonInstanceCallIndirect] {
|
||||
// CHECK:STDOUT: %NonInstanceCallIndirect.decl: %NonInstanceCallIndirect.type = fn_decl @NonInstanceCallIndirect [concrete = constants.%NonInstanceCallIndirect] {
|
||||
// CHECK:STDOUT: %p.patt: %ptr = binding_pattern p
|
||||
// CHECK:STDOUT: %p.param_patt: %ptr = value_param_pattern %p.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %p.param: %ptr = value_param runtime_param0
|
||||
// CHECK:STDOUT: %.loc29: type = splice_block %ptr [template = constants.%ptr] {
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: %ptr: type = ptr_type %i32 [template = constants.%ptr]
|
||||
// CHECK:STDOUT: %.loc29: type = splice_block %ptr [concrete = constants.%ptr] {
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %ptr: type = ptr_type %i32 [concrete = constants.%ptr]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %p: %ptr = bind_name p, %p.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %InstanceCallIndirect.decl: %InstanceCallIndirect.type = fn_decl @InstanceCallIndirect [template = constants.%InstanceCallIndirect] {
|
||||
// CHECK:STDOUT: %InstanceCallIndirect.decl: %InstanceCallIndirect.type = fn_decl @InstanceCallIndirect [concrete = constants.%InstanceCallIndirect] {
|
||||
// CHECK:STDOUT: %p.patt: %ptr = binding_pattern p
|
||||
// CHECK:STDOUT: %p.param_patt: %ptr = value_param_pattern %p.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %p.param: %ptr = value_param runtime_param0
|
||||
// CHECK:STDOUT: %.loc33: type = splice_block %ptr [template = constants.%ptr] {
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: %ptr: type = ptr_type %i32 [template = constants.%ptr]
|
||||
// CHECK:STDOUT: %.loc33: type = splice_block %ptr [concrete = constants.%ptr] {
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %ptr: type = ptr_type %i32 [concrete = constants.%ptr]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %p: %ptr = bind_name p, %p.param
|
||||
// CHECK:STDOUT: }
|
||||
@@ -144,9 +144,9 @@ fn InstanceCallIndirect(p: i32*) {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @Simple {
|
||||
// CHECK:STDOUT: %Self: %Simple.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.3c9]
|
||||
// CHECK:STDOUT: %F.decl: %F.type.e2e = fn_decl @F.1 [template = constants.%F.df8] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %Simple.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0.9ca]
|
||||
// CHECK:STDOUT: %G.decl: %G.type.b60 = fn_decl @G.1 [template = constants.%G.cb0] {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.e2e = fn_decl @F.1 [concrete = constants.%F.df8] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %Simple.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0.9ca]
|
||||
// CHECK:STDOUT: %G.decl: %G.type.b60 = fn_decl @G.1 [concrete = constants.%G.cb0] {
|
||||
// CHECK:STDOUT: %self.patt: @G.1.%Self.as_type.loc13_14.1 (%Self.as_type.716) = binding_pattern self
|
||||
// CHECK:STDOUT: %self.param_patt: @G.1.%Self.as_type.loc13_14.1 (%Self.as_type.716) = value_param_pattern %self.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
@@ -158,7 +158,7 @@ fn InstanceCallIndirect(p: i32*) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %self: @G.1.%Self.as_type.loc13_14.1 (%Self.as_type.716) = bind_name self, %self.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %assoc1: %Simple.assoc_type = assoc_entity element1, %G.decl [template = constants.%assoc1]
|
||||
// CHECK:STDOUT: %assoc1: %Simple.assoc_type = assoc_entity element1, %G.decl [concrete = constants.%assoc1]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -168,15 +168,15 @@ fn InstanceCallIndirect(p: i32*) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl.1: %i32 as %Simple.ref {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.758 = fn_decl @F.2 [template = constants.%F.df1] {} {}
|
||||
// CHECK:STDOUT: %G.decl: %G.type.c98 = fn_decl @G.2 [template = constants.%G.e73] {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.758 = fn_decl @F.2 [concrete = constants.%F.df1] {} {}
|
||||
// CHECK:STDOUT: %G.decl: %G.type.c98 = fn_decl @G.2 [concrete = constants.%G.e73] {
|
||||
// CHECK:STDOUT: %self.patt: %i32 = binding_pattern self
|
||||
// CHECK:STDOUT: %self.param_patt: %i32 = value_param_pattern %self.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %self.param: %i32 = value_param runtime_param0
|
||||
// CHECK:STDOUT: %.loc18: type = splice_block %i32 [template = constants.%i32] {
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: %.loc18: type = splice_block %i32 [concrete = constants.%i32] {
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %self: %i32 = bind_name self, %self.param
|
||||
// CHECK:STDOUT: }
|
||||
@@ -205,9 +205,9 @@ fn InstanceCallIndirect(p: i32*) {
|
||||
// CHECK:STDOUT: fn @NonInstanceCall(%n.param_patt: %i32) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %n.ref: %i32 = name_ref n, %n
|
||||
// CHECK:STDOUT: %Simple.ref: type = name_ref Simple, file.%Simple.decl [template = constants.%Simple.type]
|
||||
// CHECK:STDOUT: %F.ref: %Simple.assoc_type = name_ref F, @Simple.%assoc0 [template = constants.%assoc0.9ca]
|
||||
// CHECK:STDOUT: %impl.elem0: %.187 = impl_witness_access constants.%impl_witness.5b2, element0 [template = constants.%F.df1]
|
||||
// CHECK:STDOUT: %Simple.ref: type = name_ref Simple, file.%Simple.decl [concrete = constants.%Simple.type]
|
||||
// CHECK:STDOUT: %F.ref: %Simple.assoc_type = name_ref F, @Simple.%assoc0 [concrete = constants.%assoc0.9ca]
|
||||
// CHECK:STDOUT: %impl.elem0: %.187 = impl_witness_access constants.%impl_witness.5b2, element0 [concrete = constants.%F.df1]
|
||||
// CHECK:STDOUT: %F.call: init %empty_tuple.type = call %impl.elem0()
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
@@ -215,9 +215,9 @@ fn InstanceCallIndirect(p: i32*) {
|
||||
// CHECK:STDOUT: fn @InstanceCall(%n.param_patt: %i32) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %n.ref: %i32 = name_ref n, %n
|
||||
// CHECK:STDOUT: %Simple.ref: type = name_ref Simple, file.%Simple.decl [template = constants.%Simple.type]
|
||||
// CHECK:STDOUT: %G.ref: %Simple.assoc_type = name_ref G, @Simple.%assoc1 [template = constants.%assoc1]
|
||||
// CHECK:STDOUT: %impl.elem1: %.b73 = impl_witness_access constants.%impl_witness.5b2, element1 [template = constants.%G.e73]
|
||||
// CHECK:STDOUT: %Simple.ref: type = name_ref Simple, file.%Simple.decl [concrete = constants.%Simple.type]
|
||||
// CHECK:STDOUT: %G.ref: %Simple.assoc_type = name_ref G, @Simple.%assoc1 [concrete = constants.%assoc1]
|
||||
// CHECK:STDOUT: %impl.elem1: %.b73 = impl_witness_access constants.%impl_witness.5b2, element1 [concrete = constants.%G.e73]
|
||||
// CHECK:STDOUT: %bound_method: <bound method> = bound_method %n.ref, %impl.elem1
|
||||
// CHECK:STDOUT: %G.call: init %empty_tuple.type = call %bound_method(%n.ref)
|
||||
// CHECK:STDOUT: return
|
||||
@@ -226,10 +226,10 @@ fn InstanceCallIndirect(p: i32*) {
|
||||
// CHECK:STDOUT: fn @NonInstanceCallIndirect(%p.param_patt: %ptr) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %p.ref: %ptr = name_ref p, %p
|
||||
// CHECK:STDOUT: %Simple.ref: type = name_ref Simple, file.%Simple.decl [template = constants.%Simple.type]
|
||||
// CHECK:STDOUT: %F.ref: %Simple.assoc_type = name_ref F, @Simple.%assoc0 [template = constants.%assoc0.9ca]
|
||||
// CHECK:STDOUT: %Simple.ref: type = name_ref Simple, file.%Simple.decl [concrete = constants.%Simple.type]
|
||||
// CHECK:STDOUT: %F.ref: %Simple.assoc_type = name_ref F, @Simple.%assoc0 [concrete = constants.%assoc0.9ca]
|
||||
// CHECK:STDOUT: %.loc30: ref %i32 = deref %p.ref
|
||||
// CHECK:STDOUT: %impl.elem0: %.187 = impl_witness_access constants.%impl_witness.5b2, element0 [template = constants.%F.df1]
|
||||
// CHECK:STDOUT: %impl.elem0: %.187 = impl_witness_access constants.%impl_witness.5b2, element0 [concrete = constants.%F.df1]
|
||||
// CHECK:STDOUT: %F.call: init %empty_tuple.type = call %impl.elem0()
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
@@ -237,10 +237,10 @@ fn InstanceCallIndirect(p: i32*) {
|
||||
// CHECK:STDOUT: fn @InstanceCallIndirect(%p.param_patt: %ptr) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %p.ref: %ptr = name_ref p, %p
|
||||
// CHECK:STDOUT: %Simple.ref: type = name_ref Simple, file.%Simple.decl [template = constants.%Simple.type]
|
||||
// CHECK:STDOUT: %G.ref: %Simple.assoc_type = name_ref G, @Simple.%assoc1 [template = constants.%assoc1]
|
||||
// CHECK:STDOUT: %Simple.ref: type = name_ref Simple, file.%Simple.decl [concrete = constants.%Simple.type]
|
||||
// CHECK:STDOUT: %G.ref: %Simple.assoc_type = name_ref G, @Simple.%assoc1 [concrete = constants.%assoc1]
|
||||
// CHECK:STDOUT: %.loc34_4.1: ref %i32 = deref %p.ref
|
||||
// CHECK:STDOUT: %impl.elem1: %.b73 = impl_witness_access constants.%impl_witness.5b2, element1 [template = constants.%G.e73]
|
||||
// CHECK:STDOUT: %impl.elem1: %.b73 = impl_witness_access constants.%impl_witness.5b2, element1 [concrete = constants.%G.e73]
|
||||
// CHECK:STDOUT: %bound_method: <bound method> = bound_method %.loc34_4.1, %impl.elem1
|
||||
// CHECK:STDOUT: %.loc34_4.2: %i32 = bind_value %.loc34_4.1
|
||||
// CHECK:STDOUT: %G.call: init %empty_tuple.type = call %bound_method(%.loc34_4.2)
|
||||
|
||||
+16
-16
@@ -17,15 +17,15 @@ impl i32 as I {}
|
||||
// CHECK:STDOUT: --- declaration.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [template]
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete]
|
||||
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [template]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
|
||||
// CHECK:STDOUT: .Int = %Core.Int
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
@@ -33,22 +33,22 @@ impl i32 as I {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Core = imports.%Core
|
||||
// CHECK:STDOUT: .I = %I.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [template = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [template] {} {
|
||||
// CHECK:STDOUT: %int_32.loc13: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc13: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: %I.ref.loc13: type = name_ref I, file.%I.decl [template = constants.%I.type]
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [concrete] {} {
|
||||
// CHECK:STDOUT: %int_32.loc13: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc13: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %I.ref.loc13: type = name_ref I, file.%I.decl [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [template = constants.%impl_witness]
|
||||
// CHECK:STDOUT: impl_decl @impl [template] {} {
|
||||
// CHECK:STDOUT: %int_32.loc15: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc15: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: %I.ref.loc15: type = name_ref I, file.%I.decl [template = constants.%I.type]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [concrete = constants.%impl_witness]
|
||||
// CHECK:STDOUT: impl_decl @impl [concrete] {} {
|
||||
// CHECK:STDOUT: %int_32.loc15: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc15: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %I.ref.loc15: type = name_ref I, file.%I.decl [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+12
-12
@@ -17,15 +17,15 @@ impl i32 as Empty {
|
||||
// CHECK:STDOUT: --- empty.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %Empty.type: type = facet_type <@Empty> [template]
|
||||
// CHECK:STDOUT: %Empty.type: type = facet_type <@Empty> [concrete]
|
||||
// CHECK:STDOUT: %Self: %Empty.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [template]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
|
||||
// CHECK:STDOUT: .Int = %Core.Int
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
@@ -33,18 +33,18 @@ impl i32 as Empty {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Core = imports.%Core
|
||||
// CHECK:STDOUT: .Empty = %Empty.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %Empty.decl: type = interface_decl @Empty [template = constants.%Empty.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [template] {} {
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: %Empty.ref: type = name_ref Empty, file.%Empty.decl [template = constants.%Empty.type]
|
||||
// CHECK:STDOUT: %Empty.decl: type = interface_decl @Empty [concrete = constants.%Empty.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [concrete] {} {
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %Empty.ref: type = name_ref Empty, file.%Empty.decl [concrete = constants.%Empty.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [template = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [concrete = constants.%impl_witness]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @Empty {
|
||||
|
||||
+35
-35
@@ -26,56 +26,56 @@ fn G(c: C) {
|
||||
// CHECK:STDOUT: --- extend_impl.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %HasF.type: type = facet_type <@HasF> [template]
|
||||
// CHECK:STDOUT: %HasF.type: type = facet_type <@HasF> [concrete]
|
||||
// CHECK:STDOUT: %Self: %HasF.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %F.type.b7b: type = fn_type @F.1 [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %F.f50: %F.type.b7b = struct_value () [template]
|
||||
// CHECK:STDOUT: %HasF.assoc_type: type = assoc_entity_type %HasF.type [template]
|
||||
// CHECK:STDOUT: %assoc0: %HasF.assoc_type = assoc_entity element0, @HasF.%F.decl [template]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [template]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%F.decl) [template]
|
||||
// CHECK:STDOUT: %F.type.a65: type = fn_type @F.2 [template]
|
||||
// CHECK:STDOUT: %F.ad8: %F.type.a65 = struct_value () [template]
|
||||
// CHECK:STDOUT: %HasF.facet: %HasF.type = facet_value %C, %impl_witness [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %G.type: type = fn_type @G [template]
|
||||
// CHECK:STDOUT: %G: %G.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.626: type = fn_type_with_self_type %F.type.b7b, %HasF.facet [template]
|
||||
// CHECK:STDOUT: %F.type.b7b: type = fn_type @F.1 [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %F.f50: %F.type.b7b = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %HasF.assoc_type: type = assoc_entity_type %HasF.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0: %HasF.assoc_type = assoc_entity element0, @HasF.%F.decl [concrete]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [concrete]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%F.decl) [concrete]
|
||||
// CHECK:STDOUT: %F.type.a65: type = fn_type @F.2 [concrete]
|
||||
// CHECK:STDOUT: %F.ad8: %F.type.a65 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %HasF.facet: %HasF.type = facet_value %C, %impl_witness [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %G.type: type = fn_type @G [concrete]
|
||||
// CHECK:STDOUT: %G: %G.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %.626: type = fn_type_with_self_type %F.type.b7b, %HasF.facet [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Core = imports.%Core
|
||||
// CHECK:STDOUT: .HasF = %HasF.decl
|
||||
// CHECK:STDOUT: .C = %C.decl
|
||||
// CHECK:STDOUT: .G = %G.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %HasF.decl: type = interface_decl @HasF [template = constants.%HasF.type] {} {}
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {
|
||||
// CHECK:STDOUT: %HasF.decl: type = interface_decl @HasF [concrete = constants.%HasF.type] {} {}
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] {
|
||||
// CHECK:STDOUT: %c.patt: %C = binding_pattern c
|
||||
// CHECK:STDOUT: %c.param_patt: %C = value_param_pattern %c.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %c.param: %C = value_param runtime_param0
|
||||
// CHECK:STDOUT: %C.ref.loc21: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %C.ref.loc21: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %c: %C = bind_name c, %c.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @HasF {
|
||||
// CHECK:STDOUT: %Self: %HasF.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self]
|
||||
// CHECK:STDOUT: %F.decl: %F.type.b7b = fn_decl @F.1 [template = constants.%F.f50] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %HasF.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %F.decl: %F.type.b7b = fn_decl @F.1 [concrete = constants.%F.f50] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %HasF.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -84,7 +84,7 @@ fn G(c: C) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl: %Self.ref as %HasF.ref {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.a65 = fn_decl @F.2 [template = constants.%F.ad8] {} {}
|
||||
// CHECK:STDOUT: %F.decl: %F.type.a65 = fn_decl @F.2 [concrete = constants.%F.ad8] {} {}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .F = %F.decl
|
||||
@@ -92,12 +92,12 @@ fn G(c: C) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @C {
|
||||
// CHECK:STDOUT: impl_decl @impl [template] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [template = constants.%C]
|
||||
// CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [template = constants.%HasF.type]
|
||||
// CHECK:STDOUT: impl_decl @impl [concrete] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [concrete = constants.%HasF.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%F.decl) [template = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%F.decl) [concrete = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -116,13 +116,13 @@ fn G(c: C) {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @G(%c.param_patt: %C) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %C.ref.loc22: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %F.ref.loc22: %HasF.assoc_type = name_ref F, @HasF.%assoc0 [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0.loc22: %.626 = impl_witness_access constants.%impl_witness, element0 [template = constants.%F.ad8]
|
||||
// CHECK:STDOUT: %C.ref.loc22: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %F.ref.loc22: %HasF.assoc_type = name_ref F, @HasF.%assoc0 [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0.loc22: %.626 = impl_witness_access constants.%impl_witness, element0 [concrete = constants.%F.ad8]
|
||||
// CHECK:STDOUT: %F.call.loc22: init %empty_tuple.type = call %impl.elem0.loc22()
|
||||
// CHECK:STDOUT: %c.ref: %C = name_ref c, %c
|
||||
// CHECK:STDOUT: %F.ref.loc23: %HasF.assoc_type = name_ref F, @HasF.%assoc0 [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0.loc23: %.626 = impl_witness_access constants.%impl_witness, element0 [template = constants.%F.ad8]
|
||||
// CHECK:STDOUT: %F.ref.loc23: %HasF.assoc_type = name_ref F, @HasF.%assoc0 [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0.loc23: %.626 = impl_witness_access constants.%impl_witness, element0 [concrete = constants.%F.ad8]
|
||||
// CHECK:STDOUT: %F.call.loc23: init %empty_tuple.type = call %impl.elem0.loc23()
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
+91
-91
@@ -52,52 +52,52 @@ class X(U:! type) {
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %HasF.type.fe3: type = generic_interface_type @HasF [template]
|
||||
// CHECK:STDOUT: %HasF.generic: %HasF.type.fe3 = struct_value () [template]
|
||||
// CHECK:STDOUT: %HasF.type.fe3: type = generic_interface_type @HasF [concrete]
|
||||
// CHECK:STDOUT: %HasF.generic: %HasF.type.fe3 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %HasF.type.901: type = facet_type <@HasF, @HasF(%T)> [symbolic]
|
||||
// CHECK:STDOUT: %Self.322: %HasF.type.901 = bind_symbolic_name Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: %F.type.46c: type = fn_type @F.1, @HasF(%T) [symbolic]
|
||||
// CHECK:STDOUT: %F.823: %F.type.46c = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %HasF.assoc_type.595: type = assoc_entity_type %HasF.type.901 [symbolic]
|
||||
// CHECK:STDOUT: %assoc0.35e: %HasF.assoc_type.595 = assoc_entity element0, @HasF.%F.decl [symbolic]
|
||||
// CHECK:STDOUT: %Param: type = class_type @Param [template]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template]
|
||||
// CHECK:STDOUT: %Param.elem: type = unbound_element_type %Param, %i32 [template]
|
||||
// CHECK:STDOUT: %struct_type.x.ed6: type = struct_type {.x: %i32} [template]
|
||||
// CHECK:STDOUT: %complete_type.1ec: <witness> = complete_type_witness %struct_type.x.ed6 [template]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [template]
|
||||
// CHECK:STDOUT: %HasF.type.b18: type = facet_type <@HasF, @HasF(%Param)> [template]
|
||||
// CHECK:STDOUT: %F.type.7f1: type = fn_type @F.1, @HasF(%Param) [template]
|
||||
// CHECK:STDOUT: %F.eff: %F.type.7f1 = struct_value () [template]
|
||||
// CHECK:STDOUT: %HasF.assoc_type.dc4: type = assoc_entity_type %HasF.type.b18 [template]
|
||||
// CHECK:STDOUT: %assoc0.a6b: %HasF.assoc_type.dc4 = assoc_entity element0, @HasF.%F.decl [template]
|
||||
// CHECK:STDOUT: %impl_witness.9bf: <witness> = impl_witness (@impl.1.%F.decl) [template]
|
||||
// CHECK:STDOUT: %F.type.94c: type = fn_type @F.2 [template]
|
||||
// CHECK:STDOUT: %F.901: %F.type.94c = struct_value () [template]
|
||||
// CHECK:STDOUT: %HasF.facet: %HasF.type.b18 = facet_value %C, %impl_witness.9bf [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %complete_type.357: <witness> = complete_type_witness %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template]
|
||||
// CHECK:STDOUT: %struct_type.x.c96: type = struct_type {.x: Core.IntLiteral} [template]
|
||||
// CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [template]
|
||||
// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [template]
|
||||
// CHECK:STDOUT: %impl_witness.d39: <witness> = impl_witness (imports.%Core.import_ref.a5b), @impl.2(%int_32) [template]
|
||||
// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @impl.2(%int_32) [template]
|
||||
// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [template]
|
||||
// CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, %impl_witness.d39 [template]
|
||||
// CHECK:STDOUT: %.a0b: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [template]
|
||||
// CHECK:STDOUT: %Convert.bound: <bound method> = bound_method %int_2.ecc, %Convert.956 [template]
|
||||
// CHECK:STDOUT: %Convert.specific_fn: <specific function> = specific_function %Convert.bound, @Convert.2(%int_32) [template]
|
||||
// CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [template]
|
||||
// CHECK:STDOUT: %Param.val: %Param = struct_value (%int_2.ef8) [template]
|
||||
// CHECK:STDOUT: %G.type: type = fn_type @G [template]
|
||||
// CHECK:STDOUT: %G: %G.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.da8: type = fn_type_with_self_type %F.type.7f1, %HasF.facet [template]
|
||||
// CHECK:STDOUT: %Param: type = class_type @Param [concrete]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %Param.elem: type = unbound_element_type %Param, %i32 [concrete]
|
||||
// CHECK:STDOUT: %struct_type.x.ed6: type = struct_type {.x: %i32} [concrete]
|
||||
// CHECK:STDOUT: %complete_type.1ec: <witness> = complete_type_witness %struct_type.x.ed6 [concrete]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [concrete]
|
||||
// CHECK:STDOUT: %HasF.type.b18: type = facet_type <@HasF, @HasF(%Param)> [concrete]
|
||||
// CHECK:STDOUT: %F.type.7f1: type = fn_type @F.1, @HasF(%Param) [concrete]
|
||||
// CHECK:STDOUT: %F.eff: %F.type.7f1 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %HasF.assoc_type.dc4: type = assoc_entity_type %HasF.type.b18 [concrete]
|
||||
// CHECK:STDOUT: %assoc0.a6b: %HasF.assoc_type.dc4 = assoc_entity element0, @HasF.%F.decl [concrete]
|
||||
// CHECK:STDOUT: %impl_witness.9bf: <witness> = impl_witness (@impl.1.%F.decl) [concrete]
|
||||
// CHECK:STDOUT: %F.type.94c: type = fn_type @F.2 [concrete]
|
||||
// CHECK:STDOUT: %F.901: %F.type.94c = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %HasF.facet: %HasF.type.b18 = facet_value %C, %impl_witness.9bf [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type.357: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete]
|
||||
// CHECK:STDOUT: %struct_type.x.c96: type = struct_type {.x: Core.IntLiteral} [concrete]
|
||||
// CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete]
|
||||
// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete]
|
||||
// CHECK:STDOUT: %impl_witness.d39: <witness> = impl_witness (imports.%Core.import_ref.a5b), @impl.2(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @impl.2(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, %impl_witness.d39 [concrete]
|
||||
// CHECK:STDOUT: %.a0b: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete]
|
||||
// CHECK:STDOUT: %Convert.bound: <bound method> = bound_method %int_2.ecc, %Convert.956 [concrete]
|
||||
// CHECK:STDOUT: %Convert.specific_fn: <specific function> = specific_function %Convert.bound, @Convert.2(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete]
|
||||
// CHECK:STDOUT: %Param.val: %Param = struct_value (%int_2.ef8) [concrete]
|
||||
// CHECK:STDOUT: %G.type: type = fn_type @G [concrete]
|
||||
// CHECK:STDOUT: %G: %G.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %.da8: type = fn_type_with_self_type %F.type.7f1, %HasF.facet [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
|
||||
// CHECK:STDOUT: .Int = %Core.Int
|
||||
// CHECK:STDOUT: .ImplicitAs = %Core.ImplicitAs
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
@@ -106,7 +106,7 @@ class X(U:! type) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Core = imports.%Core
|
||||
// CHECK:STDOUT: .HasF = %HasF.decl
|
||||
// CHECK:STDOUT: .Param = %Param.decl
|
||||
@@ -114,21 +114,21 @@ class X(U:! type) {
|
||||
// CHECK:STDOUT: .G = %G.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %HasF.decl: %HasF.type.fe3 = interface_decl @HasF [template = constants.%HasF.generic] {
|
||||
// CHECK:STDOUT: %HasF.decl: %HasF.type.fe3 = interface_decl @HasF [concrete = constants.%HasF.generic] {
|
||||
// CHECK:STDOUT: %T.patt.loc4_16.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_16.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc4_16.1, runtime_param<none> [symbolic = %T.patt.loc4_16.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.param: type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %T.loc4_16.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_16.2 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Param.decl: type = class_decl @Param [template = constants.%Param] {} {}
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {
|
||||
// CHECK:STDOUT: %Param.decl: type = class_decl @Param [concrete = constants.%Param] {} {}
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] {
|
||||
// CHECK:STDOUT: %c.patt: %C = binding_pattern c
|
||||
// CHECK:STDOUT: %c.param_patt: %C = value_param_pattern %c.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %c.param: %C = value_param runtime_param0
|
||||
// CHECK:STDOUT: %C.ref.loc20: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %C.ref.loc20: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %c: %C = bind_name c, %c.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -165,11 +165,11 @@ class X(U:! type) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl.1: %Self.ref as %HasF.type {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.94c = fn_decl @F.2 [template = constants.%F.901] {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.94c = fn_decl @F.2 [concrete = constants.%F.901] {
|
||||
// CHECK:STDOUT: %return.patt: %Param = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %Param = out_param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %Param.ref: type = name_ref Param, file.%Param.decl [template = constants.%Param]
|
||||
// CHECK:STDOUT: %Param.ref: type = name_ref Param, file.%Param.decl [concrete = constants.%Param]
|
||||
// CHECK:STDOUT: %return.param: ref %Param = out_param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref %Param = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
@@ -180,12 +180,12 @@ class X(U:! type) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @Param {
|
||||
// CHECK:STDOUT: %.loc9_8: %Param.elem = field_decl x, element0 [template]
|
||||
// CHECK:STDOUT: %.loc9_8: %Param.elem = field_decl x, element0 [concrete]
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %.loc9_3: %Param.elem = var_pattern %.loc9_8
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.var: ref %Param.elem = var <none>
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %struct_type.x.ed6 [template = constants.%complete_type.1ec]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %struct_type.x.ed6 [concrete = constants.%complete_type.1ec]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -194,14 +194,14 @@ class X(U:! type) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @C {
|
||||
// CHECK:STDOUT: impl_decl @impl.1 [template] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [template = constants.%C]
|
||||
// CHECK:STDOUT: %HasF.ref: %HasF.type.fe3 = name_ref HasF, file.%HasF.decl [template = constants.%HasF.generic]
|
||||
// CHECK:STDOUT: %Param.ref: type = name_ref Param, file.%Param.decl [template = constants.%Param]
|
||||
// CHECK:STDOUT: %HasF.type: type = facet_type <@HasF, @HasF(constants.%Param)> [template = constants.%HasF.type.b18]
|
||||
// CHECK:STDOUT: impl_decl @impl.1 [concrete] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %HasF.ref: %HasF.type.fe3 = name_ref HasF, file.%HasF.decl [concrete = constants.%HasF.generic]
|
||||
// CHECK:STDOUT: %Param.ref: type = name_ref Param, file.%Param.decl [concrete = constants.%Param]
|
||||
// CHECK:STDOUT: %HasF.type: type = facet_type <@HasF, @HasF(constants.%Param)> [concrete = constants.%HasF.type.b18]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.1.%F.decl) [template = constants.%impl_witness.9bf]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.1.%F.decl) [concrete = constants.%impl_witness.9bf]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -217,17 +217,17 @@ class X(U:! type) {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @F.2() -> %return.param_patt: %Param {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc]
|
||||
// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc]
|
||||
// CHECK:STDOUT: %.loc15_21.1: %struct_type.x.c96 = struct_literal (%int_2)
|
||||
// CHECK:STDOUT: %impl.elem0: %.a0b = impl_witness_access constants.%impl_witness.d39, element0 [template = constants.%Convert.956]
|
||||
// CHECK:STDOUT: %bound_method: <bound method> = bound_method %int_2, %impl.elem0 [template = constants.%Convert.bound]
|
||||
// CHECK:STDOUT: %specific_fn: <specific function> = specific_function %bound_method, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn]
|
||||
// CHECK:STDOUT: %int.convert_checked: init %i32 = call %specific_fn(%int_2) [template = constants.%int_2.ef8]
|
||||
// CHECK:STDOUT: %.loc15_21.2: init %i32 = converted %int_2, %int.convert_checked [template = constants.%int_2.ef8]
|
||||
// CHECK:STDOUT: %impl.elem0: %.a0b = impl_witness_access constants.%impl_witness.d39, element0 [concrete = constants.%Convert.956]
|
||||
// CHECK:STDOUT: %bound_method: <bound method> = bound_method %int_2, %impl.elem0 [concrete = constants.%Convert.bound]
|
||||
// CHECK:STDOUT: %specific_fn: <specific function> = specific_function %bound_method, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn]
|
||||
// CHECK:STDOUT: %int.convert_checked: init %i32 = call %specific_fn(%int_2) [concrete = constants.%int_2.ef8]
|
||||
// CHECK:STDOUT: %.loc15_21.2: init %i32 = converted %int_2, %int.convert_checked [concrete = constants.%int_2.ef8]
|
||||
// CHECK:STDOUT: %.loc15_21.3: ref %i32 = class_element_access %return, element0
|
||||
// CHECK:STDOUT: %.loc15_21.4: init %i32 = initialize_from %.loc15_21.2 to %.loc15_21.3 [template = constants.%int_2.ef8]
|
||||
// CHECK:STDOUT: %.loc15_21.5: init %Param = class_init (%.loc15_21.4), %return [template = constants.%Param.val]
|
||||
// CHECK:STDOUT: %.loc15_22: init %Param = converted %.loc15_21.1, %.loc15_21.5 [template = constants.%Param.val]
|
||||
// CHECK:STDOUT: %.loc15_21.4: init %i32 = initialize_from %.loc15_21.2 to %.loc15_21.3 [concrete = constants.%int_2.ef8]
|
||||
// CHECK:STDOUT: %.loc15_21.5: init %Param = class_init (%.loc15_21.4), %return [concrete = constants.%Param.val]
|
||||
// CHECK:STDOUT: %.loc15_22: init %Param = converted %.loc15_21.1, %.loc15_21.5 [concrete = constants.%Param.val]
|
||||
// CHECK:STDOUT: return %.loc15_22 to %return
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -236,18 +236,18 @@ class X(U:! type) {
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %a.patt: %i32 = binding_pattern a
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %C.ref.loc21: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %.loc21_17: %HasF.assoc_type.dc4 = specific_constant @HasF.%assoc0.loc5_14.1, @HasF(constants.%Param) [template = constants.%assoc0.a6b]
|
||||
// CHECK:STDOUT: %F.ref.loc21: %HasF.assoc_type.dc4 = name_ref F, %.loc21_17 [template = constants.%assoc0.a6b]
|
||||
// CHECK:STDOUT: %impl.elem0.loc21: %.da8 = impl_witness_access constants.%impl_witness.9bf, element0 [template = constants.%F.901]
|
||||
// CHECK:STDOUT: %C.ref.loc21: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %.loc21_17: %HasF.assoc_type.dc4 = specific_constant @HasF.%assoc0.loc5_14.1, @HasF(constants.%Param) [concrete = constants.%assoc0.a6b]
|
||||
// CHECK:STDOUT: %F.ref.loc21: %HasF.assoc_type.dc4 = name_ref F, %.loc21_17 [concrete = constants.%assoc0.a6b]
|
||||
// CHECK:STDOUT: %impl.elem0.loc21: %.da8 = impl_witness_access constants.%impl_witness.9bf, element0 [concrete = constants.%F.901]
|
||||
// CHECK:STDOUT: %.loc21_20.1: ref %Param = temporary_storage
|
||||
// CHECK:STDOUT: %F.call.loc21: init %Param = call %impl.elem0.loc21() to %.loc21_20.1
|
||||
// CHECK:STDOUT: %.loc21_20.2: ref %Param = temporary %.loc21_20.1, %F.call.loc21
|
||||
// CHECK:STDOUT: %x.ref.loc21: %Param.elem = name_ref x, @Param.%.loc9_8 [template = @Param.%.loc9_8]
|
||||
// CHECK:STDOUT: %x.ref.loc21: %Param.elem = name_ref x, @Param.%.loc9_8 [concrete = @Param.%.loc9_8]
|
||||
// CHECK:STDOUT: %.loc21_21: ref %i32 = class_element_access %.loc21_20.2, element0
|
||||
// CHECK:STDOUT: %.loc21_10: type = splice_block %i32.loc21 [template = constants.%i32] {
|
||||
// CHECK:STDOUT: %int_32.loc21: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc21: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: %.loc21_10: type = splice_block %i32.loc21 [concrete = constants.%i32] {
|
||||
// CHECK:STDOUT: %int_32.loc21: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc21: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %a: ref %i32 = bind_name a, %.loc21_21
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
@@ -256,19 +256,19 @@ class X(U:! type) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %b.var: ref %i32 = var b
|
||||
// CHECK:STDOUT: %c.ref: %C = name_ref c, %c
|
||||
// CHECK:STDOUT: %.loc22_17: %HasF.assoc_type.dc4 = specific_constant @HasF.%assoc0.loc5_14.1, @HasF(constants.%Param) [template = constants.%assoc0.a6b]
|
||||
// CHECK:STDOUT: %F.ref.loc22: %HasF.assoc_type.dc4 = name_ref F, %.loc22_17 [template = constants.%assoc0.a6b]
|
||||
// CHECK:STDOUT: %impl.elem0.loc22: %.da8 = impl_witness_access constants.%impl_witness.9bf, element0 [template = constants.%F.901]
|
||||
// CHECK:STDOUT: %.loc22_17: %HasF.assoc_type.dc4 = specific_constant @HasF.%assoc0.loc5_14.1, @HasF(constants.%Param) [concrete = constants.%assoc0.a6b]
|
||||
// CHECK:STDOUT: %F.ref.loc22: %HasF.assoc_type.dc4 = name_ref F, %.loc22_17 [concrete = constants.%assoc0.a6b]
|
||||
// CHECK:STDOUT: %impl.elem0.loc22: %.da8 = impl_witness_access constants.%impl_witness.9bf, element0 [concrete = constants.%F.901]
|
||||
// CHECK:STDOUT: %.loc22_20.1: ref %Param = temporary_storage
|
||||
// CHECK:STDOUT: %F.call.loc22: init %Param = call %impl.elem0.loc22() to %.loc22_20.1
|
||||
// CHECK:STDOUT: %.loc22_20.2: ref %Param = temporary %.loc22_20.1, %F.call.loc22
|
||||
// CHECK:STDOUT: %x.ref.loc22: %Param.elem = name_ref x, @Param.%.loc9_8 [template = @Param.%.loc9_8]
|
||||
// CHECK:STDOUT: %x.ref.loc22: %Param.elem = name_ref x, @Param.%.loc9_8 [concrete = @Param.%.loc9_8]
|
||||
// CHECK:STDOUT: %.loc22_21.1: ref %i32 = class_element_access %.loc22_20.2, element0
|
||||
// CHECK:STDOUT: %.loc22_21.2: %i32 = bind_value %.loc22_21.1
|
||||
// CHECK:STDOUT: assign %b.var, %.loc22_21.2
|
||||
// CHECK:STDOUT: %.loc22_10: type = splice_block %i32.loc22 [template = constants.%i32] {
|
||||
// CHECK:STDOUT: %int_32.loc22: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc22: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: %.loc22_10: type = splice_block %i32.loc22 [concrete = constants.%i32] {
|
||||
// CHECK:STDOUT: %int_32.loc22: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc22: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var
|
||||
// CHECK:STDOUT: return
|
||||
@@ -307,8 +307,8 @@ class X(U:! type) {
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %I.type.dac: type = generic_interface_type @I [template]
|
||||
// CHECK:STDOUT: %I.generic: %I.type.dac = struct_value () [template]
|
||||
// CHECK:STDOUT: %I.type.dac: type = generic_interface_type @I [concrete]
|
||||
// CHECK:STDOUT: %I.generic: %I.type.dac = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %I.type.325e65.1: type = facet_type <@I, @I(%T)> [symbolic]
|
||||
// CHECK:STDOUT: %Self: %I.type.325e65.1 = bind_symbolic_name Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic]
|
||||
@@ -318,8 +318,8 @@ class X(U:! type) {
|
||||
// CHECK:STDOUT: %assoc0.fef501.1: %I.assoc_type.955255.1 = assoc_entity element0, @I.%F.decl [symbolic]
|
||||
// CHECK:STDOUT: %U: type = bind_symbolic_name U, 0 [symbolic]
|
||||
// CHECK:STDOUT: %U.patt: type = symbolic_binding_pattern U, 0 [symbolic]
|
||||
// CHECK:STDOUT: %X.type: type = generic_class_type @X [template]
|
||||
// CHECK:STDOUT: %X.generic: %X.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %X.type: type = generic_class_type @X [concrete]
|
||||
// CHECK:STDOUT: %X.generic: %X.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %X: type = class_type @X, @X(%U) [symbolic]
|
||||
// CHECK:STDOUT: %I.type.325e65.2: type = facet_type <@I, @I(%U)> [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.cfe: <witness> = require_complete_type %I.type.325e65.2 [symbolic]
|
||||
@@ -331,34 +331,34 @@ class X(U:! type) {
|
||||
// CHECK:STDOUT: %F.type.e88: type = fn_type @F.2, @impl(%U) [symbolic]
|
||||
// CHECK:STDOUT: %F.b02: %F.type.e88 = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %I.facet: %I.type.325e65.2 = facet_value %X, %impl_witness [symbolic]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %require_complete.441: <witness> = require_complete_type %X [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.4ae: <witness> = require_complete_type %U [symbolic]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Core = imports.%Core
|
||||
// CHECK:STDOUT: .I = %I.decl
|
||||
// CHECK:STDOUT: .X = %X.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %I.decl: %I.type.dac = interface_decl @I [template = constants.%I.generic] {
|
||||
// CHECK:STDOUT: %I.decl: %I.type.dac = interface_decl @I [concrete = constants.%I.generic] {
|
||||
// CHECK:STDOUT: %T.patt.loc4_13.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_13.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc4_13.1, runtime_param<none> [symbolic = %T.patt.loc4_13.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.param: type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %T.loc4_13.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_13.2 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %X.decl: %X.type = class_decl @X [template = constants.%X.generic] {
|
||||
// CHECK:STDOUT: %X.decl: %X.type = class_decl @X [concrete = constants.%X.generic] {
|
||||
// CHECK:STDOUT: %U.patt.loc8_9.1: type = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc8_9.2 (constants.%U.patt)]
|
||||
// CHECK:STDOUT: %U.param_patt: type = value_param_pattern %U.patt.loc8_9.1, runtime_param<none> [symbolic = %U.patt.loc8_9.2 (constants.%U.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
@@ -451,15 +451,15 @@ class X(U:! type) {
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(%U.loc8_9.2)> [symbolic = %I.type (constants.%I.type.325e65.2)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class {
|
||||
// CHECK:STDOUT: impl_decl @impl [template] {} {
|
||||
// CHECK:STDOUT: impl_decl @impl [concrete] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%X [symbolic = %X (constants.%X)]
|
||||
// CHECK:STDOUT: %I.ref: %I.type.dac = name_ref I, file.%I.decl [template = constants.%I.generic]
|
||||
// CHECK:STDOUT: %I.ref: %I.type.dac = name_ref I, file.%I.decl [concrete = constants.%I.generic]
|
||||
// CHECK:STDOUT: %U.ref: type = name_ref U, @X.%U.loc8_9.1 [symbolic = %U (constants.%U)]
|
||||
// CHECK:STDOUT: %I.type.loc9_21.1: type = facet_type <@I, @I(constants.%U)> [symbolic = %I.type.loc9_21.2 (constants.%I.type.325e65.2)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%F.decl), @impl(constants.%U) [symbolic = @impl.%impl_witness (constants.%impl_witness)]
|
||||
// CHECK:STDOUT: %.loc9: type = specific_constant @impl.%I.type.loc9_21.1, @impl(constants.%U) [symbolic = %I.type (constants.%I.type.325e65.2)]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
|
||||
+33
-33
@@ -27,26 +27,26 @@ fn InstanceCall(n: i32) {
|
||||
// CHECK:STDOUT: --- fail_call_invalid.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %Simple.type: type = facet_type <@Simple> [template]
|
||||
// CHECK:STDOUT: %Simple.type: type = facet_type <@Simple> [concrete]
|
||||
// CHECK:STDOUT: %Self.3c9: %Simple.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Self.as_type.716: type = facet_access_type %Self.3c9 [symbolic]
|
||||
// CHECK:STDOUT: %G.type.b60: type = fn_type @G.1 [template]
|
||||
// CHECK:STDOUT: %G.cb0: %G.type.b60 = struct_value () [template]
|
||||
// CHECK:STDOUT: %Simple.assoc_type: type = assoc_entity_type %Simple.type [template]
|
||||
// CHECK:STDOUT: %assoc0.45f: %Simple.assoc_type = assoc_entity element0, @Simple.%G.decl [template]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template]
|
||||
// CHECK:STDOUT: %impl_witness.85b: <witness> = impl_witness (<error>) [template]
|
||||
// CHECK:STDOUT: %G.type.c98: type = fn_type @G.2 [template]
|
||||
// CHECK:STDOUT: %G.e73: %G.type.c98 = struct_value () [template]
|
||||
// CHECK:STDOUT: %Simple.facet: %Simple.type = facet_value %i32, %impl_witness.85b [template]
|
||||
// CHECK:STDOUT: %InstanceCall.type: type = fn_type @InstanceCall [template]
|
||||
// CHECK:STDOUT: %InstanceCall: %InstanceCall.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.eac: type = fn_type_with_self_type %G.type.b60, %Simple.facet [template]
|
||||
// CHECK:STDOUT: %G.type.b60: type = fn_type @G.1 [concrete]
|
||||
// CHECK:STDOUT: %G.cb0: %G.type.b60 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Simple.assoc_type: type = assoc_entity_type %Simple.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0.45f: %Simple.assoc_type = assoc_entity element0, @Simple.%G.decl [concrete]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %impl_witness.85b: <witness> = impl_witness (<error>) [concrete]
|
||||
// CHECK:STDOUT: %G.type.c98: type = fn_type @G.2 [concrete]
|
||||
// CHECK:STDOUT: %G.e73: %G.type.c98 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Simple.facet: %Simple.type = facet_value %i32, %impl_witness.85b [concrete]
|
||||
// CHECK:STDOUT: %InstanceCall.type: type = fn_type @InstanceCall [concrete]
|
||||
// CHECK:STDOUT: %InstanceCall: %InstanceCall.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %.eac: type = fn_type_with_self_type %G.type.b60, %Simple.facet [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
|
||||
// CHECK:STDOUT: .Int = %Core.Int
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
@@ -54,27 +54,27 @@ fn InstanceCall(n: i32) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Core = imports.%Core
|
||||
// CHECK:STDOUT: .Simple = %Simple.decl
|
||||
// CHECK:STDOUT: .InstanceCall = %InstanceCall.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %Simple.decl: type = interface_decl @Simple [template = constants.%Simple.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl.1 [template] {} {
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: %Simple.ref: type = name_ref Simple, file.%Simple.decl [template = constants.%Simple.type]
|
||||
// CHECK:STDOUT: %Simple.decl: type = interface_decl @Simple [concrete = constants.%Simple.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl.1 [concrete] {} {
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %Simple.ref: type = name_ref Simple, file.%Simple.decl [concrete = constants.%Simple.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (<error>) [template = constants.%impl_witness.85b]
|
||||
// CHECK:STDOUT: %InstanceCall.decl: %InstanceCall.type = fn_decl @InstanceCall [template = constants.%InstanceCall] {
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (<error>) [concrete = constants.%impl_witness.85b]
|
||||
// CHECK:STDOUT: %InstanceCall.decl: %InstanceCall.type = fn_decl @InstanceCall [concrete = constants.%InstanceCall] {
|
||||
// CHECK:STDOUT: %n.patt: %i32 = binding_pattern n
|
||||
// CHECK:STDOUT: %n.param_patt: %i32 = value_param_pattern %n.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %n.param: %i32 = value_param runtime_param0
|
||||
// CHECK:STDOUT: %.loc23: type = splice_block %i32 [template = constants.%i32] {
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: %.loc23: type = splice_block %i32 [concrete = constants.%i32] {
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %n: %i32 = bind_name n, %n.param
|
||||
// CHECK:STDOUT: }
|
||||
@@ -82,7 +82,7 @@ fn InstanceCall(n: i32) {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @Simple {
|
||||
// CHECK:STDOUT: %Self: %Simple.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.3c9]
|
||||
// CHECK:STDOUT: %G.decl: %G.type.b60 = fn_decl @G.1 [template = constants.%G.cb0] {
|
||||
// CHECK:STDOUT: %G.decl: %G.type.b60 = fn_decl @G.1 [concrete = constants.%G.cb0] {
|
||||
// CHECK:STDOUT: %self.patt: @G.1.%Self.as_type.loc12_14.1 (%Self.as_type.716) = binding_pattern self
|
||||
// CHECK:STDOUT: %self.param_patt: @G.1.%Self.as_type.loc12_14.1 (%Self.as_type.716) = value_param_pattern %self.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
@@ -94,7 +94,7 @@ fn InstanceCall(n: i32) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %self: @G.1.%Self.as_type.loc12_14.1 (%Self.as_type.716) = bind_name self, %self.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %assoc0: %Simple.assoc_type = assoc_entity element0, %G.decl [template = constants.%assoc0.45f]
|
||||
// CHECK:STDOUT: %assoc0: %Simple.assoc_type = assoc_entity element0, %G.decl [concrete = constants.%assoc0.45f]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -103,12 +103,12 @@ fn InstanceCall(n: i32) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl.1: %i32 as %Simple.ref {
|
||||
// CHECK:STDOUT: %G.decl: %G.type.c98 = fn_decl @G.2 [template = constants.%G.e73] {
|
||||
// CHECK:STDOUT: %G.decl: %G.type.c98 = fn_decl @G.2 [concrete = constants.%G.e73] {
|
||||
// CHECK:STDOUT: %self.patt: <error> = binding_pattern self
|
||||
// CHECK:STDOUT: %self.param_patt: <error> = value_param_pattern %self.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %self.param: <error> = value_param runtime_param0
|
||||
// CHECK:STDOUT: %Undeclared.ref: <error> = name_ref Undeclared, <error> [template = <error>]
|
||||
// CHECK:STDOUT: %Undeclared.ref: <error> = name_ref Undeclared, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %self: <error> = bind_name self, %self.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -129,9 +129,9 @@ fn InstanceCall(n: i32) {
|
||||
// CHECK:STDOUT: fn @InstanceCall(%n.param_patt: %i32) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %n.ref: %i32 = name_ref n, %n
|
||||
// CHECK:STDOUT: %Simple.ref: type = name_ref Simple, file.%Simple.decl [template = constants.%Simple.type]
|
||||
// CHECK:STDOUT: %G.ref: %Simple.assoc_type = name_ref G, @Simple.%assoc0 [template = constants.%assoc0.45f]
|
||||
// CHECK:STDOUT: %impl.elem0: %.eac = impl_witness_access constants.%impl_witness.85b, element0 [template = <error>]
|
||||
// CHECK:STDOUT: %Simple.ref: type = name_ref Simple, file.%Simple.decl [concrete = constants.%Simple.type]
|
||||
// CHECK:STDOUT: %G.ref: %Simple.assoc_type = name_ref G, @Simple.%assoc0 [concrete = constants.%assoc0.45f]
|
||||
// CHECK:STDOUT: %impl.elem0: %.eac = impl_witness_access constants.%impl_witness.85b, element0 [concrete = <error>]
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+13
-13
@@ -27,46 +27,46 @@ class C {
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %GenericInterface.type.c92: type = generic_interface_type @GenericInterface [template]
|
||||
// CHECK:STDOUT: %GenericInterface.generic: %GenericInterface.type.c92 = struct_value () [template]
|
||||
// CHECK:STDOUT: %GenericInterface.type.c92: type = generic_interface_type @GenericInterface [concrete]
|
||||
// CHECK:STDOUT: %GenericInterface.generic: %GenericInterface.type.c92 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %GenericInterface.type.3fe: type = facet_type <@GenericInterface, @GenericInterface(%T)> [symbolic]
|
||||
// CHECK:STDOUT: %Self: %GenericInterface.type.3fe = bind_symbolic_name Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: %F.type.a4b: type = fn_type @F.1, @GenericInterface(%T) [symbolic]
|
||||
// CHECK:STDOUT: %F.3d9: %F.type.a4b = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %GenericInterface.assoc_type: type = assoc_entity_type %GenericInterface.type.3fe [symbolic]
|
||||
// CHECK:STDOUT: %assoc0: %GenericInterface.assoc_type = assoc_entity element0, @GenericInterface.%F.decl [symbolic]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [template]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [concrete]
|
||||
// CHECK:STDOUT: %require_complete.70f: <witness> = require_complete_type %GenericInterface.type.3fe [symbolic]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (invalid), @impl(%T) [symbolic]
|
||||
// CHECK:STDOUT: %F.type.2cb: type = fn_type @F.2, @impl(%T) [symbolic]
|
||||
// CHECK:STDOUT: %F.4b1: %F.type.2cb = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %require_complete.4ae: <witness> = require_complete_type %T [symbolic]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Core = imports.%Core
|
||||
// CHECK:STDOUT: .GenericInterface = %GenericInterface.decl
|
||||
// CHECK:STDOUT: .C = %C.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %GenericInterface.decl: %GenericInterface.type.c92 = interface_decl @GenericInterface [template = constants.%GenericInterface.generic] {
|
||||
// CHECK:STDOUT: %GenericInterface.decl: %GenericInterface.type.c92 = interface_decl @GenericInterface [concrete = constants.%GenericInterface.generic] {
|
||||
// CHECK:STDOUT: %T.patt.loc11_28.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc11_28.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc11_28.1, runtime_param<none> [symbolic = %T.patt.loc11_28.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.param: type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %T.loc11_28.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc11_28.2 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic interface @GenericInterface(%T.loc11_28.1: type) {
|
||||
@@ -128,12 +128,12 @@ class C {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @C {
|
||||
// CHECK:STDOUT: impl_decl @impl [template] {
|
||||
// CHECK:STDOUT: impl_decl @impl [concrete] {
|
||||
// CHECK:STDOUT: %T.patt.loc20_23.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc20_23.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc20_23.1, runtime_param<none> [symbolic = %T.patt.loc20_23.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [template = constants.%C]
|
||||
// CHECK:STDOUT: %GenericInterface.ref: %GenericInterface.type.c92 = name_ref GenericInterface, file.%GenericInterface.decl [template = constants.%GenericInterface.generic]
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %GenericInterface.ref: %GenericInterface.type.c92 = name_ref GenericInterface, file.%GenericInterface.decl [concrete = constants.%GenericInterface.generic]
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc20_23.1 [symbolic = %T.loc20_23.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %GenericInterface.type.loc20_54.1: type = facet_type <@GenericInterface, @GenericInterface(constants.%T)> [symbolic = %GenericInterface.type.loc20_54.2 (constants.%GenericInterface.type.3fe)]
|
||||
// CHECK:STDOUT: %T.param: type = value_param runtime_param<none>
|
||||
@@ -141,7 +141,7 @@ class C {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (invalid), @impl(constants.%T) [symbolic = @impl.%impl_witness (constants.%impl_witness)]
|
||||
// CHECK:STDOUT: %.loc20: type = specific_constant @impl.%GenericInterface.type.loc20_54.1, @impl(constants.%T) [symbolic = constants.%GenericInterface.type.3fe]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
|
||||
+31
-31
@@ -47,20 +47,20 @@ class E {
|
||||
// CHECK:STDOUT: --- fail_extend_impl_type_as.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [template]
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete]
|
||||
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [template]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %complete_type.357: <witness> = complete_type_witness %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %D: type = class_type @D [template]
|
||||
// CHECK:STDOUT: %E: type = class_type @E [template]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [concrete]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type.357: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %D: type = class_type @D [concrete]
|
||||
// CHECK:STDOUT: %E: type = class_type @E [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
|
||||
// CHECK:STDOUT: .Int = %Core.Int
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
@@ -68,7 +68,7 @@ class E {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Core = imports.%Core
|
||||
// CHECK:STDOUT: .I = %I.decl
|
||||
// CHECK:STDOUT: .C = %C.decl
|
||||
@@ -76,10 +76,10 @@ class E {
|
||||
// CHECK:STDOUT: .E = %E.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [template = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %D.decl: type = class_decl @D [template = constants.%D] {} {}
|
||||
// CHECK:STDOUT: %E.decl: type = class_decl @E [template = constants.%E] {} {}
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %D.decl: type = class_decl @D [concrete = constants.%D] {} {}
|
||||
// CHECK:STDOUT: %E.decl: type = class_decl @E [concrete = constants.%E] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @I {
|
||||
@@ -103,13 +103,13 @@ class E {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @C {
|
||||
// CHECK:STDOUT: impl_decl @impl.1 [template] {} {
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type]
|
||||
// CHECK:STDOUT: impl_decl @impl.1 [concrete] {} {
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [template = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [concrete = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -118,12 +118,12 @@ class E {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @D {
|
||||
// CHECK:STDOUT: impl_decl @impl.2 [template] {} {
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [template = constants.%D]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type]
|
||||
// CHECK:STDOUT: impl_decl @impl.2 [concrete] {} {
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [template = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [concrete = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -132,12 +132,12 @@ class E {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @E {
|
||||
// CHECK:STDOUT: impl_decl @impl.3 [template] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%E [template = constants.%E]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type]
|
||||
// CHECK:STDOUT: impl_decl @impl.3 [concrete] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%E [concrete = constants.%E]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [template = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [concrete = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
|
||||
+13
-13
@@ -27,15 +27,15 @@ class C {
|
||||
// CHECK:STDOUT: --- fail_extend_non_interface.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %C: type = class_type @C [template]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %complete_type.357: <witness> = complete_type_witness %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [concrete]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type.357: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
|
||||
// CHECK:STDOUT: .Int = %Core.Int
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
@@ -43,23 +43,23 @@ class C {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Core = imports.%Core
|
||||
// CHECK:STDOUT: .C = %C.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl: %Self.ref as %i32;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @C {
|
||||
// CHECK:STDOUT: impl_decl @impl [template] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [template = constants.%C]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: impl_decl @impl [concrete] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
|
||||
+12
-12
@@ -28,33 +28,33 @@ interface I {
|
||||
// CHECK:STDOUT: --- fail_extend_partially_defined_interface.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [template]
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete]
|
||||
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %C.f28: type = class_type @C [template]
|
||||
// CHECK:STDOUT: %C.f28: type = class_type @C [concrete]
|
||||
// CHECK:STDOUT: %C.6b4: type = class_type @C, @C(%Self) [symbolic]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Core = imports.%Core
|
||||
// CHECK:STDOUT: .I = %I.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [template = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @I {
|
||||
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self]
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C.f28] {} {}
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C.f28] {} {}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -73,12 +73,12 @@ interface I {
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class {
|
||||
// CHECK:STDOUT: impl_decl @impl [template] {} {
|
||||
// CHECK:STDOUT: impl_decl @impl [concrete] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C.6b4 [symbolic = %C (constants.%C.6b4)]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc24: type = specific_constant @impl.%I.ref, @impl(constants.%Self) [template = constants.%I.type]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %.loc24: type = specific_constant @impl.%I.ref, @impl(constants.%Self) [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
|
||||
@@ -53,37 +53,37 @@ fn F(c: C) {
|
||||
// CHECK:STDOUT: --- fail_extend_undefined_interface.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [template]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Core = imports.%Core
|
||||
// CHECK:STDOUT: .I = %I.decl
|
||||
// CHECK:STDOUT: .C = %C.decl
|
||||
// CHECK:STDOUT: .F = %F.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [template = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {
|
||||
// CHECK:STDOUT: %c.patt: %C = binding_pattern c
|
||||
// CHECK:STDOUT: %c.param_patt: %C = value_param_pattern %c.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %c.param: %C = value_param runtime_param0
|
||||
// CHECK:STDOUT: %C.ref.loc24: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %C.ref.loc24: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %c: %C = bind_name c, %c.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -93,11 +93,11 @@ fn F(c: C) {
|
||||
// CHECK:STDOUT: impl @impl: %Self.ref as %I.ref;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @C {
|
||||
// CHECK:STDOUT: impl_decl @impl [template] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [template = constants.%C]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type]
|
||||
// CHECK:STDOUT: impl_decl @impl [concrete] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -108,10 +108,10 @@ fn F(c: C) {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @F(%c.param_patt: %C) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %C.ref.loc35: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %F.ref.loc35: <error> = name_ref F, <error> [template = <error>]
|
||||
// CHECK:STDOUT: %C.ref.loc35: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %F.ref.loc35: <error> = name_ref F, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %c.ref: %C = name_ref c, %c
|
||||
// CHECK:STDOUT: %F.ref.loc50: <error> = name_ref F, <error> [template = <error>]
|
||||
// CHECK:STDOUT: %F.ref.loc50: <error> = name_ref F, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+14
-14
@@ -45,20 +45,20 @@ fn Function() {
|
||||
// CHECK:STDOUT: --- fail_global.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %Simple.type: type = facet_type <@Simple> [template]
|
||||
// CHECK:STDOUT: %Simple.type: type = facet_type <@Simple> [concrete]
|
||||
// CHECK:STDOUT: %Self: %Simple.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %Simple.assoc_type: type = assoc_entity_type %Simple.type [template]
|
||||
// CHECK:STDOUT: %assoc0: %Simple.assoc_type = assoc_entity element0, @Simple.%F.decl [template]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Simple.assoc_type: type = assoc_entity_type %Simple.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0: %Simple.assoc_type = assoc_entity element0, @Simple.%F.decl [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @Simple {
|
||||
// CHECK:STDOUT: %Self: %Simple.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self]
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %Simple.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %Simple.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -75,20 +75,20 @@ fn Function() {
|
||||
// CHECK:STDOUT: --- fail_function.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %Simple.type: type = facet_type <@Simple> [template]
|
||||
// CHECK:STDOUT: %Simple.type: type = facet_type <@Simple> [concrete]
|
||||
// CHECK:STDOUT: %Self: %Simple.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %Simple.assoc_type: type = assoc_entity_type %Simple.type [template]
|
||||
// CHECK:STDOUT: %assoc0: %Simple.assoc_type = assoc_entity element0, @Simple.%F.decl [template]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Simple.assoc_type: type = assoc_entity_type %Simple.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0: %Simple.assoc_type = assoc_entity element0, @Simple.%F.decl [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @Simple {
|
||||
// CHECK:STDOUT: %Self: %Simple.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self]
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %Simple.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %Simple.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
|
||||
+322
-322
@@ -217,120 +217,120 @@ class SelfNestedBadReturnType {
|
||||
// CHECK:STDOUT: --- fail_impl_bad_assoc_fn.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [template]
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete]
|
||||
// CHECK:STDOUT: %Self.826: %I.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %F.type.cf0: type = fn_type @F.1 [template]
|
||||
// CHECK:STDOUT: %F.bc6: %F.type.cf0 = struct_value () [template]
|
||||
// CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type %I.type [template]
|
||||
// CHECK:STDOUT: %assoc0.a5e: %I.assoc_type = assoc_entity element0, @I.%F.decl [template]
|
||||
// CHECK:STDOUT: %NoF: type = class_type @NoF [template]
|
||||
// CHECK:STDOUT: %impl_witness.85bcb7.1: <witness> = impl_witness (<error>) [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %complete_type.357: <witness> = complete_type_witness %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %FNotFunction: type = class_type @FNotFunction [template]
|
||||
// CHECK:STDOUT: %impl_witness.85bcb7.2: <witness> = impl_witness (<error>) [template]
|
||||
// CHECK:STDOUT: %F.70c: type = class_type @F.16 [template]
|
||||
// CHECK:STDOUT: %PossiblyF.type: type = fn_type @PossiblyF [template]
|
||||
// CHECK:STDOUT: %PossiblyF: %PossiblyF.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %FAlias: type = class_type @FAlias [template]
|
||||
// CHECK:STDOUT: %impl_witness.85bcb7.3: <witness> = impl_witness (<error>) [template]
|
||||
// CHECK:STDOUT: %FExtraParam: type = class_type @FExtraParam [template]
|
||||
// CHECK:STDOUT: %impl_witness.85bcb7.4: <witness> = impl_witness (<error>) [template]
|
||||
// CHECK:STDOUT: %Bool.type: type = fn_type @Bool [template]
|
||||
// CHECK:STDOUT: %Bool: %Bool.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %F.type.44e: type = fn_type @F.2 [template]
|
||||
// CHECK:STDOUT: %F.424: %F.type.44e = struct_value () [template]
|
||||
// CHECK:STDOUT: %I.facet.3bf: %I.type = facet_value %FExtraParam, %impl_witness.85bcb7.4 [template]
|
||||
// CHECK:STDOUT: %FExtraImplicitParam: type = class_type @FExtraImplicitParam [template]
|
||||
// CHECK:STDOUT: %impl_witness.85bcb7.5: <witness> = impl_witness (<error>) [template]
|
||||
// CHECK:STDOUT: %F.type.e1a: type = fn_type @F.3 [template]
|
||||
// CHECK:STDOUT: %F.6ff: %F.type.e1a = struct_value () [template]
|
||||
// CHECK:STDOUT: %I.facet.33b: %I.type = facet_value %FExtraImplicitParam, %impl_witness.85bcb7.5 [template]
|
||||
// CHECK:STDOUT: %FExtraReturnType: type = class_type @FExtraReturnType [template]
|
||||
// CHECK:STDOUT: %impl_witness.85bcb7.6: <witness> = impl_witness (<error>) [template]
|
||||
// CHECK:STDOUT: %F.type.387: type = fn_type @F.4 [template]
|
||||
// CHECK:STDOUT: %F.df5: %F.type.387 = struct_value () [template]
|
||||
// CHECK:STDOUT: %I.facet.fad: %I.type = facet_value %FExtraReturnType, %impl_witness.85bcb7.6 [template]
|
||||
// CHECK:STDOUT: %J.type: type = facet_type <@J> [template]
|
||||
// CHECK:STDOUT: %F.type.cf0: type = fn_type @F.1 [concrete]
|
||||
// CHECK:STDOUT: %F.bc6: %F.type.cf0 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type %I.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0.a5e: %I.assoc_type = assoc_entity element0, @I.%F.decl [concrete]
|
||||
// CHECK:STDOUT: %NoF: type = class_type @NoF [concrete]
|
||||
// CHECK:STDOUT: %impl_witness.85bcb7.1: <witness> = impl_witness (<error>) [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type.357: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %FNotFunction: type = class_type @FNotFunction [concrete]
|
||||
// CHECK:STDOUT: %impl_witness.85bcb7.2: <witness> = impl_witness (<error>) [concrete]
|
||||
// CHECK:STDOUT: %F.70c: type = class_type @F.16 [concrete]
|
||||
// CHECK:STDOUT: %PossiblyF.type: type = fn_type @PossiblyF [concrete]
|
||||
// CHECK:STDOUT: %PossiblyF: %PossiblyF.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %FAlias: type = class_type @FAlias [concrete]
|
||||
// CHECK:STDOUT: %impl_witness.85bcb7.3: <witness> = impl_witness (<error>) [concrete]
|
||||
// CHECK:STDOUT: %FExtraParam: type = class_type @FExtraParam [concrete]
|
||||
// CHECK:STDOUT: %impl_witness.85bcb7.4: <witness> = impl_witness (<error>) [concrete]
|
||||
// CHECK:STDOUT: %Bool.type: type = fn_type @Bool [concrete]
|
||||
// CHECK:STDOUT: %Bool: %Bool.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %F.type.44e: type = fn_type @F.2 [concrete]
|
||||
// CHECK:STDOUT: %F.424: %F.type.44e = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %I.facet.3bf: %I.type = facet_value %FExtraParam, %impl_witness.85bcb7.4 [concrete]
|
||||
// CHECK:STDOUT: %FExtraImplicitParam: type = class_type @FExtraImplicitParam [concrete]
|
||||
// CHECK:STDOUT: %impl_witness.85bcb7.5: <witness> = impl_witness (<error>) [concrete]
|
||||
// CHECK:STDOUT: %F.type.e1a: type = fn_type @F.3 [concrete]
|
||||
// CHECK:STDOUT: %F.6ff: %F.type.e1a = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %I.facet.33b: %I.type = facet_value %FExtraImplicitParam, %impl_witness.85bcb7.5 [concrete]
|
||||
// CHECK:STDOUT: %FExtraReturnType: type = class_type @FExtraReturnType [concrete]
|
||||
// CHECK:STDOUT: %impl_witness.85bcb7.6: <witness> = impl_witness (<error>) [concrete]
|
||||
// CHECK:STDOUT: %F.type.387: type = fn_type @F.4 [concrete]
|
||||
// CHECK:STDOUT: %F.df5: %F.type.387 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %I.facet.fad: %I.type = facet_value %FExtraReturnType, %impl_witness.85bcb7.6 [concrete]
|
||||
// CHECK:STDOUT: %J.type: type = facet_type <@J> [concrete]
|
||||
// CHECK:STDOUT: %Self.ccd: %J.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %F.type.c14: type = fn_type @F.5 [template]
|
||||
// CHECK:STDOUT: %F.b71: %F.type.c14 = struct_value () [template]
|
||||
// CHECK:STDOUT: %J.assoc_type: type = assoc_entity_type %J.type [template]
|
||||
// CHECK:STDOUT: %assoc0.ebc: %J.assoc_type = assoc_entity element0, @J.%F.decl [template]
|
||||
// CHECK:STDOUT: %FMissingParam: type = class_type @FMissingParam [template]
|
||||
// CHECK:STDOUT: %impl_witness.85bcb7.7: <witness> = impl_witness (<error>) [template]
|
||||
// CHECK:STDOUT: %F.type.695: type = fn_type @F.6 [template]
|
||||
// CHECK:STDOUT: %F.738: %F.type.695 = struct_value () [template]
|
||||
// CHECK:STDOUT: %J.facet.515: %J.type = facet_value %FMissingParam, %impl_witness.85bcb7.7 [template]
|
||||
// CHECK:STDOUT: %FMissingImplicitParam: type = class_type @FMissingImplicitParam [template]
|
||||
// CHECK:STDOUT: %impl_witness.85bcb7.8: <witness> = impl_witness (<error>) [template]
|
||||
// CHECK:STDOUT: %F.type.d97: type = fn_type @F.7 [template]
|
||||
// CHECK:STDOUT: %F.01d: %F.type.d97 = struct_value () [template]
|
||||
// CHECK:STDOUT: %J.facet.f88: %J.type = facet_value %FMissingImplicitParam, %impl_witness.85bcb7.8 [template]
|
||||
// CHECK:STDOUT: %FMissingReturnType: type = class_type @FMissingReturnType [template]
|
||||
// CHECK:STDOUT: %impl_witness.85bcb7.9: <witness> = impl_witness (<error>) [template]
|
||||
// CHECK:STDOUT: %F.type.123: type = fn_type @F.8 [template]
|
||||
// CHECK:STDOUT: %F.c7d: %F.type.123 = struct_value () [template]
|
||||
// CHECK:STDOUT: %J.facet.43b: %J.type = facet_value %FMissingReturnType, %impl_witness.85bcb7.9 [template]
|
||||
// CHECK:STDOUT: %FDifferentParamType: type = class_type @FDifferentParamType [template]
|
||||
// CHECK:STDOUT: %impl_witness.85bcb7.10: <witness> = impl_witness (<error>) [template]
|
||||
// CHECK:STDOUT: %F.type.6b5: type = fn_type @F.9 [template]
|
||||
// CHECK:STDOUT: %F.043: %F.type.6b5 = struct_value () [template]
|
||||
// CHECK:STDOUT: %J.facet.9b0: %J.type = facet_value %FDifferentParamType, %impl_witness.85bcb7.10 [template]
|
||||
// CHECK:STDOUT: %FDifferentImplicitParamType: type = class_type @FDifferentImplicitParamType [template]
|
||||
// CHECK:STDOUT: %impl_witness.85bcb7.11: <witness> = impl_witness (<error>) [template]
|
||||
// CHECK:STDOUT: %F.type.d62: type = fn_type @F.10 [template]
|
||||
// CHECK:STDOUT: %F.886: %F.type.d62 = struct_value () [template]
|
||||
// CHECK:STDOUT: %J.facet.4bb: %J.type = facet_value %FDifferentImplicitParamType, %impl_witness.85bcb7.11 [template]
|
||||
// CHECK:STDOUT: %FDifferentReturnType: type = class_type @FDifferentReturnType [template]
|
||||
// CHECK:STDOUT: %impl_witness.85bcb7.12: <witness> = impl_witness (<error>) [template]
|
||||
// CHECK:STDOUT: %F.type.d3b: type = fn_type @F.11 [template]
|
||||
// CHECK:STDOUT: %F.be8: %F.type.d3b = struct_value () [template]
|
||||
// CHECK:STDOUT: %J.facet.5c7: %J.type = facet_value %FDifferentReturnType, %impl_witness.85bcb7.12 [template]
|
||||
// CHECK:STDOUT: %FDifferentParamName: type = class_type @FDifferentParamName [template]
|
||||
// CHECK:STDOUT: %impl_witness.85bcb7.13: <witness> = impl_witness (<error>) [template]
|
||||
// CHECK:STDOUT: %F.type.d19: type = fn_type @F.12 [template]
|
||||
// CHECK:STDOUT: %F.669: %F.type.d19 = struct_value () [template]
|
||||
// CHECK:STDOUT: %J.facet.daf: %J.type = facet_value %FDifferentParamName, %impl_witness.85bcb7.13 [template]
|
||||
// CHECK:STDOUT: %SelfNested.type: type = facet_type <@SelfNested> [template]
|
||||
// CHECK:STDOUT: %F.type.c14: type = fn_type @F.5 [concrete]
|
||||
// CHECK:STDOUT: %F.b71: %F.type.c14 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %J.assoc_type: type = assoc_entity_type %J.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0.ebc: %J.assoc_type = assoc_entity element0, @J.%F.decl [concrete]
|
||||
// CHECK:STDOUT: %FMissingParam: type = class_type @FMissingParam [concrete]
|
||||
// CHECK:STDOUT: %impl_witness.85bcb7.7: <witness> = impl_witness (<error>) [concrete]
|
||||
// CHECK:STDOUT: %F.type.695: type = fn_type @F.6 [concrete]
|
||||
// CHECK:STDOUT: %F.738: %F.type.695 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %J.facet.515: %J.type = facet_value %FMissingParam, %impl_witness.85bcb7.7 [concrete]
|
||||
// CHECK:STDOUT: %FMissingImplicitParam: type = class_type @FMissingImplicitParam [concrete]
|
||||
// CHECK:STDOUT: %impl_witness.85bcb7.8: <witness> = impl_witness (<error>) [concrete]
|
||||
// CHECK:STDOUT: %F.type.d97: type = fn_type @F.7 [concrete]
|
||||
// CHECK:STDOUT: %F.01d: %F.type.d97 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %J.facet.f88: %J.type = facet_value %FMissingImplicitParam, %impl_witness.85bcb7.8 [concrete]
|
||||
// CHECK:STDOUT: %FMissingReturnType: type = class_type @FMissingReturnType [concrete]
|
||||
// CHECK:STDOUT: %impl_witness.85bcb7.9: <witness> = impl_witness (<error>) [concrete]
|
||||
// CHECK:STDOUT: %F.type.123: type = fn_type @F.8 [concrete]
|
||||
// CHECK:STDOUT: %F.c7d: %F.type.123 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %J.facet.43b: %J.type = facet_value %FMissingReturnType, %impl_witness.85bcb7.9 [concrete]
|
||||
// CHECK:STDOUT: %FDifferentParamType: type = class_type @FDifferentParamType [concrete]
|
||||
// CHECK:STDOUT: %impl_witness.85bcb7.10: <witness> = impl_witness (<error>) [concrete]
|
||||
// CHECK:STDOUT: %F.type.6b5: type = fn_type @F.9 [concrete]
|
||||
// CHECK:STDOUT: %F.043: %F.type.6b5 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %J.facet.9b0: %J.type = facet_value %FDifferentParamType, %impl_witness.85bcb7.10 [concrete]
|
||||
// CHECK:STDOUT: %FDifferentImplicitParamType: type = class_type @FDifferentImplicitParamType [concrete]
|
||||
// CHECK:STDOUT: %impl_witness.85bcb7.11: <witness> = impl_witness (<error>) [concrete]
|
||||
// CHECK:STDOUT: %F.type.d62: type = fn_type @F.10 [concrete]
|
||||
// CHECK:STDOUT: %F.886: %F.type.d62 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %J.facet.4bb: %J.type = facet_value %FDifferentImplicitParamType, %impl_witness.85bcb7.11 [concrete]
|
||||
// CHECK:STDOUT: %FDifferentReturnType: type = class_type @FDifferentReturnType [concrete]
|
||||
// CHECK:STDOUT: %impl_witness.85bcb7.12: <witness> = impl_witness (<error>) [concrete]
|
||||
// CHECK:STDOUT: %F.type.d3b: type = fn_type @F.11 [concrete]
|
||||
// CHECK:STDOUT: %F.be8: %F.type.d3b = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %J.facet.5c7: %J.type = facet_value %FDifferentReturnType, %impl_witness.85bcb7.12 [concrete]
|
||||
// CHECK:STDOUT: %FDifferentParamName: type = class_type @FDifferentParamName [concrete]
|
||||
// CHECK:STDOUT: %impl_witness.85bcb7.13: <witness> = impl_witness (<error>) [concrete]
|
||||
// CHECK:STDOUT: %F.type.d19: type = fn_type @F.12 [concrete]
|
||||
// CHECK:STDOUT: %F.669: %F.type.d19 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %J.facet.daf: %J.type = facet_value %FDifferentParamName, %impl_witness.85bcb7.13 [concrete]
|
||||
// CHECK:STDOUT: %SelfNested.type: type = facet_type <@SelfNested> [concrete]
|
||||
// CHECK:STDOUT: %Self.2ff: %SelfNested.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self.2ff [symbolic]
|
||||
// CHECK:STDOUT: %ptr.e87: type = ptr_type %Self.as_type [symbolic]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %struct_type.x.y.81e: type = struct_type {.x: %Self.as_type, .y: %i32} [symbolic]
|
||||
// CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [template]
|
||||
// CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.229: type = tuple_type (%ptr.e87, %struct_type.x.y.81e) [symbolic]
|
||||
// CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [template]
|
||||
// CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [concrete]
|
||||
// CHECK:STDOUT: %array_type.873: type = array_type %int_4, %Self.as_type [symbolic]
|
||||
// CHECK:STDOUT: %F.type.6ed: type = fn_type @F.13 [template]
|
||||
// CHECK:STDOUT: %F.998: %F.type.6ed = struct_value () [template]
|
||||
// CHECK:STDOUT: %SelfNested.assoc_type: type = assoc_entity_type %SelfNested.type [template]
|
||||
// CHECK:STDOUT: %assoc0.a58: %SelfNested.assoc_type = assoc_entity element0, @SelfNested.%F.decl [template]
|
||||
// CHECK:STDOUT: %SelfNestedBadParam: type = class_type @SelfNestedBadParam [template]
|
||||
// CHECK:STDOUT: %impl_witness.85bcb7.14: <witness> = impl_witness (<error>) [template]
|
||||
// CHECK:STDOUT: %ptr.4cd: type = ptr_type %SelfNestedBadParam [template]
|
||||
// CHECK:STDOUT: %struct_type.x.y.871: type = struct_type {.x: %i32, .y: %i32} [template]
|
||||
// CHECK:STDOUT: %tuple.type.a7d: type = tuple_type (%ptr.4cd, %struct_type.x.y.871) [template]
|
||||
// CHECK:STDOUT: %array_type.a41: type = array_type %int_4, %SelfNestedBadParam [template]
|
||||
// CHECK:STDOUT: %F.type.f90: type = fn_type @F.14 [template]
|
||||
// CHECK:STDOUT: %F.fa8: %F.type.f90 = struct_value () [template]
|
||||
// CHECK:STDOUT: %SelfNested.facet.61c: %SelfNested.type = facet_value %SelfNestedBadParam, %impl_witness.85bcb7.14 [template]
|
||||
// CHECK:STDOUT: %struct_type.x.y.a89: type = struct_type {.x: %SelfNestedBadParam, .y: %i32} [template]
|
||||
// CHECK:STDOUT: %tuple.type.9c9: type = tuple_type (%ptr.4cd, %struct_type.x.y.a89) [template]
|
||||
// CHECK:STDOUT: %SelfNestedBadReturnType: type = class_type @SelfNestedBadReturnType [template]
|
||||
// CHECK:STDOUT: %impl_witness.85bcb7.15: <witness> = impl_witness (<error>) [template]
|
||||
// CHECK:STDOUT: %ptr.612: type = ptr_type %SelfNestedBadReturnType [template]
|
||||
// CHECK:STDOUT: %struct_type.x.y.ac5: type = struct_type {.x: %SelfNestedBadReturnType, .y: %i32} [template]
|
||||
// CHECK:STDOUT: %tuple.type.eb9: type = tuple_type (%ptr.612, %struct_type.x.y.ac5) [template]
|
||||
// CHECK:STDOUT: %F.type.0e7: type = fn_type @F.15 [template]
|
||||
// CHECK:STDOUT: %F.0bc: %F.type.0e7 = struct_value () [template]
|
||||
// CHECK:STDOUT: %SelfNested.facet.01f: %SelfNested.type = facet_value %SelfNestedBadReturnType, %impl_witness.85bcb7.15 [template]
|
||||
// CHECK:STDOUT: %array_type.126: type = array_type %int_4, %SelfNestedBadReturnType [template]
|
||||
// CHECK:STDOUT: %F.type.6ed: type = fn_type @F.13 [concrete]
|
||||
// CHECK:STDOUT: %F.998: %F.type.6ed = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %SelfNested.assoc_type: type = assoc_entity_type %SelfNested.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0.a58: %SelfNested.assoc_type = assoc_entity element0, @SelfNested.%F.decl [concrete]
|
||||
// CHECK:STDOUT: %SelfNestedBadParam: type = class_type @SelfNestedBadParam [concrete]
|
||||
// CHECK:STDOUT: %impl_witness.85bcb7.14: <witness> = impl_witness (<error>) [concrete]
|
||||
// CHECK:STDOUT: %ptr.4cd: type = ptr_type %SelfNestedBadParam [concrete]
|
||||
// CHECK:STDOUT: %struct_type.x.y.871: type = struct_type {.x: %i32, .y: %i32} [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.a7d: type = tuple_type (%ptr.4cd, %struct_type.x.y.871) [concrete]
|
||||
// CHECK:STDOUT: %array_type.a41: type = array_type %int_4, %SelfNestedBadParam [concrete]
|
||||
// CHECK:STDOUT: %F.type.f90: type = fn_type @F.14 [concrete]
|
||||
// CHECK:STDOUT: %F.fa8: %F.type.f90 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %SelfNested.facet.61c: %SelfNested.type = facet_value %SelfNestedBadParam, %impl_witness.85bcb7.14 [concrete]
|
||||
// CHECK:STDOUT: %struct_type.x.y.a89: type = struct_type {.x: %SelfNestedBadParam, .y: %i32} [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.9c9: type = tuple_type (%ptr.4cd, %struct_type.x.y.a89) [concrete]
|
||||
// CHECK:STDOUT: %SelfNestedBadReturnType: type = class_type @SelfNestedBadReturnType [concrete]
|
||||
// CHECK:STDOUT: %impl_witness.85bcb7.15: <witness> = impl_witness (<error>) [concrete]
|
||||
// CHECK:STDOUT: %ptr.612: type = ptr_type %SelfNestedBadReturnType [concrete]
|
||||
// CHECK:STDOUT: %struct_type.x.y.ac5: type = struct_type {.x: %SelfNestedBadReturnType, .y: %i32} [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.eb9: type = tuple_type (%ptr.612, %struct_type.x.y.ac5) [concrete]
|
||||
// CHECK:STDOUT: %F.type.0e7: type = fn_type @F.15 [concrete]
|
||||
// CHECK:STDOUT: %F.0bc: %F.type.0e7 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %SelfNested.facet.01f: %SelfNested.type = facet_value %SelfNestedBadReturnType, %impl_witness.85bcb7.15 [concrete]
|
||||
// CHECK:STDOUT: %array_type.126: type = array_type %int_4, %SelfNestedBadReturnType [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
|
||||
// CHECK:STDOUT: .Bool = %Core.Bool
|
||||
// CHECK:STDOUT: .Int = %Core.Int
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
@@ -339,7 +339,7 @@ class SelfNestedBadReturnType {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Core = imports.%Core
|
||||
// CHECK:STDOUT: .I = %I.decl
|
||||
// CHECK:STDOUT: .NoF = %NoF.decl
|
||||
@@ -362,31 +362,31 @@ class SelfNestedBadReturnType {
|
||||
// CHECK:STDOUT: .SelfNestedBadReturnType = %SelfNestedBadReturnType.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [template = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: %NoF.decl: type = class_decl @NoF [template = constants.%NoF] {} {}
|
||||
// CHECK:STDOUT: %FNotFunction.decl: type = class_decl @FNotFunction [template = constants.%FNotFunction] {} {}
|
||||
// CHECK:STDOUT: %PossiblyF.decl: %PossiblyF.type = fn_decl @PossiblyF [template = constants.%PossiblyF] {} {}
|
||||
// CHECK:STDOUT: %FAlias.decl: type = class_decl @FAlias [template = constants.%FAlias] {} {}
|
||||
// CHECK:STDOUT: %FExtraParam.decl: type = class_decl @FExtraParam [template = constants.%FExtraParam] {} {}
|
||||
// CHECK:STDOUT: %FExtraImplicitParam.decl: type = class_decl @FExtraImplicitParam [template = constants.%FExtraImplicitParam] {} {}
|
||||
// CHECK:STDOUT: %FExtraReturnType.decl: type = class_decl @FExtraReturnType [template = constants.%FExtraReturnType] {} {}
|
||||
// CHECK:STDOUT: %J.decl: type = interface_decl @J [template = constants.%J.type] {} {}
|
||||
// CHECK:STDOUT: %FMissingParam.decl: type = class_decl @FMissingParam [template = constants.%FMissingParam] {} {}
|
||||
// CHECK:STDOUT: %FMissingImplicitParam.decl: type = class_decl @FMissingImplicitParam [template = constants.%FMissingImplicitParam] {} {}
|
||||
// CHECK:STDOUT: %FMissingReturnType.decl: type = class_decl @FMissingReturnType [template = constants.%FMissingReturnType] {} {}
|
||||
// CHECK:STDOUT: %FDifferentParamType.decl: type = class_decl @FDifferentParamType [template = constants.%FDifferentParamType] {} {}
|
||||
// CHECK:STDOUT: %FDifferentImplicitParamType.decl: type = class_decl @FDifferentImplicitParamType [template = constants.%FDifferentImplicitParamType] {} {}
|
||||
// CHECK:STDOUT: %FDifferentReturnType.decl: type = class_decl @FDifferentReturnType [template = constants.%FDifferentReturnType] {} {}
|
||||
// CHECK:STDOUT: %FDifferentParamName.decl: type = class_decl @FDifferentParamName [template = constants.%FDifferentParamName] {} {}
|
||||
// CHECK:STDOUT: %SelfNested.decl: type = interface_decl @SelfNested [template = constants.%SelfNested.type] {} {}
|
||||
// CHECK:STDOUT: %SelfNestedBadParam.decl: type = class_decl @SelfNestedBadParam [template = constants.%SelfNestedBadParam] {} {}
|
||||
// CHECK:STDOUT: %SelfNestedBadReturnType.decl: type = class_decl @SelfNestedBadReturnType [template = constants.%SelfNestedBadReturnType] {} {}
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: %NoF.decl: type = class_decl @NoF [concrete = constants.%NoF] {} {}
|
||||
// CHECK:STDOUT: %FNotFunction.decl: type = class_decl @FNotFunction [concrete = constants.%FNotFunction] {} {}
|
||||
// CHECK:STDOUT: %PossiblyF.decl: %PossiblyF.type = fn_decl @PossiblyF [concrete = constants.%PossiblyF] {} {}
|
||||
// CHECK:STDOUT: %FAlias.decl: type = class_decl @FAlias [concrete = constants.%FAlias] {} {}
|
||||
// CHECK:STDOUT: %FExtraParam.decl: type = class_decl @FExtraParam [concrete = constants.%FExtraParam] {} {}
|
||||
// CHECK:STDOUT: %FExtraImplicitParam.decl: type = class_decl @FExtraImplicitParam [concrete = constants.%FExtraImplicitParam] {} {}
|
||||
// CHECK:STDOUT: %FExtraReturnType.decl: type = class_decl @FExtraReturnType [concrete = constants.%FExtraReturnType] {} {}
|
||||
// CHECK:STDOUT: %J.decl: type = interface_decl @J [concrete = constants.%J.type] {} {}
|
||||
// CHECK:STDOUT: %FMissingParam.decl: type = class_decl @FMissingParam [concrete = constants.%FMissingParam] {} {}
|
||||
// CHECK:STDOUT: %FMissingImplicitParam.decl: type = class_decl @FMissingImplicitParam [concrete = constants.%FMissingImplicitParam] {} {}
|
||||
// CHECK:STDOUT: %FMissingReturnType.decl: type = class_decl @FMissingReturnType [concrete = constants.%FMissingReturnType] {} {}
|
||||
// CHECK:STDOUT: %FDifferentParamType.decl: type = class_decl @FDifferentParamType [concrete = constants.%FDifferentParamType] {} {}
|
||||
// CHECK:STDOUT: %FDifferentImplicitParamType.decl: type = class_decl @FDifferentImplicitParamType [concrete = constants.%FDifferentImplicitParamType] {} {}
|
||||
// CHECK:STDOUT: %FDifferentReturnType.decl: type = class_decl @FDifferentReturnType [concrete = constants.%FDifferentReturnType] {} {}
|
||||
// CHECK:STDOUT: %FDifferentParamName.decl: type = class_decl @FDifferentParamName [concrete = constants.%FDifferentParamName] {} {}
|
||||
// CHECK:STDOUT: %SelfNested.decl: type = interface_decl @SelfNested [concrete = constants.%SelfNested.type] {} {}
|
||||
// CHECK:STDOUT: %SelfNestedBadParam.decl: type = class_decl @SelfNestedBadParam [concrete = constants.%SelfNestedBadParam] {} {}
|
||||
// CHECK:STDOUT: %SelfNestedBadReturnType.decl: type = class_decl @SelfNestedBadReturnType [concrete = constants.%SelfNestedBadReturnType] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @I {
|
||||
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.826]
|
||||
// CHECK:STDOUT: %F.decl: %F.type.cf0 = fn_decl @F.1 [template = constants.%F.bc6] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0.a5e]
|
||||
// CHECK:STDOUT: %F.decl: %F.type.cf0 = fn_decl @F.1 [concrete = constants.%F.bc6] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0.a5e]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -396,7 +396,7 @@ class SelfNestedBadReturnType {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @J {
|
||||
// CHECK:STDOUT: %Self: %J.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.ccd]
|
||||
// CHECK:STDOUT: %F.decl: %F.type.c14 = fn_decl @F.5 [template = constants.%F.b71] {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.c14 = fn_decl @F.5 [concrete = constants.%F.b71] {
|
||||
// CHECK:STDOUT: %self.patt: bool = binding_pattern self
|
||||
// CHECK:STDOUT: %self.param_patt: bool = value_param_pattern %self.patt, runtime_param0
|
||||
// CHECK:STDOUT: %b.patt: bool = binding_pattern b
|
||||
@@ -404,27 +404,27 @@ class SelfNestedBadReturnType {
|
||||
// CHECK:STDOUT: %return.patt: bool = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: bool = out_param_pattern %return.patt, runtime_param2
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %bool.make_type.loc93_44: init type = call constants.%Bool() [template = bool]
|
||||
// CHECK:STDOUT: %.loc93_44.1: type = value_of_initializer %bool.make_type.loc93_44 [template = bool]
|
||||
// CHECK:STDOUT: %.loc93_44.2: type = converted %bool.make_type.loc93_44, %.loc93_44.1 [template = bool]
|
||||
// CHECK:STDOUT: %bool.make_type.loc93_44: init type = call constants.%Bool() [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc93_44.1: type = value_of_initializer %bool.make_type.loc93_44 [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc93_44.2: type = converted %bool.make_type.loc93_44, %.loc93_44.1 [concrete = bool]
|
||||
// CHECK:STDOUT: %self.param: bool = value_param runtime_param0
|
||||
// CHECK:STDOUT: %.loc93_26.1: type = splice_block %.loc93_26.3 [template = bool] {
|
||||
// CHECK:STDOUT: %bool.make_type.loc93_26: init type = call constants.%Bool() [template = bool]
|
||||
// CHECK:STDOUT: %.loc93_26.2: type = value_of_initializer %bool.make_type.loc93_26 [template = bool]
|
||||
// CHECK:STDOUT: %.loc93_26.3: type = converted %bool.make_type.loc93_26, %.loc93_26.2 [template = bool]
|
||||
// CHECK:STDOUT: %.loc93_26.1: type = splice_block %.loc93_26.3 [concrete = bool] {
|
||||
// CHECK:STDOUT: %bool.make_type.loc93_26: init type = call constants.%Bool() [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc93_26.2: type = value_of_initializer %bool.make_type.loc93_26 [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc93_26.3: type = converted %bool.make_type.loc93_26, %.loc93_26.2 [concrete = bool]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %self: bool = bind_name self, %self.param
|
||||
// CHECK:STDOUT: %b.param: bool = value_param runtime_param1
|
||||
// CHECK:STDOUT: %.loc93_35.1: type = splice_block %.loc93_35.3 [template = bool] {
|
||||
// CHECK:STDOUT: %bool.make_type.loc93_35: init type = call constants.%Bool() [template = bool]
|
||||
// CHECK:STDOUT: %.loc93_35.2: type = value_of_initializer %bool.make_type.loc93_35 [template = bool]
|
||||
// CHECK:STDOUT: %.loc93_35.3: type = converted %bool.make_type.loc93_35, %.loc93_35.2 [template = bool]
|
||||
// CHECK:STDOUT: %.loc93_35.1: type = splice_block %.loc93_35.3 [concrete = bool] {
|
||||
// CHECK:STDOUT: %bool.make_type.loc93_35: init type = call constants.%Bool() [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc93_35.2: type = value_of_initializer %bool.make_type.loc93_35 [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc93_35.3: type = converted %bool.make_type.loc93_35, %.loc93_35.2 [concrete = bool]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %b: bool = bind_name b, %b.param
|
||||
// CHECK:STDOUT: %return.param: ref bool = out_param runtime_param2
|
||||
// CHECK:STDOUT: %return: ref bool = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %assoc0: %J.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0.ebc]
|
||||
// CHECK:STDOUT: %assoc0: %J.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0.ebc]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -434,14 +434,14 @@ class SelfNestedBadReturnType {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @SelfNested {
|
||||
// CHECK:STDOUT: %Self: %SelfNested.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.2ff]
|
||||
// CHECK:STDOUT: %F.decl: %F.type.6ed = fn_decl @F.13 [template = constants.%F.998] {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.6ed = fn_decl @F.13 [concrete = constants.%F.998] {
|
||||
// CHECK:STDOUT: %x.patt: @F.13.%tuple.type (%tuple.type.229) = binding_pattern x
|
||||
// CHECK:STDOUT: %x.param_patt: @F.13.%tuple.type (%tuple.type.229) = value_param_pattern %x.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: @F.13.%array_type.loc188_52.1 (%array_type.873) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @F.13.%array_type.loc188_52.1 (%array_type.873) = out_param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %Self.ref.loc188_45: %SelfNested.type = name_ref Self, @SelfNested.%Self [symbolic = %Self (constants.%Self.2ff)]
|
||||
// CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [template = constants.%int_4]
|
||||
// CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [concrete = constants.%int_4]
|
||||
// CHECK:STDOUT: %Self.as_type.loc188_45: type = facet_access_type %Self.ref.loc188_45 [symbolic = %Self.as_type.loc188_16.1 (constants.%Self.as_type)]
|
||||
// CHECK:STDOUT: %.loc188_45: type = converted %Self.ref.loc188_45, %Self.as_type.loc188_45 [symbolic = %Self.as_type.loc188_16.1 (constants.%Self.as_type)]
|
||||
// CHECK:STDOUT: %array_type.loc188_52.2: type = array_type %int_4, %Self.as_type [symbolic = %array_type.loc188_52.1 (constants.%array_type.873)]
|
||||
@@ -454,8 +454,8 @@ class SelfNestedBadReturnType {
|
||||
// CHECK:STDOUT: %Self.ref.loc188_24: %SelfNested.type = name_ref Self, @SelfNested.%Self [symbolic = %Self (constants.%Self.2ff)]
|
||||
// CHECK:STDOUT: %Self.as_type.loc188_24: type = facet_access_type %Self.ref.loc188_24 [symbolic = %Self.as_type.loc188_16.1 (constants.%Self.as_type)]
|
||||
// CHECK:STDOUT: %.loc188_24: type = converted %Self.ref.loc188_24, %Self.as_type.loc188_24 [symbolic = %Self.as_type.loc188_16.1 (constants.%Self.as_type)]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %struct_type.x.y.loc188_37.2: type = struct_type {.x: %Self.as_type, .y: %i32} [symbolic = %struct_type.x.y.loc188_37.1 (constants.%struct_type.x.y.81e)]
|
||||
// CHECK:STDOUT: %.loc188_38.2: %tuple.type.24b = tuple_literal (%ptr.loc188_16.2, %struct_type.x.y.loc188_37.2)
|
||||
// CHECK:STDOUT: %.loc188_38.3: type = converted %.loc188_38.2, constants.%tuple.type.229 [symbolic = %tuple.type (constants.%tuple.type.229)]
|
||||
@@ -464,7 +464,7 @@ class SelfNestedBadReturnType {
|
||||
// CHECK:STDOUT: %return.param: ref @F.13.%array_type.loc188_52.1 (%array_type.873) = out_param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref @F.13.%array_type.loc188_52.1 (%array_type.873) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %assoc0: %SelfNested.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0.a58]
|
||||
// CHECK:STDOUT: %assoc0: %SelfNested.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0.a58]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -478,7 +478,7 @@ class SelfNestedBadReturnType {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl.2: %Self.ref as %I.ref {
|
||||
// CHECK:STDOUT: %F.decl: type = class_decl @F.16 [template = constants.%F.70c] {} {}
|
||||
// CHECK:STDOUT: %F.decl: type = class_decl @F.16 [concrete = constants.%F.70c] {} {}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .F = %F.decl
|
||||
@@ -486,8 +486,8 @@ class SelfNestedBadReturnType {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl.3: %Self.ref as %I.ref {
|
||||
// CHECK:STDOUT: %PossiblyF.ref: %PossiblyF.type = name_ref PossiblyF, file.%PossiblyF.decl [template = constants.%PossiblyF]
|
||||
// CHECK:STDOUT: %F: %PossiblyF.type = bind_alias F, file.%PossiblyF.decl [template = constants.%PossiblyF]
|
||||
// CHECK:STDOUT: %PossiblyF.ref: %PossiblyF.type = name_ref PossiblyF, file.%PossiblyF.decl [concrete = constants.%PossiblyF]
|
||||
// CHECK:STDOUT: %F: %PossiblyF.type = bind_alias F, file.%PossiblyF.decl [concrete = constants.%PossiblyF]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .F = %F
|
||||
@@ -495,15 +495,15 @@ class SelfNestedBadReturnType {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl.4: %Self.ref as %I.ref {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.44e = fn_decl @F.2 [template = constants.%F.424] {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.44e = fn_decl @F.2 [concrete = constants.%F.424] {
|
||||
// CHECK:STDOUT: %b.patt: bool = binding_pattern b
|
||||
// CHECK:STDOUT: %b.param_patt: bool = value_param_pattern %b.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %b.param: bool = value_param runtime_param0
|
||||
// CHECK:STDOUT: %.loc62_13.1: type = splice_block %.loc62_13.3 [template = bool] {
|
||||
// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool]
|
||||
// CHECK:STDOUT: %.loc62_13.2: type = value_of_initializer %bool.make_type [template = bool]
|
||||
// CHECK:STDOUT: %.loc62_13.3: type = converted %bool.make_type, %.loc62_13.2 [template = bool]
|
||||
// CHECK:STDOUT: %.loc62_13.1: type = splice_block %.loc62_13.3 [concrete = bool] {
|
||||
// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc62_13.2: type = value_of_initializer %bool.make_type [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc62_13.3: type = converted %bool.make_type, %.loc62_13.2 [concrete = bool]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %b: bool = bind_name b, %b.param
|
||||
// CHECK:STDOUT: }
|
||||
@@ -514,12 +514,12 @@ class SelfNestedBadReturnType {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl.5: %Self.ref as %I.ref {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.e1a = fn_decl @F.3 [template = constants.%F.6ff] {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.e1a = fn_decl @F.3 [concrete = constants.%F.6ff] {
|
||||
// CHECK:STDOUT: %self.patt: %FExtraImplicitParam = binding_pattern self
|
||||
// CHECK:STDOUT: %self.param_patt: %FExtraImplicitParam = value_param_pattern %self.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %self.param: %FExtraImplicitParam = value_param runtime_param0
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FExtraImplicitParam [template = constants.%FExtraImplicitParam]
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FExtraImplicitParam [concrete = constants.%FExtraImplicitParam]
|
||||
// CHECK:STDOUT: %self: %FExtraImplicitParam = bind_name self, %self.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -529,13 +529,13 @@ class SelfNestedBadReturnType {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl.6: %Self.ref as %I.ref {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.387 = fn_decl @F.4 [template = constants.%F.df5] {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.387 = fn_decl @F.4 [concrete = constants.%F.df5] {
|
||||
// CHECK:STDOUT: %return.patt: bool = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: bool = out_param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool]
|
||||
// CHECK:STDOUT: %.loc89_15.1: type = value_of_initializer %bool.make_type [template = bool]
|
||||
// CHECK:STDOUT: %.loc89_15.2: type = converted %bool.make_type, %.loc89_15.1 [template = bool]
|
||||
// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc89_15.1: type = value_of_initializer %bool.make_type [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc89_15.2: type = converted %bool.make_type, %.loc89_15.1 [concrete = bool]
|
||||
// CHECK:STDOUT: %return.param: ref bool = out_param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref bool = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
@@ -546,20 +546,20 @@ class SelfNestedBadReturnType {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl.7: %Self.ref as %J.ref {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.695 = fn_decl @F.6 [template = constants.%F.738] {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.695 = fn_decl @F.6 [concrete = constants.%F.738] {
|
||||
// CHECK:STDOUT: %self.patt: bool = binding_pattern self
|
||||
// CHECK:STDOUT: %self.param_patt: bool = value_param_pattern %self.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: bool = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: bool = out_param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %bool.make_type.loc104_27: init type = call constants.%Bool() [template = bool]
|
||||
// CHECK:STDOUT: %.loc104_27.1: type = value_of_initializer %bool.make_type.loc104_27 [template = bool]
|
||||
// CHECK:STDOUT: %.loc104_27.2: type = converted %bool.make_type.loc104_27, %.loc104_27.1 [template = bool]
|
||||
// CHECK:STDOUT: %bool.make_type.loc104_27: init type = call constants.%Bool() [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc104_27.1: type = value_of_initializer %bool.make_type.loc104_27 [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc104_27.2: type = converted %bool.make_type.loc104_27, %.loc104_27.1 [concrete = bool]
|
||||
// CHECK:STDOUT: %self.param: bool = value_param runtime_param0
|
||||
// CHECK:STDOUT: %.loc104_16.1: type = splice_block %.loc104_16.3 [template = bool] {
|
||||
// CHECK:STDOUT: %bool.make_type.loc104_16: init type = call constants.%Bool() [template = bool]
|
||||
// CHECK:STDOUT: %.loc104_16.2: type = value_of_initializer %bool.make_type.loc104_16 [template = bool]
|
||||
// CHECK:STDOUT: %.loc104_16.3: type = converted %bool.make_type.loc104_16, %.loc104_16.2 [template = bool]
|
||||
// CHECK:STDOUT: %.loc104_16.1: type = splice_block %.loc104_16.3 [concrete = bool] {
|
||||
// CHECK:STDOUT: %bool.make_type.loc104_16: init type = call constants.%Bool() [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc104_16.2: type = value_of_initializer %bool.make_type.loc104_16 [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc104_16.3: type = converted %bool.make_type.loc104_16, %.loc104_16.2 [concrete = bool]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %self: bool = bind_name self, %self.param
|
||||
// CHECK:STDOUT: %return.param: ref bool = out_param runtime_param1
|
||||
@@ -572,20 +572,20 @@ class SelfNestedBadReturnType {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl.8: %Self.ref as %J.ref {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.d97 = fn_decl @F.7 [template = constants.%F.01d] {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.d97 = fn_decl @F.7 [concrete = constants.%F.01d] {
|
||||
// CHECK:STDOUT: %b.patt: bool = binding_pattern b
|
||||
// CHECK:STDOUT: %b.param_patt: bool = value_param_pattern %b.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: bool = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: bool = out_param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %bool.make_type.loc117_22: init type = call constants.%Bool() [template = bool]
|
||||
// CHECK:STDOUT: %.loc117_22.1: type = value_of_initializer %bool.make_type.loc117_22 [template = bool]
|
||||
// CHECK:STDOUT: %.loc117_22.2: type = converted %bool.make_type.loc117_22, %.loc117_22.1 [template = bool]
|
||||
// CHECK:STDOUT: %bool.make_type.loc117_22: init type = call constants.%Bool() [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc117_22.1: type = value_of_initializer %bool.make_type.loc117_22 [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc117_22.2: type = converted %bool.make_type.loc117_22, %.loc117_22.1 [concrete = bool]
|
||||
// CHECK:STDOUT: %b.param: bool = value_param runtime_param0
|
||||
// CHECK:STDOUT: %.loc117_13.1: type = splice_block %.loc117_13.3 [template = bool] {
|
||||
// CHECK:STDOUT: %bool.make_type.loc117_13: init type = call constants.%Bool() [template = bool]
|
||||
// CHECK:STDOUT: %.loc117_13.2: type = value_of_initializer %bool.make_type.loc117_13 [template = bool]
|
||||
// CHECK:STDOUT: %.loc117_13.3: type = converted %bool.make_type.loc117_13, %.loc117_13.2 [template = bool]
|
||||
// CHECK:STDOUT: %.loc117_13.1: type = splice_block %.loc117_13.3 [concrete = bool] {
|
||||
// CHECK:STDOUT: %bool.make_type.loc117_13: init type = call constants.%Bool() [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc117_13.2: type = value_of_initializer %bool.make_type.loc117_13 [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc117_13.3: type = converted %bool.make_type.loc117_13, %.loc117_13.2 [concrete = bool]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %b: bool = bind_name b, %b.param
|
||||
// CHECK:STDOUT: %return.param: ref bool = out_param runtime_param1
|
||||
@@ -598,24 +598,24 @@ class SelfNestedBadReturnType {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl.9: %Self.ref as %J.ref {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.123 = fn_decl @F.8 [template = constants.%F.c7d] {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.123 = fn_decl @F.8 [concrete = constants.%F.c7d] {
|
||||
// CHECK:STDOUT: %self.patt: bool = binding_pattern self
|
||||
// CHECK:STDOUT: %self.param_patt: bool = value_param_pattern %self.patt, runtime_param0
|
||||
// CHECK:STDOUT: %b.patt: bool = binding_pattern b
|
||||
// CHECK:STDOUT: %b.param_patt: bool = value_param_pattern %b.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %self.param: bool = value_param runtime_param0
|
||||
// CHECK:STDOUT: %.loc130_16.1: type = splice_block %.loc130_16.3 [template = bool] {
|
||||
// CHECK:STDOUT: %bool.make_type.loc130_16: init type = call constants.%Bool() [template = bool]
|
||||
// CHECK:STDOUT: %.loc130_16.2: type = value_of_initializer %bool.make_type.loc130_16 [template = bool]
|
||||
// CHECK:STDOUT: %.loc130_16.3: type = converted %bool.make_type.loc130_16, %.loc130_16.2 [template = bool]
|
||||
// CHECK:STDOUT: %.loc130_16.1: type = splice_block %.loc130_16.3 [concrete = bool] {
|
||||
// CHECK:STDOUT: %bool.make_type.loc130_16: init type = call constants.%Bool() [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc130_16.2: type = value_of_initializer %bool.make_type.loc130_16 [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc130_16.3: type = converted %bool.make_type.loc130_16, %.loc130_16.2 [concrete = bool]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %self: bool = bind_name self, %self.param
|
||||
// CHECK:STDOUT: %b.param: bool = value_param runtime_param1
|
||||
// CHECK:STDOUT: %.loc130_25.1: type = splice_block %.loc130_25.3 [template = bool] {
|
||||
// CHECK:STDOUT: %bool.make_type.loc130_25: init type = call constants.%Bool() [template = bool]
|
||||
// CHECK:STDOUT: %.loc130_25.2: type = value_of_initializer %bool.make_type.loc130_25 [template = bool]
|
||||
// CHECK:STDOUT: %.loc130_25.3: type = converted %bool.make_type.loc130_25, %.loc130_25.2 [template = bool]
|
||||
// CHECK:STDOUT: %.loc130_25.1: type = splice_block %.loc130_25.3 [concrete = bool] {
|
||||
// CHECK:STDOUT: %bool.make_type.loc130_25: init type = call constants.%Bool() [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc130_25.2: type = value_of_initializer %bool.make_type.loc130_25 [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc130_25.3: type = converted %bool.make_type.loc130_25, %.loc130_25.2 [concrete = bool]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %b: bool = bind_name b, %b.param
|
||||
// CHECK:STDOUT: }
|
||||
@@ -626,7 +626,7 @@ class SelfNestedBadReturnType {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl.10: %Self.ref as %J.ref {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.6b5 = fn_decl @F.9 [template = constants.%F.043] {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.6b5 = fn_decl @F.9 [concrete = constants.%F.043] {
|
||||
// CHECK:STDOUT: %self.patt: bool = binding_pattern self
|
||||
// CHECK:STDOUT: %self.param_patt: bool = value_param_pattern %self.patt, runtime_param0
|
||||
// CHECK:STDOUT: %b.patt: %FDifferentParamType = binding_pattern b
|
||||
@@ -634,18 +634,18 @@ class SelfNestedBadReturnType {
|
||||
// CHECK:STDOUT: %return.patt: bool = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: bool = out_param_pattern %return.patt, runtime_param2
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %bool.make_type.loc143_34: init type = call constants.%Bool() [template = bool]
|
||||
// CHECK:STDOUT: %.loc143_34.1: type = value_of_initializer %bool.make_type.loc143_34 [template = bool]
|
||||
// CHECK:STDOUT: %.loc143_34.2: type = converted %bool.make_type.loc143_34, %.loc143_34.1 [template = bool]
|
||||
// CHECK:STDOUT: %bool.make_type.loc143_34: init type = call constants.%Bool() [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc143_34.1: type = value_of_initializer %bool.make_type.loc143_34 [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc143_34.2: type = converted %bool.make_type.loc143_34, %.loc143_34.1 [concrete = bool]
|
||||
// CHECK:STDOUT: %self.param: bool = value_param runtime_param0
|
||||
// CHECK:STDOUT: %.loc143_16.1: type = splice_block %.loc143_16.3 [template = bool] {
|
||||
// CHECK:STDOUT: %bool.make_type.loc143_16: init type = call constants.%Bool() [template = bool]
|
||||
// CHECK:STDOUT: %.loc143_16.2: type = value_of_initializer %bool.make_type.loc143_16 [template = bool]
|
||||
// CHECK:STDOUT: %.loc143_16.3: type = converted %bool.make_type.loc143_16, %.loc143_16.2 [template = bool]
|
||||
// CHECK:STDOUT: %.loc143_16.1: type = splice_block %.loc143_16.3 [concrete = bool] {
|
||||
// CHECK:STDOUT: %bool.make_type.loc143_16: init type = call constants.%Bool() [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc143_16.2: type = value_of_initializer %bool.make_type.loc143_16 [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc143_16.3: type = converted %bool.make_type.loc143_16, %.loc143_16.2 [concrete = bool]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %self: bool = bind_name self, %self.param
|
||||
// CHECK:STDOUT: %b.param: %FDifferentParamType = value_param runtime_param1
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FDifferentParamType [template = constants.%FDifferentParamType]
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FDifferentParamType [concrete = constants.%FDifferentParamType]
|
||||
// CHECK:STDOUT: %b: %FDifferentParamType = bind_name b, %b.param
|
||||
// CHECK:STDOUT: %return.param: ref bool = out_param runtime_param2
|
||||
// CHECK:STDOUT: %return: ref bool = return_slot %return.param
|
||||
@@ -657,7 +657,7 @@ class SelfNestedBadReturnType {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl.11: %Self.ref as %J.ref {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.d62 = fn_decl @F.10 [template = constants.%F.886] {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.d62 = fn_decl @F.10 [concrete = constants.%F.886] {
|
||||
// CHECK:STDOUT: %self.patt: %FDifferentImplicitParamType = binding_pattern self
|
||||
// CHECK:STDOUT: %self.param_patt: %FDifferentImplicitParamType = value_param_pattern %self.patt, runtime_param0
|
||||
// CHECK:STDOUT: %b.patt: bool = binding_pattern b
|
||||
@@ -665,17 +665,17 @@ class SelfNestedBadReturnType {
|
||||
// CHECK:STDOUT: %return.patt: bool = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: bool = out_param_pattern %return.patt, runtime_param2
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %bool.make_type.loc156_34: init type = call constants.%Bool() [template = bool]
|
||||
// CHECK:STDOUT: %.loc156_34.1: type = value_of_initializer %bool.make_type.loc156_34 [template = bool]
|
||||
// CHECK:STDOUT: %.loc156_34.2: type = converted %bool.make_type.loc156_34, %.loc156_34.1 [template = bool]
|
||||
// CHECK:STDOUT: %bool.make_type.loc156_34: init type = call constants.%Bool() [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc156_34.1: type = value_of_initializer %bool.make_type.loc156_34 [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc156_34.2: type = converted %bool.make_type.loc156_34, %.loc156_34.1 [concrete = bool]
|
||||
// CHECK:STDOUT: %self.param: %FDifferentImplicitParamType = value_param runtime_param0
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FDifferentImplicitParamType [template = constants.%FDifferentImplicitParamType]
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FDifferentImplicitParamType [concrete = constants.%FDifferentImplicitParamType]
|
||||
// CHECK:STDOUT: %self: %FDifferentImplicitParamType = bind_name self, %self.param
|
||||
// CHECK:STDOUT: %b.param: bool = value_param runtime_param1
|
||||
// CHECK:STDOUT: %.loc156_25.1: type = splice_block %.loc156_25.3 [template = bool] {
|
||||
// CHECK:STDOUT: %bool.make_type.loc156_25: init type = call constants.%Bool() [template = bool]
|
||||
// CHECK:STDOUT: %.loc156_25.2: type = value_of_initializer %bool.make_type.loc156_25 [template = bool]
|
||||
// CHECK:STDOUT: %.loc156_25.3: type = converted %bool.make_type.loc156_25, %.loc156_25.2 [template = bool]
|
||||
// CHECK:STDOUT: %.loc156_25.1: type = splice_block %.loc156_25.3 [concrete = bool] {
|
||||
// CHECK:STDOUT: %bool.make_type.loc156_25: init type = call constants.%Bool() [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc156_25.2: type = value_of_initializer %bool.make_type.loc156_25 [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc156_25.3: type = converted %bool.make_type.loc156_25, %.loc156_25.2 [concrete = bool]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %b: bool = bind_name b, %b.param
|
||||
// CHECK:STDOUT: %return.param: ref bool = out_param runtime_param2
|
||||
@@ -688,7 +688,7 @@ class SelfNestedBadReturnType {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl.12: %Self.ref as %J.ref {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.d3b = fn_decl @F.11 [template = constants.%F.be8] {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.d3b = fn_decl @F.11 [concrete = constants.%F.be8] {
|
||||
// CHECK:STDOUT: %self.patt: bool = binding_pattern self
|
||||
// CHECK:STDOUT: %self.param_patt: bool = value_param_pattern %self.patt, runtime_param0
|
||||
// CHECK:STDOUT: %b.patt: bool = binding_pattern b
|
||||
@@ -696,19 +696,19 @@ class SelfNestedBadReturnType {
|
||||
// CHECK:STDOUT: %return.patt: %FDifferentReturnType = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %FDifferentReturnType = out_param_pattern %return.patt, runtime_param2
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FDifferentReturnType [template = constants.%FDifferentReturnType]
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FDifferentReturnType [concrete = constants.%FDifferentReturnType]
|
||||
// CHECK:STDOUT: %self.param: bool = value_param runtime_param0
|
||||
// CHECK:STDOUT: %.loc169_16.1: type = splice_block %.loc169_16.3 [template = bool] {
|
||||
// CHECK:STDOUT: %bool.make_type.loc169_16: init type = call constants.%Bool() [template = bool]
|
||||
// CHECK:STDOUT: %.loc169_16.2: type = value_of_initializer %bool.make_type.loc169_16 [template = bool]
|
||||
// CHECK:STDOUT: %.loc169_16.3: type = converted %bool.make_type.loc169_16, %.loc169_16.2 [template = bool]
|
||||
// CHECK:STDOUT: %.loc169_16.1: type = splice_block %.loc169_16.3 [concrete = bool] {
|
||||
// CHECK:STDOUT: %bool.make_type.loc169_16: init type = call constants.%Bool() [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc169_16.2: type = value_of_initializer %bool.make_type.loc169_16 [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc169_16.3: type = converted %bool.make_type.loc169_16, %.loc169_16.2 [concrete = bool]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %self: bool = bind_name self, %self.param
|
||||
// CHECK:STDOUT: %b.param: bool = value_param runtime_param1
|
||||
// CHECK:STDOUT: %.loc169_25.1: type = splice_block %.loc169_25.3 [template = bool] {
|
||||
// CHECK:STDOUT: %bool.make_type.loc169_25: init type = call constants.%Bool() [template = bool]
|
||||
// CHECK:STDOUT: %.loc169_25.2: type = value_of_initializer %bool.make_type.loc169_25 [template = bool]
|
||||
// CHECK:STDOUT: %.loc169_25.3: type = converted %bool.make_type.loc169_25, %.loc169_25.2 [template = bool]
|
||||
// CHECK:STDOUT: %.loc169_25.1: type = splice_block %.loc169_25.3 [concrete = bool] {
|
||||
// CHECK:STDOUT: %bool.make_type.loc169_25: init type = call constants.%Bool() [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc169_25.2: type = value_of_initializer %bool.make_type.loc169_25 [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc169_25.3: type = converted %bool.make_type.loc169_25, %.loc169_25.2 [concrete = bool]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %b: bool = bind_name b, %b.param
|
||||
// CHECK:STDOUT: %return.param: ref %FDifferentReturnType = out_param runtime_param2
|
||||
@@ -721,7 +721,7 @@ class SelfNestedBadReturnType {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl.13: %Self.ref as %J.ref {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.d19 = fn_decl @F.12 [template = constants.%F.669] {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.d19 = fn_decl @F.12 [concrete = constants.%F.669] {
|
||||
// CHECK:STDOUT: %self.patt: bool = binding_pattern self
|
||||
// CHECK:STDOUT: %self.param_patt: bool = value_param_pattern %self.patt, runtime_param0
|
||||
// CHECK:STDOUT: %not_b.patt: bool = binding_pattern not_b
|
||||
@@ -729,21 +729,21 @@ class SelfNestedBadReturnType {
|
||||
// CHECK:STDOUT: %return.patt: bool = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: bool = out_param_pattern %return.patt, runtime_param2
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %bool.make_type.loc183_38: init type = call constants.%Bool() [template = bool]
|
||||
// CHECK:STDOUT: %.loc183_38.1: type = value_of_initializer %bool.make_type.loc183_38 [template = bool]
|
||||
// CHECK:STDOUT: %.loc183_38.2: type = converted %bool.make_type.loc183_38, %.loc183_38.1 [template = bool]
|
||||
// CHECK:STDOUT: %bool.make_type.loc183_38: init type = call constants.%Bool() [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc183_38.1: type = value_of_initializer %bool.make_type.loc183_38 [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc183_38.2: type = converted %bool.make_type.loc183_38, %.loc183_38.1 [concrete = bool]
|
||||
// CHECK:STDOUT: %self.param: bool = value_param runtime_param0
|
||||
// CHECK:STDOUT: %.loc183_16.1: type = splice_block %.loc183_16.3 [template = bool] {
|
||||
// CHECK:STDOUT: %bool.make_type.loc183_16: init type = call constants.%Bool() [template = bool]
|
||||
// CHECK:STDOUT: %.loc183_16.2: type = value_of_initializer %bool.make_type.loc183_16 [template = bool]
|
||||
// CHECK:STDOUT: %.loc183_16.3: type = converted %bool.make_type.loc183_16, %.loc183_16.2 [template = bool]
|
||||
// CHECK:STDOUT: %.loc183_16.1: type = splice_block %.loc183_16.3 [concrete = bool] {
|
||||
// CHECK:STDOUT: %bool.make_type.loc183_16: init type = call constants.%Bool() [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc183_16.2: type = value_of_initializer %bool.make_type.loc183_16 [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc183_16.3: type = converted %bool.make_type.loc183_16, %.loc183_16.2 [concrete = bool]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %self: bool = bind_name self, %self.param
|
||||
// CHECK:STDOUT: %not_b.param: bool = value_param runtime_param1
|
||||
// CHECK:STDOUT: %.loc183_29.1: type = splice_block %.loc183_29.3 [template = bool] {
|
||||
// CHECK:STDOUT: %bool.make_type.loc183_29: init type = call constants.%Bool() [template = bool]
|
||||
// CHECK:STDOUT: %.loc183_29.2: type = value_of_initializer %bool.make_type.loc183_29 [template = bool]
|
||||
// CHECK:STDOUT: %.loc183_29.3: type = converted %bool.make_type.loc183_29, %.loc183_29.2 [template = bool]
|
||||
// CHECK:STDOUT: %.loc183_29.1: type = splice_block %.loc183_29.3 [concrete = bool] {
|
||||
// CHECK:STDOUT: %bool.make_type.loc183_29: init type = call constants.%Bool() [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc183_29.2: type = value_of_initializer %bool.make_type.loc183_29 [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc183_29.3: type = converted %bool.make_type.loc183_29, %.loc183_29.2 [concrete = bool]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %not_b: bool = bind_name not_b, %not_b.param
|
||||
// CHECK:STDOUT: %return.param: ref bool = out_param runtime_param2
|
||||
@@ -756,26 +756,26 @@ class SelfNestedBadReturnType {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl.14: %Self.ref as %SelfNested.ref {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.f90 = fn_decl @F.14 [template = constants.%F.fa8] {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.f90 = fn_decl @F.14 [concrete = constants.%F.fa8] {
|
||||
// CHECK:STDOUT: %x.patt: %tuple.type.a7d = binding_pattern x
|
||||
// CHECK:STDOUT: %x.param_patt: %tuple.type.a7d = value_param_pattern %x.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: %array_type.a41 = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %array_type.a41 = out_param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %SelfNestedBadParam.ref.loc200_60: type = name_ref SelfNestedBadParam, file.%SelfNestedBadParam.decl [template = constants.%SelfNestedBadParam]
|
||||
// CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [template = constants.%int_4]
|
||||
// CHECK:STDOUT: %array_type: type = array_type %int_4, %SelfNestedBadParam [template = constants.%array_type.a41]
|
||||
// CHECK:STDOUT: %SelfNestedBadParam.ref.loc200_60: type = name_ref SelfNestedBadParam, file.%SelfNestedBadParam.decl [concrete = constants.%SelfNestedBadParam]
|
||||
// CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [concrete = constants.%int_4]
|
||||
// CHECK:STDOUT: %array_type: type = array_type %int_4, %SelfNestedBadParam [concrete = constants.%array_type.a41]
|
||||
// CHECK:STDOUT: %x.param: %tuple.type.a7d = value_param runtime_param0
|
||||
// CHECK:STDOUT: %.loc200_53.1: type = splice_block %.loc200_53.3 [template = constants.%tuple.type.a7d] {
|
||||
// CHECK:STDOUT: %SelfNestedBadParam.ref.loc200_14: type = name_ref SelfNestedBadParam, file.%SelfNestedBadParam.decl [template = constants.%SelfNestedBadParam]
|
||||
// CHECK:STDOUT: %ptr: type = ptr_type %SelfNestedBadParam [template = constants.%ptr.4cd]
|
||||
// CHECK:STDOUT: %int_32.loc200_40: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc200_40: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: %int_32.loc200_49: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc200_49: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: %struct_type.x.y: type = struct_type {.x: %i32, .y: %i32} [template = constants.%struct_type.x.y.871]
|
||||
// CHECK:STDOUT: %.loc200_53.1: type = splice_block %.loc200_53.3 [concrete = constants.%tuple.type.a7d] {
|
||||
// CHECK:STDOUT: %SelfNestedBadParam.ref.loc200_14: type = name_ref SelfNestedBadParam, file.%SelfNestedBadParam.decl [concrete = constants.%SelfNestedBadParam]
|
||||
// CHECK:STDOUT: %ptr: type = ptr_type %SelfNestedBadParam [concrete = constants.%ptr.4cd]
|
||||
// CHECK:STDOUT: %int_32.loc200_40: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc200_40: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %int_32.loc200_49: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc200_49: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %struct_type.x.y: type = struct_type {.x: %i32, .y: %i32} [concrete = constants.%struct_type.x.y.871]
|
||||
// CHECK:STDOUT: %.loc200_53.2: %tuple.type.24b = tuple_literal (%ptr, %struct_type.x.y)
|
||||
// CHECK:STDOUT: %.loc200_53.3: type = converted %.loc200_53.2, constants.%tuple.type.a7d [template = constants.%tuple.type.a7d]
|
||||
// CHECK:STDOUT: %.loc200_53.3: type = converted %.loc200_53.2, constants.%tuple.type.a7d [concrete = constants.%tuple.type.a7d]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %x: %tuple.type.a7d = bind_name x, %x.param
|
||||
// CHECK:STDOUT: %return.param: ref %array_type.a41 = out_param runtime_param1
|
||||
@@ -788,25 +788,25 @@ class SelfNestedBadReturnType {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl.15: %Self.ref as %SelfNested.ref {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.0e7 = fn_decl @F.15 [template = constants.%F.0bc] {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.0e7 = fn_decl @F.15 [concrete = constants.%F.0bc] {
|
||||
// CHECK:STDOUT: %x.patt: %tuple.type.eb9 = binding_pattern x
|
||||
// CHECK:STDOUT: %x.param_patt: %tuple.type.eb9 = value_param_pattern %x.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: %array_type.a41 = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %array_type.a41 = out_param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %SelfNestedBadParam.ref: type = name_ref SelfNestedBadParam, file.%SelfNestedBadParam.decl [template = constants.%SelfNestedBadParam]
|
||||
// CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [template = constants.%int_4]
|
||||
// CHECK:STDOUT: %array_type: type = array_type %int_4, %SelfNestedBadParam [template = constants.%array_type.a41]
|
||||
// CHECK:STDOUT: %SelfNestedBadParam.ref: type = name_ref SelfNestedBadParam, file.%SelfNestedBadParam.decl [concrete = constants.%SelfNestedBadParam]
|
||||
// CHECK:STDOUT: %int_4: Core.IntLiteral = int_value 4 [concrete = constants.%int_4]
|
||||
// CHECK:STDOUT: %array_type: type = array_type %int_4, %SelfNestedBadParam [concrete = constants.%array_type.a41]
|
||||
// CHECK:STDOUT: %x.param: %tuple.type.eb9 = value_param runtime_param0
|
||||
// CHECK:STDOUT: %.loc213_78.1: type = splice_block %.loc213_78.3 [template = constants.%tuple.type.eb9] {
|
||||
// CHECK:STDOUT: %SelfNestedBadReturnType.ref.loc213_14: type = name_ref SelfNestedBadReturnType, file.%SelfNestedBadReturnType.decl [template = constants.%SelfNestedBadReturnType]
|
||||
// CHECK:STDOUT: %ptr: type = ptr_type %SelfNestedBadReturnType [template = constants.%ptr.612]
|
||||
// CHECK:STDOUT: %SelfNestedBadReturnType.ref.loc213_45: type = name_ref SelfNestedBadReturnType, file.%SelfNestedBadReturnType.decl [template = constants.%SelfNestedBadReturnType]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: %struct_type.x.y: type = struct_type {.x: %SelfNestedBadReturnType, .y: %i32} [template = constants.%struct_type.x.y.ac5]
|
||||
// CHECK:STDOUT: %.loc213_78.1: type = splice_block %.loc213_78.3 [concrete = constants.%tuple.type.eb9] {
|
||||
// CHECK:STDOUT: %SelfNestedBadReturnType.ref.loc213_14: type = name_ref SelfNestedBadReturnType, file.%SelfNestedBadReturnType.decl [concrete = constants.%SelfNestedBadReturnType]
|
||||
// CHECK:STDOUT: %ptr: type = ptr_type %SelfNestedBadReturnType [concrete = constants.%ptr.612]
|
||||
// CHECK:STDOUT: %SelfNestedBadReturnType.ref.loc213_45: type = name_ref SelfNestedBadReturnType, file.%SelfNestedBadReturnType.decl [concrete = constants.%SelfNestedBadReturnType]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %struct_type.x.y: type = struct_type {.x: %SelfNestedBadReturnType, .y: %i32} [concrete = constants.%struct_type.x.y.ac5]
|
||||
// CHECK:STDOUT: %.loc213_78.2: %tuple.type.24b = tuple_literal (%ptr, %struct_type.x.y)
|
||||
// CHECK:STDOUT: %.loc213_78.3: type = converted %.loc213_78.2, constants.%tuple.type.eb9 [template = constants.%tuple.type.eb9]
|
||||
// CHECK:STDOUT: %.loc213_78.3: type = converted %.loc213_78.2, constants.%tuple.type.eb9 [concrete = constants.%tuple.type.eb9]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %x: %tuple.type.eb9 = bind_name x, %x.param
|
||||
// CHECK:STDOUT: %return.param: ref %array_type.a41 = out_param runtime_param1
|
||||
@@ -819,12 +819,12 @@ class SelfNestedBadReturnType {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @NoF {
|
||||
// CHECK:STDOUT: impl_decl @impl.1 [template] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%NoF [template = constants.%NoF]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type]
|
||||
// CHECK:STDOUT: impl_decl @impl.1 [concrete] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%NoF [concrete = constants.%NoF]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (<error>) [template = constants.%impl_witness.85bcb7.1]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (<error>) [concrete = constants.%impl_witness.85bcb7.1]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -832,12 +832,12 @@ class SelfNestedBadReturnType {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @FNotFunction {
|
||||
// CHECK:STDOUT: impl_decl @impl.2 [template] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FNotFunction [template = constants.%FNotFunction]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type]
|
||||
// CHECK:STDOUT: impl_decl @impl.2 [concrete] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FNotFunction [concrete = constants.%FNotFunction]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (<error>) [template = constants.%impl_witness.85bcb7.2]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (<error>) [concrete = constants.%impl_witness.85bcb7.2]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -847,12 +847,12 @@ class SelfNestedBadReturnType {
|
||||
// CHECK:STDOUT: class @F.16;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @FAlias {
|
||||
// CHECK:STDOUT: impl_decl @impl.3 [template] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FAlias [template = constants.%FAlias]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type]
|
||||
// CHECK:STDOUT: impl_decl @impl.3 [concrete] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FAlias [concrete = constants.%FAlias]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (<error>) [template = constants.%impl_witness.85bcb7.3]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (<error>) [concrete = constants.%impl_witness.85bcb7.3]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -860,12 +860,12 @@ class SelfNestedBadReturnType {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @FExtraParam {
|
||||
// CHECK:STDOUT: impl_decl @impl.4 [template] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FExtraParam [template = constants.%FExtraParam]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type]
|
||||
// CHECK:STDOUT: impl_decl @impl.4 [concrete] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FExtraParam [concrete = constants.%FExtraParam]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (<error>) [template = constants.%impl_witness.85bcb7.4]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (<error>) [concrete = constants.%impl_witness.85bcb7.4]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -873,12 +873,12 @@ class SelfNestedBadReturnType {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @FExtraImplicitParam {
|
||||
// CHECK:STDOUT: impl_decl @impl.5 [template] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FExtraImplicitParam [template = constants.%FExtraImplicitParam]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type]
|
||||
// CHECK:STDOUT: impl_decl @impl.5 [concrete] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FExtraImplicitParam [concrete = constants.%FExtraImplicitParam]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (<error>) [template = constants.%impl_witness.85bcb7.5]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (<error>) [concrete = constants.%impl_witness.85bcb7.5]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -886,12 +886,12 @@ class SelfNestedBadReturnType {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @FExtraReturnType {
|
||||
// CHECK:STDOUT: impl_decl @impl.6 [template] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FExtraReturnType [template = constants.%FExtraReturnType]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type]
|
||||
// CHECK:STDOUT: impl_decl @impl.6 [concrete] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FExtraReturnType [concrete = constants.%FExtraReturnType]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (<error>) [template = constants.%impl_witness.85bcb7.6]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (<error>) [concrete = constants.%impl_witness.85bcb7.6]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -899,12 +899,12 @@ class SelfNestedBadReturnType {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @FMissingParam {
|
||||
// CHECK:STDOUT: impl_decl @impl.7 [template] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FMissingParam [template = constants.%FMissingParam]
|
||||
// CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [template = constants.%J.type]
|
||||
// CHECK:STDOUT: impl_decl @impl.7 [concrete] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FMissingParam [concrete = constants.%FMissingParam]
|
||||
// CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (<error>) [template = constants.%impl_witness.85bcb7.7]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (<error>) [concrete = constants.%impl_witness.85bcb7.7]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -912,12 +912,12 @@ class SelfNestedBadReturnType {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @FMissingImplicitParam {
|
||||
// CHECK:STDOUT: impl_decl @impl.8 [template] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FMissingImplicitParam [template = constants.%FMissingImplicitParam]
|
||||
// CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [template = constants.%J.type]
|
||||
// CHECK:STDOUT: impl_decl @impl.8 [concrete] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FMissingImplicitParam [concrete = constants.%FMissingImplicitParam]
|
||||
// CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (<error>) [template = constants.%impl_witness.85bcb7.8]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (<error>) [concrete = constants.%impl_witness.85bcb7.8]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -925,12 +925,12 @@ class SelfNestedBadReturnType {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @FMissingReturnType {
|
||||
// CHECK:STDOUT: impl_decl @impl.9 [template] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FMissingReturnType [template = constants.%FMissingReturnType]
|
||||
// CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [template = constants.%J.type]
|
||||
// CHECK:STDOUT: impl_decl @impl.9 [concrete] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FMissingReturnType [concrete = constants.%FMissingReturnType]
|
||||
// CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (<error>) [template = constants.%impl_witness.85bcb7.9]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (<error>) [concrete = constants.%impl_witness.85bcb7.9]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -938,12 +938,12 @@ class SelfNestedBadReturnType {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @FDifferentParamType {
|
||||
// CHECK:STDOUT: impl_decl @impl.10 [template] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FDifferentParamType [template = constants.%FDifferentParamType]
|
||||
// CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [template = constants.%J.type]
|
||||
// CHECK:STDOUT: impl_decl @impl.10 [concrete] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FDifferentParamType [concrete = constants.%FDifferentParamType]
|
||||
// CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (<error>) [template = constants.%impl_witness.85bcb7.10]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (<error>) [concrete = constants.%impl_witness.85bcb7.10]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -951,12 +951,12 @@ class SelfNestedBadReturnType {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @FDifferentImplicitParamType {
|
||||
// CHECK:STDOUT: impl_decl @impl.11 [template] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FDifferentImplicitParamType [template = constants.%FDifferentImplicitParamType]
|
||||
// CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [template = constants.%J.type]
|
||||
// CHECK:STDOUT: impl_decl @impl.11 [concrete] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FDifferentImplicitParamType [concrete = constants.%FDifferentImplicitParamType]
|
||||
// CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (<error>) [template = constants.%impl_witness.85bcb7.11]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (<error>) [concrete = constants.%impl_witness.85bcb7.11]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -964,12 +964,12 @@ class SelfNestedBadReturnType {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @FDifferentReturnType {
|
||||
// CHECK:STDOUT: impl_decl @impl.12 [template] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FDifferentReturnType [template = constants.%FDifferentReturnType]
|
||||
// CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [template = constants.%J.type]
|
||||
// CHECK:STDOUT: impl_decl @impl.12 [concrete] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FDifferentReturnType [concrete = constants.%FDifferentReturnType]
|
||||
// CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (<error>) [template = constants.%impl_witness.85bcb7.12]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (<error>) [concrete = constants.%impl_witness.85bcb7.12]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -977,12 +977,12 @@ class SelfNestedBadReturnType {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @FDifferentParamName {
|
||||
// CHECK:STDOUT: impl_decl @impl.13 [template] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FDifferentParamName [template = constants.%FDifferentParamName]
|
||||
// CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [template = constants.%J.type]
|
||||
// CHECK:STDOUT: impl_decl @impl.13 [concrete] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%FDifferentParamName [concrete = constants.%FDifferentParamName]
|
||||
// CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (<error>) [template = constants.%impl_witness.85bcb7.13]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (<error>) [concrete = constants.%impl_witness.85bcb7.13]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -990,12 +990,12 @@ class SelfNestedBadReturnType {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @SelfNestedBadParam {
|
||||
// CHECK:STDOUT: impl_decl @impl.14 [template] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%SelfNestedBadParam [template = constants.%SelfNestedBadParam]
|
||||
// CHECK:STDOUT: %SelfNested.ref: type = name_ref SelfNested, file.%SelfNested.decl [template = constants.%SelfNested.type]
|
||||
// CHECK:STDOUT: impl_decl @impl.14 [concrete] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%SelfNestedBadParam [concrete = constants.%SelfNestedBadParam]
|
||||
// CHECK:STDOUT: %SelfNested.ref: type = name_ref SelfNested, file.%SelfNested.decl [concrete = constants.%SelfNested.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (<error>) [template = constants.%impl_witness.85bcb7.14]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (<error>) [concrete = constants.%impl_witness.85bcb7.14]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -1003,12 +1003,12 @@ class SelfNestedBadReturnType {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @SelfNestedBadReturnType {
|
||||
// CHECK:STDOUT: impl_decl @impl.15 [template] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%SelfNestedBadReturnType [template = constants.%SelfNestedBadReturnType]
|
||||
// CHECK:STDOUT: %SelfNested.ref: type = name_ref SelfNested, file.%SelfNested.decl [template = constants.%SelfNested.type]
|
||||
// CHECK:STDOUT: impl_decl @impl.15 [concrete] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%SelfNestedBadReturnType [concrete = constants.%SelfNestedBadReturnType]
|
||||
// CHECK:STDOUT: %SelfNested.ref: type = name_ref SelfNested, file.%SelfNested.decl [concrete = constants.%SelfNested.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (<error>) [template = constants.%impl_witness.85bcb7.15]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (<error>) [concrete = constants.%impl_witness.85bcb7.15]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
|
||||
+30
-30
@@ -47,13 +47,13 @@ impl f64 as type where .Self impls type {}
|
||||
// CHECK:STDOUT: --- fail_impl_as_false.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template]
|
||||
// CHECK:STDOUT: %false: bool = bool_literal false [template]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %false: bool = bool_literal false [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
|
||||
// CHECK:STDOUT: .Int = %Core.Int
|
||||
// CHECK:STDOUT: .ImplicitAs = %Core.ImplicitAs
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
@@ -62,15 +62,15 @@ impl f64 as type where .Self impls type {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Core = imports.%Core
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %.loc11: type = converted @impl.%false, <error> [template = <error>]
|
||||
// CHECK:STDOUT: impl_decl @impl [template] {} {
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: %false: bool = bool_literal false [template = constants.%false]
|
||||
// CHECK:STDOUT: %.loc11: type = converted @impl.%false, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: impl_decl @impl [concrete] {} {
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %false: bool = bool_literal false [concrete = constants.%false]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -82,12 +82,12 @@ impl f64 as type where .Self impls type {}
|
||||
// CHECK:STDOUT: --- fail_impl_as_type.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %Bool.type: type = fn_type @Bool [template]
|
||||
// CHECK:STDOUT: %Bool: %Bool.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %Bool.type: type = fn_type @Bool [concrete]
|
||||
// CHECK:STDOUT: %Bool: %Bool.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
|
||||
// CHECK:STDOUT: .Bool = %Core.Bool
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
@@ -95,14 +95,14 @@ impl f64 as type where .Self impls type {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Core = imports.%Core
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: impl_decl @impl [template] {} {
|
||||
// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool]
|
||||
// CHECK:STDOUT: %.loc8_6.1: type = value_of_initializer %bool.make_type [template = bool]
|
||||
// CHECK:STDOUT: %.loc8_6.2: type = converted %bool.make_type, %.loc8_6.1 [template = bool]
|
||||
// CHECK:STDOUT: impl_decl @impl [concrete] {} {
|
||||
// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc8_6.1: type = value_of_initializer %bool.make_type [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc8_6.2: type = converted %bool.make_type, %.loc8_6.1 [concrete = bool]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -114,15 +114,15 @@ impl f64 as type where .Self impls type {}
|
||||
// CHECK:STDOUT: --- fail_impl_as_type_where.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %int_64: Core.IntLiteral = int_value 64 [template]
|
||||
// CHECK:STDOUT: %Float.type: type = fn_type @Float [template]
|
||||
// CHECK:STDOUT: %Float: %Float.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %int_64: Core.IntLiteral = int_value 64 [concrete]
|
||||
// CHECK:STDOUT: %Float.type: type = fn_type @Float [concrete]
|
||||
// CHECK:STDOUT: %Float: %Float.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %.Self: type = bind_symbolic_name .Self [symbolic]
|
||||
// CHECK:STDOUT: %type_where: type = facet_type <type where TODO> [template]
|
||||
// CHECK:STDOUT: %type_where: type = facet_type <type where TODO> [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
|
||||
// CHECK:STDOUT: .Float = %Core.Float
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
@@ -130,18 +130,18 @@ impl f64 as type where .Self impls type {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Core = imports.%Core
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: impl_decl @impl [template] {} {
|
||||
// CHECK:STDOUT: %int_64: Core.IntLiteral = int_value 64 [template = constants.%int_64]
|
||||
// CHECK:STDOUT: %float.make_type: init type = call constants.%Float(%int_64) [template = f64]
|
||||
// CHECK:STDOUT: %.loc11_6.1: type = value_of_initializer %float.make_type [template = f64]
|
||||
// CHECK:STDOUT: %.loc11_6.2: type = converted %float.make_type, %.loc11_6.1 [template = f64]
|
||||
// CHECK:STDOUT: impl_decl @impl [concrete] {} {
|
||||
// CHECK:STDOUT: %int_64: Core.IntLiteral = int_value 64 [concrete = constants.%int_64]
|
||||
// CHECK:STDOUT: %float.make_type: init type = call constants.%Float(%int_64) [concrete = f64]
|
||||
// CHECK:STDOUT: %.loc11_6.1: type = value_of_initializer %float.make_type [concrete = f64]
|
||||
// CHECK:STDOUT: %.loc11_6.2: type = converted %float.make_type, %.loc11_6.1 [concrete = f64]
|
||||
// CHECK:STDOUT: %.Self: type = bind_symbolic_name .Self [symbolic = constants.%.Self]
|
||||
// CHECK:STDOUT: %.Self.ref: type = name_ref .Self, %.Self [symbolic = constants.%.Self]
|
||||
// CHECK:STDOUT: %.loc11_18: type = where_expr %.Self [template = constants.%type_where] {
|
||||
// CHECK:STDOUT: %.loc11_18: type = where_expr %.Self [concrete = constants.%type_where] {
|
||||
// CHECK:STDOUT: requirement_impls %.Self.ref, type
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
+17
-17
@@ -24,15 +24,15 @@ impl i32 as I {}
|
||||
// CHECK:STDOUT: --- fail_redefinition.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [template]
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete]
|
||||
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [template]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
|
||||
// CHECK:STDOUT: .Int = %Core.Int
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
@@ -40,24 +40,24 @@ impl i32 as I {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Core = imports.%Core
|
||||
// CHECK:STDOUT: .I = %I.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [template = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl.1 [template] {} {
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type]
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl.1 [concrete] {} {
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness.loc13: <witness> = impl_witness () [template = constants.%impl_witness]
|
||||
// CHECK:STDOUT: impl_decl @impl.2 [template] {} {
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type]
|
||||
// CHECK:STDOUT: %impl_witness.loc13: <witness> = impl_witness () [concrete = constants.%impl_witness]
|
||||
// CHECK:STDOUT: impl_decl @impl.2 [concrete] {} {
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness.loc22: <witness> = impl_witness () [template = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %impl_witness.loc22: <witness> = impl_witness () [concrete = constants.%impl_witness]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @I {
|
||||
|
||||
+36
-36
@@ -32,30 +32,30 @@ impl i32 as I {
|
||||
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %X: %T = bind_symbolic_name X, 1 [symbolic]
|
||||
// CHECK:STDOUT: %X.patt: %T = symbolic_binding_pattern X, 1 [symbolic]
|
||||
// CHECK:STDOUT: %C.type: type = generic_class_type @C [template]
|
||||
// CHECK:STDOUT: %C.generic: %C.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %C.type: type = generic_class_type @C [concrete]
|
||||
// CHECK:STDOUT: %C.generic: %C.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %C.b36: type = class_type @C, @C(%T, %X) [symbolic]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %complete_type.357: <witness> = complete_type_witness %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type.357: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete]
|
||||
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %C.dbb: type = class_type @C, @C(%I.type, %Self) [symbolic]
|
||||
// CHECK:STDOUT: %F.type.cf0: type = fn_type @F.1 [template]
|
||||
// CHECK:STDOUT: %F.bc6: %F.type.cf0 = struct_value () [template]
|
||||
// CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type %I.type [template]
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%F.decl [template]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (<error>) [template]
|
||||
// CHECK:STDOUT: %C.6fb: type = class_type @C, @C(type, %i32) [template]
|
||||
// CHECK:STDOUT: %F.type.066: type = fn_type @F.2 [template]
|
||||
// CHECK:STDOUT: %F.9ec: %F.type.066 = struct_value () [template]
|
||||
// CHECK:STDOUT: %I.facet: %I.type = facet_value %i32, %impl_witness [template]
|
||||
// CHECK:STDOUT: %C.d7a: type = class_type @C, @C(%I.type, %I.facet) [template]
|
||||
// CHECK:STDOUT: %F.type.cf0: type = fn_type @F.1 [concrete]
|
||||
// CHECK:STDOUT: %F.bc6: %F.type.cf0 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type %I.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%F.decl [concrete]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (<error>) [concrete]
|
||||
// CHECK:STDOUT: %C.6fb: type = class_type @C, @C(type, %i32) [concrete]
|
||||
// CHECK:STDOUT: %F.type.066: type = fn_type @F.2 [concrete]
|
||||
// CHECK:STDOUT: %F.9ec: %F.type.066 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %I.facet: %I.type = facet_value %i32, %impl_witness [concrete]
|
||||
// CHECK:STDOUT: %C.d7a: type = class_type @C, @C(%I.type, %I.facet) [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
|
||||
// CHECK:STDOUT: .Int = %Core.Int
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
@@ -63,13 +63,13 @@ impl i32 as I {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Core = imports.%Core
|
||||
// CHECK:STDOUT: .C = %C.decl
|
||||
// CHECK:STDOUT: .I = %I.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %C.decl: %C.type = class_decl @C [template = constants.%C.generic] {
|
||||
// CHECK:STDOUT: %C.decl: %C.type = class_decl @C [concrete = constants.%C.generic] {
|
||||
// CHECK:STDOUT: %T.patt.loc11_9.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc11_9.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc11_9.1, runtime_param<none> [symbolic = %T.patt.loc11_9.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %X.patt.loc11_19.1: @C.%T.loc11_9.2 (%T) = symbolic_binding_pattern X, 1 [symbolic = %X.patt.loc11_19.2 (constants.%X.patt)]
|
||||
@@ -81,30 +81,30 @@ impl i32 as I {
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc11_9.1 [symbolic = %T.loc11_9.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %X.loc11_19.1: @C.%T.loc11_9.2 (%T) = bind_symbolic_name X, 1, %X.param [symbolic = %X.loc11_19.2 (constants.%X)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [template = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [template] {} {
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type]
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [concrete] {} {
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (<error>) [template = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (<error>) [concrete = constants.%impl_witness]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @I {
|
||||
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self]
|
||||
// CHECK:STDOUT: %F.decl: %F.type.cf0 = fn_decl @F.1 [template = constants.%F.bc6] {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.cf0 = fn_decl @F.1 [concrete = constants.%F.bc6] {
|
||||
// CHECK:STDOUT: %c.patt: @F.1.%C.loc14_17.1 (%C.dbb) = binding_pattern c
|
||||
// CHECK:STDOUT: %c.param_patt: @F.1.%C.loc14_17.1 (%C.dbb) = value_param_pattern %c.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %c.param: @F.1.%C.loc14_17.1 (%C.dbb) = value_param runtime_param0
|
||||
// CHECK:STDOUT: %.loc14: type = splice_block %C.loc14_17.2 [symbolic = %C.loc14_17.1 (constants.%C.dbb)] {
|
||||
// CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [template = constants.%C.generic]
|
||||
// CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [concrete = constants.%C.generic]
|
||||
// CHECK:STDOUT: %Self.ref: %I.type = name_ref Self, @I.%Self [symbolic = %Self (constants.%Self)]
|
||||
// CHECK:STDOUT: %C.loc14_17.2: type = class_type @C, @C(constants.%I.type, constants.%Self) [symbolic = %C.loc14_17.1 (constants.%C.dbb)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %c: @F.1.%C.loc14_17.1 (%C.dbb) = bind_name c, %c.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -113,16 +113,16 @@ impl i32 as I {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl: %i32 as %I.ref {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.066 = fn_decl @F.2 [template = constants.%F.9ec] {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.066 = fn_decl @F.2 [concrete = constants.%F.9ec] {
|
||||
// CHECK:STDOUT: %c.patt: %C.6fb = binding_pattern c
|
||||
// CHECK:STDOUT: %c.param_patt: %C.6fb = value_param_pattern %c.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %c.param: %C.6fb = value_param runtime_param0
|
||||
// CHECK:STDOUT: %.loc25: type = splice_block %C [template = constants.%C.6fb] {
|
||||
// CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [template = constants.%C.generic]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: %C: type = class_type @C, @C(type, constants.%i32) [template = constants.%C.6fb]
|
||||
// CHECK:STDOUT: %.loc25: type = splice_block %C [concrete = constants.%C.6fb] {
|
||||
// CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [concrete = constants.%C.generic]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %C: type = class_type @C, @C(type, constants.%i32) [concrete = constants.%C.6fb]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %c: %C.6fb = bind_name c, %c.param
|
||||
// CHECK:STDOUT: }
|
||||
@@ -141,7 +141,7 @@ impl i32 as I {
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class {
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
|
||||
+175
-175
@@ -86,37 +86,37 @@ impl () as I where .N = 2 {
|
||||
// CHECK:STDOUT: --- fail_todo_associated_type_in_signature.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %J.type: type = facet_type <@J> [template]
|
||||
// CHECK:STDOUT: %J.type: type = facet_type <@J> [concrete]
|
||||
// CHECK:STDOUT: %Self.ccd: %J.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %J.assoc_type: type = assoc_entity_type %J.type [template]
|
||||
// CHECK:STDOUT: %assoc0.1e6: %J.assoc_type = assoc_entity element0, @J.%U [template]
|
||||
// CHECK:STDOUT: %J.assoc_type: type = assoc_entity_type %J.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0.1e6: %J.assoc_type = assoc_entity element0, @J.%U [concrete]
|
||||
// CHECK:STDOUT: %Self.as_type.3df: type = facet_access_type %Self.ccd [symbolic]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %F.type.c14: type = fn_type @F.1 [template]
|
||||
// CHECK:STDOUT: %F.b71: %F.type.c14 = struct_value () [template]
|
||||
// CHECK:STDOUT: %assoc1: %J.assoc_type = assoc_entity element1, @J.%F.decl [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %F.type.c14: type = fn_type @F.1 [concrete]
|
||||
// CHECK:STDOUT: %F.b71: %F.type.c14 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %assoc1: %J.assoc_type = assoc_entity element1, @J.%F.decl [concrete]
|
||||
// CHECK:STDOUT: %.Self: %J.type = bind_symbolic_name .Self [symbolic]
|
||||
// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic]
|
||||
// CHECK:STDOUT: %.Self.as_wit: <witness> = facet_access_witness %.Self [symbolic]
|
||||
// CHECK:STDOUT: %J.facet.ad0: %J.type = facet_value %.Self.as_type, %.Self.as_wit [symbolic]
|
||||
// CHECK:STDOUT: %impl.elem0: type = impl_witness_access %.Self.as_wit, element0 [symbolic]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %J_where.type.800: type = facet_type <@J where %impl.elem0 = %empty_struct_type> [template]
|
||||
// CHECK:STDOUT: %impl_witness.f71: <witness> = impl_witness (%empty_struct_type, <error>) [template]
|
||||
// CHECK:STDOUT: %F.type.159: type = fn_type @F.2 [template]
|
||||
// CHECK:STDOUT: %F.59d: %F.type.159 = struct_value () [template]
|
||||
// CHECK:STDOUT: %J.facet.550: %J.type = facet_value %empty_tuple.type, %impl_witness.f71 [template]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [template]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %J_where.type.2f6: type = facet_type <@J where %impl.elem0 = %C> [template]
|
||||
// CHECK:STDOUT: %impl_witness.c2b: <witness> = impl_witness (%C, <error>) [template]
|
||||
// CHECK:STDOUT: %F.type.01a: type = fn_type @F.3 [template]
|
||||
// CHECK:STDOUT: %F.686: %F.type.01a = struct_value () [template]
|
||||
// CHECK:STDOUT: %J.facet.38d: %J.type = facet_value %C, %impl_witness.c2b [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %J_where.type.800: type = facet_type <@J where %impl.elem0 = %empty_struct_type> [concrete]
|
||||
// CHECK:STDOUT: %impl_witness.f71: <witness> = impl_witness (%empty_struct_type, <error>) [concrete]
|
||||
// CHECK:STDOUT: %F.type.159: type = fn_type @F.2 [concrete]
|
||||
// CHECK:STDOUT: %F.59d: %F.type.159 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %J.facet.550: %J.type = facet_value %empty_tuple.type, %impl_witness.f71 [concrete]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %J_where.type.2f6: type = facet_type <@J where %impl.elem0 = %C> [concrete]
|
||||
// CHECK:STDOUT: %impl_witness.c2b: <witness> = impl_witness (%C, <error>) [concrete]
|
||||
// CHECK:STDOUT: %F.type.01a: type = fn_type @F.3 [concrete]
|
||||
// CHECK:STDOUT: %F.686: %F.type.01a = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %J.facet.38d: %J.type = facet_value %C, %impl_witness.c2b [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
|
||||
// CHECK:STDOUT: .ImplicitAs = %Core.ImplicitAs
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
@@ -124,56 +124,56 @@ impl () as I where .N = 2 {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Core = imports.%Core
|
||||
// CHECK:STDOUT: .J = %J.decl
|
||||
// CHECK:STDOUT: .C = %C.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %J.decl: type = interface_decl @J [template = constants.%J.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl.1 [template] {} {
|
||||
// CHECK:STDOUT: %J.decl: type = interface_decl @J [concrete = constants.%J.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl.1 [concrete] {} {
|
||||
// CHECK:STDOUT: %.loc22_7.1: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc22_7.2: type = converted %.loc22_7.1, constants.%empty_tuple.type [template = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [template = constants.%J.type]
|
||||
// CHECK:STDOUT: %.loc22_7.2: type = converted %.loc22_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type]
|
||||
// CHECK:STDOUT: %.Self: %J.type = bind_symbolic_name .Self [symbolic = constants.%.Self]
|
||||
// CHECK:STDOUT: %.Self.ref: %J.type = name_ref .Self, %.Self [symbolic = constants.%.Self]
|
||||
// CHECK:STDOUT: %U.ref: %J.assoc_type = name_ref U, @U.%assoc0 [template = constants.%assoc0.1e6]
|
||||
// CHECK:STDOUT: %U.ref: %J.assoc_type = name_ref U, @U.%assoc0 [concrete = constants.%assoc0.1e6]
|
||||
// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic = constants.%.Self.as_type]
|
||||
// CHECK:STDOUT: %.loc22_20: type = converted %.Self.ref, %.Self.as_type [symbolic = constants.%.Self.as_type]
|
||||
// CHECK:STDOUT: %.Self.as_wit: <witness> = facet_access_witness %.Self.ref [symbolic = constants.%.Self.as_wit]
|
||||
// CHECK:STDOUT: %impl.elem0: type = impl_witness_access %.Self.as_wit, element0 [symbolic = constants.%impl.elem0]
|
||||
// CHECK:STDOUT: %.loc22_26.1: %empty_struct_type = struct_literal ()
|
||||
// CHECK:STDOUT: %.loc22_26.2: type = converted %.loc22_26.1, constants.%empty_struct_type [template = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %.loc22_14: type = where_expr %.Self [template = constants.%J_where.type.800] {
|
||||
// CHECK:STDOUT: %.loc22_26.2: type = converted %.loc22_26.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %.loc22_14: type = where_expr %.Self [concrete = constants.%J_where.type.800] {
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc22_26.2
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness.loc22: <witness> = impl_witness (constants.%empty_struct_type, <error>) [template = constants.%impl_witness.f71]
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl.2 [template] {} {
|
||||
// CHECK:STDOUT: %C.ref.loc31_6: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [template = constants.%J.type]
|
||||
// CHECK:STDOUT: %impl_witness.loc22: <witness> = impl_witness (constants.%empty_struct_type, <error>) [concrete = constants.%impl_witness.f71]
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl.2 [concrete] {} {
|
||||
// CHECK:STDOUT: %C.ref.loc31_6: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type]
|
||||
// CHECK:STDOUT: %.Self: %J.type = bind_symbolic_name .Self [symbolic = constants.%.Self]
|
||||
// CHECK:STDOUT: %.Self.ref: %J.type = name_ref .Self, %.Self [symbolic = constants.%.Self]
|
||||
// CHECK:STDOUT: %U.ref: %J.assoc_type = name_ref U, @U.%assoc0 [template = constants.%assoc0.1e6]
|
||||
// CHECK:STDOUT: %U.ref: %J.assoc_type = name_ref U, @U.%assoc0 [concrete = constants.%assoc0.1e6]
|
||||
// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic = constants.%.Self.as_type]
|
||||
// CHECK:STDOUT: %.loc31_19: type = converted %.Self.ref, %.Self.as_type [symbolic = constants.%.Self.as_type]
|
||||
// CHECK:STDOUT: %.Self.as_wit: <witness> = facet_access_witness %.Self.ref [symbolic = constants.%.Self.as_wit]
|
||||
// CHECK:STDOUT: %impl.elem0: type = impl_witness_access %.Self.as_wit, element0 [symbolic = constants.%impl.elem0]
|
||||
// CHECK:STDOUT: %C.ref.loc31_24: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %.loc31_13: type = where_expr %.Self [template = constants.%J_where.type.2f6] {
|
||||
// CHECK:STDOUT: %C.ref.loc31_24: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %.loc31_13: type = where_expr %.Self [concrete = constants.%J_where.type.2f6] {
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0, %C.ref.loc31_24
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness.loc31: <witness> = impl_witness (constants.%C, <error>) [template = constants.%impl_witness.c2b]
|
||||
// CHECK:STDOUT: %impl_witness.loc31: <witness> = impl_witness (constants.%C, <error>) [concrete = constants.%impl_witness.c2b]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @J {
|
||||
// CHECK:STDOUT: %Self: %J.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.ccd]
|
||||
// CHECK:STDOUT: %U: type = assoc_const_decl @U [template] {
|
||||
// CHECK:STDOUT: %assoc0: %J.assoc_type = assoc_entity element0, @J.%U [template = constants.%assoc0.1e6]
|
||||
// CHECK:STDOUT: %U: type = assoc_const_decl @U [concrete] {
|
||||
// CHECK:STDOUT: %assoc0: %J.assoc_type = assoc_entity element0, @J.%U [concrete = constants.%assoc0.1e6]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %F.decl: %F.type.c14 = fn_decl @F.1 [template = constants.%F.b71] {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.c14 = fn_decl @F.1 [concrete = constants.%F.b71] {
|
||||
// CHECK:STDOUT: %self.patt: @F.1.%Self.as_type.loc19_14.1 (%Self.as_type.3df) = binding_pattern self
|
||||
// CHECK:STDOUT: %self.param_patt: @F.1.%Self.as_type.loc19_14.1 (%Self.as_type.3df) = value_param_pattern %self.patt, runtime_param0
|
||||
// CHECK:STDOUT: %u.patt: <error> = binding_pattern u
|
||||
@@ -181,8 +181,8 @@ impl () as I where .N = 2 {
|
||||
// CHECK:STDOUT: %return.patt: <error> = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: <error> = out_param_pattern %return.patt, runtime_param2
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %U.ref.loc19_29: %J.assoc_type = name_ref U, @U.%assoc0 [template = constants.%assoc0.1e6]
|
||||
// CHECK:STDOUT: %.loc19_29: type = converted %U.ref.loc19_29, <error> [template = <error>]
|
||||
// CHECK:STDOUT: %U.ref.loc19_29: %J.assoc_type = name_ref U, @U.%assoc0 [concrete = constants.%assoc0.1e6]
|
||||
// CHECK:STDOUT: %.loc19_29: type = converted %U.ref.loc19_29, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %self.param: @F.1.%Self.as_type.loc19_14.1 (%Self.as_type.3df) = value_param runtime_param0
|
||||
// CHECK:STDOUT: %.loc19_14.1: type = splice_block %.loc19_14.2 [symbolic = %Self.as_type.loc19_14.1 (constants.%Self.as_type.3df)] {
|
||||
// CHECK:STDOUT: %Self.ref: %J.type = name_ref Self, @J.%Self [symbolic = %Self (constants.%Self.ccd)]
|
||||
@@ -191,15 +191,15 @@ impl () as I where .N = 2 {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %self: @F.1.%Self.as_type.loc19_14.1 (%Self.as_type.3df) = bind_name self, %self.param
|
||||
// CHECK:STDOUT: %u.param: <error> = value_param runtime_param1
|
||||
// CHECK:STDOUT: %.1: <error> = splice_block <error> [template = <error>] {
|
||||
// CHECK:STDOUT: %U.ref.loc19_23: %J.assoc_type = name_ref U, @U.%assoc0 [template = constants.%assoc0.1e6]
|
||||
// CHECK:STDOUT: %.loc19_23: type = converted %U.ref.loc19_23, <error> [template = <error>]
|
||||
// CHECK:STDOUT: %.1: <error> = splice_block <error> [concrete = <error>] {
|
||||
// CHECK:STDOUT: %U.ref.loc19_23: %J.assoc_type = name_ref U, @U.%assoc0 [concrete = constants.%assoc0.1e6]
|
||||
// CHECK:STDOUT: %.loc19_23: type = converted %U.ref.loc19_23, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %u: <error> = bind_name u, %u.param
|
||||
// CHECK:STDOUT: %return.param: ref <error> = out_param runtime_param2
|
||||
// CHECK:STDOUT: %return: ref <error> = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %assoc1: %J.assoc_type = assoc_entity element1, %F.decl [template = constants.%assoc1]
|
||||
// CHECK:STDOUT: %assoc1: %J.assoc_type = assoc_entity element1, %F.decl [concrete = constants.%assoc1]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -213,7 +213,7 @@ impl () as I where .N = 2 {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl.1: %.loc22_7.2 as %.loc22_14 {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.159 = fn_decl @F.2 [template = constants.%F.59d] {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.159 = fn_decl @F.2 [concrete = constants.%F.59d] {
|
||||
// CHECK:STDOUT: %self.patt: %empty_tuple.type = binding_pattern self
|
||||
// CHECK:STDOUT: %self.param_patt: %empty_tuple.type = value_param_pattern %self.patt, runtime_param0
|
||||
// CHECK:STDOUT: %u.patt: %empty_struct_type = binding_pattern u
|
||||
@@ -222,14 +222,14 @@ impl () as I where .N = 2 {
|
||||
// CHECK:STDOUT: %return.param_patt: %empty_struct_type = out_param_pattern %return.patt, runtime_param2
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc23_31.1: %empty_struct_type = struct_literal ()
|
||||
// CHECK:STDOUT: %.loc23_31.2: type = converted %.loc23_31.1, constants.%empty_struct_type [template = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %.loc23_31.2: type = converted %.loc23_31.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %self.param: %empty_tuple.type = value_param runtime_param0
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, @impl.1.%.loc22_7.2 [template = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, @impl.1.%.loc22_7.2 [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %self: %empty_tuple.type = bind_name self, %self.param
|
||||
// CHECK:STDOUT: %u.param: %empty_struct_type = value_param runtime_param1
|
||||
// CHECK:STDOUT: %.loc23_24.1: type = splice_block %.loc23_24.3 [template = constants.%empty_struct_type] {
|
||||
// CHECK:STDOUT: %.loc23_24.1: type = splice_block %.loc23_24.3 [concrete = constants.%empty_struct_type] {
|
||||
// CHECK:STDOUT: %.loc23_24.2: %empty_struct_type = struct_literal ()
|
||||
// CHECK:STDOUT: %.loc23_24.3: type = converted %.loc23_24.2, constants.%empty_struct_type [template = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %.loc23_24.3: type = converted %.loc23_24.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %u: %empty_struct_type = bind_name u, %u.param
|
||||
// CHECK:STDOUT: %return.param: ref %empty_struct_type = out_param runtime_param2
|
||||
@@ -242,7 +242,7 @@ impl () as I where .N = 2 {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl.2: %C.ref.loc31_6 as %.loc31_13 {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.01a = fn_decl @F.3 [template = constants.%F.686] {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.01a = fn_decl @F.3 [concrete = constants.%F.686] {
|
||||
// CHECK:STDOUT: %self.patt: %C = binding_pattern self
|
||||
// CHECK:STDOUT: %self.param_patt: %C = value_param_pattern %self.patt, runtime_param0
|
||||
// CHECK:STDOUT: %u.patt: %C = binding_pattern u
|
||||
@@ -250,12 +250,12 @@ impl () as I where .N = 2 {
|
||||
// CHECK:STDOUT: %return.patt: %C = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %C = out_param_pattern %return.patt, runtime_param2
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %C.ref.loc32_29: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %C.ref.loc32_29: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %self.param: %C = value_param runtime_param0
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, @impl.2.%C.ref.loc31_6 [template = constants.%C]
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, @impl.2.%C.ref.loc31_6 [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %self: %C = bind_name self, %self.param
|
||||
// CHECK:STDOUT: %u.param: %C = value_param runtime_param1
|
||||
// CHECK:STDOUT: %C.ref.loc32_23: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %C.ref.loc32_23: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %u: %C = bind_name u, %u.param
|
||||
// CHECK:STDOUT: %return.param: ref %C = out_param runtime_param2
|
||||
// CHECK:STDOUT: %return: ref %C = return_slot %return.param
|
||||
@@ -268,9 +268,9 @@ impl () as I where .N = 2 {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @C {
|
||||
// CHECK:STDOUT: %.loc28_10: %empty_struct_type = struct_literal ()
|
||||
// CHECK:STDOUT: %.loc28_11: type = converted %.loc28_10, constants.%empty_struct_type [template = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: adapt_decl %.loc28_11 [template]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %.loc28_11: type = converted %.loc28_10, constants.%empty_struct_type [concrete = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: adapt_decl %.loc28_11 [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -318,32 +318,32 @@ impl () as I where .N = 2 {
|
||||
// CHECK:STDOUT: --- fail_todo_use_non-type_in_function.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %M.type: type = facet_type <@M> [template]
|
||||
// CHECK:STDOUT: %M.type: type = facet_type <@M> [concrete]
|
||||
// CHECK:STDOUT: %Self.bcc: %M.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %struct_type.b.347: type = struct_type {.b: %empty_struct_type} [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %M.assoc_type: type = assoc_entity_type %M.type [template]
|
||||
// CHECK:STDOUT: %assoc0.e3d: %M.assoc_type = assoc_entity element0, @M.%Z [template]
|
||||
// CHECK:STDOUT: %G.type.020: type = fn_type @G.1 [template]
|
||||
// CHECK:STDOUT: %G.91c: %G.type.020 = struct_value () [template]
|
||||
// CHECK:STDOUT: %assoc1: %M.assoc_type = assoc_entity element1, @M.%G.decl [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %struct_type.b.347: type = struct_type {.b: %empty_struct_type} [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %M.assoc_type: type = assoc_entity_type %M.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0.e3d: %M.assoc_type = assoc_entity element0, @M.%Z [concrete]
|
||||
// CHECK:STDOUT: %G.type.020: type = fn_type @G.1 [concrete]
|
||||
// CHECK:STDOUT: %G.91c: %G.type.020 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %assoc1: %M.assoc_type = assoc_entity element1, @M.%G.decl [concrete]
|
||||
// CHECK:STDOUT: %.Self: %M.type = bind_symbolic_name .Self [symbolic]
|
||||
// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic]
|
||||
// CHECK:STDOUT: %.Self.as_wit: <witness> = facet_access_witness %.Self [symbolic]
|
||||
// CHECK:STDOUT: %M.facet.ba5: %M.type = facet_value %.Self.as_type, %.Self.as_wit [symbolic]
|
||||
// CHECK:STDOUT: %impl.elem0: %struct_type.b.347 = impl_witness_access %.Self.as_wit, element0 [symbolic]
|
||||
// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [template]
|
||||
// CHECK:STDOUT: %struct: %struct_type.b.347 = struct_value (%empty_struct) [template]
|
||||
// CHECK:STDOUT: %M_where.type: type = facet_type <@M where %impl.elem0 = %struct> [template]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (%struct, @impl.%G.decl) [template]
|
||||
// CHECK:STDOUT: %G.type.aa2: type = fn_type @G.2 [template]
|
||||
// CHECK:STDOUT: %G.816: %G.type.aa2 = struct_value () [template]
|
||||
// CHECK:STDOUT: %M.facet.940: %M.type = facet_value %empty_tuple.type, %impl_witness [template]
|
||||
// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %struct: %struct_type.b.347 = struct_value (%empty_struct) [concrete]
|
||||
// CHECK:STDOUT: %M_where.type: type = facet_type <@M where %impl.elem0 = %struct> [concrete]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (%struct, @impl.%G.decl) [concrete]
|
||||
// CHECK:STDOUT: %G.type.aa2: type = fn_type @G.2 [concrete]
|
||||
// CHECK:STDOUT: %G.816: %G.type.aa2 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %M.facet.940: %M.type = facet_value %empty_tuple.type, %impl_witness [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
|
||||
// CHECK:STDOUT: .As = %Core.As
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
@@ -351,51 +351,51 @@ impl () as I where .N = 2 {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Core = imports.%Core
|
||||
// CHECK:STDOUT: .M = %M.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %M.decl: type = interface_decl @M [template = constants.%M.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [template] {} {
|
||||
// CHECK:STDOUT: %M.decl: type = interface_decl @M [concrete = constants.%M.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [concrete] {} {
|
||||
// CHECK:STDOUT: %.loc8_7.1: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc8_7.2: type = converted %.loc8_7.1, constants.%empty_tuple.type [template = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %M.ref: type = name_ref M, file.%M.decl [template = constants.%M.type]
|
||||
// CHECK:STDOUT: %.loc8_7.2: type = converted %.loc8_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %M.ref: type = name_ref M, file.%M.decl [concrete = constants.%M.type]
|
||||
// CHECK:STDOUT: %.Self: %M.type = bind_symbolic_name .Self [symbolic = constants.%.Self]
|
||||
// CHECK:STDOUT: %.Self.ref: %M.type = name_ref .Self, %.Self [symbolic = constants.%.Self]
|
||||
// CHECK:STDOUT: %Z.ref: %M.assoc_type = name_ref Z, @Z.%assoc0 [template = constants.%assoc0.e3d]
|
||||
// CHECK:STDOUT: %Z.ref: %M.assoc_type = name_ref Z, @Z.%assoc0 [concrete = constants.%assoc0.e3d]
|
||||
// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic = constants.%.Self.as_type]
|
||||
// CHECK:STDOUT: %.loc8_20: type = converted %.Self.ref, %.Self.as_type [symbolic = constants.%.Self.as_type]
|
||||
// CHECK:STDOUT: %.Self.as_wit: <witness> = facet_access_witness %.Self.ref [symbolic = constants.%.Self.as_wit]
|
||||
// CHECK:STDOUT: %impl.elem0: %struct_type.b.347 = impl_witness_access %.Self.as_wit, element0 [symbolic = constants.%impl.elem0]
|
||||
// CHECK:STDOUT: %.loc8_32: %empty_struct_type = struct_literal ()
|
||||
// CHECK:STDOUT: %.loc8_33.1: %struct_type.b.347 = struct_literal (%.loc8_32)
|
||||
// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [template = constants.%empty_struct]
|
||||
// CHECK:STDOUT: %.loc8_33.2: %empty_struct_type = converted %.loc8_32, %empty_struct [template = constants.%empty_struct]
|
||||
// CHECK:STDOUT: %struct: %struct_type.b.347 = struct_value (%.loc8_33.2) [template = constants.%struct]
|
||||
// CHECK:STDOUT: %.loc8_33.3: %struct_type.b.347 = converted %.loc8_33.1, %struct [template = constants.%struct]
|
||||
// CHECK:STDOUT: %.loc8_14: type = where_expr %.Self [template = constants.%M_where.type] {
|
||||
// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete = constants.%empty_struct]
|
||||
// CHECK:STDOUT: %.loc8_33.2: %empty_struct_type = converted %.loc8_32, %empty_struct [concrete = constants.%empty_struct]
|
||||
// CHECK:STDOUT: %struct: %struct_type.b.347 = struct_value (%.loc8_33.2) [concrete = constants.%struct]
|
||||
// CHECK:STDOUT: %.loc8_33.3: %struct_type.b.347 = converted %.loc8_33.1, %struct [concrete = constants.%struct]
|
||||
// CHECK:STDOUT: %.loc8_14: type = where_expr %.Self [concrete = constants.%M_where.type] {
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0, %.loc8_33.3
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (constants.%struct, @impl.%G.decl) [template = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (constants.%struct, @impl.%G.decl) [concrete = constants.%impl_witness]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @M {
|
||||
// CHECK:STDOUT: %Self: %M.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.bcc]
|
||||
// CHECK:STDOUT: %Z: %struct_type.b.347 = assoc_const_decl @Z [template] {
|
||||
// CHECK:STDOUT: %assoc0: %M.assoc_type = assoc_entity element0, @M.%Z [template = constants.%assoc0.e3d]
|
||||
// CHECK:STDOUT: %Z: %struct_type.b.347 = assoc_const_decl @Z [concrete] {
|
||||
// CHECK:STDOUT: %assoc0: %M.assoc_type = assoc_entity element0, @M.%Z [concrete = constants.%assoc0.e3d]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %G.decl: %G.type.020 = fn_decl @G.1 [template = constants.%G.91c] {
|
||||
// CHECK:STDOUT: %G.decl: %G.type.020 = fn_decl @G.1 [concrete = constants.%G.91c] {
|
||||
// CHECK:STDOUT: %return.patt: %empty_struct_type = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %empty_struct_type = out_param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc5_14.1: %empty_struct_type = struct_literal ()
|
||||
// CHECK:STDOUT: %.loc5_14.2: type = converted %.loc5_14.1, constants.%empty_struct_type [template = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %.loc5_14.2: type = converted %.loc5_14.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %return.param: ref %empty_struct_type = out_param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref %empty_struct_type = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %assoc1: %M.assoc_type = assoc_entity element1, %G.decl [template = constants.%assoc1]
|
||||
// CHECK:STDOUT: %assoc1: %M.assoc_type = assoc_entity element1, %G.decl [concrete = constants.%assoc1]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -409,12 +409,12 @@ impl () as I where .N = 2 {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl: %.loc8_7.2 as %.loc8_14 {
|
||||
// CHECK:STDOUT: %G.decl: %G.type.aa2 = fn_decl @G.2 [template = constants.%G.816] {
|
||||
// CHECK:STDOUT: %G.decl: %G.type.aa2 = fn_decl @G.2 [concrete = constants.%G.816] {
|
||||
// CHECK:STDOUT: %return.patt: %empty_struct_type = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %empty_struct_type = out_param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc9_14.1: %empty_struct_type = struct_literal ()
|
||||
// CHECK:STDOUT: %.loc9_14.2: type = converted %.loc9_14.1, constants.%empty_struct_type [template = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %.loc9_14.2: type = converted %.loc9_14.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %return.param: ref %empty_struct_type = out_param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref %empty_struct_type = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
@@ -430,11 +430,11 @@ impl () as I where .N = 2 {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @G.2() -> %empty_struct_type {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, @impl.%.loc8_7.2 [template = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %M.ref: type = name_ref M, file.%M.decl [template = constants.%M.type]
|
||||
// CHECK:STDOUT: %.loc17: %M.type = converted %Self.ref, <error> [template = <error>]
|
||||
// CHECK:STDOUT: %Z.ref: <error> = name_ref Z, <error> [template = <error>]
|
||||
// CHECK:STDOUT: %b.ref: <error> = name_ref b, <error> [template = <error>]
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, @impl.%.loc8_7.2 [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %M.ref: type = name_ref M, file.%M.decl [concrete = constants.%M.type]
|
||||
// CHECK:STDOUT: %.loc17: %M.type = converted %Self.ref, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %Z.ref: <error> = name_ref Z, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %b.ref: <error> = name_ref b, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: return <error>
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -449,51 +449,51 @@ impl () as I where .N = 2 {
|
||||
// CHECK:STDOUT: --- fail_todo_associated_int_in_array.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [template]
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete]
|
||||
// CHECK:STDOUT: %Self.826: %I.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template]
|
||||
// CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type %I.type [template]
|
||||
// CHECK:STDOUT: %assoc0.73c: %I.assoc_type = assoc_entity element0, @I.%N [template]
|
||||
// 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: %I.assoc_type: type = assoc_entity_type %I.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0.73c: %I.assoc_type = assoc_entity element0, @I.%N [concrete]
|
||||
// CHECK:STDOUT: %Self.as_type.b70: type = facet_access_type %Self.826 [symbolic]
|
||||
// CHECK:STDOUT: %Bool.type: type = fn_type @Bool [template]
|
||||
// CHECK:STDOUT: %Bool: %Bool.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %F.type.cf0: type = fn_type @F.1 [template]
|
||||
// CHECK:STDOUT: %F.bc6: %F.type.cf0 = struct_value () [template]
|
||||
// CHECK:STDOUT: %assoc1: %I.assoc_type = assoc_entity element1, @I.%F.decl [template]
|
||||
// CHECK:STDOUT: %Bool.type: type = fn_type @Bool [concrete]
|
||||
// CHECK:STDOUT: %Bool: %Bool.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %F.type.cf0: type = fn_type @F.1 [concrete]
|
||||
// CHECK:STDOUT: %F.bc6: %F.type.cf0 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %assoc1: %I.assoc_type = assoc_entity element1, @I.%F.decl [concrete]
|
||||
// CHECK:STDOUT: %.Self: %I.type = bind_symbolic_name .Self [symbolic]
|
||||
// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self [symbolic]
|
||||
// CHECK:STDOUT: %.Self.as_wit: <witness> = facet_access_witness %.Self [symbolic]
|
||||
// CHECK:STDOUT: %I.facet.1f7: %I.type = facet_value %.Self.as_type, %.Self.as_wit [symbolic]
|
||||
// CHECK:STDOUT: %impl.elem0: %i32 = impl_witness_access %.Self.as_wit, element0 [symbolic]
|
||||
// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [template]
|
||||
// CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [template]
|
||||
// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [template]
|
||||
// CHECK:STDOUT: %impl_witness.d39: <witness> = impl_witness (imports.%Core.import_ref.a5b), @impl.1(%int_32) [template]
|
||||
// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @impl.1(%int_32) [template]
|
||||
// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [template]
|
||||
// CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, %impl_witness.d39 [template]
|
||||
// CHECK:STDOUT: %.a0b: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [template]
|
||||
// CHECK:STDOUT: %Convert.bound: <bound method> = bound_method %int_2.ecc, %Convert.956 [template]
|
||||
// CHECK:STDOUT: %Convert.specific_fn: <specific function> = specific_function %Convert.bound, @Convert.2(%int_32) [template]
|
||||
// CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [template]
|
||||
// CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0 = %int_2.ef8> [template]
|
||||
// CHECK:STDOUT: %impl_witness.2c9: <witness> = impl_witness (%int_2.ef8, <error>) [template]
|
||||
// CHECK:STDOUT: %array_type: type = array_type %int_2.ecc, bool [template]
|
||||
// CHECK:STDOUT: %F.type.9f6: type = fn_type @F.2 [template]
|
||||
// CHECK:STDOUT: %F.572: %F.type.9f6 = struct_value () [template]
|
||||
// CHECK:STDOUT: %I.facet.7b2: %I.type = facet_value %empty_tuple.type, %impl_witness.2c9 [template]
|
||||
// CHECK:STDOUT: %true: bool = bool_literal true [template]
|
||||
// CHECK:STDOUT: %false: bool = bool_literal false [template]
|
||||
// CHECK:STDOUT: %tuple.type: type = tuple_type (bool, bool) [template]
|
||||
// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template]
|
||||
// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template]
|
||||
// CHECK:STDOUT: %array: %array_type = tuple_value (%true, %false) [template]
|
||||
// CHECK:STDOUT: %int_2.ecc: Core.IntLiteral = int_value 2 [concrete]
|
||||
// CHECK:STDOUT: %ImplicitAs.type.205: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete]
|
||||
// CHECK:STDOUT: %Convert.type.1b6: type = fn_type @Convert.1, @ImplicitAs(%i32) [concrete]
|
||||
// CHECK:STDOUT: %impl_witness.d39: <witness> = impl_witness (imports.%Core.import_ref.a5b), @impl.1(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %Convert.type.035: type = fn_type @Convert.2, @impl.1(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %Convert.956: %Convert.type.035 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.205 = facet_value Core.IntLiteral, %impl_witness.d39 [concrete]
|
||||
// CHECK:STDOUT: %.a0b: type = fn_type_with_self_type %Convert.type.1b6, %ImplicitAs.facet [concrete]
|
||||
// CHECK:STDOUT: %Convert.bound: <bound method> = bound_method %int_2.ecc, %Convert.956 [concrete]
|
||||
// CHECK:STDOUT: %Convert.specific_fn: <specific function> = specific_function %Convert.bound, @Convert.2(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete]
|
||||
// CHECK:STDOUT: %I_where.type: type = facet_type <@I where %impl.elem0 = %int_2.ef8> [concrete]
|
||||
// CHECK:STDOUT: %impl_witness.2c9: <witness> = impl_witness (%int_2.ef8, <error>) [concrete]
|
||||
// CHECK:STDOUT: %array_type: type = array_type %int_2.ecc, bool [concrete]
|
||||
// CHECK:STDOUT: %F.type.9f6: type = fn_type @F.2 [concrete]
|
||||
// CHECK:STDOUT: %F.572: %F.type.9f6 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %I.facet.7b2: %I.type = facet_value %empty_tuple.type, %impl_witness.2c9 [concrete]
|
||||
// CHECK:STDOUT: %true: bool = bool_literal true [concrete]
|
||||
// CHECK:STDOUT: %false: bool = bool_literal false [concrete]
|
||||
// CHECK:STDOUT: %tuple.type: type = tuple_type (bool, bool) [concrete]
|
||||
// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete]
|
||||
// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete]
|
||||
// CHECK:STDOUT: %array: %array_type = tuple_value (%true, %false) [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
|
||||
// CHECK:STDOUT: .Int = %Core.Int
|
||||
// CHECK:STDOUT: .Bool = %Core.Bool
|
||||
// CHECK:STDOUT: .ImplicitAs = %Core.ImplicitAs
|
||||
@@ -503,54 +503,54 @@ impl () as I where .N = 2 {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Core = imports.%Core
|
||||
// CHECK:STDOUT: .I = %I.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [template = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl.44 [template] {} {
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl.44 [concrete] {} {
|
||||
// CHECK:STDOUT: %.loc15_7.1: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc15_7.2: type = converted %.loc15_7.1, constants.%empty_tuple.type [template = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type]
|
||||
// CHECK:STDOUT: %.loc15_7.2: type = converted %.loc15_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: %.Self: %I.type = bind_symbolic_name .Self [symbolic = constants.%.Self]
|
||||
// CHECK:STDOUT: %.Self.ref: %I.type = name_ref .Self, %.Self [symbolic = constants.%.Self]
|
||||
// CHECK:STDOUT: %N.ref: %I.assoc_type = name_ref N, @N.%assoc0 [template = constants.%assoc0.73c]
|
||||
// CHECK:STDOUT: %N.ref: %I.assoc_type = name_ref N, @N.%assoc0 [concrete = constants.%assoc0.73c]
|
||||
// CHECK:STDOUT: %.Self.as_type: type = facet_access_type %.Self.ref [symbolic = constants.%.Self.as_type]
|
||||
// CHECK:STDOUT: %.loc15_20: type = converted %.Self.ref, %.Self.as_type [symbolic = constants.%.Self.as_type]
|
||||
// CHECK:STDOUT: %.Self.as_wit: <witness> = facet_access_witness %.Self.ref [symbolic = constants.%.Self.as_wit]
|
||||
// CHECK:STDOUT: %impl.elem0.loc15_20: %i32 = impl_witness_access %.Self.as_wit, element0 [symbolic = constants.%impl.elem0]
|
||||
// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc]
|
||||
// CHECK:STDOUT: %impl.elem0.loc15_25: %.a0b = impl_witness_access constants.%impl_witness.d39, element0 [template = constants.%Convert.956]
|
||||
// CHECK:STDOUT: %bound_method: <bound method> = bound_method %int_2, %impl.elem0.loc15_25 [template = constants.%Convert.bound]
|
||||
// CHECK:STDOUT: %specific_fn: <specific function> = specific_function %bound_method, @Convert.2(constants.%int_32) [template = constants.%Convert.specific_fn]
|
||||
// CHECK:STDOUT: %int.convert_checked: init %i32 = call %specific_fn(%int_2) [template = constants.%int_2.ef8]
|
||||
// CHECK:STDOUT: %.loc15_25.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_2.ef8]
|
||||
// CHECK:STDOUT: %.loc15_25.2: %i32 = converted %int_2, %.loc15_25.1 [template = constants.%int_2.ef8]
|
||||
// CHECK:STDOUT: %.loc15_14: type = where_expr %.Self [template = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc]
|
||||
// CHECK:STDOUT: %impl.elem0.loc15_25: %.a0b = impl_witness_access constants.%impl_witness.d39, element0 [concrete = constants.%Convert.956]
|
||||
// CHECK:STDOUT: %bound_method: <bound method> = bound_method %int_2, %impl.elem0.loc15_25 [concrete = constants.%Convert.bound]
|
||||
// CHECK:STDOUT: %specific_fn: <specific function> = specific_function %bound_method, @Convert.2(constants.%int_32) [concrete = constants.%Convert.specific_fn]
|
||||
// CHECK:STDOUT: %int.convert_checked: init %i32 = call %specific_fn(%int_2) [concrete = constants.%int_2.ef8]
|
||||
// CHECK:STDOUT: %.loc15_25.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_2.ef8]
|
||||
// CHECK:STDOUT: %.loc15_25.2: %i32 = converted %int_2, %.loc15_25.1 [concrete = constants.%int_2.ef8]
|
||||
// CHECK:STDOUT: %.loc15_14: type = where_expr %.Self [concrete = constants.%I_where.type] {
|
||||
// CHECK:STDOUT: requirement_rewrite %impl.elem0.loc15_20, %.loc15_25.2
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (constants.%int_2.ef8, <error>) [template = constants.%impl_witness.2c9]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (constants.%int_2.ef8, <error>) [concrete = constants.%impl_witness.2c9]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @I {
|
||||
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.826]
|
||||
// CHECK:STDOUT: %N: %i32 = assoc_const_decl @N [template] {
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%N [template = constants.%assoc0.73c]
|
||||
// CHECK:STDOUT: %N: %i32 = assoc_const_decl @N [concrete] {
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%N [concrete = constants.%assoc0.73c]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %F.decl: %F.type.cf0 = fn_decl @F.1 [template = constants.%F.bc6] {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.cf0 = fn_decl @F.1 [concrete = constants.%F.bc6] {
|
||||
// CHECK:STDOUT: %self.patt: @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.b70) = binding_pattern self
|
||||
// CHECK:STDOUT: %self.param_patt: @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.b70) = value_param_pattern %self.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: <error> = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: <error> = out_param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool]
|
||||
// CHECK:STDOUT: %N.ref: %I.assoc_type = name_ref N, @N.%assoc0 [template = constants.%assoc0.73c]
|
||||
// CHECK:STDOUT: %.loc12_26.1: type = value_of_initializer %bool.make_type [template = bool]
|
||||
// CHECK:STDOUT: %.loc12_26.2: type = converted %bool.make_type, %.loc12_26.1 [template = bool]
|
||||
// CHECK:STDOUT: %.loc12_32: Core.IntLiteral = converted %N.ref, <error> [template = <error>]
|
||||
// CHECK:STDOUT: %array_type: type = array_type <error>, bool [template = <error>]
|
||||
// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool]
|
||||
// CHECK:STDOUT: %N.ref: %I.assoc_type = name_ref N, @N.%assoc0 [concrete = constants.%assoc0.73c]
|
||||
// CHECK:STDOUT: %.loc12_26.1: type = value_of_initializer %bool.make_type [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc12_26.2: type = converted %bool.make_type, %.loc12_26.1 [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc12_32: Core.IntLiteral = converted %N.ref, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %array_type: type = array_type <error>, bool [concrete = <error>]
|
||||
// CHECK:STDOUT: %self.param: @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.b70) = value_param runtime_param0
|
||||
// CHECK:STDOUT: %.loc12_14.1: type = splice_block %.loc12_14.2 [symbolic = %Self.as_type.loc12_14.1 (constants.%Self.as_type.b70)] {
|
||||
// CHECK:STDOUT: %Self.ref: %I.type = name_ref Self, @I.%Self [symbolic = %Self (constants.%Self.826)]
|
||||
@@ -561,7 +561,7 @@ impl () as I where .N = 2 {
|
||||
// CHECK:STDOUT: %return.param: ref <error> = out_param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref <error> = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %assoc1: %I.assoc_type = assoc_entity element1, %F.decl [template = constants.%assoc1]
|
||||
// CHECK:STDOUT: %assoc1: %I.assoc_type = assoc_entity element1, %F.decl [concrete = constants.%assoc1]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -575,19 +575,19 @@ impl () as I where .N = 2 {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl.44: %.loc15_7.2 as %.loc15_14 {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.9f6 = fn_decl @F.2 [template = constants.%F.572] {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.9f6 = fn_decl @F.2 [concrete = constants.%F.572] {
|
||||
// CHECK:STDOUT: %self.patt: %empty_tuple.type = binding_pattern self
|
||||
// CHECK:STDOUT: %self.param_patt: %empty_tuple.type = value_param_pattern %self.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: %array_type = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %array_type = out_param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [template = bool]
|
||||
// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [template = constants.%int_2.ecc]
|
||||
// CHECK:STDOUT: %.loc16_26.1: type = value_of_initializer %bool.make_type [template = bool]
|
||||
// CHECK:STDOUT: %.loc16_26.2: type = converted %bool.make_type, %.loc16_26.1 [template = bool]
|
||||
// CHECK:STDOUT: %array_type: type = array_type %int_2, bool [template = constants.%array_type]
|
||||
// CHECK:STDOUT: %bool.make_type: init type = call constants.%Bool() [concrete = bool]
|
||||
// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc]
|
||||
// CHECK:STDOUT: %.loc16_26.1: type = value_of_initializer %bool.make_type [concrete = bool]
|
||||
// CHECK:STDOUT: %.loc16_26.2: type = converted %bool.make_type, %.loc16_26.1 [concrete = bool]
|
||||
// CHECK:STDOUT: %array_type: type = array_type %int_2, bool [concrete = constants.%array_type]
|
||||
// CHECK:STDOUT: %self.param: %empty_tuple.type = value_param runtime_param0
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, @impl.44.%.loc15_7.2 [template = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, @impl.44.%.loc15_7.2 [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %self: %empty_tuple.type = bind_name self, %self.param
|
||||
// CHECK:STDOUT: %return.param: ref %array_type = out_param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref %array_type = return_slot %return.param
|
||||
@@ -607,17 +607,17 @@ impl () as I where .N = 2 {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @F.2[%self.param_patt: %empty_tuple.type]() -> %return.param_patt: %array_type {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %true: bool = bool_literal true [template = constants.%true]
|
||||
// CHECK:STDOUT: %false: bool = bool_literal false [template = constants.%false]
|
||||
// CHECK:STDOUT: %true: bool = bool_literal true [concrete = constants.%true]
|
||||
// CHECK:STDOUT: %false: bool = bool_literal false [concrete = constants.%false]
|
||||
// CHECK:STDOUT: %.loc16_56.1: %tuple.type = tuple_literal (%true, %false)
|
||||
// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0]
|
||||
// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0]
|
||||
// CHECK:STDOUT: %.loc16_56.2: ref bool = array_index %return, %int_0
|
||||
// CHECK:STDOUT: %.loc16_56.3: init bool = initialize_from %true to %.loc16_56.2 [template = constants.%true]
|
||||
// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [template = constants.%int_1]
|
||||
// CHECK:STDOUT: %.loc16_56.3: init bool = initialize_from %true to %.loc16_56.2 [concrete = constants.%true]
|
||||
// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1]
|
||||
// CHECK:STDOUT: %.loc16_56.4: ref bool = array_index %return, %int_1
|
||||
// CHECK:STDOUT: %.loc16_56.5: init bool = initialize_from %false to %.loc16_56.4 [template = constants.%false]
|
||||
// CHECK:STDOUT: %.loc16_56.6: init %array_type = array_init (%.loc16_56.3, %.loc16_56.5) to %return [template = constants.%array]
|
||||
// CHECK:STDOUT: %.loc16_57: init %array_type = converted %.loc16_56.1, %.loc16_56.6 [template = constants.%array]
|
||||
// CHECK:STDOUT: %.loc16_56.5: init bool = initialize_from %false to %.loc16_56.4 [concrete = constants.%false]
|
||||
// CHECK:STDOUT: %.loc16_56.6: init %array_type = array_init (%.loc16_56.3, %.loc16_56.5) to %return [concrete = constants.%array]
|
||||
// CHECK:STDOUT: %.loc16_57: init %array_type = converted %.loc16_56.1, %.loc16_56.6 [concrete = constants.%array]
|
||||
// CHECK:STDOUT: return %.loc16_57 to %return
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+28
-28
@@ -24,44 +24,44 @@ class C {
|
||||
// CHECK:STDOUT: --- impl_as.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %Simple.type: type = facet_type <@Simple> [template]
|
||||
// CHECK:STDOUT: %Simple.type: type = facet_type <@Simple> [concrete]
|
||||
// CHECK:STDOUT: %Self: %Simple.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %F.type.e2e: type = fn_type @F.1 [template]
|
||||
// CHECK:STDOUT: %F.df8: %F.type.e2e = struct_value () [template]
|
||||
// CHECK:STDOUT: %Simple.assoc_type: type = assoc_entity_type %Simple.type [template]
|
||||
// CHECK:STDOUT: %assoc0: %Simple.assoc_type = assoc_entity element0, @Simple.%F.decl [template]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [template]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%F.decl) [template]
|
||||
// CHECK:STDOUT: %F.type.e4b: type = fn_type @F.2 [template]
|
||||
// CHECK:STDOUT: %F.c94: %F.type.e4b = struct_value () [template]
|
||||
// CHECK:STDOUT: %Simple.facet: %Simple.type = facet_value %C, %impl_witness [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %C.val: %C = struct_value () [template]
|
||||
// CHECK:STDOUT: %F.type.e2e: type = fn_type @F.1 [concrete]
|
||||
// CHECK:STDOUT: %F.df8: %F.type.e2e = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Simple.assoc_type: type = assoc_entity_type %Simple.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0: %Simple.assoc_type = assoc_entity element0, @Simple.%F.decl [concrete]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [concrete]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%F.decl) [concrete]
|
||||
// CHECK:STDOUT: %F.type.e4b: type = fn_type @F.2 [concrete]
|
||||
// CHECK:STDOUT: %F.c94: %F.type.e4b = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Simple.facet: %Simple.type = facet_value %C, %impl_witness [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %C.val: %C = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Core = imports.%Core
|
||||
// CHECK:STDOUT: .Simple = %Simple.decl
|
||||
// CHECK:STDOUT: .C = %C.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %Simple.decl: type = interface_decl @Simple [template = constants.%Simple.type] {} {}
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %Simple.decl: type = interface_decl @Simple [concrete = constants.%Simple.type] {} {}
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @Simple {
|
||||
// CHECK:STDOUT: %Self: %Simple.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self]
|
||||
// CHECK:STDOUT: %F.decl: %F.type.e2e = fn_decl @F.1 [template = constants.%F.df8] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %Simple.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %F.decl: %F.type.e2e = fn_decl @F.1 [concrete = constants.%F.df8] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %Simple.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -70,7 +70,7 @@ class C {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl: %Self.ref as %Simple.ref {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.e4b = fn_decl @F.2 [template = constants.%F.c94] {} {}
|
||||
// CHECK:STDOUT: %F.decl: %F.type.e4b = fn_decl @F.2 [concrete = constants.%F.c94] {} {}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .F = %F.decl
|
||||
@@ -78,12 +78,12 @@ class C {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @C {
|
||||
// CHECK:STDOUT: impl_decl @impl [template] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [template = constants.%C]
|
||||
// CHECK:STDOUT: %Simple.ref: type = name_ref Simple, file.%Simple.decl [template = constants.%Simple.type]
|
||||
// CHECK:STDOUT: impl_decl @impl [concrete] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %Simple.ref: type = name_ref Simple, file.%Simple.decl [concrete = constants.%Simple.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%F.decl) [template = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%F.decl) [concrete = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -102,10 +102,10 @@ class C {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %c.var: ref %C = var c
|
||||
// CHECK:STDOUT: %.loc19_19.1: %empty_struct_type = struct_literal ()
|
||||
// CHECK:STDOUT: %.loc19_19.2: init %C = class_init (), %c.var [template = constants.%C.val]
|
||||
// CHECK:STDOUT: %.loc19_7.2: init %C = converted %.loc19_19.1, %.loc19_19.2 [template = constants.%C.val]
|
||||
// CHECK:STDOUT: %.loc19_19.2: init %C = class_init (), %c.var [concrete = constants.%C.val]
|
||||
// CHECK:STDOUT: %.loc19_7.2: init %C = converted %.loc19_19.1, %.loc19_19.2 [concrete = constants.%C.val]
|
||||
// CHECK:STDOUT: assign %c.var, %.loc19_7.2
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %c: ref %C = bind_name c, %c.var
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
+12
-12
@@ -19,12 +19,12 @@ impl forall [T:! type] T as Simple {
|
||||
// CHECK:STDOUT: --- impl_forall.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %Simple.type: type = facet_type <@Simple> [template]
|
||||
// CHECK:STDOUT: %Simple.type: type = facet_type <@Simple> [concrete]
|
||||
// CHECK:STDOUT: %Self: %Simple.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %F.type.e2e: type = fn_type @F.1 [template]
|
||||
// CHECK:STDOUT: %F.df8: %F.type.e2e = struct_value () [template]
|
||||
// CHECK:STDOUT: %Simple.assoc_type: type = assoc_entity_type %Simple.type [template]
|
||||
// CHECK:STDOUT: %assoc0: %Simple.assoc_type = assoc_entity element0, @Simple.%F.decl [template]
|
||||
// CHECK:STDOUT: %F.type.e2e: type = fn_type @F.1 [concrete]
|
||||
// CHECK:STDOUT: %F.df8: %F.type.e2e = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Simple.assoc_type: type = assoc_entity_type %Simple.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0: %Simple.assoc_type = assoc_entity element0, @Simple.%F.decl [concrete]
|
||||
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%F.decl), @impl(%T) [symbolic]
|
||||
@@ -34,25 +34,25 @@ impl forall [T:! type] T as Simple {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Core = imports.%Core
|
||||
// CHECK:STDOUT: .Simple = %Simple.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %Simple.decl: type = interface_decl @Simple [template = constants.%Simple.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [template] {
|
||||
// CHECK:STDOUT: %Simple.decl: type = interface_decl @Simple [concrete = constants.%Simple.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [concrete] {
|
||||
// CHECK:STDOUT: %T.patt.loc15_14.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc15_14.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc15_14.1, runtime_param<none> [symbolic = %T.patt.loc15_14.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc15_14.1 [symbolic = %T.loc15_14.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %Simple.ref: type = name_ref Simple, file.%Simple.decl [template = constants.%Simple.type]
|
||||
// CHECK:STDOUT: %Simple.ref: type = name_ref Simple, file.%Simple.decl [concrete = constants.%Simple.type]
|
||||
// CHECK:STDOUT: %T.param: type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %T.loc15_14.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc15_14.2 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -61,8 +61,8 @@ impl forall [T:! type] T as Simple {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @Simple {
|
||||
// CHECK:STDOUT: %Self: %Simple.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self]
|
||||
// CHECK:STDOUT: %F.decl: %F.type.e2e = fn_decl @F.1 [template = constants.%F.df8] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %Simple.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %F.decl: %F.type.e2e = fn_decl @F.1 [concrete = constants.%F.df8] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %Simple.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
|
||||
+38
-38
@@ -28,61 +28,61 @@ fn G(c: C) {
|
||||
// CHECK:STDOUT: --- alias.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %HasF.type: type = facet_type <@HasF> [template]
|
||||
// CHECK:STDOUT: %HasF.type: type = facet_type <@HasF> [concrete]
|
||||
// CHECK:STDOUT: %Self: %HasF.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %F.type.b7b: type = fn_type @F.1 [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %F.f50: %F.type.b7b = struct_value () [template]
|
||||
// CHECK:STDOUT: %HasF.assoc_type: type = assoc_entity_type %HasF.type [template]
|
||||
// CHECK:STDOUT: %assoc0: %HasF.assoc_type = assoc_entity element0, @HasF.%F.decl [template]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%F.decl) [template]
|
||||
// CHECK:STDOUT: %F.type.a02: type = fn_type @F.2 [template]
|
||||
// CHECK:STDOUT: %F.dc7: %F.type.a02 = struct_value () [template]
|
||||
// CHECK:STDOUT: %HasF.facet: %HasF.type = facet_value %C, %impl_witness [template]
|
||||
// CHECK:STDOUT: %G.type: type = fn_type @G [template]
|
||||
// CHECK:STDOUT: %G: %G.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.447: type = fn_type_with_self_type %F.type.b7b, %HasF.facet [template]
|
||||
// CHECK:STDOUT: %F.type.b7b: type = fn_type @F.1 [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %F.f50: %F.type.b7b = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %HasF.assoc_type: type = assoc_entity_type %HasF.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0: %HasF.assoc_type = assoc_entity element0, @HasF.%F.decl [concrete]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%F.decl) [concrete]
|
||||
// CHECK:STDOUT: %F.type.a02: type = fn_type @F.2 [concrete]
|
||||
// CHECK:STDOUT: %F.dc7: %F.type.a02 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %HasF.facet: %HasF.type = facet_value %C, %impl_witness [concrete]
|
||||
// CHECK:STDOUT: %G.type: type = fn_type @G [concrete]
|
||||
// CHECK:STDOUT: %G: %G.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %.447: type = fn_type_with_self_type %F.type.b7b, %HasF.facet [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Core = imports.%Core
|
||||
// CHECK:STDOUT: .HasF = %HasF.decl
|
||||
// CHECK:STDOUT: .C = %C.decl
|
||||
// CHECK:STDOUT: .G = %G.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %HasF.decl: type = interface_decl @HasF [template = constants.%HasF.type] {} {}
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [template] {} {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [template = constants.%HasF.type]
|
||||
// CHECK:STDOUT: %HasF.decl: type = interface_decl @HasF [concrete = constants.%HasF.type] {} {}
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [concrete] {} {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [concrete = constants.%HasF.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%F.decl) [template = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%F.decl) [concrete = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] {
|
||||
// CHECK:STDOUT: %c.patt: %C = binding_pattern c
|
||||
// CHECK:STDOUT: %c.param_patt: %C = value_param_pattern %c.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %c.param: %C = value_param runtime_param0
|
||||
// CHECK:STDOUT: %C.ref.loc23: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %C.ref.loc23: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %c: %C = bind_name c, %c.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @HasF {
|
||||
// CHECK:STDOUT: %Self: %HasF.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self]
|
||||
// CHECK:STDOUT: %F.decl: %F.type.b7b = fn_decl @F.1 [template = constants.%F.f50] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %HasF.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %F.decl: %F.type.b7b = fn_decl @F.1 [concrete = constants.%F.f50] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %HasF.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -91,7 +91,7 @@ fn G(c: C) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl: %C.ref as %HasF.ref {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.a02 = fn_decl @F.2 [template = constants.%F.dc7] {} {}
|
||||
// CHECK:STDOUT: %F.decl: %F.type.a02 = fn_decl @F.2 [concrete = constants.%F.dc7] {} {}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .F = %F.decl
|
||||
@@ -99,10 +99,10 @@ fn G(c: C) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @C {
|
||||
// CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [template = constants.%HasF.type]
|
||||
// CHECK:STDOUT: %F.ref: %HasF.assoc_type = name_ref F, @HasF.%assoc0 [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %G: %HasF.assoc_type = bind_alias G, @HasF.%assoc0 [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [concrete = constants.%HasF.type]
|
||||
// CHECK:STDOUT: %F.ref: %HasF.assoc_type = name_ref F, @HasF.%assoc0 [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %G: %HasF.assoc_type = bind_alias G, @HasF.%assoc0 [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -121,13 +121,13 @@ fn G(c: C) {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @G(%c.param_patt: %C) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %C.ref.loc24: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %G.ref.loc24: %HasF.assoc_type = name_ref G, @C.%G [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0.loc24: %.447 = impl_witness_access constants.%impl_witness, element0 [template = constants.%F.dc7]
|
||||
// CHECK:STDOUT: %C.ref.loc24: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %G.ref.loc24: %HasF.assoc_type = name_ref G, @C.%G [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0.loc24: %.447 = impl_witness_access constants.%impl_witness, element0 [concrete = constants.%F.dc7]
|
||||
// CHECK:STDOUT: %F.call.loc24: init %empty_tuple.type = call %impl.elem0.loc24()
|
||||
// CHECK:STDOUT: %c.ref: %C = name_ref c, %c
|
||||
// CHECK:STDOUT: %G.ref.loc25: %HasF.assoc_type = name_ref G, @C.%G [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0.loc25: %.447 = impl_witness_access constants.%impl_witness, element0 [template = constants.%F.dc7]
|
||||
// CHECK:STDOUT: %G.ref.loc25: %HasF.assoc_type = name_ref G, @C.%G [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0.loc25: %.447 = impl_witness_access constants.%impl_witness, element0 [concrete = constants.%F.dc7]
|
||||
// CHECK:STDOUT: %F.call.loc25: init %empty_tuple.type = call %impl.elem0.loc25()
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -32,50 +32,50 @@ fn F(c: C) {
|
||||
// CHECK:STDOUT: --- fail_alias_impl_not_found.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [template]
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete]
|
||||
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %F.type.cf0: type = fn_type @F.1 [template]
|
||||
// CHECK:STDOUT: %F.bc6: %F.type.cf0 = struct_value () [template]
|
||||
// CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type %I.type [template]
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%F.decl [template]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %F.type.b25: type = fn_type @F.2 [template]
|
||||
// CHECK:STDOUT: %F.c41: %F.type.b25 = struct_value () [template]
|
||||
// CHECK:STDOUT: %F.type.cf0: type = fn_type @F.1 [concrete]
|
||||
// CHECK:STDOUT: %F.bc6: %F.type.cf0 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type %I.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%F.decl [concrete]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %F.type.b25: type = fn_type @F.2 [concrete]
|
||||
// CHECK:STDOUT: %F.c41: %F.type.b25 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Core = imports.%Core
|
||||
// CHECK:STDOUT: .I = %I.decl
|
||||
// CHECK:STDOUT: .C = %C.decl
|
||||
// CHECK:STDOUT: .F = %F.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [template = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %F.decl: %F.type.b25 = fn_decl @F.2 [template = constants.%F.c41] {
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %F.decl: %F.type.b25 = fn_decl @F.2 [concrete = constants.%F.c41] {
|
||||
// CHECK:STDOUT: %c.patt: %C = binding_pattern c
|
||||
// CHECK:STDOUT: %c.param_patt: %C = value_param_pattern %c.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %c.param: %C = value_param runtime_param0
|
||||
// CHECK:STDOUT: %C.ref.loc19: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %C.ref.loc19: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %c: %C = bind_name c, %c.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @I {
|
||||
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self]
|
||||
// CHECK:STDOUT: %F.decl: %F.type.cf0 = fn_decl @F.1 [template = constants.%F.bc6] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %F.decl: %F.type.cf0 = fn_decl @F.1 [concrete = constants.%F.bc6] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -84,10 +84,10 @@ fn F(c: C) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @C {
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type]
|
||||
// CHECK:STDOUT: %F.ref: %I.assoc_type = name_ref F, @I.%assoc0 [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %F: %I.assoc_type = bind_alias F, @I.%assoc0 [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: %F.ref: %I.assoc_type = name_ref F, @I.%assoc0 [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %F: %I.assoc_type = bind_alias F, @I.%assoc0 [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -101,10 +101,10 @@ fn F(c: C) {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @F.2(%c.param_patt: %C) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %C.ref.loc24: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %F.ref.loc24: %I.assoc_type = name_ref F, @C.%F [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %C.ref.loc24: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %F.ref.loc24: %I.assoc_type = name_ref F, @C.%F [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %c.ref: %C = name_ref c, %c
|
||||
// CHECK:STDOUT: %F.ref.loc29: %I.assoc_type = name_ref F, @C.%F [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %F.ref.loc29: %I.assoc_type = name_ref F, @C.%F [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
@@ -39,30 +39,30 @@ impl C as I {
|
||||
// CHECK:STDOUT: --- fail_todo_undefined_impl.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [template]
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete]
|
||||
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %F.type.cf0: type = fn_type @F.1 [template]
|
||||
// CHECK:STDOUT: %F.bc6: %F.type.cf0 = struct_value () [template]
|
||||
// CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type %I.type [template]
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%F.decl [template]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [template]
|
||||
// CHECK:STDOUT: %impl_witness.85b: <witness> = impl_witness (<error>) [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %complete_type.357: <witness> = complete_type_witness %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template]
|
||||
// CHECK:STDOUT: %F.type.b25: type = fn_type @F.2 [template]
|
||||
// CHECK:STDOUT: %F.c41: %F.type.b25 = struct_value () [template]
|
||||
// CHECK:STDOUT: %I.facet.b45: %I.type = facet_value %C, %impl_witness.85b [template]
|
||||
// CHECK:STDOUT: %.575: type = fn_type_with_self_type %F.type.cf0, %I.facet.b45 [template]
|
||||
// CHECK:STDOUT: %impl_witness.054: <witness> = impl_witness (@impl.2.%F.decl) [template]
|
||||
// CHECK:STDOUT: %F.type.5d6: type = fn_type @F.3 [template]
|
||||
// CHECK:STDOUT: %F.a2e: %F.type.5d6 = struct_value () [template]
|
||||
// CHECK:STDOUT: %I.facet.4ac: %I.type = facet_value %C, %impl_witness.054 [template]
|
||||
// CHECK:STDOUT: %F.type.cf0: type = fn_type @F.1 [concrete]
|
||||
// CHECK:STDOUT: %F.bc6: %F.type.cf0 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type %I.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%F.decl [concrete]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [concrete]
|
||||
// CHECK:STDOUT: %impl_witness.85b: <witness> = impl_witness (<error>) [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type.357: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %F.type.b25: type = fn_type @F.2 [concrete]
|
||||
// CHECK:STDOUT: %F.c41: %F.type.b25 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %I.facet.b45: %I.type = facet_value %C, %impl_witness.85b [concrete]
|
||||
// CHECK:STDOUT: %.575: type = fn_type_with_self_type %F.type.cf0, %I.facet.b45 [concrete]
|
||||
// CHECK:STDOUT: %impl_witness.054: <witness> = impl_witness (@impl.2.%F.decl) [concrete]
|
||||
// CHECK:STDOUT: %F.type.5d6: type = fn_type @F.3 [concrete]
|
||||
// CHECK:STDOUT: %F.a2e: %F.type.5d6 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %I.facet.4ac: %I.type = facet_value %C, %impl_witness.054 [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
|
||||
// CHECK:STDOUT: .Int = %Core.Int
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
@@ -70,35 +70,35 @@ impl C as I {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Core = imports.%Core
|
||||
// CHECK:STDOUT: .I = %I.decl
|
||||
// CHECK:STDOUT: .C = %C.decl
|
||||
// CHECK:STDOUT: .F = %F.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [template = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %F.decl: %F.type.b25 = fn_decl @F.2 [template = constants.%F.c41] {
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %F.decl: %F.type.b25 = fn_decl @F.2 [concrete = constants.%F.c41] {
|
||||
// CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %i32 = out_param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %return.param: ref %i32 = out_param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref %i32 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: impl_decl @impl.2 [template] {} {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type]
|
||||
// CHECK:STDOUT: impl_decl @impl.2 [concrete] {} {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.2.%F.decl) [template = constants.%impl_witness.054]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.2.%F.decl) [concrete = constants.%impl_witness.054]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @I {
|
||||
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self]
|
||||
// CHECK:STDOUT: %F.decl: %F.type.cf0 = fn_decl @F.1 [template = constants.%F.bc6] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %F.decl: %F.type.cf0 = fn_decl @F.1 [concrete = constants.%F.bc6] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -109,7 +109,7 @@ impl C as I {
|
||||
// CHECK:STDOUT: impl @impl.1: %Self.ref as %I.ref;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl.2: %C.ref as %I.ref {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.5d6 = fn_decl @F.3 [template = constants.%F.a2e] {} {}
|
||||
// CHECK:STDOUT: %F.decl: %F.type.5d6 = fn_decl @F.3 [concrete = constants.%F.a2e] {} {}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .F = %F.decl
|
||||
@@ -117,12 +117,12 @@ impl C as I {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @C {
|
||||
// CHECK:STDOUT: impl_decl @impl.1 [template] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [template = constants.%C]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type]
|
||||
// CHECK:STDOUT: impl_decl @impl.1 [concrete] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (<error>) [template = constants.%impl_witness.85b]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (<error>) [concrete = constants.%impl_witness.85b]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -136,9 +136,9 @@ impl C as I {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @F.2() -> %i32 {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %F.ref: %I.assoc_type = name_ref F, @I.%assoc0 [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0: %.575 = impl_witness_access constants.%impl_witness.85b, element0 [template = <error>]
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %F.ref: %I.assoc_type = name_ref F, @I.%assoc0 [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0: %.575 = impl_witness_access constants.%impl_witness.85b, element0 [concrete = <error>]
|
||||
// CHECK:STDOUT: return <error>
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+181
-181
@@ -125,63 +125,63 @@ fn G(x: A) {
|
||||
// CHECK:STDOUT: --- deduced_type.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %HasF.type: type = facet_type <@HasF> [template]
|
||||
// CHECK:STDOUT: %HasF.type: type = facet_type <@HasF> [concrete]
|
||||
// CHECK:STDOUT: %Self: %HasF.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %F.type.b7b: type = fn_type @F.1 [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %F.f50: %F.type.b7b = struct_value () [template]
|
||||
// CHECK:STDOUT: %HasF.assoc_type: type = assoc_entity_type %HasF.type [template]
|
||||
// CHECK:STDOUT: %assoc0: %HasF.assoc_type = assoc_entity element0, @HasF.%F.decl [template]
|
||||
// CHECK:STDOUT: %F.type.b7b: type = fn_type @F.1 [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %F.f50: %F.type.b7b = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %HasF.assoc_type: type = assoc_entity_type %HasF.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0: %HasF.assoc_type = assoc_entity element0, @HasF.%F.decl [concrete]
|
||||
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %impl_witness.d55: <witness> = impl_witness (@impl.%F.decl), @impl(%T) [symbolic]
|
||||
// CHECK:STDOUT: %F.type.3fd: type = fn_type @F.2, @impl(%T) [symbolic]
|
||||
// CHECK:STDOUT: %F.c98: %F.type.3fd = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %HasF.facet.6fc: %HasF.type = facet_value %T, %impl_witness.d55 [symbolic]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %G.type: type = fn_type @G [template]
|
||||
// CHECK:STDOUT: %G: %G.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %impl_witness.d9b: <witness> = impl_witness (@impl.%F.decl), @impl(%empty_struct_type) [template]
|
||||
// CHECK:STDOUT: %F.type.2e4: type = fn_type @F.2, @impl(%empty_struct_type) [template]
|
||||
// CHECK:STDOUT: %F.f13: %F.type.2e4 = struct_value () [template]
|
||||
// CHECK:STDOUT: %HasF.facet.18f: %HasF.type = facet_value %empty_struct_type, %impl_witness.d9b [template]
|
||||
// CHECK:STDOUT: %.658: type = fn_type_with_self_type %F.type.b7b, %HasF.facet.18f [template]
|
||||
// CHECK:STDOUT: %F.specific_fn: <specific function> = specific_function %F.f13, @F.2(%empty_struct_type) [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %G.type: type = fn_type @G [concrete]
|
||||
// CHECK:STDOUT: %G: %G.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %impl_witness.d9b: <witness> = impl_witness (@impl.%F.decl), @impl(%empty_struct_type) [concrete]
|
||||
// CHECK:STDOUT: %F.type.2e4: type = fn_type @F.2, @impl(%empty_struct_type) [concrete]
|
||||
// CHECK:STDOUT: %F.f13: %F.type.2e4 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %HasF.facet.18f: %HasF.type = facet_value %empty_struct_type, %impl_witness.d9b [concrete]
|
||||
// CHECK:STDOUT: %.658: type = fn_type_with_self_type %F.type.b7b, %HasF.facet.18f [concrete]
|
||||
// CHECK:STDOUT: %F.specific_fn: <specific function> = specific_function %F.f13, @F.2(%empty_struct_type) [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Core = imports.%Core
|
||||
// CHECK:STDOUT: .HasF = %HasF.decl
|
||||
// CHECK:STDOUT: .G = %G.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %HasF.decl: type = interface_decl @HasF [template = constants.%HasF.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [template] {
|
||||
// CHECK:STDOUT: %HasF.decl: type = interface_decl @HasF [concrete = constants.%HasF.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [concrete] {
|
||||
// CHECK:STDOUT: %T.patt.loc8_14.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_14.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc8_14.1, runtime_param<none> [symbolic = %T.patt.loc8_14.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc8_14.1 [symbolic = %T.loc8_14.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [template = constants.%HasF.type]
|
||||
// CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [concrete = constants.%HasF.type]
|
||||
// CHECK:STDOUT: %T.param: type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %T.loc8_14.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc8_14.2 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%F.decl), @impl(constants.%T) [symbolic = @impl.%impl_witness (constants.%impl_witness.d55)]
|
||||
// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {
|
||||
// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] {
|
||||
// CHECK:STDOUT: %x.patt: %empty_struct_type = binding_pattern x
|
||||
// CHECK:STDOUT: %x.param_patt: %empty_struct_type = value_param_pattern %x.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %x.param: %empty_struct_type = value_param runtime_param0
|
||||
// CHECK:STDOUT: %.loc12_10.1: type = splice_block %.loc12_10.3 [template = constants.%empty_struct_type] {
|
||||
// CHECK:STDOUT: %.loc12_10.1: type = splice_block %.loc12_10.3 [concrete = constants.%empty_struct_type] {
|
||||
// CHECK:STDOUT: %.loc12_10.2: %empty_struct_type = struct_literal ()
|
||||
// CHECK:STDOUT: %.loc12_10.3: type = converted %.loc12_10.2, constants.%empty_struct_type [template = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %.loc12_10.3: type = converted %.loc12_10.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %x: %empty_struct_type = bind_name x, %x.param
|
||||
// CHECK:STDOUT: }
|
||||
@@ -189,8 +189,8 @@ fn G(x: A) {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @HasF {
|
||||
// CHECK:STDOUT: %Self: %HasF.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self]
|
||||
// CHECK:STDOUT: %F.decl: %F.type.b7b = fn_decl @F.1 [template = constants.%F.f50] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %HasF.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %F.decl: %F.type.b7b = fn_decl @F.1 [concrete = constants.%F.f50] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %HasF.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -232,10 +232,10 @@ fn G(x: A) {
|
||||
// CHECK:STDOUT: fn @G(%x.param_patt: %empty_struct_type) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %x.ref: %empty_struct_type = name_ref x, %x
|
||||
// CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [template = constants.%HasF.type]
|
||||
// CHECK:STDOUT: %F.ref: %HasF.assoc_type = name_ref F, @HasF.%assoc0 [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0: %.658 = impl_witness_access constants.%impl_witness.d9b, element0 [template = constants.%F.f13]
|
||||
// CHECK:STDOUT: %specific_fn: <specific function> = specific_function %impl.elem0, @F.2(constants.%empty_struct_type) [template = constants.%F.specific_fn]
|
||||
// CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [concrete = constants.%HasF.type]
|
||||
// CHECK:STDOUT: %F.ref: %HasF.assoc_type = name_ref F, @HasF.%assoc0 [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0: %.658 = impl_witness_access constants.%impl_witness.d9b, element0 [concrete = constants.%F.f13]
|
||||
// CHECK:STDOUT: %specific_fn: <specific function> = specific_function %impl.elem0, @F.2(constants.%empty_struct_type) [concrete = constants.%F.specific_fn]
|
||||
// CHECK:STDOUT: %F.call: init %empty_tuple.type = call %specific_fn()
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
@@ -275,13 +275,13 @@ fn G(x: A) {
|
||||
// CHECK:STDOUT: --- deduced_type_subst.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %HasF.type: type = facet_type <@HasF> [template]
|
||||
// CHECK:STDOUT: %HasF.type: type = facet_type <@HasF> [concrete]
|
||||
// CHECK:STDOUT: %Self: %HasF.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic]
|
||||
// CHECK:STDOUT: %F.type.b7b: type = fn_type @F.1 [template]
|
||||
// CHECK:STDOUT: %F.f50: %F.type.b7b = struct_value () [template]
|
||||
// CHECK:STDOUT: %HasF.assoc_type: type = assoc_entity_type %HasF.type [template]
|
||||
// CHECK:STDOUT: %assoc0: %HasF.assoc_type = assoc_entity element0, @HasF.%F.decl [template]
|
||||
// CHECK:STDOUT: %F.type.b7b: type = fn_type @F.1 [concrete]
|
||||
// CHECK:STDOUT: %F.f50: %F.type.b7b = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %HasF.assoc_type: type = assoc_entity_type %HasF.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0: %HasF.assoc_type = assoc_entity element0, @HasF.%F.decl [concrete]
|
||||
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %impl_witness.d55: <witness> = impl_witness (@impl.%F.decl), @impl(%T) [symbolic]
|
||||
@@ -289,55 +289,55 @@ fn G(x: A) {
|
||||
// CHECK:STDOUT: %F.c98: %F.type.3fd = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %HasF.facet.6fc: %HasF.type = facet_value %T, %impl_witness.d55 [symbolic]
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %T [symbolic]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %G.type: type = fn_type @G [template]
|
||||
// CHECK:STDOUT: %G: %G.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %impl_witness.d9b: <witness> = impl_witness (@impl.%F.decl), @impl(%empty_struct_type) [template]
|
||||
// CHECK:STDOUT: %F.type.2e4: type = fn_type @F.2, @impl(%empty_struct_type) [template]
|
||||
// CHECK:STDOUT: %F.f13: %F.type.2e4 = struct_value () [template]
|
||||
// CHECK:STDOUT: %HasF.facet.18f: %HasF.type = facet_value %empty_struct_type, %impl_witness.d9b [template]
|
||||
// CHECK:STDOUT: %.658: type = fn_type_with_self_type %F.type.b7b, %HasF.facet.18f [template]
|
||||
// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [template]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %G.type: type = fn_type @G [concrete]
|
||||
// CHECK:STDOUT: %G: %G.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %impl_witness.d9b: <witness> = impl_witness (@impl.%F.decl), @impl(%empty_struct_type) [concrete]
|
||||
// CHECK:STDOUT: %F.type.2e4: type = fn_type @F.2, @impl(%empty_struct_type) [concrete]
|
||||
// CHECK:STDOUT: %F.f13: %F.type.2e4 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %HasF.facet.18f: %HasF.type = facet_value %empty_struct_type, %impl_witness.d9b [concrete]
|
||||
// CHECK:STDOUT: %.658: type = fn_type_with_self_type %F.type.b7b, %HasF.facet.18f [concrete]
|
||||
// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Core = imports.%Core
|
||||
// CHECK:STDOUT: .HasF = %HasF.decl
|
||||
// CHECK:STDOUT: .G = %G.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %HasF.decl: type = interface_decl @HasF [template = constants.%HasF.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [template] {
|
||||
// CHECK:STDOUT: %HasF.decl: type = interface_decl @HasF [concrete = constants.%HasF.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [concrete] {
|
||||
// CHECK:STDOUT: %T.patt.loc8_14.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_14.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc8_14.1, runtime_param<none> [symbolic = %T.patt.loc8_14.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc8_14.1 [symbolic = %T.loc8_14.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [template = constants.%HasF.type]
|
||||
// CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [concrete = constants.%HasF.type]
|
||||
// CHECK:STDOUT: %T.param: type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %T.loc8_14.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc8_14.2 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%F.decl), @impl(constants.%T) [symbolic = @impl.%impl_witness (constants.%impl_witness.d55)]
|
||||
// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {
|
||||
// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] {
|
||||
// CHECK:STDOUT: %x.patt: %empty_struct_type = binding_pattern x
|
||||
// CHECK:STDOUT: %x.param_patt: %empty_struct_type = value_param_pattern %x.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: %empty_struct_type = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %empty_struct_type = out_param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc12_17.1: %empty_struct_type = struct_literal ()
|
||||
// CHECK:STDOUT: %.loc12_17.2: type = converted %.loc12_17.1, constants.%empty_struct_type [template = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %.loc12_17.2: type = converted %.loc12_17.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %x.param: %empty_struct_type = value_param runtime_param0
|
||||
// CHECK:STDOUT: %.loc12_10.1: type = splice_block %.loc12_10.3 [template = constants.%empty_struct_type] {
|
||||
// CHECK:STDOUT: %.loc12_10.1: type = splice_block %.loc12_10.3 [concrete = constants.%empty_struct_type] {
|
||||
// CHECK:STDOUT: %.loc12_10.2: %empty_struct_type = struct_literal ()
|
||||
// CHECK:STDOUT: %.loc12_10.3: type = converted %.loc12_10.2, constants.%empty_struct_type [template = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %.loc12_10.3: type = converted %.loc12_10.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %x: %empty_struct_type = bind_name x, %x.param
|
||||
// CHECK:STDOUT: %return.param: ref %empty_struct_type = out_param runtime_param1
|
||||
@@ -347,7 +347,7 @@ fn G(x: A) {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @HasF {
|
||||
// CHECK:STDOUT: %Self: %HasF.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self]
|
||||
// CHECK:STDOUT: %F.decl: %F.type.b7b = fn_decl @F.1 [template = constants.%F.f50] {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.b7b = fn_decl @F.1 [concrete = constants.%F.f50] {
|
||||
// CHECK:STDOUT: %self.patt: @F.1.%Self.as_type.loc5_14.1 (%Self.as_type) = binding_pattern self
|
||||
// CHECK:STDOUT: %self.param_patt: @F.1.%Self.as_type.loc5_14.1 (%Self.as_type) = value_param_pattern %self.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: @F.1.%Self.as_type.loc5_14.1 (%Self.as_type) = return_slot_pattern
|
||||
@@ -366,7 +366,7 @@ fn G(x: A) {
|
||||
// CHECK:STDOUT: %return.param: ref @F.1.%Self.as_type.loc5_14.1 (%Self.as_type) = out_param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref @F.1.%Self.as_type.loc5_14.1 (%Self.as_type) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %assoc0: %HasF.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %assoc0: %HasF.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -427,16 +427,16 @@ fn G(x: A) {
|
||||
// CHECK:STDOUT: fn @G(%x.param_patt: %empty_struct_type) -> %empty_struct_type {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %x.ref: %empty_struct_type = name_ref x, %x
|
||||
// CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [template = constants.%HasF.type]
|
||||
// CHECK:STDOUT: %F.ref: %HasF.assoc_type = name_ref F, @HasF.%assoc0 [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0: %.658 = impl_witness_access constants.%impl_witness.d9b, element0 [template = constants.%F.f13]
|
||||
// CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [concrete = constants.%HasF.type]
|
||||
// CHECK:STDOUT: %F.ref: %HasF.assoc_type = name_ref F, @HasF.%assoc0 [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0: %.658 = impl_witness_access constants.%impl_witness.d9b, element0 [concrete = constants.%F.f13]
|
||||
// CHECK:STDOUT: %bound_method: <bound method> = bound_method %x.ref, %impl.elem0
|
||||
// CHECK:STDOUT: %specific_fn: <specific function> = specific_function %bound_method, @F.2(constants.%empty_struct_type)
|
||||
// CHECK:STDOUT: %F.call: init %empty_struct_type = call %specific_fn(%x.ref)
|
||||
// CHECK:STDOUT: %.loc13_21.1: ref %empty_struct_type = temporary_storage
|
||||
// CHECK:STDOUT: %.loc13_21.2: ref %empty_struct_type = temporary %.loc13_21.1, %F.call
|
||||
// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [template = constants.%empty_struct]
|
||||
// CHECK:STDOUT: %.loc13_22: %empty_struct_type = converted %F.call, %empty_struct [template = constants.%empty_struct]
|
||||
// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete = constants.%empty_struct]
|
||||
// CHECK:STDOUT: %.loc13_22: %empty_struct_type = converted %F.call, %empty_struct [concrete = constants.%empty_struct]
|
||||
// CHECK:STDOUT: return %.loc13_22
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -486,80 +486,80 @@ fn G(x: A) {
|
||||
// CHECK:STDOUT: --- deduced_type_argument.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %HasF.type: type = facet_type <@HasF> [template]
|
||||
// CHECK:STDOUT: %HasF.type: type = facet_type <@HasF> [concrete]
|
||||
// CHECK:STDOUT: %Self: %HasF.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %F.type.b7b: type = fn_type @F.1 [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %F.f50: %F.type.b7b = struct_value () [template]
|
||||
// CHECK:STDOUT: %HasF.assoc_type: type = assoc_entity_type %HasF.type [template]
|
||||
// CHECK:STDOUT: %assoc0: %HasF.assoc_type = assoc_entity element0, @HasF.%F.decl [template]
|
||||
// CHECK:STDOUT: %F.type.b7b: type = fn_type @F.1 [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %F.f50: %F.type.b7b = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %HasF.assoc_type: type = assoc_entity_type %HasF.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0: %HasF.assoc_type = assoc_entity element0, @HasF.%F.decl [concrete]
|
||||
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %C.type: type = generic_class_type @C [template]
|
||||
// CHECK:STDOUT: %C.generic: %C.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %C.type: type = generic_class_type @C [concrete]
|
||||
// CHECK:STDOUT: %C.generic: %C.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %C.f2e: type = class_type @C, @C(%T) [symbolic]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %impl_witness.7d1: <witness> = impl_witness (@impl.%F.decl), @impl(%T) [symbolic]
|
||||
// CHECK:STDOUT: %F.type.8fe: type = fn_type @F.2, @impl(%T) [symbolic]
|
||||
// CHECK:STDOUT: %F.92a: %F.type.8fe = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %HasF.facet.83b: %HasF.type = facet_value %C.f2e, %impl_witness.7d1 [symbolic]
|
||||
// CHECK:STDOUT: %C.7a7: type = class_type @C, @C(%empty_struct_type) [template]
|
||||
// CHECK:STDOUT: %G.type: type = fn_type @G [template]
|
||||
// CHECK:STDOUT: %G: %G.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %impl_witness.770: <witness> = impl_witness (@impl.%F.decl), @impl(%empty_struct_type) [template]
|
||||
// CHECK:STDOUT: %F.type.2e5: type = fn_type @F.2, @impl(%empty_struct_type) [template]
|
||||
// CHECK:STDOUT: %F.c77: %F.type.2e5 = struct_value () [template]
|
||||
// CHECK:STDOUT: %HasF.facet.007: %HasF.type = facet_value %C.7a7, %impl_witness.770 [template]
|
||||
// CHECK:STDOUT: %.4df: type = fn_type_with_self_type %F.type.b7b, %HasF.facet.007 [template]
|
||||
// CHECK:STDOUT: %F.specific_fn: <specific function> = specific_function %F.c77, @F.2(%empty_struct_type) [template]
|
||||
// CHECK:STDOUT: %C.7a7: type = class_type @C, @C(%empty_struct_type) [concrete]
|
||||
// CHECK:STDOUT: %G.type: type = fn_type @G [concrete]
|
||||
// CHECK:STDOUT: %G: %G.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %impl_witness.770: <witness> = impl_witness (@impl.%F.decl), @impl(%empty_struct_type) [concrete]
|
||||
// CHECK:STDOUT: %F.type.2e5: type = fn_type @F.2, @impl(%empty_struct_type) [concrete]
|
||||
// CHECK:STDOUT: %F.c77: %F.type.2e5 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %HasF.facet.007: %HasF.type = facet_value %C.7a7, %impl_witness.770 [concrete]
|
||||
// CHECK:STDOUT: %.4df: type = fn_type_with_self_type %F.type.b7b, %HasF.facet.007 [concrete]
|
||||
// CHECK:STDOUT: %F.specific_fn: <specific function> = specific_function %F.c77, @F.2(%empty_struct_type) [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Core = imports.%Core
|
||||
// CHECK:STDOUT: .HasF = %HasF.decl
|
||||
// CHECK:STDOUT: .C = %C.decl
|
||||
// CHECK:STDOUT: .G = %G.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %HasF.decl: type = interface_decl @HasF [template = constants.%HasF.type] {} {}
|
||||
// CHECK:STDOUT: %C.decl: %C.type = class_decl @C [template = constants.%C.generic] {
|
||||
// CHECK:STDOUT: %HasF.decl: type = interface_decl @HasF [concrete = constants.%HasF.type] {} {}
|
||||
// CHECK:STDOUT: %C.decl: %C.type = class_decl @C [concrete = constants.%C.generic] {
|
||||
// CHECK:STDOUT: %T.patt.loc8_9.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_9.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc8_9.1, runtime_param<none> [symbolic = %T.patt.loc8_9.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.param: type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %T.loc8_9.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc8_9.2 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: impl_decl @impl [template] {
|
||||
// CHECK:STDOUT: impl_decl @impl [concrete] {
|
||||
// CHECK:STDOUT: %T.patt.loc10_14.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc10_14.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc10_14.1, runtime_param<none> [symbolic = %T.patt.loc10_14.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [template = constants.%C.generic]
|
||||
// CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [concrete = constants.%C.generic]
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc10_14.1 [symbolic = %T.loc10_14.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %C.loc10_27.1: type = class_type @C, @C(constants.%T) [symbolic = %C.loc10_27.2 (constants.%C.f2e)]
|
||||
// CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [template = constants.%HasF.type]
|
||||
// CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [concrete = constants.%HasF.type]
|
||||
// CHECK:STDOUT: %T.param: type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %T.loc10_14.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc10_14.2 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%F.decl), @impl(constants.%T) [symbolic = @impl.%impl_witness (constants.%impl_witness.7d1)]
|
||||
// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {
|
||||
// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] {
|
||||
// CHECK:STDOUT: %x.patt: %C.7a7 = binding_pattern x
|
||||
// CHECK:STDOUT: %x.param_patt: %C.7a7 = value_param_pattern %x.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %x.param: %C.7a7 = value_param runtime_param0
|
||||
// CHECK:STDOUT: %.loc14_13.1: type = splice_block %C [template = constants.%C.7a7] {
|
||||
// CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [template = constants.%C.generic]
|
||||
// CHECK:STDOUT: %.loc14_13.1: type = splice_block %C [concrete = constants.%C.7a7] {
|
||||
// CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [concrete = constants.%C.generic]
|
||||
// CHECK:STDOUT: %.loc14_12: %empty_struct_type = struct_literal ()
|
||||
// CHECK:STDOUT: %.loc14_13.2: type = converted %.loc14_12, constants.%empty_struct_type [template = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%empty_struct_type) [template = constants.%C.7a7]
|
||||
// CHECK:STDOUT: %.loc14_13.2: type = converted %.loc14_12, constants.%empty_struct_type [concrete = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%empty_struct_type) [concrete = constants.%C.7a7]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %x: %C.7a7 = bind_name x, %x.param
|
||||
// CHECK:STDOUT: }
|
||||
@@ -567,8 +567,8 @@ fn G(x: A) {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @HasF {
|
||||
// CHECK:STDOUT: %Self: %HasF.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self]
|
||||
// CHECK:STDOUT: %F.decl: %F.type.b7b = fn_decl @F.1 [template = constants.%F.f50] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %HasF.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %F.decl: %F.type.b7b = fn_decl @F.1 [concrete = constants.%F.f50] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %HasF.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -602,7 +602,7 @@ fn G(x: A) {
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class {
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -626,10 +626,10 @@ fn G(x: A) {
|
||||
// CHECK:STDOUT: fn @G(%x.param_patt: %C.7a7) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %x.ref: %C.7a7 = name_ref x, %x
|
||||
// CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [template = constants.%HasF.type]
|
||||
// CHECK:STDOUT: %F.ref: %HasF.assoc_type = name_ref F, @HasF.%assoc0 [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0: %.4df = impl_witness_access constants.%impl_witness.770, element0 [template = constants.%F.c77]
|
||||
// CHECK:STDOUT: %specific_fn: <specific function> = specific_function %impl.elem0, @F.2(constants.%empty_struct_type) [template = constants.%F.specific_fn]
|
||||
// CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [concrete = constants.%HasF.type]
|
||||
// CHECK:STDOUT: %F.ref: %HasF.assoc_type = name_ref F, @HasF.%assoc0 [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0: %.4df = impl_witness_access constants.%impl_witness.770, element0 [concrete = constants.%F.c77]
|
||||
// CHECK:STDOUT: %specific_fn: <specific function> = specific_function %impl.elem0, @F.2(constants.%empty_struct_type) [concrete = constants.%F.specific_fn]
|
||||
// CHECK:STDOUT: %F.call: init %empty_tuple.type = call %specific_fn()
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
@@ -687,79 +687,79 @@ fn G(x: A) {
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %HasF.type.fe3: type = generic_interface_type @HasF [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %HasF.generic: %HasF.type.fe3 = struct_value () [template]
|
||||
// CHECK:STDOUT: %HasF.type.fe3: type = generic_interface_type @HasF [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %HasF.generic: %HasF.type.fe3 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %HasF.type.901: type = facet_type <@HasF, @HasF(%T)> [symbolic]
|
||||
// CHECK:STDOUT: %Self: %HasF.type.901 = bind_symbolic_name Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: %F.type.46c: type = fn_type @F.1, @HasF(%T) [symbolic]
|
||||
// CHECK:STDOUT: %F.823: %F.type.46c = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %HasF.assoc_type.595: type = assoc_entity_type %HasF.type.901 [symbolic]
|
||||
// CHECK:STDOUT: %assoc0.35e: %HasF.assoc_type.595 = assoc_entity element0, @HasF.%F.decl [symbolic]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %HasF.type.901 [symbolic]
|
||||
// CHECK:STDOUT: %impl_witness.142: <witness> = impl_witness (@impl.%F.decl), @impl(%T) [symbolic]
|
||||
// CHECK:STDOUT: %F.type.6c8: type = fn_type @F.2, @impl(%T) [symbolic]
|
||||
// CHECK:STDOUT: %F.008: %F.type.6c8 = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %HasF.facet.77c: %HasF.type.901 = facet_value %empty_struct_type, %impl_witness.142 [symbolic]
|
||||
// CHECK:STDOUT: %G.type: type = fn_type @G [template]
|
||||
// CHECK:STDOUT: %G: %G.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %HasF.type.072: type = facet_type <@HasF, @HasF(%empty_struct_type)> [template]
|
||||
// CHECK:STDOUT: %F.type.b0b: type = fn_type @F.1, @HasF(%empty_struct_type) [template]
|
||||
// CHECK:STDOUT: %F.418: %F.type.b0b = struct_value () [template]
|
||||
// CHECK:STDOUT: %HasF.assoc_type.60b: type = assoc_entity_type %HasF.type.072 [template]
|
||||
// CHECK:STDOUT: %assoc0.46d: %HasF.assoc_type.60b = assoc_entity element0, @HasF.%F.decl [template]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %HasF.type.072 [template]
|
||||
// CHECK:STDOUT: %impl_witness.221: <witness> = impl_witness (@impl.%F.decl), @impl(%empty_struct_type) [template]
|
||||
// CHECK:STDOUT: %F.type.a13: type = fn_type @F.2, @impl(%empty_struct_type) [template]
|
||||
// CHECK:STDOUT: %F.8c6: %F.type.a13 = struct_value () [template]
|
||||
// CHECK:STDOUT: %HasF.facet.075: %HasF.type.072 = facet_value %empty_struct_type, %impl_witness.221 [template]
|
||||
// CHECK:STDOUT: %.a00: type = fn_type_with_self_type %F.type.b0b, %HasF.facet.075 [template]
|
||||
// CHECK:STDOUT: %F.specific_fn: <specific function> = specific_function %F.8c6, @F.2(%empty_struct_type) [template]
|
||||
// CHECK:STDOUT: %G.type: type = fn_type @G [concrete]
|
||||
// CHECK:STDOUT: %G: %G.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %HasF.type.072: type = facet_type <@HasF, @HasF(%empty_struct_type)> [concrete]
|
||||
// CHECK:STDOUT: %F.type.b0b: type = fn_type @F.1, @HasF(%empty_struct_type) [concrete]
|
||||
// CHECK:STDOUT: %F.418: %F.type.b0b = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %HasF.assoc_type.60b: type = assoc_entity_type %HasF.type.072 [concrete]
|
||||
// CHECK:STDOUT: %assoc0.46d: %HasF.assoc_type.60b = assoc_entity element0, @HasF.%F.decl [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %HasF.type.072 [concrete]
|
||||
// CHECK:STDOUT: %impl_witness.221: <witness> = impl_witness (@impl.%F.decl), @impl(%empty_struct_type) [concrete]
|
||||
// CHECK:STDOUT: %F.type.a13: type = fn_type @F.2, @impl(%empty_struct_type) [concrete]
|
||||
// CHECK:STDOUT: %F.8c6: %F.type.a13 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %HasF.facet.075: %HasF.type.072 = facet_value %empty_struct_type, %impl_witness.221 [concrete]
|
||||
// CHECK:STDOUT: %.a00: type = fn_type_with_self_type %F.type.b0b, %HasF.facet.075 [concrete]
|
||||
// CHECK:STDOUT: %F.specific_fn: <specific function> = specific_function %F.8c6, @F.2(%empty_struct_type) [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Core = imports.%Core
|
||||
// CHECK:STDOUT: .HasF = %HasF.decl
|
||||
// CHECK:STDOUT: .G = %G.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %HasF.decl: %HasF.type.fe3 = interface_decl @HasF [template = constants.%HasF.generic] {
|
||||
// CHECK:STDOUT: %HasF.decl: %HasF.type.fe3 = interface_decl @HasF [concrete = constants.%HasF.generic] {
|
||||
// CHECK:STDOUT: %T.patt.loc4_16.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_16.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc4_16.1, runtime_param<none> [symbolic = %T.patt.loc4_16.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.param: type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %T.loc4_16.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_16.2 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: impl_decl @impl [template] {
|
||||
// CHECK:STDOUT: impl_decl @impl [concrete] {
|
||||
// CHECK:STDOUT: %T.patt.loc8_14.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_14.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc8_14.1, runtime_param<none> [symbolic = %T.patt.loc8_14.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc8_25.1: %empty_struct_type = struct_literal ()
|
||||
// CHECK:STDOUT: %.loc8_25.2: type = converted %.loc8_25.1, constants.%empty_struct_type [template = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %HasF.ref: %HasF.type.fe3 = name_ref HasF, file.%HasF.decl [template = constants.%HasF.generic]
|
||||
// CHECK:STDOUT: %.loc8_25.2: type = converted %.loc8_25.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %HasF.ref: %HasF.type.fe3 = name_ref HasF, file.%HasF.decl [concrete = constants.%HasF.generic]
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc8_14.1 [symbolic = %T.loc8_14.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %HasF.type.loc8_36.1: type = facet_type <@HasF, @HasF(constants.%T)> [symbolic = %HasF.type.loc8_36.2 (constants.%HasF.type.901)]
|
||||
// CHECK:STDOUT: %T.param: type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %T.loc8_14.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc8_14.2 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%F.decl), @impl(constants.%T) [symbolic = @impl.%impl_witness (constants.%impl_witness.142)]
|
||||
// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {
|
||||
// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] {
|
||||
// CHECK:STDOUT: %x.patt: %empty_struct_type = binding_pattern x
|
||||
// CHECK:STDOUT: %x.param_patt: %empty_struct_type = value_param_pattern %x.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %x.param: %empty_struct_type = value_param runtime_param0
|
||||
// CHECK:STDOUT: %.loc12_10.1: type = splice_block %.loc12_10.3 [template = constants.%empty_struct_type] {
|
||||
// CHECK:STDOUT: %.loc12_10.1: type = splice_block %.loc12_10.3 [concrete = constants.%empty_struct_type] {
|
||||
// CHECK:STDOUT: %.loc12_10.2: %empty_struct_type = struct_literal ()
|
||||
// CHECK:STDOUT: %.loc12_10.3: type = converted %.loc12_10.2, constants.%empty_struct_type [template = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %.loc12_10.3: type = converted %.loc12_10.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %x: %empty_struct_type = bind_name x, %x.param
|
||||
// CHECK:STDOUT: }
|
||||
@@ -825,14 +825,14 @@ fn G(x: A) {
|
||||
// CHECK:STDOUT: fn @G(%x.param_patt: %empty_struct_type) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %x.ref: %empty_struct_type = name_ref x, %x
|
||||
// CHECK:STDOUT: %HasF.ref: %HasF.type.fe3 = name_ref HasF, file.%HasF.decl [template = constants.%HasF.generic]
|
||||
// CHECK:STDOUT: %HasF.ref: %HasF.type.fe3 = name_ref HasF, file.%HasF.decl [concrete = constants.%HasF.generic]
|
||||
// CHECK:STDOUT: %.loc13_12: %empty_struct_type = struct_literal ()
|
||||
// CHECK:STDOUT: %.loc13_13: type = converted %.loc13_12, constants.%empty_struct_type [template = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %HasF.type: type = facet_type <@HasF, @HasF(constants.%empty_struct_type)> [template = constants.%HasF.type.072]
|
||||
// CHECK:STDOUT: %.loc13_14: %HasF.assoc_type.60b = specific_constant @HasF.%assoc0.loc5_9.1, @HasF(constants.%empty_struct_type) [template = constants.%assoc0.46d]
|
||||
// CHECK:STDOUT: %F.ref: %HasF.assoc_type.60b = name_ref F, %.loc13_14 [template = constants.%assoc0.46d]
|
||||
// CHECK:STDOUT: %impl.elem0: %.a00 = impl_witness_access constants.%impl_witness.221, element0 [template = constants.%F.8c6]
|
||||
// CHECK:STDOUT: %specific_fn: <specific function> = specific_function %impl.elem0, @F.2(constants.%empty_struct_type) [template = constants.%F.specific_fn]
|
||||
// CHECK:STDOUT: %.loc13_13: type = converted %.loc13_12, constants.%empty_struct_type [concrete = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %HasF.type: type = facet_type <@HasF, @HasF(constants.%empty_struct_type)> [concrete = constants.%HasF.type.072]
|
||||
// CHECK:STDOUT: %.loc13_14: %HasF.assoc_type.60b = specific_constant @HasF.%assoc0.loc5_9.1, @HasF(constants.%empty_struct_type) [concrete = constants.%assoc0.46d]
|
||||
// CHECK:STDOUT: %F.ref: %HasF.assoc_type.60b = name_ref F, %.loc13_14 [concrete = constants.%assoc0.46d]
|
||||
// CHECK:STDOUT: %impl.elem0: %.a00 = impl_witness_access constants.%impl_witness.221, element0 [concrete = constants.%F.8c6]
|
||||
// CHECK:STDOUT: %specific_fn: <specific function> = specific_function %impl.elem0, @F.2(constants.%empty_struct_type) [concrete = constants.%F.specific_fn]
|
||||
// CHECK:STDOUT: %F.call: init %empty_tuple.type = call %specific_fn()
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
@@ -906,12 +906,12 @@ fn G(x: A) {
|
||||
// CHECK:STDOUT: --- fail_incomplete_deduction.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %HasF.type: type = facet_type <@HasF> [template]
|
||||
// CHECK:STDOUT: %HasF.type: type = facet_type <@HasF> [concrete]
|
||||
// CHECK:STDOUT: %Self: %HasF.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %F.type.b7b: type = fn_type @F.1 [template]
|
||||
// CHECK:STDOUT: %F.f50: %F.type.b7b = struct_value () [template]
|
||||
// CHECK:STDOUT: %HasF.assoc_type: type = assoc_entity_type %HasF.type [template]
|
||||
// CHECK:STDOUT: %assoc0: %HasF.assoc_type = assoc_entity element0, @HasF.%F.decl [template]
|
||||
// CHECK:STDOUT: %F.type.b7b: type = fn_type @F.1 [concrete]
|
||||
// CHECK:STDOUT: %F.f50: %F.type.b7b = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %HasF.assoc_type: type = assoc_entity_type %HasF.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0: %HasF.assoc_type = assoc_entity element0, @HasF.%F.decl [concrete]
|
||||
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %U: type = bind_symbolic_name U, 1 [symbolic]
|
||||
@@ -920,48 +920,48 @@ fn G(x: A) {
|
||||
// CHECK:STDOUT: %F.type.56e: type = fn_type @F.2, @impl(%T, %U) [symbolic]
|
||||
// CHECK:STDOUT: %F.9b8: %F.type.56e = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %HasF.facet: %HasF.type = facet_value %T, %impl_witness [symbolic]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %G.type: type = fn_type @G [template]
|
||||
// CHECK:STDOUT: %G: %G.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %G.type: type = fn_type @G [concrete]
|
||||
// CHECK:STDOUT: %G: %G.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Core = imports.%Core
|
||||
// CHECK:STDOUT: .HasF = %HasF.decl
|
||||
// CHECK:STDOUT: .G = %G.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %HasF.decl: type = interface_decl @HasF [template = constants.%HasF.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [template] {
|
||||
// CHECK:STDOUT: %HasF.decl: type = interface_decl @HasF [concrete = constants.%HasF.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [concrete] {
|
||||
// CHECK:STDOUT: %T.patt.loc9_14.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc9_14.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc9_14.1, runtime_param<none> [symbolic = %T.patt.loc9_14.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %U.patt.loc9_24.1: type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc9_24.2 (constants.%U.patt)]
|
||||
// CHECK:STDOUT: %U.param_patt: type = value_param_pattern %U.patt.loc9_24.1, runtime_param<none> [symbolic = %U.patt.loc9_24.2 (constants.%U.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc9_14.1 [symbolic = %T.loc9_14.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [template = constants.%HasF.type]
|
||||
// CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [concrete = constants.%HasF.type]
|
||||
// CHECK:STDOUT: %T.param: type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %T.loc9_14.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc9_14.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %U.param: type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %U.loc9_24.1: type = bind_symbolic_name U, 1, %U.param [symbolic = %U.loc9_24.2 (constants.%U)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%F.decl), @impl(constants.%T, constants.%U) [symbolic = @impl.%impl_witness (constants.%impl_witness)]
|
||||
// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {
|
||||
// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] {
|
||||
// CHECK:STDOUT: %x.patt: %empty_struct_type = binding_pattern x
|
||||
// CHECK:STDOUT: %x.param_patt: %empty_struct_type = value_param_pattern %x.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %x.param: %empty_struct_type = value_param runtime_param0
|
||||
// CHECK:STDOUT: %.loc13_10.1: type = splice_block %.loc13_10.3 [template = constants.%empty_struct_type] {
|
||||
// CHECK:STDOUT: %.loc13_10.1: type = splice_block %.loc13_10.3 [concrete = constants.%empty_struct_type] {
|
||||
// CHECK:STDOUT: %.loc13_10.2: %empty_struct_type = struct_literal ()
|
||||
// CHECK:STDOUT: %.loc13_10.3: type = converted %.loc13_10.2, constants.%empty_struct_type [template = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %.loc13_10.3: type = converted %.loc13_10.2, constants.%empty_struct_type [concrete = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %x: %empty_struct_type = bind_name x, %x.param
|
||||
// CHECK:STDOUT: }
|
||||
@@ -969,8 +969,8 @@ fn G(x: A) {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @HasF {
|
||||
// CHECK:STDOUT: %Self: %HasF.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self]
|
||||
// CHECK:STDOUT: %F.decl: %F.type.b7b = fn_decl @F.1 [template = constants.%F.f50] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %HasF.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %F.decl: %F.type.b7b = fn_decl @F.1 [concrete = constants.%F.f50] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %HasF.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -1014,8 +1014,8 @@ fn G(x: A) {
|
||||
// CHECK:STDOUT: fn @G(%x.param_patt: %empty_struct_type) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %x.ref: %empty_struct_type = name_ref x, %x
|
||||
// CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [template = constants.%HasF.type]
|
||||
// CHECK:STDOUT: %F.ref: %HasF.assoc_type = name_ref F, @HasF.%assoc0 [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [concrete = constants.%HasF.type]
|
||||
// CHECK:STDOUT: %F.ref: %HasF.assoc_type = name_ref F, @HasF.%assoc0 [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -1044,8 +1044,8 @@ fn G(x: A) {
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %HasF.type.fe3: type = generic_interface_type @HasF [template]
|
||||
// CHECK:STDOUT: %HasF.generic: %HasF.type.fe3 = struct_value () [template]
|
||||
// CHECK:STDOUT: %HasF.type.fe3: type = generic_interface_type @HasF [concrete]
|
||||
// CHECK:STDOUT: %HasF.generic: %HasF.type.fe3 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %HasF.type.901: type = facet_type <@HasF, @HasF(%T)> [symbolic]
|
||||
// CHECK:STDOUT: %Self: %HasF.type.901 = bind_symbolic_name Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: %F.type.46c: type = fn_type @F.1, @HasF(%T) [symbolic]
|
||||
@@ -1057,28 +1057,28 @@ fn G(x: A) {
|
||||
// CHECK:STDOUT: %F.type.912: type = fn_type @F.2, @impl(%T) [symbolic]
|
||||
// CHECK:STDOUT: %F.f30: %F.type.912 = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %HasF.facet: %HasF.type.901 = facet_value %T, %impl_witness [symbolic]
|
||||
// CHECK:STDOUT: %A: type = class_type @A [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %B: type = class_type @B [template]
|
||||
// CHECK:STDOUT: %G.type: type = fn_type @G [template]
|
||||
// CHECK:STDOUT: %G: %G.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %HasF.type.2f5: type = facet_type <@HasF, @HasF(%B)> [template]
|
||||
// CHECK:STDOUT: %F.type.1c6: type = fn_type @F.1, @HasF(%B) [template]
|
||||
// CHECK:STDOUT: %F.7cf: %F.type.1c6 = struct_value () [template]
|
||||
// CHECK:STDOUT: %HasF.assoc_type.3e1: type = assoc_entity_type %HasF.type.2f5 [template]
|
||||
// CHECK:STDOUT: %assoc0.8ec: %HasF.assoc_type.3e1 = assoc_entity element0, @HasF.%F.decl [template]
|
||||
// CHECK:STDOUT: %A: type = class_type @A [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %B: type = class_type @B [concrete]
|
||||
// CHECK:STDOUT: %G.type: type = fn_type @G [concrete]
|
||||
// CHECK:STDOUT: %G: %G.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %HasF.type.2f5: type = facet_type <@HasF, @HasF(%B)> [concrete]
|
||||
// CHECK:STDOUT: %F.type.1c6: type = fn_type @F.1, @HasF(%B) [concrete]
|
||||
// CHECK:STDOUT: %F.7cf: %F.type.1c6 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %HasF.assoc_type.3e1: type = assoc_entity_type %HasF.type.2f5 [concrete]
|
||||
// CHECK:STDOUT: %assoc0.8ec: %HasF.assoc_type.3e1 = assoc_entity element0, @HasF.%F.decl [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Core = imports.%Core
|
||||
// CHECK:STDOUT: .HasF = %HasF.decl
|
||||
// CHECK:STDOUT: .A = %A.decl
|
||||
@@ -1086,33 +1086,33 @@ fn G(x: A) {
|
||||
// CHECK:STDOUT: .G = %G.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %HasF.decl: %HasF.type.fe3 = interface_decl @HasF [template = constants.%HasF.generic] {
|
||||
// CHECK:STDOUT: %HasF.decl: %HasF.type.fe3 = interface_decl @HasF [concrete = constants.%HasF.generic] {
|
||||
// CHECK:STDOUT: %T.patt.loc4_16.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_16.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc4_16.1, runtime_param<none> [symbolic = %T.patt.loc4_16.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.param: type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %T.loc4_16.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_16.2 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: impl_decl @impl [template] {
|
||||
// CHECK:STDOUT: impl_decl @impl [concrete] {
|
||||
// CHECK:STDOUT: %T.patt.loc8_14.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_14.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc8_14.1, runtime_param<none> [symbolic = %T.patt.loc8_14.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc8_24: type = name_ref T, %T.loc8_14.1 [symbolic = %T.loc8_14.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %HasF.ref: %HasF.type.fe3 = name_ref HasF, file.%HasF.decl [template = constants.%HasF.generic]
|
||||
// CHECK:STDOUT: %HasF.ref: %HasF.type.fe3 = name_ref HasF, file.%HasF.decl [concrete = constants.%HasF.generic]
|
||||
// CHECK:STDOUT: %T.ref.loc8_34: type = name_ref T, %T.loc8_14.1 [symbolic = %T.loc8_14.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %HasF.type.loc8_35.1: type = facet_type <@HasF, @HasF(constants.%T)> [symbolic = %HasF.type.loc8_35.2 (constants.%HasF.type.901)]
|
||||
// CHECK:STDOUT: %T.param: type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %T.loc8_14.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc8_14.2 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%F.decl), @impl(constants.%T) [symbolic = @impl.%impl_witness (constants.%impl_witness)]
|
||||
// CHECK:STDOUT: %A.decl: type = class_decl @A [template = constants.%A] {} {}
|
||||
// CHECK:STDOUT: %B.decl: type = class_decl @B [template = constants.%B] {} {}
|
||||
// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {
|
||||
// CHECK:STDOUT: %A.decl: type = class_decl @A [concrete = constants.%A] {} {}
|
||||
// CHECK:STDOUT: %B.decl: type = class_decl @B [concrete = constants.%B] {} {}
|
||||
// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] {
|
||||
// CHECK:STDOUT: %x.patt: %A = binding_pattern x
|
||||
// CHECK:STDOUT: %x.param_patt: %A = value_param_pattern %x.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %x.param: %A = value_param runtime_param0
|
||||
// CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [template = constants.%A]
|
||||
// CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A]
|
||||
// CHECK:STDOUT: %x: %A = bind_name x, %x.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -1162,7 +1162,7 @@ fn G(x: A) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @A {
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -1170,7 +1170,7 @@ fn G(x: A) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @B {
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -1193,11 +1193,11 @@ fn G(x: A) {
|
||||
// CHECK:STDOUT: fn @G(%x.param_patt: %A) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %x.ref: %A = name_ref x, %x
|
||||
// CHECK:STDOUT: %HasF.ref: %HasF.type.fe3 = name_ref HasF, file.%HasF.decl [template = constants.%HasF.generic]
|
||||
// CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [template = constants.%B]
|
||||
// CHECK:STDOUT: %HasF.type: type = facet_type <@HasF, @HasF(constants.%B)> [template = constants.%HasF.type.2f5]
|
||||
// CHECK:STDOUT: %.loc22: %HasF.assoc_type.3e1 = specific_constant @HasF.%assoc0.loc5_9.1, @HasF(constants.%B) [template = constants.%assoc0.8ec]
|
||||
// CHECK:STDOUT: %F.ref: %HasF.assoc_type.3e1 = name_ref F, %.loc22 [template = constants.%assoc0.8ec]
|
||||
// CHECK:STDOUT: %HasF.ref: %HasF.type.fe3 = name_ref HasF, file.%HasF.decl [concrete = constants.%HasF.generic]
|
||||
// CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [concrete = constants.%B]
|
||||
// CHECK:STDOUT: %HasF.type: type = facet_type <@HasF, @HasF(constants.%B)> [concrete = constants.%HasF.type.2f5]
|
||||
// CHECK:STDOUT: %.loc22: %HasF.assoc_type.3e1 = specific_constant @HasF.%assoc0.loc5_9.1, @HasF(constants.%B) [concrete = constants.%assoc0.8ec]
|
||||
// CHECK:STDOUT: %F.ref: %HasF.assoc_type.3e1 = name_ref F, %.loc22 [concrete = constants.%assoc0.8ec]
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+41
-41
@@ -27,29 +27,29 @@ fn F(c: C) -> i32 {
|
||||
// CHECK:STDOUT: --- instance_method.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %C: type = class_type @C [template]
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [template]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [concrete]
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete]
|
||||
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template]
|
||||
// CHECK:STDOUT: %F.type.cf0: type = fn_type @F.1 [template]
|
||||
// CHECK:STDOUT: %F.bc6: %F.type.cf0 = struct_value () [template]
|
||||
// CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type %I.type [template]
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%F.decl [template]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%F.decl) [template]
|
||||
// CHECK:STDOUT: %F.type.f36: type = fn_type @F.2 [template]
|
||||
// CHECK:STDOUT: %F.4c3: %F.type.f36 = struct_value () [template]
|
||||
// CHECK:STDOUT: %I.facet: %I.type = facet_value %C, %impl_witness [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %complete_type.357: <witness> = complete_type_witness %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %F.type.b25: type = fn_type @F.3 [template]
|
||||
// CHECK:STDOUT: %F.c41: %F.type.b25 = struct_value () [template]
|
||||
// CHECK:STDOUT: %.f8b: type = fn_type_with_self_type %F.type.cf0, %I.facet [template]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %F.type.cf0: type = fn_type @F.1 [concrete]
|
||||
// CHECK:STDOUT: %F.bc6: %F.type.cf0 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type %I.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%F.decl [concrete]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%F.decl) [concrete]
|
||||
// CHECK:STDOUT: %F.type.f36: type = fn_type @F.2 [concrete]
|
||||
// CHECK:STDOUT: %F.4c3: %F.type.f36 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %I.facet: %I.type = facet_value %C, %impl_witness [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type.357: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %F.type.b25: type = fn_type @F.3 [concrete]
|
||||
// CHECK:STDOUT: %F.c41: %F.type.b25 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %.f8b: type = fn_type_with_self_type %F.type.cf0, %I.facet [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
|
||||
// CHECK:STDOUT: .Int = %Core.Int
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
@@ -57,26 +57,26 @@ fn F(c: C) -> i32 {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Core = imports.%Core
|
||||
// CHECK:STDOUT: .C = %C.decl.loc11
|
||||
// CHECK:STDOUT: .I = %I.decl
|
||||
// CHECK:STDOUT: .F = %F.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %C.decl.loc11: type = class_decl @C [template = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [template = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: %C.decl.loc17: type = class_decl @C [template = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %F.decl: %F.type.b25 = fn_decl @F.3 [template = constants.%F.c41] {
|
||||
// CHECK:STDOUT: %C.decl.loc11: type = class_decl @C [concrete = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: %C.decl.loc17: type = class_decl @C [concrete = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %F.decl: %F.type.b25 = fn_decl @F.3 [concrete = constants.%F.c41] {
|
||||
// CHECK:STDOUT: %c.patt: %C = binding_pattern c
|
||||
// CHECK:STDOUT: %c.param_patt: %C = value_param_pattern %c.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %i32 = out_param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %c.param: %C = value_param runtime_param0
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl.loc11 [template = constants.%C]
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl.loc11 [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %c: %C = bind_name c, %c.param
|
||||
// CHECK:STDOUT: %return.param: ref %i32 = out_param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref %i32 = return_slot %return.param
|
||||
@@ -85,14 +85,14 @@ fn F(c: C) -> i32 {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @I {
|
||||
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self]
|
||||
// CHECK:STDOUT: %F.decl: %F.type.cf0 = fn_decl @F.1 [template = constants.%F.bc6] {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.cf0 = fn_decl @F.1 [concrete = constants.%F.bc6] {
|
||||
// CHECK:STDOUT: %self.patt: @F.1.%Self.as_type.loc14_14.1 (%Self.as_type) = binding_pattern self
|
||||
// CHECK:STDOUT: %self.param_patt: @F.1.%Self.as_type.loc14_14.1 (%Self.as_type) = value_param_pattern %self.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %i32 = out_param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %self.param: @F.1.%Self.as_type.loc14_14.1 (%Self.as_type) = value_param runtime_param0
|
||||
// CHECK:STDOUT: %.loc14_14.1: type = splice_block %.loc14_14.2 [symbolic = %Self.as_type.loc14_14.1 (constants.%Self.as_type)] {
|
||||
// CHECK:STDOUT: %Self.ref: %I.type = name_ref Self, @I.%Self [symbolic = %Self (constants.%Self)]
|
||||
@@ -103,7 +103,7 @@ fn F(c: C) -> i32 {
|
||||
// CHECK:STDOUT: %return.param: ref %i32 = out_param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref %i32 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -112,16 +112,16 @@ fn F(c: C) -> i32 {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl: %Self.ref as %I.ref {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.f36 = fn_decl @F.2 [template = constants.%F.4c3] {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.f36 = fn_decl @F.2 [concrete = constants.%F.4c3] {
|
||||
// CHECK:STDOUT: %self.patt: %C = binding_pattern self
|
||||
// CHECK:STDOUT: %self.param_patt: %C = value_param_pattern %self.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %i32 = out_param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %self.param: %C = value_param runtime_param0
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [template = constants.%C]
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %self: %C = bind_name self, %self.param
|
||||
// CHECK:STDOUT: %return.param: ref %i32 = out_param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref %i32 = return_slot %return.param
|
||||
@@ -133,12 +133,12 @@ fn F(c: C) -> i32 {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @C {
|
||||
// CHECK:STDOUT: impl_decl @impl [template] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [template = constants.%C]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type]
|
||||
// CHECK:STDOUT: impl_decl @impl [concrete] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%F.decl) [template = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%F.decl) [concrete = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -158,8 +158,8 @@ fn F(c: C) -> i32 {
|
||||
// CHECK:STDOUT: fn @F.3(%c.param_patt: %C) -> %i32 {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %c.ref: %C = name_ref c, %c
|
||||
// CHECK:STDOUT: %F.ref: %I.assoc_type = name_ref F, @I.%assoc0 [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0: %.f8b = impl_witness_access constants.%impl_witness, element0 [template = constants.%F.4c3]
|
||||
// CHECK:STDOUT: %F.ref: %I.assoc_type = name_ref F, @I.%assoc0 [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0: %.f8b = impl_witness_access constants.%impl_witness, element0 [concrete = constants.%F.4c3]
|
||||
// CHECK:STDOUT: %bound_method: <bound method> = bound_method %c.ref, %impl.elem0
|
||||
// CHECK:STDOUT: %F.call: init %i32 = call %bound_method(%c.ref)
|
||||
// CHECK:STDOUT: %.loc24_15.1: %i32 = value_of_initializer %F.call
|
||||
|
||||
@@ -37,8 +37,8 @@ fn TestSpecific(a: A({})) -> {} {
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %A.type: type = generic_class_type @A [template]
|
||||
// CHECK:STDOUT: %A.generic: %A.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %A.type: type = generic_class_type @A [concrete]
|
||||
// CHECK:STDOUT: %A.generic: %A.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %A.13025a.1: type = class_type @A, @A(%T) [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.4aeca8.1: <witness> = require_complete_type %T [symbolic]
|
||||
// CHECK:STDOUT: %A.elem.1ceb36.1: type = unbound_element_type %A.13025a.1, %T [symbolic]
|
||||
@@ -46,8 +46,8 @@ fn TestSpecific(a: A({})) -> {} {
|
||||
// CHECK:STDOUT: %complete_type.84bb3d.1: <witness> = complete_type_witness %struct_type.n.848971.1 [symbolic]
|
||||
// CHECK:STDOUT: %U: type = bind_symbolic_name U, 0 [symbolic]
|
||||
// CHECK:STDOUT: %U.patt: type = symbolic_binding_pattern U, 0 [symbolic]
|
||||
// CHECK:STDOUT: %I.type.dac: type = generic_interface_type @I [template]
|
||||
// CHECK:STDOUT: %I.generic: %I.type.dac = struct_value () [template]
|
||||
// CHECK:STDOUT: %I.type.dac: type = generic_interface_type @I [concrete]
|
||||
// CHECK:STDOUT: %I.generic: %I.type.dac = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %I.type.325e65.1: type = facet_type <@I, @I(%U)> [symbolic]
|
||||
// CHECK:STDOUT: %Self: %I.type.325e65.1 = bind_symbolic_name Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic]
|
||||
@@ -76,8 +76,8 @@ fn TestSpecific(a: A({})) -> {} {
|
||||
// CHECK:STDOUT: %W: type = bind_symbolic_name W, 0 [symbolic]
|
||||
// CHECK:STDOUT: %W.patt: type = symbolic_binding_pattern W, 0 [symbolic]
|
||||
// CHECK:STDOUT: %A.13025a.3: type = class_type @A, @A(%W) [symbolic]
|
||||
// CHECK:STDOUT: %TestGeneric.type: type = fn_type @TestGeneric [template]
|
||||
// CHECK:STDOUT: %TestGeneric: %TestGeneric.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %TestGeneric.type: type = fn_type @TestGeneric [concrete]
|
||||
// CHECK:STDOUT: %TestGeneric: %TestGeneric.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %require_complete.4aeca8.3: <witness> = require_complete_type %W [symbolic]
|
||||
// CHECK:STDOUT: %A.elem.1ceb36.3: type = unbound_element_type %A.13025a.3, %W [symbolic]
|
||||
// CHECK:STDOUT: %struct_type.n.848971.3: type = struct_type {.n: %W} [symbolic]
|
||||
@@ -94,64 +94,64 @@ fn TestSpecific(a: A({})) -> {} {
|
||||
// CHECK:STDOUT: %F.d6ae34.2: %F.type.0fea45.2 = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %I.facet.5b0ece.2: %I.type.325e65.3 = facet_value %A.13025a.3, %impl_witness.ab3b51.2 [symbolic]
|
||||
// CHECK:STDOUT: %.051: type = fn_type_with_self_type %F.type.2aef59.3, %I.facet.5b0ece.2 [symbolic]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %A.235: type = class_type @A, @A(%empty_struct_type) [template]
|
||||
// CHECK:STDOUT: %TestSpecific.type: type = fn_type @TestSpecific [template]
|
||||
// CHECK:STDOUT: %TestSpecific: %TestSpecific.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %complete_type.357: <witness> = complete_type_witness %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %A.elem.2af: type = unbound_element_type %A.235, %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %struct_type.n.91c: type = struct_type {.n: %empty_struct_type} [template]
|
||||
// CHECK:STDOUT: %complete_type.0a6: <witness> = complete_type_witness %struct_type.n.91c [template]
|
||||
// CHECK:STDOUT: %I.type.885: type = facet_type <@I, @I(%empty_struct_type)> [template]
|
||||
// CHECK:STDOUT: %F.type.684: type = fn_type @F.1, @I(%empty_struct_type) [template]
|
||||
// CHECK:STDOUT: %F.a8d: %F.type.684 = struct_value () [template]
|
||||
// CHECK:STDOUT: %I.assoc_type.67f: type = assoc_entity_type %I.type.885 [template]
|
||||
// CHECK:STDOUT: %assoc0.639: %I.assoc_type.67f = assoc_entity element0, @I.%F.decl [template]
|
||||
// CHECK:STDOUT: %complete_type.788: <witness> = complete_type_witness %I.type.885 [template]
|
||||
// CHECK:STDOUT: %impl_witness.f35: <witness> = impl_witness (@impl.%F.decl), @impl(%empty_struct_type) [template]
|
||||
// CHECK:STDOUT: %F.type.875: type = fn_type @F.2, @impl(%empty_struct_type) [template]
|
||||
// CHECK:STDOUT: %F.158: %F.type.875 = struct_value () [template]
|
||||
// CHECK:STDOUT: %I.facet.f67: %I.type.885 = facet_value %A.235, %impl_witness.f35 [template]
|
||||
// CHECK:STDOUT: %.f01: type = fn_type_with_self_type %F.type.684, %I.facet.f67 [template]
|
||||
// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %A.235: type = class_type @A, @A(%empty_struct_type) [concrete]
|
||||
// CHECK:STDOUT: %TestSpecific.type: type = fn_type @TestSpecific [concrete]
|
||||
// CHECK:STDOUT: %TestSpecific: %TestSpecific.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %complete_type.357: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %A.elem.2af: type = unbound_element_type %A.235, %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %struct_type.n.91c: type = struct_type {.n: %empty_struct_type} [concrete]
|
||||
// CHECK:STDOUT: %complete_type.0a6: <witness> = complete_type_witness %struct_type.n.91c [concrete]
|
||||
// CHECK:STDOUT: %I.type.885: type = facet_type <@I, @I(%empty_struct_type)> [concrete]
|
||||
// CHECK:STDOUT: %F.type.684: type = fn_type @F.1, @I(%empty_struct_type) [concrete]
|
||||
// CHECK:STDOUT: %F.a8d: %F.type.684 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %I.assoc_type.67f: type = assoc_entity_type %I.type.885 [concrete]
|
||||
// CHECK:STDOUT: %assoc0.639: %I.assoc_type.67f = assoc_entity element0, @I.%F.decl [concrete]
|
||||
// CHECK:STDOUT: %complete_type.788: <witness> = complete_type_witness %I.type.885 [concrete]
|
||||
// CHECK:STDOUT: %impl_witness.f35: <witness> = impl_witness (@impl.%F.decl), @impl(%empty_struct_type) [concrete]
|
||||
// CHECK:STDOUT: %F.type.875: type = fn_type @F.2, @impl(%empty_struct_type) [concrete]
|
||||
// CHECK:STDOUT: %F.158: %F.type.875 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %I.facet.f67: %I.type.885 = facet_value %A.235, %impl_witness.f35 [concrete]
|
||||
// CHECK:STDOUT: %.f01: type = fn_type_with_self_type %F.type.684, %I.facet.f67 [concrete]
|
||||
// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .A = %A.decl
|
||||
// CHECK:STDOUT: .I = %I.decl
|
||||
// CHECK:STDOUT: .TestGeneric = %TestGeneric.decl
|
||||
// CHECK:STDOUT: .TestSpecific = %TestSpecific.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %A.decl: %A.type = class_decl @A [template = constants.%A.generic] {
|
||||
// CHECK:STDOUT: %A.decl: %A.type = class_decl @A [concrete = constants.%A.generic] {
|
||||
// CHECK:STDOUT: %T.patt.loc2_9.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc2_9.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc2_9.1, runtime_param<none> [symbolic = %T.patt.loc2_9.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.param: type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %T.loc2_9.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc2_9.2 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %I.decl: %I.type.dac = interface_decl @I [template = constants.%I.generic] {
|
||||
// CHECK:STDOUT: %I.decl: %I.type.dac = interface_decl @I [concrete = constants.%I.generic] {
|
||||
// CHECK:STDOUT: %U.patt.loc6_13.1: type = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc6_13.2 (constants.%U.patt)]
|
||||
// CHECK:STDOUT: %U.param_patt: type = value_param_pattern %U.patt.loc6_13.1, runtime_param<none> [symbolic = %U.patt.loc6_13.2 (constants.%U.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %U.param: type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %U.loc6_13.1: type = bind_symbolic_name U, 0, %U.param [symbolic = %U.loc6_13.2 (constants.%U)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: impl_decl @impl [template] {
|
||||
// CHECK:STDOUT: impl_decl @impl [concrete] {
|
||||
// CHECK:STDOUT: %V.patt.loc10_14.1: type = symbolic_binding_pattern V, 0 [symbolic = %V.patt.loc10_14.2 (constants.%V.patt)]
|
||||
// CHECK:STDOUT: %V.param_patt: type = value_param_pattern %V.patt.loc10_14.1, runtime_param<none> [symbolic = %V.patt.loc10_14.2 (constants.%V.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %A.ref: %A.type = name_ref A, file.%A.decl [template = constants.%A.generic]
|
||||
// CHECK:STDOUT: %A.ref: %A.type = name_ref A, file.%A.decl [concrete = constants.%A.generic]
|
||||
// CHECK:STDOUT: %V.ref.loc10_26: type = name_ref V, %V.loc10_14.1 [symbolic = %V.loc10_14.2 (constants.%V)]
|
||||
// CHECK:STDOUT: %A.loc10_27.1: type = class_type @A, @A(constants.%V) [symbolic = %A.loc10_27.2 (constants.%A.13025a.2)]
|
||||
// CHECK:STDOUT: %I.ref: %I.type.dac = name_ref I, file.%I.decl [template = constants.%I.generic]
|
||||
// CHECK:STDOUT: %I.ref: %I.type.dac = name_ref I, file.%I.decl [concrete = constants.%I.generic]
|
||||
// CHECK:STDOUT: %V.ref.loc10_34: type = name_ref V, %V.loc10_14.1 [symbolic = %V.loc10_14.2 (constants.%V)]
|
||||
// CHECK:STDOUT: %I.type.loc10_35.1: type = facet_type <@I, @I(constants.%V)> [symbolic = %I.type.loc10_35.2 (constants.%I.type.325e65.2)]
|
||||
// CHECK:STDOUT: %V.param: type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %V.loc10_14.1: type = bind_symbolic_name V, 0, %V.param [symbolic = %V.loc10_14.2 (constants.%V)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%F.decl), @impl(constants.%V) [symbolic = @impl.%impl_witness (constants.%impl_witness.ab3b51.1)]
|
||||
// CHECK:STDOUT: %TestGeneric.decl: %TestGeneric.type = fn_decl @TestGeneric [template = constants.%TestGeneric] {
|
||||
// CHECK:STDOUT: %TestGeneric.decl: %TestGeneric.type = fn_decl @TestGeneric [concrete = constants.%TestGeneric] {
|
||||
// CHECK:STDOUT: %W.patt.loc16_16.1: type = symbolic_binding_pattern W, 0 [symbolic = %W.patt.loc16_16.2 (constants.%W.patt)]
|
||||
// CHECK:STDOUT: %W.param_patt: type = value_param_pattern %W.patt.loc16_16.1, runtime_param<none> [symbolic = %W.patt.loc16_16.2 (constants.%W.patt)]
|
||||
// CHECK:STDOUT: %a.patt: @TestGeneric.%A.loc16_32.2 (%A.13025a.3) = binding_pattern a
|
||||
@@ -164,7 +164,7 @@ fn TestSpecific(a: A({})) -> {} {
|
||||
// CHECK:STDOUT: %W.loc16_16.1: type = bind_symbolic_name W, 0, %W.param [symbolic = %W.loc16_16.2 (constants.%W)]
|
||||
// CHECK:STDOUT: %a.param: @TestGeneric.%A.loc16_32.2 (%A.13025a.3) = value_param runtime_param0
|
||||
// CHECK:STDOUT: %.loc16: type = splice_block %A.loc16_32.1 [symbolic = %A.loc16_32.2 (constants.%A.13025a.3)] {
|
||||
// CHECK:STDOUT: %A.ref: %A.type = name_ref A, file.%A.decl [template = constants.%A.generic]
|
||||
// CHECK:STDOUT: %A.ref: %A.type = name_ref A, file.%A.decl [concrete = constants.%A.generic]
|
||||
// CHECK:STDOUT: %W.ref.loc16_31: type = name_ref W, %W.loc16_16.1 [symbolic = %W.loc16_16.2 (constants.%W)]
|
||||
// CHECK:STDOUT: %A.loc16_32.1: type = class_type @A, @A(constants.%W) [symbolic = %A.loc16_32.2 (constants.%A.13025a.3)]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -172,20 +172,20 @@ fn TestSpecific(a: A({})) -> {} {
|
||||
// CHECK:STDOUT: %return.param: ref @TestGeneric.%W.loc16_16.2 (%W) = out_param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref @TestGeneric.%W.loc16_16.2 (%W) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %TestSpecific.decl: %TestSpecific.type = fn_decl @TestSpecific [template = constants.%TestSpecific] {
|
||||
// CHECK:STDOUT: %TestSpecific.decl: %TestSpecific.type = fn_decl @TestSpecific [concrete = constants.%TestSpecific] {
|
||||
// CHECK:STDOUT: %a.patt: %A.235 = binding_pattern a
|
||||
// CHECK:STDOUT: %a.param_patt: %A.235 = value_param_pattern %a.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: %empty_struct_type = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %empty_struct_type = out_param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc20_31.1: %empty_struct_type = struct_literal ()
|
||||
// CHECK:STDOUT: %.loc20_31.2: type = converted %.loc20_31.1, constants.%empty_struct_type [template = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %.loc20_31.2: type = converted %.loc20_31.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %a.param: %A.235 = value_param runtime_param0
|
||||
// CHECK:STDOUT: %.loc20_24.1: type = splice_block %A [template = constants.%A.235] {
|
||||
// CHECK:STDOUT: %A.ref: %A.type = name_ref A, file.%A.decl [template = constants.%A.generic]
|
||||
// CHECK:STDOUT: %.loc20_24.1: type = splice_block %A [concrete = constants.%A.235] {
|
||||
// CHECK:STDOUT: %A.ref: %A.type = name_ref A, file.%A.decl [concrete = constants.%A.generic]
|
||||
// CHECK:STDOUT: %.loc20_23: %empty_struct_type = struct_literal ()
|
||||
// CHECK:STDOUT: %.loc20_24.2: type = converted %.loc20_23, constants.%empty_struct_type [template = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %A: type = class_type @A, @A(constants.%empty_struct_type) [template = constants.%A.235]
|
||||
// CHECK:STDOUT: %.loc20_24.2: type = converted %.loc20_23, constants.%empty_struct_type [concrete = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %A: type = class_type @A, @A(constants.%empty_struct_type) [concrete = constants.%A.235]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %a: %A.235 = bind_name a, %a.param
|
||||
// CHECK:STDOUT: %return.param: ref %empty_struct_type = out_param runtime_param1
|
||||
@@ -279,7 +279,7 @@ fn TestSpecific(a: A({})) -> {} {
|
||||
// CHECK:STDOUT: %complete_type.loc4_1.2: <witness> = complete_type_witness @A.%struct_type.n (%struct_type.n.848971.1) [symbolic = %complete_type.loc4_1.2 (constants.%complete_type.84bb3d.1)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class {
|
||||
// CHECK:STDOUT: %.loc3_8: @A.%A.elem (%A.elem.1ceb36.1) = field_decl n, element0 [template]
|
||||
// CHECK:STDOUT: %.loc3_8: @A.%A.elem (%A.elem.1ceb36.1) = field_decl n, element0 [concrete]
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %.loc3_3: @A.%A.elem (%A.elem.1ceb36.1) = var_pattern %.loc3_8
|
||||
// CHECK:STDOUT: }
|
||||
@@ -314,7 +314,7 @@ fn TestSpecific(a: A({})) -> {} {
|
||||
// CHECK:STDOUT: fn[%self.param_patt: @F.2.%A (%A.13025a.2)]() -> @F.2.%V (%V) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %self.ref: @F.2.%A (%A.13025a.2) = name_ref self, %self
|
||||
// CHECK:STDOUT: %n.ref: @F.2.%A.elem (%A.elem.1ceb36.2) = name_ref n, @A.%.loc3_8 [template = @A.%.loc3_8]
|
||||
// CHECK:STDOUT: %n.ref: @F.2.%A.elem (%A.elem.1ceb36.2) = name_ref n, @A.%.loc3_8 [concrete = @A.%.loc3_8]
|
||||
// CHECK:STDOUT: %.loc12_16.1: ref @F.2.%V (%V) = class_element_access %self.ref, element0
|
||||
// CHECK:STDOUT: %.loc12_16.2: @F.2.%V (%V) = bind_value %.loc12_16.1
|
||||
// CHECK:STDOUT: return %.loc12_16.2
|
||||
@@ -343,7 +343,7 @@ fn TestSpecific(a: A({})) -> {} {
|
||||
// CHECK:STDOUT: fn[%W.param_patt: type](%a.param_patt: @TestGeneric.%A.loc16_32.2 (%A.13025a.3)) -> @TestGeneric.%W.loc16_16.2 (%W) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %a.ref: @TestGeneric.%A.loc16_32.2 (%A.13025a.3) = name_ref a, %a
|
||||
// CHECK:STDOUT: %I.ref: %I.type.dac = name_ref I, file.%I.decl [template = constants.%I.generic]
|
||||
// CHECK:STDOUT: %I.ref: %I.type.dac = name_ref I, file.%I.decl [concrete = constants.%I.generic]
|
||||
// CHECK:STDOUT: %W.ref.loc17: type = name_ref W, %W.loc16_16.1 [symbolic = %W.loc16_16.2 (constants.%W)]
|
||||
// CHECK:STDOUT: %I.type.loc17_16.1: type = facet_type <@I, @I(constants.%W)> [symbolic = %I.type.loc17_16.2 (constants.%I.type.325e65.3)]
|
||||
// CHECK:STDOUT: %.loc17_17: @TestGeneric.%I.assoc_type (%I.assoc_type.955255.3) = specific_constant @I.%assoc0.loc7_26.1, @I(constants.%W) [symbolic = %assoc0 (constants.%assoc0.fef501.3)]
|
||||
@@ -361,20 +361,20 @@ fn TestSpecific(a: A({})) -> {} {
|
||||
// CHECK:STDOUT: fn @TestSpecific(%a.param_patt: %A.235) -> %empty_struct_type {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %a.ref: %A.235 = name_ref a, %a
|
||||
// CHECK:STDOUT: %I.ref: %I.type.dac = name_ref I, file.%I.decl [template = constants.%I.generic]
|
||||
// CHECK:STDOUT: %I.ref: %I.type.dac = name_ref I, file.%I.decl [concrete = constants.%I.generic]
|
||||
// CHECK:STDOUT: %.loc21_16: %empty_struct_type = struct_literal ()
|
||||
// CHECK:STDOUT: %.loc21_17: type = converted %.loc21_16, constants.%empty_struct_type [template = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(constants.%empty_struct_type)> [template = constants.%I.type.885]
|
||||
// CHECK:STDOUT: %.loc21_18: %I.assoc_type.67f = specific_constant @I.%assoc0.loc7_26.1, @I(constants.%empty_struct_type) [template = constants.%assoc0.639]
|
||||
// CHECK:STDOUT: %F.ref: %I.assoc_type.67f = name_ref F, %.loc21_18 [template = constants.%assoc0.639]
|
||||
// CHECK:STDOUT: %impl.elem0: %.f01 = impl_witness_access constants.%impl_witness.f35, element0 [template = constants.%F.158]
|
||||
// CHECK:STDOUT: %.loc21_17: type = converted %.loc21_16, constants.%empty_struct_type [concrete = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(constants.%empty_struct_type)> [concrete = constants.%I.type.885]
|
||||
// CHECK:STDOUT: %.loc21_18: %I.assoc_type.67f = specific_constant @I.%assoc0.loc7_26.1, @I(constants.%empty_struct_type) [concrete = constants.%assoc0.639]
|
||||
// CHECK:STDOUT: %F.ref: %I.assoc_type.67f = name_ref F, %.loc21_18 [concrete = constants.%assoc0.639]
|
||||
// CHECK:STDOUT: %impl.elem0: %.f01 = impl_witness_access constants.%impl_witness.f35, element0 [concrete = constants.%F.158]
|
||||
// CHECK:STDOUT: %bound_method: <bound method> = bound_method %a.ref, %impl.elem0
|
||||
// CHECK:STDOUT: %specific_fn: <specific function> = specific_function %bound_method, @F.2(constants.%empty_struct_type)
|
||||
// CHECK:STDOUT: %F.call: init %empty_struct_type = call %specific_fn(%a.ref)
|
||||
// CHECK:STDOUT: %.loc21_22.1: ref %empty_struct_type = temporary_storage
|
||||
// CHECK:STDOUT: %.loc21_22.2: ref %empty_struct_type = temporary %.loc21_22.1, %F.call
|
||||
// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [template = constants.%empty_struct]
|
||||
// CHECK:STDOUT: %.loc21_23: %empty_struct_type = converted %F.call, %empty_struct [template = constants.%empty_struct]
|
||||
// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete = constants.%empty_struct]
|
||||
// CHECK:STDOUT: %.loc21_23: %empty_struct_type = converted %F.call, %empty_struct [concrete = constants.%empty_struct]
|
||||
// CHECK:STDOUT: return %.loc21_23
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+471
-471
File diff suppressed because it is too large
Load Diff
+156
-156
@@ -56,43 +56,43 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); }
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %I.type.dac: type = generic_interface_type @I [template]
|
||||
// CHECK:STDOUT: %I.generic: %I.type.dac = struct_value () [template]
|
||||
// CHECK:STDOUT: %I.type.dac: type = generic_interface_type @I [concrete]
|
||||
// CHECK:STDOUT: %I.generic: %I.type.dac = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %I.type.325: type = facet_type <@I, @I(%T)> [symbolic]
|
||||
// CHECK:STDOUT: %Self: %I.type.325 = bind_symbolic_name Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F, @I(%T) [symbolic]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type %I.type.325 [symbolic]
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%F.decl [symbolic]
|
||||
// CHECK:STDOUT: %C.type: type = generic_class_type @C [template]
|
||||
// CHECK:STDOUT: %C.generic: %C.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %C.type: type = generic_class_type @C [concrete]
|
||||
// CHECK:STDOUT: %C.generic: %C.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %C: type = class_type @C, @C(%T) [symbolic]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %X: type = class_type @X [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %X: type = class_type @X [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .I = %I.decl
|
||||
// CHECK:STDOUT: .C = %C.decl
|
||||
// CHECK:STDOUT: .X = %X.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %I.decl: %I.type.dac = interface_decl @I [template = constants.%I.generic] {
|
||||
// CHECK:STDOUT: %I.decl: %I.type.dac = interface_decl @I [concrete = constants.%I.generic] {
|
||||
// CHECK:STDOUT: %T.patt.loc4_13.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_13.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc4_13.1, runtime_param<none> [symbolic = %T.patt.loc4_13.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.param: type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %T.loc4_13.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_13.2 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %C.decl: %C.type = class_decl @C [template = constants.%C.generic] {
|
||||
// CHECK:STDOUT: %C.decl: %C.type = class_decl @C [concrete = constants.%C.generic] {
|
||||
// CHECK:STDOUT: %T.patt.loc5_9.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc5_9.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc5_9.1, runtime_param<none> [symbolic = %T.patt.loc5_9.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.param: type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %T.loc5_9.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc5_9.2 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %X.decl: type = class_decl @X [template = constants.%X] {} {}
|
||||
// CHECK:STDOUT: %X.decl: type = class_decl @X [concrete = constants.%X] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic interface @I(%T.loc4_13.1: type) {
|
||||
@@ -126,7 +126,7 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); }
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class {
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -135,7 +135,7 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @X {
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -163,12 +163,12 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); }
|
||||
// CHECK:STDOUT: --- impl_in_interface_args.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %InInterfaceArgs: type = class_type @InInterfaceArgs [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %X: type = class_type @X [template]
|
||||
// CHECK:STDOUT: %I.type.dac: type = generic_interface_type @I [template]
|
||||
// CHECK:STDOUT: %I.generic: %I.type.dac = struct_value () [template]
|
||||
// CHECK:STDOUT: %InInterfaceArgs: type = class_type @InInterfaceArgs [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %X: type = class_type @X [concrete]
|
||||
// CHECK:STDOUT: %I.type.dac: type = generic_interface_type @I [concrete]
|
||||
// CHECK:STDOUT: %I.generic: %I.type.dac = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %I.type.325: type = facet_type <@I, @I(%T)> [symbolic]
|
||||
// CHECK:STDOUT: %Self: %I.type.325 = bind_symbolic_name Self, 1 [symbolic]
|
||||
@@ -177,22 +177,22 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); }
|
||||
// CHECK:STDOUT: %F.bb2: %F.type.2ae = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %I.assoc_type.955: type = assoc_entity_type %I.type.325 [symbolic]
|
||||
// CHECK:STDOUT: %assoc0.249: %I.assoc_type.955 = assoc_entity element0, imports.%Main.import_ref.479 [symbolic]
|
||||
// CHECK:STDOUT: %I.type.e45: type = facet_type <@I, @I(%InInterfaceArgs)> [template]
|
||||
// CHECK:STDOUT: %F.type.14f: type = fn_type @F.1, @I(%InInterfaceArgs) [template]
|
||||
// CHECK:STDOUT: %F.b81: %F.type.14f = struct_value () [template]
|
||||
// CHECK:STDOUT: %I.assoc_type.9f3: type = assoc_entity_type %I.type.e45 [template]
|
||||
// CHECK:STDOUT: %assoc0.055: %I.assoc_type.9f3 = assoc_entity element0, imports.%Main.import_ref.479 [template]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%F.decl) [template]
|
||||
// CHECK:STDOUT: %F.type.b63: type = fn_type @F.2 [template]
|
||||
// CHECK:STDOUT: %F.d5f: %F.type.b63 = struct_value () [template]
|
||||
// CHECK:STDOUT: %I.facet: %I.type.e45 = facet_value %X, %impl_witness [template]
|
||||
// CHECK:STDOUT: %I.type.e45: type = facet_type <@I, @I(%InInterfaceArgs)> [concrete]
|
||||
// CHECK:STDOUT: %F.type.14f: type = fn_type @F.1, @I(%InInterfaceArgs) [concrete]
|
||||
// CHECK:STDOUT: %F.b81: %F.type.14f = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %I.assoc_type.9f3: type = assoc_entity_type %I.type.e45 [concrete]
|
||||
// CHECK:STDOUT: %assoc0.055: %I.assoc_type.9f3 = assoc_entity element0, imports.%Main.import_ref.479 [concrete]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%F.decl) [concrete]
|
||||
// CHECK:STDOUT: %F.type.b63: type = fn_type @F.2 [concrete]
|
||||
// CHECK:STDOUT: %F.d5f: %F.type.b63 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %I.facet: %I.type.e45 = facet_value %X, %impl_witness [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Main.I: %I.type.dac = import_ref Main//types, I, loaded [template = constants.%I.generic]
|
||||
// CHECK:STDOUT: %Main.I: %I.type.dac = import_ref Main//types, I, loaded [concrete = constants.%I.generic]
|
||||
// CHECK:STDOUT: %Main.C = import_ref Main//types, C, unloaded
|
||||
// CHECK:STDOUT: %Main.X: type = import_ref Main//types, X, loaded [template = constants.%X]
|
||||
// CHECK:STDOUT: %Main.import_ref.8f2: <witness> = import_ref Main//types, loc7_10, loaded [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Main.X: type = import_ref Main//types, X, loaded [concrete = constants.%X]
|
||||
// CHECK:STDOUT: %Main.import_ref.8f2: <witness> = import_ref Main//types, loc7_10, loaded [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Main.import_ref.acf = import_ref Main//types, inst54 [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.f6b058.1: type = import_ref Main//types, loc4_13, loaded [symbolic = @I.%T (constants.%T)]
|
||||
// CHECK:STDOUT: %Main.import_ref.884 = import_ref Main//types, inst26 [no loc], unloaded
|
||||
@@ -204,21 +204,21 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .I = imports.%Main.I
|
||||
// CHECK:STDOUT: .C = imports.%Main.C
|
||||
// CHECK:STDOUT: .X = imports.%Main.X
|
||||
// CHECK:STDOUT: .InInterfaceArgs = %InInterfaceArgs.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %default.import = import <none>
|
||||
// CHECK:STDOUT: %InInterfaceArgs.decl: type = class_decl @InInterfaceArgs [template = constants.%InInterfaceArgs] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [template] {} {
|
||||
// CHECK:STDOUT: %X.ref: type = name_ref X, imports.%Main.X [template = constants.%X]
|
||||
// CHECK:STDOUT: %I.ref: %I.type.dac = name_ref I, imports.%Main.I [template = constants.%I.generic]
|
||||
// CHECK:STDOUT: %InInterfaceArgs.ref: type = name_ref InInterfaceArgs, file.%InInterfaceArgs.decl [template = constants.%InInterfaceArgs]
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(constants.%InInterfaceArgs)> [template = constants.%I.type.e45]
|
||||
// CHECK:STDOUT: %InInterfaceArgs.decl: type = class_decl @InInterfaceArgs [concrete = constants.%InInterfaceArgs] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [concrete] {} {
|
||||
// CHECK:STDOUT: %X.ref: type = name_ref X, imports.%Main.X [concrete = constants.%X]
|
||||
// CHECK:STDOUT: %I.ref: %I.type.dac = name_ref I, imports.%Main.I [concrete = constants.%I.generic]
|
||||
// CHECK:STDOUT: %InInterfaceArgs.ref: type = name_ref InInterfaceArgs, file.%InInterfaceArgs.decl [concrete = constants.%InInterfaceArgs]
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(constants.%InInterfaceArgs)> [concrete = constants.%I.type.e45]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%F.decl) [template = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%F.decl) [concrete = constants.%impl_witness]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic interface @I(imports.%Main.import_ref.f6b058.1: type) [from "types.carbon"] {
|
||||
@@ -242,7 +242,7 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl: %X.ref as %I.type {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.b63 = fn_decl @F.2 [template = constants.%F.d5f] {} {}
|
||||
// CHECK:STDOUT: %F.decl: %F.type.b63 = fn_decl @F.2 [concrete = constants.%F.d5f] {} {}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .F = %F.decl
|
||||
@@ -250,7 +250,7 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @InInterfaceArgs {
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -300,14 +300,14 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); }
|
||||
// CHECK:STDOUT: --- use_impl_in_interface_args.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %X: type = class_type @X [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %G.type: type = fn_type @G [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %G: %G.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %I.type.dac: type = generic_interface_type @I [template]
|
||||
// CHECK:STDOUT: %I.generic: %I.type.dac = struct_value () [template]
|
||||
// CHECK:STDOUT: %X: type = class_type @X [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %G.type: type = fn_type @G [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %G: %G.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %I.type.dac: type = generic_interface_type @I [concrete]
|
||||
// CHECK:STDOUT: %I.generic: %I.type.dac = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %I.type.325: type = facet_type <@I, @I(%T)> [symbolic]
|
||||
// CHECK:STDOUT: %Self: %I.type.325 = bind_symbolic_name Self, 1 [symbolic]
|
||||
@@ -316,26 +316,26 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); }
|
||||
// CHECK:STDOUT: %F.bb2: %F.type.2ae = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %I.assoc_type.955: type = assoc_entity_type %I.type.325 [symbolic]
|
||||
// CHECK:STDOUT: %assoc0.62c: %I.assoc_type.955 = assoc_entity element0, imports.%Main.import_ref.e54 [symbolic]
|
||||
// CHECK:STDOUT: %InInterfaceArgs: type = class_type @InInterfaceArgs [template]
|
||||
// CHECK:STDOUT: %I.type.e45: type = facet_type <@I, @I(%InInterfaceArgs)> [template]
|
||||
// CHECK:STDOUT: %F.type.14f: type = fn_type @F.1, @I(%InInterfaceArgs) [template]
|
||||
// CHECK:STDOUT: %F.b81: %F.type.14f = struct_value () [template]
|
||||
// CHECK:STDOUT: %I.assoc_type.9f3: type = assoc_entity_type %I.type.e45 [template]
|
||||
// CHECK:STDOUT: %assoc0.0fc: %I.assoc_type.9f3 = assoc_entity element0, imports.%Main.import_ref.e54 [template]
|
||||
// CHECK:STDOUT: %InInterfaceArgs: type = class_type @InInterfaceArgs [concrete]
|
||||
// CHECK:STDOUT: %I.type.e45: type = facet_type <@I, @I(%InInterfaceArgs)> [concrete]
|
||||
// CHECK:STDOUT: %F.type.14f: type = fn_type @F.1, @I(%InInterfaceArgs) [concrete]
|
||||
// CHECK:STDOUT: %F.b81: %F.type.14f = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %I.assoc_type.9f3: type = assoc_entity_type %I.type.e45 [concrete]
|
||||
// CHECK:STDOUT: %assoc0.0fc: %I.assoc_type.9f3 = assoc_entity element0, imports.%Main.import_ref.e54 [concrete]
|
||||
// CHECK:STDOUT: %assoc0.249: %I.assoc_type.955 = assoc_entity element0, imports.%Main.import_ref.479 [symbolic]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (imports.%Main.import_ref.7f5) [template]
|
||||
// CHECK:STDOUT: %I.facet: %I.type.e45 = facet_value %X, %impl_witness [template]
|
||||
// CHECK:STDOUT: %.e37: type = fn_type_with_self_type %F.type.14f, %I.facet [template]
|
||||
// CHECK:STDOUT: %F.type.b63: type = fn_type @F.2 [template]
|
||||
// CHECK:STDOUT: %F.d5f: %F.type.b63 = struct_value () [template]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (imports.%Main.import_ref.7f5) [concrete]
|
||||
// CHECK:STDOUT: %I.facet: %I.type.e45 = facet_value %X, %impl_witness [concrete]
|
||||
// CHECK:STDOUT: %.e37: type = fn_type_with_self_type %F.type.14f, %I.facet [concrete]
|
||||
// CHECK:STDOUT: %F.type.b63: type = fn_type @F.2 [concrete]
|
||||
// CHECK:STDOUT: %F.d5f: %F.type.b63 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Main.I: %I.type.dac = import_ref Main//types, I, loaded [template = constants.%I.generic]
|
||||
// CHECK:STDOUT: %Main.I: %I.type.dac = import_ref Main//types, I, loaded [concrete = constants.%I.generic]
|
||||
// CHECK:STDOUT: %Main.C = import_ref Main//types, C, unloaded
|
||||
// CHECK:STDOUT: %Main.X: type = import_ref Main//types, X, loaded [template = constants.%X]
|
||||
// CHECK:STDOUT: %Main.InInterfaceArgs: type = import_ref Main//impl_in_interface_args, InInterfaceArgs, loaded [template = constants.%InInterfaceArgs]
|
||||
// CHECK:STDOUT: %Main.import_ref.8f24d3.1: <witness> = import_ref Main//types, loc7_10, loaded [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Main.X: type = import_ref Main//types, X, loaded [concrete = constants.%X]
|
||||
// CHECK:STDOUT: %Main.InInterfaceArgs: type = import_ref Main//impl_in_interface_args, InInterfaceArgs, loaded [concrete = constants.%InInterfaceArgs]
|
||||
// CHECK:STDOUT: %Main.import_ref.8f24d3.1: <witness> = import_ref Main//types, loc7_10, loaded [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Main.import_ref.acf = import_ref Main//types, inst54 [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.f6b058.1: type = import_ref Main//types, loc4_13, loaded [symbolic = @I.%T (constants.%T)]
|
||||
// CHECK:STDOUT: %Main.import_ref.884 = import_ref Main//types, inst26 [no loc], unloaded
|
||||
@@ -344,15 +344,15 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); }
|
||||
// CHECK:STDOUT: %Main.import_ref.f6b058.2: type = import_ref Main//types, loc4_13, loaded [symbolic = @I.%T (constants.%T)]
|
||||
// CHECK:STDOUT: %Main.import_ref.38e: @I.%I.type (%I.type.325) = import_ref Main//types, inst26 [no loc], loaded [symbolic = @I.%Self (constants.%Self)]
|
||||
// CHECK:STDOUT: %Main.import_ref.e54: @I.%F.type (%F.type.2ae) = import_ref Main//types, loc4_31, loaded [symbolic = @I.%F (constants.%F.bb2)]
|
||||
// CHECK:STDOUT: %Main.import_ref.8f24d3.2: <witness> = import_ref Main//impl_in_interface_args, loc5_24, loaded [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Main.import_ref.8f24d3.2: <witness> = import_ref Main//impl_in_interface_args, loc5_24, loaded [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Main.import_ref.bf8 = import_ref Main//impl_in_interface_args, inst18 [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.f9f: <witness> = import_ref Main//impl_in_interface_args, loc7_30, loaded [template = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %Main.import_ref.956: type = import_ref Main//impl_in_interface_args, loc7_6, loaded [template = constants.%X]
|
||||
// CHECK:STDOUT: %Main.import_ref.e8c: type = import_ref Main//impl_in_interface_args, loc7_28, loaded [template = constants.%I.type.e45]
|
||||
// CHECK:STDOUT: %Main.import_ref.f9f: <witness> = import_ref Main//impl_in_interface_args, loc7_30, loaded [concrete = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %Main.import_ref.956: type = import_ref Main//impl_in_interface_args, loc7_6, loaded [concrete = constants.%X]
|
||||
// CHECK:STDOUT: %Main.import_ref.e8c: type = import_ref Main//impl_in_interface_args, loc7_28, loaded [concrete = constants.%I.type.e45]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .I = imports.%Main.I
|
||||
// CHECK:STDOUT: .C = imports.%Main.C
|
||||
// CHECK:STDOUT: .X = imports.%Main.X
|
||||
@@ -360,12 +360,12 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); }
|
||||
// CHECK:STDOUT: .G = %G.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %default.import = import <none>
|
||||
// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {
|
||||
// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] {
|
||||
// CHECK:STDOUT: %x.patt: %X = binding_pattern x
|
||||
// CHECK:STDOUT: %x.param_patt: %X = value_param_pattern %x.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %x.param: %X = value_param runtime_param0
|
||||
// CHECK:STDOUT: %X.ref: type = name_ref X, imports.%Main.X [template = constants.%X]
|
||||
// CHECK:STDOUT: %X.ref: type = name_ref X, imports.%Main.X [concrete = constants.%X]
|
||||
// CHECK:STDOUT: %x: %X = bind_name x, %x.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -412,12 +412,12 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); }
|
||||
// CHECK:STDOUT: fn @G(%x.param_patt: %X) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %x.ref: %X = name_ref x, %x
|
||||
// CHECK:STDOUT: %I.ref: %I.type.dac = name_ref I, imports.%Main.I [template = constants.%I.generic]
|
||||
// CHECK:STDOUT: %InInterfaceArgs.ref: type = name_ref InInterfaceArgs, imports.%Main.InInterfaceArgs [template = constants.%InInterfaceArgs]
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(constants.%InInterfaceArgs)> [template = constants.%I.type.e45]
|
||||
// CHECK:STDOUT: %.loc6: %I.assoc_type.9f3 = specific_constant imports.%Main.import_ref.cd3, @I(constants.%InInterfaceArgs) [template = constants.%assoc0.0fc]
|
||||
// CHECK:STDOUT: %F.ref: %I.assoc_type.9f3 = name_ref F, %.loc6 [template = constants.%assoc0.0fc]
|
||||
// CHECK:STDOUT: %impl.elem0: %.e37 = impl_witness_access constants.%impl_witness, element0 [template = constants.%F.d5f]
|
||||
// CHECK:STDOUT: %I.ref: %I.type.dac = name_ref I, imports.%Main.I [concrete = constants.%I.generic]
|
||||
// CHECK:STDOUT: %InInterfaceArgs.ref: type = name_ref InInterfaceArgs, imports.%Main.InInterfaceArgs [concrete = constants.%InInterfaceArgs]
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(constants.%InInterfaceArgs)> [concrete = constants.%I.type.e45]
|
||||
// CHECK:STDOUT: %.loc6: %I.assoc_type.9f3 = specific_constant imports.%Main.import_ref.cd3, @I(constants.%InInterfaceArgs) [concrete = constants.%assoc0.0fc]
|
||||
// CHECK:STDOUT: %F.ref: %I.assoc_type.9f3 = name_ref F, %.loc6 [concrete = constants.%assoc0.0fc]
|
||||
// CHECK:STDOUT: %impl.elem0: %.e37 = impl_witness_access constants.%impl_witness, element0 [concrete = constants.%F.d5f]
|
||||
// CHECK:STDOUT: %F.call: init %empty_tuple.type = call %impl.elem0()
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
@@ -453,40 +453,40 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); }
|
||||
// CHECK:STDOUT: --- impl_in_class_args.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %InClassArgs: type = class_type @InClassArgs [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %C.type: type = generic_class_type @C [template]
|
||||
// CHECK:STDOUT: %C.generic: %C.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %InClassArgs: type = class_type @InClassArgs [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %C.type: type = generic_class_type @C [concrete]
|
||||
// CHECK:STDOUT: %C.generic: %C.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %C.23b: type = class_type @C, @C(%InClassArgs) [template]
|
||||
// CHECK:STDOUT: %I.type.dac: type = generic_interface_type @I [template]
|
||||
// CHECK:STDOUT: %I.generic: %I.type.dac = struct_value () [template]
|
||||
// CHECK:STDOUT: %C.23b: type = class_type @C, @C(%InClassArgs) [concrete]
|
||||
// CHECK:STDOUT: %I.type.dac: type = generic_interface_type @I [concrete]
|
||||
// CHECK:STDOUT: %I.generic: %I.type.dac = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %I.type.325: type = facet_type <@I, @I(%T)> [symbolic]
|
||||
// CHECK:STDOUT: %Self: %I.type.325 = bind_symbolic_name Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: %F.type.2ae: type = fn_type @F.1, @I(%T) [symbolic]
|
||||
// CHECK:STDOUT: %F.bb2: %F.type.2ae = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %I.assoc_type.955: type = assoc_entity_type %I.type.325 [symbolic]
|
||||
// CHECK:STDOUT: %assoc0.249: %I.assoc_type.955 = assoc_entity element0, imports.%Main.import_ref.479 [symbolic]
|
||||
// CHECK:STDOUT: %X: type = class_type @X [template]
|
||||
// CHECK:STDOUT: %I.type.45c: type = facet_type <@I, @I(%X)> [template]
|
||||
// CHECK:STDOUT: %F.type.56a: type = fn_type @F.1, @I(%X) [template]
|
||||
// CHECK:STDOUT: %F.a79: %F.type.56a = struct_value () [template]
|
||||
// CHECK:STDOUT: %I.assoc_type.a7e: type = assoc_entity_type %I.type.45c [template]
|
||||
// CHECK:STDOUT: %assoc0.7c6: %I.assoc_type.a7e = assoc_entity element0, imports.%Main.import_ref.479 [template]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%F.decl) [template]
|
||||
// CHECK:STDOUT: %F.type.fab: type = fn_type @F.2 [template]
|
||||
// CHECK:STDOUT: %F.7ab: %F.type.fab = struct_value () [template]
|
||||
// CHECK:STDOUT: %I.facet: %I.type.45c = facet_value %C.23b, %impl_witness [template]
|
||||
// CHECK:STDOUT: %X: type = class_type @X [concrete]
|
||||
// CHECK:STDOUT: %I.type.45c: type = facet_type <@I, @I(%X)> [concrete]
|
||||
// CHECK:STDOUT: %F.type.56a: type = fn_type @F.1, @I(%X) [concrete]
|
||||
// CHECK:STDOUT: %F.a79: %F.type.56a = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %I.assoc_type.a7e: type = assoc_entity_type %I.type.45c [concrete]
|
||||
// CHECK:STDOUT: %assoc0.7c6: %I.assoc_type.a7e = assoc_entity element0, imports.%Main.import_ref.479 [concrete]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%F.decl) [concrete]
|
||||
// CHECK:STDOUT: %F.type.fab: type = fn_type @F.2 [concrete]
|
||||
// CHECK:STDOUT: %F.7ab: %F.type.fab = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %I.facet: %I.type.45c = facet_value %C.23b, %impl_witness [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Main.I: %I.type.dac = import_ref Main//types, I, loaded [template = constants.%I.generic]
|
||||
// CHECK:STDOUT: %Main.C: %C.type = import_ref Main//types, C, loaded [template = constants.%C.generic]
|
||||
// CHECK:STDOUT: %Main.X: type = import_ref Main//types, X, loaded [template = constants.%X]
|
||||
// CHECK:STDOUT: %Main.I: %I.type.dac = import_ref Main//types, I, loaded [concrete = constants.%I.generic]
|
||||
// CHECK:STDOUT: %Main.C: %C.type = import_ref Main//types, C, loaded [concrete = constants.%C.generic]
|
||||
// CHECK:STDOUT: %Main.X: type = import_ref Main//types, X, loaded [concrete = constants.%X]
|
||||
// CHECK:STDOUT: %Main.import_ref.f6b058.1: type = import_ref Main//types, loc5_9, loaded [symbolic = @C.%T (constants.%T)]
|
||||
// CHECK:STDOUT: %Main.import_ref.8f24d3.1: <witness> = import_ref Main//types, loc5_20, loaded [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Main.import_ref.8f24d3.1: <witness> = import_ref Main//types, loc5_20, loaded [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Main.import_ref.4c0 = import_ref Main//types, inst49 [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.f6b058.2: type = import_ref Main//types, loc4_13, loaded [symbolic = @I.%T (constants.%T)]
|
||||
// CHECK:STDOUT: %Main.import_ref.884 = import_ref Main//types, inst26 [no loc], unloaded
|
||||
@@ -495,28 +495,28 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); }
|
||||
// CHECK:STDOUT: %Main.import_ref.f6b058.3: type = import_ref Main//types, loc4_13, loaded [symbolic = @I.%T (constants.%T)]
|
||||
// CHECK:STDOUT: %Main.import_ref.38e: @I.%I.type (%I.type.325) = import_ref Main//types, inst26 [no loc], loaded [symbolic = @I.%Self (constants.%Self)]
|
||||
// CHECK:STDOUT: %Main.import_ref.479 = import_ref Main//types, loc4_31, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.8f24d3.2: <witness> = import_ref Main//types, loc7_10, loaded [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Main.import_ref.8f24d3.2: <witness> = import_ref Main//types, loc7_10, loaded [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Main.import_ref.acf = import_ref Main//types, inst54 [no loc], unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .I = imports.%Main.I
|
||||
// CHECK:STDOUT: .C = imports.%Main.C
|
||||
// CHECK:STDOUT: .X = imports.%Main.X
|
||||
// CHECK:STDOUT: .InClassArgs = %InClassArgs.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %default.import = import <none>
|
||||
// CHECK:STDOUT: %InClassArgs.decl: type = class_decl @InClassArgs [template = constants.%InClassArgs] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [template] {} {
|
||||
// CHECK:STDOUT: %C.ref: %C.type = name_ref C, imports.%Main.C [template = constants.%C.generic]
|
||||
// CHECK:STDOUT: %InClassArgs.ref: type = name_ref InClassArgs, file.%InClassArgs.decl [template = constants.%InClassArgs]
|
||||
// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%InClassArgs) [template = constants.%C.23b]
|
||||
// CHECK:STDOUT: %I.ref: %I.type.dac = name_ref I, imports.%Main.I [template = constants.%I.generic]
|
||||
// CHECK:STDOUT: %X.ref: type = name_ref X, imports.%Main.X [template = constants.%X]
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(constants.%X)> [template = constants.%I.type.45c]
|
||||
// CHECK:STDOUT: %InClassArgs.decl: type = class_decl @InClassArgs [concrete = constants.%InClassArgs] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [concrete] {} {
|
||||
// CHECK:STDOUT: %C.ref: %C.type = name_ref C, imports.%Main.C [concrete = constants.%C.generic]
|
||||
// CHECK:STDOUT: %InClassArgs.ref: type = name_ref InClassArgs, file.%InClassArgs.decl [concrete = constants.%InClassArgs]
|
||||
// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%InClassArgs) [concrete = constants.%C.23b]
|
||||
// CHECK:STDOUT: %I.ref: %I.type.dac = name_ref I, imports.%Main.I [concrete = constants.%I.generic]
|
||||
// CHECK:STDOUT: %X.ref: type = name_ref X, imports.%Main.X [concrete = constants.%X]
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(constants.%X)> [concrete = constants.%I.type.45c]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%F.decl) [template = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%F.decl) [concrete = constants.%impl_witness]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic interface @I(imports.%Main.import_ref.f6b058.2: type) [from "types.carbon"] {
|
||||
@@ -540,7 +540,7 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl: %C as %I.type {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.fab = fn_decl @F.2 [template = constants.%F.7ab] {} {}
|
||||
// CHECK:STDOUT: %F.decl: %F.type.fab = fn_decl @F.2 [concrete = constants.%F.7ab] {} {}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .F = %F.decl
|
||||
@@ -548,7 +548,7 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @InClassArgs {
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -622,48 +622,48 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); }
|
||||
// CHECK:STDOUT: --- use_impl_in_class_args.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %C.type: type = generic_class_type @C [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %C.generic: %C.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %C.type: type = generic_class_type @C [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %C.generic: %C.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %InClassArgs: type = class_type @InClassArgs [template]
|
||||
// CHECK:STDOUT: %C.23b: type = class_type @C, @C(%InClassArgs) [template]
|
||||
// CHECK:STDOUT: %H.type: type = fn_type @H [template]
|
||||
// CHECK:STDOUT: %H: %H.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %I.type.dac: type = generic_interface_type @I [template]
|
||||
// CHECK:STDOUT: %I.generic: %I.type.dac = struct_value () [template]
|
||||
// CHECK:STDOUT: %InClassArgs: type = class_type @InClassArgs [concrete]
|
||||
// CHECK:STDOUT: %C.23b: type = class_type @C, @C(%InClassArgs) [concrete]
|
||||
// CHECK:STDOUT: %H.type: type = fn_type @H [concrete]
|
||||
// CHECK:STDOUT: %H: %H.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %I.type.dac: type = generic_interface_type @I [concrete]
|
||||
// CHECK:STDOUT: %I.generic: %I.type.dac = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %I.type.325: type = facet_type <@I, @I(%T)> [symbolic]
|
||||
// CHECK:STDOUT: %Self: %I.type.325 = bind_symbolic_name Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: %F.type.2ae: type = fn_type @F.1, @I(%T) [symbolic]
|
||||
// CHECK:STDOUT: %F.bb2: %F.type.2ae = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %I.assoc_type.955: type = assoc_entity_type %I.type.325 [symbolic]
|
||||
// CHECK:STDOUT: %assoc0.62c: %I.assoc_type.955 = assoc_entity element0, imports.%Main.import_ref.e54 [symbolic]
|
||||
// CHECK:STDOUT: %X: type = class_type @X [template]
|
||||
// CHECK:STDOUT: %I.type.45c: type = facet_type <@I, @I(%X)> [template]
|
||||
// CHECK:STDOUT: %F.type.56a: type = fn_type @F.1, @I(%X) [template]
|
||||
// CHECK:STDOUT: %F.a79: %F.type.56a = struct_value () [template]
|
||||
// CHECK:STDOUT: %I.assoc_type.a7e: type = assoc_entity_type %I.type.45c [template]
|
||||
// CHECK:STDOUT: %assoc0.ba0: %I.assoc_type.a7e = assoc_entity element0, imports.%Main.import_ref.e54 [template]
|
||||
// CHECK:STDOUT: %X: type = class_type @X [concrete]
|
||||
// CHECK:STDOUT: %I.type.45c: type = facet_type <@I, @I(%X)> [concrete]
|
||||
// CHECK:STDOUT: %F.type.56a: type = fn_type @F.1, @I(%X) [concrete]
|
||||
// CHECK:STDOUT: %F.a79: %F.type.56a = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %I.assoc_type.a7e: type = assoc_entity_type %I.type.45c [concrete]
|
||||
// CHECK:STDOUT: %assoc0.ba0: %I.assoc_type.a7e = assoc_entity element0, imports.%Main.import_ref.e54 [concrete]
|
||||
// CHECK:STDOUT: %assoc0.249: %I.assoc_type.955 = assoc_entity element0, imports.%Main.import_ref.479 [symbolic]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (imports.%Main.import_ref.ae4) [template]
|
||||
// CHECK:STDOUT: %I.facet: %I.type.45c = facet_value %C.23b, %impl_witness [template]
|
||||
// CHECK:STDOUT: %.c87: type = fn_type_with_self_type %F.type.56a, %I.facet [template]
|
||||
// CHECK:STDOUT: %F.type.fab: type = fn_type @F.2 [template]
|
||||
// CHECK:STDOUT: %F.7ab: %F.type.fab = struct_value () [template]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (imports.%Main.import_ref.ae4) [concrete]
|
||||
// CHECK:STDOUT: %I.facet: %I.type.45c = facet_value %C.23b, %impl_witness [concrete]
|
||||
// CHECK:STDOUT: %.c87: type = fn_type_with_self_type %F.type.56a, %I.facet [concrete]
|
||||
// CHECK:STDOUT: %F.type.fab: type = fn_type @F.2 [concrete]
|
||||
// CHECK:STDOUT: %F.7ab: %F.type.fab = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Main.I: %I.type.dac = import_ref Main//types, I, loaded [template = constants.%I.generic]
|
||||
// CHECK:STDOUT: %Main.C: %C.type = import_ref Main//types, C, loaded [template = constants.%C.generic]
|
||||
// CHECK:STDOUT: %Main.X: type = import_ref Main//types, X, loaded [template = constants.%X]
|
||||
// CHECK:STDOUT: %Main.InClassArgs: type = import_ref Main//impl_in_class_args, InClassArgs, loaded [template = constants.%InClassArgs]
|
||||
// CHECK:STDOUT: %Main.I: %I.type.dac = import_ref Main//types, I, loaded [concrete = constants.%I.generic]
|
||||
// CHECK:STDOUT: %Main.C: %C.type = import_ref Main//types, C, loaded [concrete = constants.%C.generic]
|
||||
// CHECK:STDOUT: %Main.X: type = import_ref Main//types, X, loaded [concrete = constants.%X]
|
||||
// CHECK:STDOUT: %Main.InClassArgs: type = import_ref Main//impl_in_class_args, InClassArgs, loaded [concrete = constants.%InClassArgs]
|
||||
// CHECK:STDOUT: %Main.import_ref.f6b058.1: type = import_ref Main//types, loc5_9, loaded [symbolic = @C.%T (constants.%T)]
|
||||
// CHECK:STDOUT: %Main.import_ref.8f24d3.1: <witness> = import_ref Main//types, loc5_20, loaded [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Main.import_ref.8f24d3.1: <witness> = import_ref Main//types, loc5_20, loaded [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Main.import_ref.4c0 = import_ref Main//types, inst49 [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.8f24d3.2: <witness> = import_ref Main//impl_in_class_args, loc5_20, loaded [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Main.import_ref.8f24d3.2: <witness> = import_ref Main//impl_in_class_args, loc5_20, loaded [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Main.import_ref.683 = import_ref Main//impl_in_class_args, inst18 [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.f6b058.2: type = import_ref Main//types, loc4_13, loaded [symbolic = @I.%T (constants.%T)]
|
||||
// CHECK:STDOUT: %Main.import_ref.884 = import_ref Main//types, inst26 [no loc], unloaded
|
||||
@@ -672,15 +672,15 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); }
|
||||
// CHECK:STDOUT: %Main.import_ref.f6b058.3: type = import_ref Main//types, loc4_13, loaded [symbolic = @I.%T (constants.%T)]
|
||||
// CHECK:STDOUT: %Main.import_ref.38e: @I.%I.type (%I.type.325) = import_ref Main//types, inst26 [no loc], loaded [symbolic = @I.%Self (constants.%Self)]
|
||||
// CHECK:STDOUT: %Main.import_ref.e54: @I.%F.type (%F.type.2ae) = import_ref Main//types, loc4_31, loaded [symbolic = @I.%F (constants.%F.bb2)]
|
||||
// CHECK:STDOUT: %Main.import_ref.8f24d3.3: <witness> = import_ref Main//types, loc7_10, loaded [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Main.import_ref.8f24d3.3: <witness> = import_ref Main//types, loc7_10, loaded [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Main.import_ref.acf = import_ref Main//types, inst54 [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.6de: <witness> = import_ref Main//impl_in_class_args, loc7_29, loaded [template = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %Main.import_ref.d6e: type = import_ref Main//impl_in_class_args, loc7_19, loaded [template = constants.%C.23b]
|
||||
// CHECK:STDOUT: %Main.import_ref.208: type = import_ref Main//impl_in_class_args, loc7_27, loaded [template = constants.%I.type.45c]
|
||||
// CHECK:STDOUT: %Main.import_ref.6de: <witness> = import_ref Main//impl_in_class_args, loc7_29, loaded [concrete = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %Main.import_ref.d6e: type = import_ref Main//impl_in_class_args, loc7_19, loaded [concrete = constants.%C.23b]
|
||||
// CHECK:STDOUT: %Main.import_ref.208: type = import_ref Main//impl_in_class_args, loc7_27, loaded [concrete = constants.%I.type.45c]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .I = imports.%Main.I
|
||||
// CHECK:STDOUT: .C = imports.%Main.C
|
||||
// CHECK:STDOUT: .X = imports.%Main.X
|
||||
@@ -688,15 +688,15 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); }
|
||||
// CHECK:STDOUT: .H = %H.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %default.import = import <none>
|
||||
// CHECK:STDOUT: %H.decl: %H.type = fn_decl @H [template = constants.%H] {
|
||||
// CHECK:STDOUT: %H.decl: %H.type = fn_decl @H [concrete = constants.%H] {
|
||||
// CHECK:STDOUT: %c.patt: %C.23b = binding_pattern c
|
||||
// CHECK:STDOUT: %c.param_patt: %C.23b = value_param_pattern %c.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %c.param: %C.23b = value_param runtime_param0
|
||||
// CHECK:STDOUT: %.loc6_22: type = splice_block %C [template = constants.%C.23b] {
|
||||
// CHECK:STDOUT: %C.ref: %C.type = name_ref C, imports.%Main.C [template = constants.%C.generic]
|
||||
// CHECK:STDOUT: %InClassArgs.ref: type = name_ref InClassArgs, imports.%Main.InClassArgs [template = constants.%InClassArgs]
|
||||
// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%InClassArgs) [template = constants.%C.23b]
|
||||
// CHECK:STDOUT: %.loc6_22: type = splice_block %C [concrete = constants.%C.23b] {
|
||||
// CHECK:STDOUT: %C.ref: %C.type = name_ref C, imports.%Main.C [concrete = constants.%C.generic]
|
||||
// CHECK:STDOUT: %InClassArgs.ref: type = name_ref InClassArgs, imports.%Main.InClassArgs [concrete = constants.%InClassArgs]
|
||||
// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%InClassArgs) [concrete = constants.%C.23b]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %c: %C.23b = bind_name c, %c.param
|
||||
// CHECK:STDOUT: }
|
||||
@@ -758,12 +758,12 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); }
|
||||
// CHECK:STDOUT: fn @H(%c.param_patt: %C.23b) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %c.ref: %C.23b = name_ref c, %c
|
||||
// CHECK:STDOUT: %I.ref: %I.type.dac = name_ref I, imports.%Main.I [template = constants.%I.generic]
|
||||
// CHECK:STDOUT: %X.ref: type = name_ref X, imports.%Main.X [template = constants.%X]
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(constants.%X)> [template = constants.%I.type.45c]
|
||||
// CHECK:STDOUT: %.loc6_34: %I.assoc_type.a7e = specific_constant imports.%Main.import_ref.cd3, @I(constants.%X) [template = constants.%assoc0.ba0]
|
||||
// CHECK:STDOUT: %F.ref: %I.assoc_type.a7e = name_ref F, %.loc6_34 [template = constants.%assoc0.ba0]
|
||||
// CHECK:STDOUT: %impl.elem0: %.c87 = impl_witness_access constants.%impl_witness, element0 [template = constants.%F.7ab]
|
||||
// CHECK:STDOUT: %I.ref: %I.type.dac = name_ref I, imports.%Main.I [concrete = constants.%I.generic]
|
||||
// CHECK:STDOUT: %X.ref: type = name_ref X, imports.%Main.X [concrete = constants.%X]
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I, @I(constants.%X)> [concrete = constants.%I.type.45c]
|
||||
// CHECK:STDOUT: %.loc6_34: %I.assoc_type.a7e = specific_constant imports.%Main.import_ref.cd3, @I(constants.%X) [concrete = constants.%assoc0.ba0]
|
||||
// CHECK:STDOUT: %F.ref: %I.assoc_type.a7e = name_ref F, %.loc6_34 [concrete = constants.%assoc0.ba0]
|
||||
// CHECK:STDOUT: %impl.elem0: %.c87 = impl_witness_access constants.%impl_witness, element0 [concrete = constants.%F.7ab]
|
||||
// CHECK:STDOUT: %F.call: init %empty_tuple.type = call %impl.elem0()
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
+73
-73
@@ -46,34 +46,34 @@ fn Call() {
|
||||
// CHECK:STDOUT: --- i.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [template]
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete]
|
||||
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type %I.type [template]
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%F.decl [template]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type %I.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%F.decl [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Core = imports.%Core
|
||||
// CHECK:STDOUT: .I = %I.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [template = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @I {
|
||||
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self]
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -90,45 +90,45 @@ fn Call() {
|
||||
// CHECK:STDOUT: --- c.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %C: type = class_type @C [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [template]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete]
|
||||
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %F.type.cf0: type = fn_type @F.1 [template]
|
||||
// CHECK:STDOUT: %F.bc6: %F.type.cf0 = struct_value () [template]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%F.decl) [template]
|
||||
// CHECK:STDOUT: %F.type.5d6: type = fn_type @F.2 [template]
|
||||
// CHECK:STDOUT: %F.a2e: %F.type.5d6 = struct_value () [template]
|
||||
// CHECK:STDOUT: %I.facet: %I.type = facet_value %C, %impl_witness [template]
|
||||
// CHECK:STDOUT: %F.type.cf0: type = fn_type @F.1 [concrete]
|
||||
// CHECK:STDOUT: %F.bc6: %F.type.cf0 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%F.decl) [concrete]
|
||||
// CHECK:STDOUT: %F.type.5d6: type = fn_type @F.2 [concrete]
|
||||
// CHECK:STDOUT: %F.a2e: %F.type.5d6 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %I.facet: %I.type = facet_value %C, %impl_witness [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Main.I: type = import_ref Main//i, I, loaded [template = constants.%I.type]
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: %Main.I: type = import_ref Main//i, I, loaded [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Main.import_ref.e5d = import_ref Main//i, inst17 [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.1e0 = import_ref Main//i, loc4_21, unloaded
|
||||
// CHECK:STDOUT: %Main.F: %F.type.cf0 = import_ref Main//i, F, loaded [template = constants.%F.bc6]
|
||||
// CHECK:STDOUT: %Main.F: %F.type.cf0 = import_ref Main//i, F, loaded [concrete = constants.%F.bc6]
|
||||
// CHECK:STDOUT: %Main.import_ref.5dd: %I.type = import_ref Main//i, inst17 [no loc], loaded [symbolic = constants.%Self]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .I = imports.%Main.I
|
||||
// CHECK:STDOUT: .Core = imports.%Core
|
||||
// CHECK:STDOUT: .C = %C.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %default.import = import <none>
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [template] {} {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, imports.%Main.I [template = constants.%I.type]
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [concrete] {} {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, imports.%Main.I [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%F.decl) [template = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%F.decl) [concrete = constants.%impl_witness]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @I [from "i.carbon"] {
|
||||
@@ -139,7 +139,7 @@ fn Call() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl: %C.ref as %I.ref {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.5d6 = fn_decl @F.2 [template = constants.%F.a2e] {} {}
|
||||
// CHECK:STDOUT: %F.decl: %F.type.5d6 = fn_decl @F.2 [concrete = constants.%F.a2e] {} {}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .F = %F.decl
|
||||
@@ -147,7 +147,7 @@ fn Call() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @C {
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -170,36 +170,36 @@ fn Call() {
|
||||
// CHECK:STDOUT: --- get.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %C: type = class_type @C [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %Get.type: type = fn_type @Get [template]
|
||||
// CHECK:STDOUT: %Get: %Get.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %Get.type: type = fn_type @Get [concrete]
|
||||
// CHECK:STDOUT: %Get: %Get.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Main.C: type = import_ref Main//c, C, loaded [template = constants.%C]
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: %Main.C: type = import_ref Main//c, C, loaded [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Main.import_ref.8f2: <witness> = import_ref Main//c, loc6_10, loaded [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Main.import_ref.8f2: <witness> = import_ref Main//c, loc6_10, loaded [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//c, inst18 [no loc], unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .C = imports.%Main.C
|
||||
// CHECK:STDOUT: .Core = imports.%Core
|
||||
// CHECK:STDOUT: .Get = %Get.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %default.import = import <none>
|
||||
// CHECK:STDOUT: %Get.decl: %Get.type = fn_decl @Get [template = constants.%Get] {
|
||||
// CHECK:STDOUT: %Get.decl: %Get.type = fn_decl @Get [concrete = constants.%Get] {
|
||||
// CHECK:STDOUT: %return.patt: %C = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %C = out_param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.C [template = constants.%C]
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.C [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %return.param: ref %C = out_param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref %C = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
@@ -217,46 +217,46 @@ fn Call() {
|
||||
// CHECK:STDOUT: --- call.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %Call.type: type = fn_type @Call [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %Call: %Call.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %Get.type: type = fn_type @Get [template]
|
||||
// CHECK:STDOUT: %Get: %Get.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [template]
|
||||
// CHECK:STDOUT: %Call.type: type = fn_type @Call [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %Call: %Call.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Get.type: type = fn_type @Get [concrete]
|
||||
// CHECK:STDOUT: %Get: %Get.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete]
|
||||
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type %I.type [template]
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, imports.%Main.import_ref.e03 [template]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (imports.%Main.import_ref.742) [template]
|
||||
// CHECK:STDOUT: %F.type.cf0: type = fn_type @F.1 [template]
|
||||
// CHECK:STDOUT: %I.facet: %I.type = facet_value %C, %impl_witness [template]
|
||||
// CHECK:STDOUT: %.076: type = fn_type_with_self_type %F.type.cf0, %I.facet [template]
|
||||
// CHECK:STDOUT: %F.type.5d6: type = fn_type @F.2 [template]
|
||||
// CHECK:STDOUT: %F.a2e: %F.type.5d6 = struct_value () [template]
|
||||
// CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type %I.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, imports.%Main.import_ref.e03 [concrete]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (imports.%Main.import_ref.742) [concrete]
|
||||
// CHECK:STDOUT: %F.type.cf0: type = fn_type @F.1 [concrete]
|
||||
// CHECK:STDOUT: %I.facet: %I.type = facet_value %C, %impl_witness [concrete]
|
||||
// CHECK:STDOUT: %.076: type = fn_type_with_self_type %F.type.cf0, %I.facet [concrete]
|
||||
// CHECK:STDOUT: %F.type.5d6: type = fn_type @F.2 [concrete]
|
||||
// CHECK:STDOUT: %F.a2e: %F.type.5d6 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Main.Get: %Get.type = import_ref Main//get, Get, loaded [template = constants.%Get]
|
||||
// CHECK:STDOUT: %Main.I: type = import_ref Main//i, I, loaded [template = constants.%I.type]
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: %Main.Get: %Get.type = import_ref Main//get, Get, loaded [concrete = constants.%Get]
|
||||
// CHECK:STDOUT: %Main.I: type = import_ref Main//i, I, loaded [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Main.import_ref.8db: <witness> = import_ref Main//get, inst21 [indirect], loaded [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Main.import_ref.8db: <witness> = import_ref Main//get, inst21 [indirect], loaded [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Main.import_ref.6a9 = import_ref Main//get, inst22 [indirect], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.e5d = import_ref Main//i, inst17 [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.bcb: %I.assoc_type = import_ref Main//i, loc4_21, loaded [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %Main.import_ref.bcb: %I.assoc_type = import_ref Main//i, loc4_21, loaded [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %Main.F = import_ref Main//i, F, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.e53: <witness> = import_ref Main//c, loc7_13, loaded [template = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %Main.import_ref.29a: type = import_ref Main//c, loc7_6, loaded [template = constants.%C]
|
||||
// CHECK:STDOUT: %Main.import_ref.f50: type = import_ref Main//c, loc7_11, loaded [template = constants.%I.type]
|
||||
// CHECK:STDOUT: %Main.import_ref.e53: <witness> = import_ref Main//c, loc7_13, loaded [concrete = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %Main.import_ref.29a: type = import_ref Main//c, loc7_6, loaded [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %Main.import_ref.f50: type = import_ref Main//c, loc7_11, loaded [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: %Main.import_ref.5dd: %I.type = import_ref Main//i, inst17 [no loc], loaded [symbolic = constants.%Self]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Get = imports.%Main.Get
|
||||
// CHECK:STDOUT: .I = imports.%Main.I
|
||||
// CHECK:STDOUT: .Core = imports.%Core
|
||||
@@ -264,7 +264,7 @@ fn Call() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %default.import = import <none>
|
||||
// CHECK:STDOUT: %Call.decl: %Call.type = fn_decl @Call [template = constants.%Call] {} {}
|
||||
// CHECK:STDOUT: %Call.decl: %Call.type = fn_decl @Call [concrete = constants.%Call] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @I [from "i.carbon"] {
|
||||
@@ -288,12 +288,12 @@ fn Call() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @Call() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %Get.ref: %Get.type = name_ref Get, imports.%Main.Get [template = constants.%Get]
|
||||
// CHECK:STDOUT: %Get.ref: %Get.type = name_ref Get, imports.%Main.Get [concrete = constants.%Get]
|
||||
// CHECK:STDOUT: %.loc9: ref %C = temporary_storage
|
||||
// CHECK:STDOUT: %Get.call: init %C = call %Get.ref() to %.loc9
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, imports.%Main.I [template = constants.%I.type]
|
||||
// CHECK:STDOUT: %F.ref: %I.assoc_type = name_ref F, imports.%Main.import_ref.bcb [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0: %.076 = impl_witness_access constants.%impl_witness, element0 [template = constants.%F.a2e]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, imports.%Main.I [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: %F.ref: %I.assoc_type = name_ref F, imports.%Main.import_ref.bcb [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0: %.076 = impl_witness_access constants.%impl_witness, element0 [concrete = constants.%F.a2e]
|
||||
// CHECK:STDOUT: %F.call: init %empty_tuple.type = call %impl.elem0()
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
+260
-260
@@ -163,45 +163,45 @@ fn P(o: O) {
|
||||
// CHECK:STDOUT: --- different_impl_member_names.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %HasF.type: type = facet_type <@HasF> [template]
|
||||
// CHECK:STDOUT: %HasF.type: type = facet_type <@HasF> [concrete]
|
||||
// CHECK:STDOUT: %Self.f0c: %HasF.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %F.type.b7b: type = fn_type @F.1 [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %F.f50: %F.type.b7b = struct_value () [template]
|
||||
// CHECK:STDOUT: %HasF.assoc_type: type = assoc_entity_type %HasF.type [template]
|
||||
// CHECK:STDOUT: %assoc0.992: %HasF.assoc_type = assoc_entity element0, @HasF.%F.decl [template]
|
||||
// CHECK:STDOUT: %HasG.type: type = facet_type <@HasG> [template]
|
||||
// CHECK:STDOUT: %F.type.b7b: type = fn_type @F.1 [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %F.f50: %F.type.b7b = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %HasF.assoc_type: type = assoc_entity_type %HasF.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0.992: %HasF.assoc_type = assoc_entity element0, @HasF.%F.decl [concrete]
|
||||
// CHECK:STDOUT: %HasG.type: type = facet_type <@HasG> [concrete]
|
||||
// CHECK:STDOUT: %Self.d42: %HasG.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %G.type.d27: type = fn_type @G.1 [template]
|
||||
// CHECK:STDOUT: %G.688: %G.type.d27 = struct_value () [template]
|
||||
// CHECK:STDOUT: %HasG.assoc_type: type = assoc_entity_type %HasG.type [template]
|
||||
// CHECK:STDOUT: %assoc0.58a: %HasG.assoc_type = assoc_entity element0, @HasG.%G.decl [template]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [template]
|
||||
// CHECK:STDOUT: %impl_witness.329: <witness> = impl_witness (@impl.1.%F.decl) [template]
|
||||
// CHECK:STDOUT: %F.type.a65: type = fn_type @F.2 [template]
|
||||
// CHECK:STDOUT: %F.ad8: %F.type.a65 = struct_value () [template]
|
||||
// CHECK:STDOUT: %HasF.facet: %HasF.type = facet_value %C, %impl_witness.329 [template]
|
||||
// CHECK:STDOUT: %impl_witness.42a: <witness> = impl_witness (@impl.2.%G.decl) [template]
|
||||
// CHECK:STDOUT: %G.type.cf6: type = fn_type @G.2 [template]
|
||||
// CHECK:STDOUT: %G.957: %G.type.cf6 = struct_value () [template]
|
||||
// CHECK:STDOUT: %HasG.facet: %HasG.type = facet_value %C, %impl_witness.42a [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %H.type: type = fn_type @H [template]
|
||||
// CHECK:STDOUT: %H: %H.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.626: type = fn_type_with_self_type %F.type.b7b, %HasF.facet [template]
|
||||
// CHECK:STDOUT: %.790: type = fn_type_with_self_type %G.type.d27, %HasG.facet [template]
|
||||
// CHECK:STDOUT: %G.type.d27: type = fn_type @G.1 [concrete]
|
||||
// CHECK:STDOUT: %G.688: %G.type.d27 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %HasG.assoc_type: type = assoc_entity_type %HasG.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0.58a: %HasG.assoc_type = assoc_entity element0, @HasG.%G.decl [concrete]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [concrete]
|
||||
// CHECK:STDOUT: %impl_witness.329: <witness> = impl_witness (@impl.1.%F.decl) [concrete]
|
||||
// CHECK:STDOUT: %F.type.a65: type = fn_type @F.2 [concrete]
|
||||
// CHECK:STDOUT: %F.ad8: %F.type.a65 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %HasF.facet: %HasF.type = facet_value %C, %impl_witness.329 [concrete]
|
||||
// CHECK:STDOUT: %impl_witness.42a: <witness> = impl_witness (@impl.2.%G.decl) [concrete]
|
||||
// CHECK:STDOUT: %G.type.cf6: type = fn_type @G.2 [concrete]
|
||||
// CHECK:STDOUT: %G.957: %G.type.cf6 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %HasG.facet: %HasG.type = facet_value %C, %impl_witness.42a [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %H.type: type = fn_type @H [concrete]
|
||||
// CHECK:STDOUT: %H: %H.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %.626: type = fn_type_with_self_type %F.type.b7b, %HasF.facet [concrete]
|
||||
// CHECK:STDOUT: %.790: type = fn_type_with_self_type %G.type.d27, %HasG.facet [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Core = imports.%Core
|
||||
// CHECK:STDOUT: .HasF = %HasF.decl
|
||||
// CHECK:STDOUT: .HasG = %HasG.decl
|
||||
@@ -209,23 +209,23 @@ fn P(o: O) {
|
||||
// CHECK:STDOUT: .H = %H.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %HasF.decl: type = interface_decl @HasF [template = constants.%HasF.type] {} {}
|
||||
// CHECK:STDOUT: %HasG.decl: type = interface_decl @HasG [template = constants.%HasG.type] {} {}
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %H.decl: %H.type = fn_decl @H [template = constants.%H] {
|
||||
// CHECK:STDOUT: %HasF.decl: type = interface_decl @HasF [concrete = constants.%HasF.type] {} {}
|
||||
// CHECK:STDOUT: %HasG.decl: type = interface_decl @HasG [concrete = constants.%HasG.type] {} {}
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %H.decl: %H.type = fn_decl @H [concrete = constants.%H] {
|
||||
// CHECK:STDOUT: %c.patt: %C = binding_pattern c
|
||||
// CHECK:STDOUT: %c.param_patt: %C = value_param_pattern %c.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %c.param: %C = value_param runtime_param0
|
||||
// CHECK:STDOUT: %C.ref.loc21: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %C.ref.loc21: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %c: %C = bind_name c, %c.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @HasF {
|
||||
// CHECK:STDOUT: %Self: %HasF.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.f0c]
|
||||
// CHECK:STDOUT: %F.decl: %F.type.b7b = fn_decl @F.1 [template = constants.%F.f50] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %HasF.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0.992]
|
||||
// CHECK:STDOUT: %F.decl: %F.type.b7b = fn_decl @F.1 [concrete = constants.%F.f50] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %HasF.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0.992]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -235,8 +235,8 @@ fn P(o: O) {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @HasG {
|
||||
// CHECK:STDOUT: %Self: %HasG.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.d42]
|
||||
// CHECK:STDOUT: %G.decl: %G.type.d27 = fn_decl @G.1 [template = constants.%G.688] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %HasG.assoc_type = assoc_entity element0, %G.decl [template = constants.%assoc0.58a]
|
||||
// CHECK:STDOUT: %G.decl: %G.type.d27 = fn_decl @G.1 [concrete = constants.%G.688] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %HasG.assoc_type = assoc_entity element0, %G.decl [concrete = constants.%assoc0.58a]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -245,7 +245,7 @@ fn P(o: O) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl.1: %Self.ref as %HasF.ref {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.a65 = fn_decl @F.2 [template = constants.%F.ad8] {} {}
|
||||
// CHECK:STDOUT: %F.decl: %F.type.a65 = fn_decl @F.2 [concrete = constants.%F.ad8] {} {}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .F = %F.decl
|
||||
@@ -253,7 +253,7 @@ fn P(o: O) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl.2: %Self.ref as %HasG.ref {
|
||||
// CHECK:STDOUT: %G.decl: %G.type.cf6 = fn_decl @G.2 [template = constants.%G.957] {} {}
|
||||
// CHECK:STDOUT: %G.decl: %G.type.cf6 = fn_decl @G.2 [concrete = constants.%G.957] {} {}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .G = %G.decl
|
||||
@@ -261,17 +261,17 @@ fn P(o: O) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @C {
|
||||
// CHECK:STDOUT: impl_decl @impl.1 [template] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [template = constants.%C]
|
||||
// CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [template = constants.%HasF.type]
|
||||
// CHECK:STDOUT: impl_decl @impl.1 [concrete] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %HasF.ref: type = name_ref HasF, file.%HasF.decl [concrete = constants.%HasF.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness.loc13: <witness> = impl_witness (@impl.1.%F.decl) [template = constants.%impl_witness.329]
|
||||
// CHECK:STDOUT: impl_decl @impl.2 [template] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [template = constants.%C]
|
||||
// CHECK:STDOUT: %HasG.ref: type = name_ref HasG, file.%HasG.decl [template = constants.%HasG.type]
|
||||
// CHECK:STDOUT: %impl_witness.loc13: <witness> = impl_witness (@impl.1.%F.decl) [concrete = constants.%impl_witness.329]
|
||||
// CHECK:STDOUT: impl_decl @impl.2 [concrete] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %HasG.ref: type = name_ref HasG, file.%HasG.decl [concrete = constants.%HasG.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness.loc16: <witness> = impl_witness (@impl.2.%G.decl) [template = constants.%impl_witness.42a]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %impl_witness.loc16: <witness> = impl_witness (@impl.2.%G.decl) [concrete = constants.%impl_witness.42a]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -300,21 +300,21 @@ fn P(o: O) {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @H(%c.param_patt: %C) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %C.ref.loc22: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %F.ref.loc22: %HasF.assoc_type = name_ref F, @HasF.%assoc0 [template = constants.%assoc0.992]
|
||||
// CHECK:STDOUT: %impl.elem0.loc22: %.626 = impl_witness_access constants.%impl_witness.329, element0 [template = constants.%F.ad8]
|
||||
// CHECK:STDOUT: %C.ref.loc22: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %F.ref.loc22: %HasF.assoc_type = name_ref F, @HasF.%assoc0 [concrete = constants.%assoc0.992]
|
||||
// CHECK:STDOUT: %impl.elem0.loc22: %.626 = impl_witness_access constants.%impl_witness.329, element0 [concrete = constants.%F.ad8]
|
||||
// CHECK:STDOUT: %F.call.loc22: init %empty_tuple.type = call %impl.elem0.loc22()
|
||||
// CHECK:STDOUT: %c.ref.loc23: %C = name_ref c, %c
|
||||
// CHECK:STDOUT: %F.ref.loc23: %HasF.assoc_type = name_ref F, @HasF.%assoc0 [template = constants.%assoc0.992]
|
||||
// CHECK:STDOUT: %impl.elem0.loc23: %.626 = impl_witness_access constants.%impl_witness.329, element0 [template = constants.%F.ad8]
|
||||
// CHECK:STDOUT: %F.ref.loc23: %HasF.assoc_type = name_ref F, @HasF.%assoc0 [concrete = constants.%assoc0.992]
|
||||
// CHECK:STDOUT: %impl.elem0.loc23: %.626 = impl_witness_access constants.%impl_witness.329, element0 [concrete = constants.%F.ad8]
|
||||
// CHECK:STDOUT: %F.call.loc23: init %empty_tuple.type = call %impl.elem0.loc23()
|
||||
// CHECK:STDOUT: %C.ref.loc24: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %G.ref.loc24: %HasG.assoc_type = name_ref G, @HasG.%assoc0 [template = constants.%assoc0.58a]
|
||||
// CHECK:STDOUT: %impl.elem0.loc24: %.790 = impl_witness_access constants.%impl_witness.42a, element0 [template = constants.%G.957]
|
||||
// CHECK:STDOUT: %C.ref.loc24: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %G.ref.loc24: %HasG.assoc_type = name_ref G, @HasG.%assoc0 [concrete = constants.%assoc0.58a]
|
||||
// CHECK:STDOUT: %impl.elem0.loc24: %.790 = impl_witness_access constants.%impl_witness.42a, element0 [concrete = constants.%G.957]
|
||||
// CHECK:STDOUT: %G.call.loc24: init %empty_tuple.type = call %impl.elem0.loc24()
|
||||
// CHECK:STDOUT: %c.ref.loc25: %C = name_ref c, %c
|
||||
// CHECK:STDOUT: %G.ref.loc25: %HasG.assoc_type = name_ref G, @HasG.%assoc0 [template = constants.%assoc0.58a]
|
||||
// CHECK:STDOUT: %impl.elem0.loc25: %.790 = impl_witness_access constants.%impl_witness.42a, element0 [template = constants.%G.957]
|
||||
// CHECK:STDOUT: %G.ref.loc25: %HasG.assoc_type = name_ref G, @HasG.%assoc0 [concrete = constants.%assoc0.58a]
|
||||
// CHECK:STDOUT: %impl.elem0.loc25: %.790 = impl_witness_access constants.%impl_witness.42a, element0 [concrete = constants.%G.957]
|
||||
// CHECK:STDOUT: %G.call.loc25: init %empty_tuple.type = call %impl.elem0.loc25()
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
@@ -330,42 +330,42 @@ fn P(o: O) {
|
||||
// CHECK:STDOUT: --- fail_ambiguous_impls.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %HasA1.type: type = facet_type <@HasA1> [template]
|
||||
// CHECK:STDOUT: %HasA1.type: type = facet_type <@HasA1> [concrete]
|
||||
// CHECK:STDOUT: %Self.90d: %HasA1.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %A.type.9c4: type = fn_type @A.1 [template]
|
||||
// CHECK:STDOUT: %A.c3c: %A.type.9c4 = struct_value () [template]
|
||||
// CHECK:STDOUT: %HasA1.assoc_type: type = assoc_entity_type %HasA1.type [template]
|
||||
// CHECK:STDOUT: %assoc0.b5a: %HasA1.assoc_type = assoc_entity element0, @HasA1.%A.decl [template]
|
||||
// CHECK:STDOUT: %HasA2.type: type = facet_type <@HasA2> [template]
|
||||
// CHECK:STDOUT: %A.type.9c4: type = fn_type @A.1 [concrete]
|
||||
// CHECK:STDOUT: %A.c3c: %A.type.9c4 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %HasA1.assoc_type: type = assoc_entity_type %HasA1.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0.b5a: %HasA1.assoc_type = assoc_entity element0, @HasA1.%A.decl [concrete]
|
||||
// CHECK:STDOUT: %HasA2.type: type = facet_type <@HasA2> [concrete]
|
||||
// CHECK:STDOUT: %Self.bdc: %HasA2.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %A.type.f71: type = fn_type @A.2 [template]
|
||||
// CHECK:STDOUT: %A.0eb: %A.type.f71 = struct_value () [template]
|
||||
// CHECK:STDOUT: %HasA2.assoc_type: type = assoc_entity_type %HasA2.type [template]
|
||||
// CHECK:STDOUT: %assoc0.6ed: %HasA2.assoc_type = assoc_entity element0, @HasA2.%A.decl [template]
|
||||
// CHECK:STDOUT: %D: type = class_type @D [template]
|
||||
// CHECK:STDOUT: %impl_witness.73a: <witness> = impl_witness (@impl.1.%A.decl) [template]
|
||||
// CHECK:STDOUT: %A.type.468: type = fn_type @A.3 [template]
|
||||
// CHECK:STDOUT: %A.efc: %A.type.468 = struct_value () [template]
|
||||
// CHECK:STDOUT: %HasA1.facet: %HasA1.type = facet_value %D, %impl_witness.73a [template]
|
||||
// CHECK:STDOUT: %impl_witness.baf: <witness> = impl_witness (@impl.2.%A.decl) [template]
|
||||
// CHECK:STDOUT: %A.type.938: type = fn_type @A.4 [template]
|
||||
// CHECK:STDOUT: %A.890: %A.type.938 = struct_value () [template]
|
||||
// CHECK:STDOUT: %HasA2.facet: %HasA2.type = facet_value %D, %impl_witness.baf [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %B.type: type = fn_type @B [template]
|
||||
// CHECK:STDOUT: %B: %B.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %A.type.f71: type = fn_type @A.2 [concrete]
|
||||
// CHECK:STDOUT: %A.0eb: %A.type.f71 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %HasA2.assoc_type: type = assoc_entity_type %HasA2.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0.6ed: %HasA2.assoc_type = assoc_entity element0, @HasA2.%A.decl [concrete]
|
||||
// CHECK:STDOUT: %D: type = class_type @D [concrete]
|
||||
// CHECK:STDOUT: %impl_witness.73a: <witness> = impl_witness (@impl.1.%A.decl) [concrete]
|
||||
// CHECK:STDOUT: %A.type.468: type = fn_type @A.3 [concrete]
|
||||
// CHECK:STDOUT: %A.efc: %A.type.468 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %HasA1.facet: %HasA1.type = facet_value %D, %impl_witness.73a [concrete]
|
||||
// CHECK:STDOUT: %impl_witness.baf: <witness> = impl_witness (@impl.2.%A.decl) [concrete]
|
||||
// CHECK:STDOUT: %A.type.938: type = fn_type @A.4 [concrete]
|
||||
// CHECK:STDOUT: %A.890: %A.type.938 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %HasA2.facet: %HasA2.type = facet_value %D, %impl_witness.baf [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %B.type: type = fn_type @B [concrete]
|
||||
// CHECK:STDOUT: %B: %B.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Core = imports.%Core
|
||||
// CHECK:STDOUT: .HasA1 = %HasA1.decl
|
||||
// CHECK:STDOUT: .HasA2 = %HasA2.decl
|
||||
@@ -373,23 +373,23 @@ fn P(o: O) {
|
||||
// CHECK:STDOUT: .B = %B.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %HasA1.decl: type = interface_decl @HasA1 [template = constants.%HasA1.type] {} {}
|
||||
// CHECK:STDOUT: %HasA2.decl: type = interface_decl @HasA2 [template = constants.%HasA2.type] {} {}
|
||||
// CHECK:STDOUT: %D.decl: type = class_decl @D [template = constants.%D] {} {}
|
||||
// CHECK:STDOUT: %B.decl: %B.type = fn_decl @B [template = constants.%B] {
|
||||
// CHECK:STDOUT: %HasA1.decl: type = interface_decl @HasA1 [concrete = constants.%HasA1.type] {} {}
|
||||
// CHECK:STDOUT: %HasA2.decl: type = interface_decl @HasA2 [concrete = constants.%HasA2.type] {} {}
|
||||
// CHECK:STDOUT: %D.decl: type = class_decl @D [concrete = constants.%D] {} {}
|
||||
// CHECK:STDOUT: %B.decl: %B.type = fn_decl @B [concrete = constants.%B] {
|
||||
// CHECK:STDOUT: %d.patt: %D = binding_pattern d
|
||||
// CHECK:STDOUT: %d.param_patt: %D = value_param_pattern %d.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %d.param: %D = value_param runtime_param0
|
||||
// CHECK:STDOUT: %D.ref.loc21: type = name_ref D, file.%D.decl [template = constants.%D]
|
||||
// CHECK:STDOUT: %D.ref.loc21: type = name_ref D, file.%D.decl [concrete = constants.%D]
|
||||
// CHECK:STDOUT: %d: %D = bind_name d, %d.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @HasA1 {
|
||||
// CHECK:STDOUT: %Self: %HasA1.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.90d]
|
||||
// CHECK:STDOUT: %A.decl: %A.type.9c4 = fn_decl @A.1 [template = constants.%A.c3c] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %HasA1.assoc_type = assoc_entity element0, %A.decl [template = constants.%assoc0.b5a]
|
||||
// CHECK:STDOUT: %A.decl: %A.type.9c4 = fn_decl @A.1 [concrete = constants.%A.c3c] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %HasA1.assoc_type = assoc_entity element0, %A.decl [concrete = constants.%assoc0.b5a]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -399,8 +399,8 @@ fn P(o: O) {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @HasA2 {
|
||||
// CHECK:STDOUT: %Self: %HasA2.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.bdc]
|
||||
// CHECK:STDOUT: %A.decl: %A.type.f71 = fn_decl @A.2 [template = constants.%A.0eb] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %HasA2.assoc_type = assoc_entity element0, %A.decl [template = constants.%assoc0.6ed]
|
||||
// CHECK:STDOUT: %A.decl: %A.type.f71 = fn_decl @A.2 [concrete = constants.%A.0eb] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %HasA2.assoc_type = assoc_entity element0, %A.decl [concrete = constants.%assoc0.6ed]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -409,7 +409,7 @@ fn P(o: O) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl.1: %Self.ref as %HasA1.ref {
|
||||
// CHECK:STDOUT: %A.decl: %A.type.468 = fn_decl @A.3 [template = constants.%A.efc] {} {}
|
||||
// CHECK:STDOUT: %A.decl: %A.type.468 = fn_decl @A.3 [concrete = constants.%A.efc] {} {}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .A = %A.decl
|
||||
@@ -417,7 +417,7 @@ fn P(o: O) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl.2: %Self.ref as %HasA2.ref {
|
||||
// CHECK:STDOUT: %A.decl: %A.type.938 = fn_decl @A.4 [template = constants.%A.890] {} {}
|
||||
// CHECK:STDOUT: %A.decl: %A.type.938 = fn_decl @A.4 [concrete = constants.%A.890] {} {}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .A = %A.decl
|
||||
@@ -425,17 +425,17 @@ fn P(o: O) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @D {
|
||||
// CHECK:STDOUT: impl_decl @impl.1 [template] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%D [template = constants.%D]
|
||||
// CHECK:STDOUT: %HasA1.ref: type = name_ref HasA1, file.%HasA1.decl [template = constants.%HasA1.type]
|
||||
// CHECK:STDOUT: impl_decl @impl.1 [concrete] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%D [concrete = constants.%D]
|
||||
// CHECK:STDOUT: %HasA1.ref: type = name_ref HasA1, file.%HasA1.decl [concrete = constants.%HasA1.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness.loc13: <witness> = impl_witness (@impl.1.%A.decl) [template = constants.%impl_witness.73a]
|
||||
// CHECK:STDOUT: impl_decl @impl.2 [template] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%D [template = constants.%D]
|
||||
// CHECK:STDOUT: %HasA2.ref: type = name_ref HasA2, file.%HasA2.decl [template = constants.%HasA2.type]
|
||||
// CHECK:STDOUT: %impl_witness.loc13: <witness> = impl_witness (@impl.1.%A.decl) [concrete = constants.%impl_witness.73a]
|
||||
// CHECK:STDOUT: impl_decl @impl.2 [concrete] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%D [concrete = constants.%D]
|
||||
// CHECK:STDOUT: %HasA2.ref: type = name_ref HasA2, file.%HasA2.decl [concrete = constants.%HasA2.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness.loc16: <witness> = impl_witness (@impl.2.%A.decl) [template = constants.%impl_witness.baf]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %impl_witness.loc16: <witness> = impl_witness (@impl.2.%A.decl) [concrete = constants.%impl_witness.baf]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -464,10 +464,10 @@ fn P(o: O) {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @B(%d.param_patt: %D) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %D.ref.loc26: type = name_ref D, file.%D.decl [template = constants.%D]
|
||||
// CHECK:STDOUT: %A.ref.loc26: <error> = name_ref A, <error> [template = <error>]
|
||||
// CHECK:STDOUT: %D.ref.loc26: type = name_ref D, file.%D.decl [concrete = constants.%D]
|
||||
// CHECK:STDOUT: %A.ref.loc26: <error> = name_ref A, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %d.ref: %D = name_ref d, %d
|
||||
// CHECK:STDOUT: %A.ref.loc31: <error> = name_ref A, <error> [template = <error>]
|
||||
// CHECK:STDOUT: %A.ref.loc31: <error> = name_ref A, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -482,40 +482,40 @@ fn P(o: O) {
|
||||
// CHECK:STDOUT: --- different_impl_and_base.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %HasI.type: type = facet_type <@HasI> [template]
|
||||
// CHECK:STDOUT: %HasI.type: type = facet_type <@HasI> [concrete]
|
||||
// CHECK:STDOUT: %Self: %HasI.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %I.type.9bd: type = fn_type @I.1 [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %I.0a6: %I.type.9bd = struct_value () [template]
|
||||
// CHECK:STDOUT: %HasI.assoc_type: type = assoc_entity_type %HasI.type [template]
|
||||
// CHECK:STDOUT: %assoc0: %HasI.assoc_type = assoc_entity element0, @HasI.%I.decl [template]
|
||||
// CHECK:STDOUT: %B: type = class_type @B [template]
|
||||
// CHECK:STDOUT: %J.type: type = fn_type @J [template]
|
||||
// CHECK:STDOUT: %J: %J.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %complete_type.357: <witness> = complete_type_witness %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %E: type = class_type @E [template]
|
||||
// CHECK:STDOUT: %E.elem: type = unbound_element_type %E, %B [template]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%I.decl) [template]
|
||||
// CHECK:STDOUT: %I.type.395: type = fn_type @I.2 [template]
|
||||
// CHECK:STDOUT: %I.e74: %I.type.395 = struct_value () [template]
|
||||
// CHECK:STDOUT: %HasI.facet: %HasI.type = facet_value %E, %impl_witness [template]
|
||||
// CHECK:STDOUT: %struct_type.base.0ff: type = struct_type {.base: %B} [template]
|
||||
// CHECK:STDOUT: %complete_type.98e: <witness> = complete_type_witness %struct_type.base.0ff [template]
|
||||
// CHECK:STDOUT: %H.type: type = fn_type @H [template]
|
||||
// CHECK:STDOUT: %H: %H.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.83f: type = fn_type_with_self_type %I.type.9bd, %HasI.facet [template]
|
||||
// CHECK:STDOUT: %I.type.9bd: type = fn_type @I.1 [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %I.0a6: %I.type.9bd = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %HasI.assoc_type: type = assoc_entity_type %HasI.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0: %HasI.assoc_type = assoc_entity element0, @HasI.%I.decl [concrete]
|
||||
// CHECK:STDOUT: %B: type = class_type @B [concrete]
|
||||
// CHECK:STDOUT: %J.type: type = fn_type @J [concrete]
|
||||
// CHECK:STDOUT: %J: %J.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type.357: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %E: type = class_type @E [concrete]
|
||||
// CHECK:STDOUT: %E.elem: type = unbound_element_type %E, %B [concrete]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%I.decl) [concrete]
|
||||
// CHECK:STDOUT: %I.type.395: type = fn_type @I.2 [concrete]
|
||||
// CHECK:STDOUT: %I.e74: %I.type.395 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %HasI.facet: %HasI.type = facet_value %E, %impl_witness [concrete]
|
||||
// CHECK:STDOUT: %struct_type.base.0ff: type = struct_type {.base: %B} [concrete]
|
||||
// CHECK:STDOUT: %complete_type.98e: <witness> = complete_type_witness %struct_type.base.0ff [concrete]
|
||||
// CHECK:STDOUT: %H.type: type = fn_type @H [concrete]
|
||||
// CHECK:STDOUT: %H: %H.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %.83f: type = fn_type_with_self_type %I.type.9bd, %HasI.facet [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Core = imports.%Core
|
||||
// CHECK:STDOUT: .HasI = %HasI.decl
|
||||
// CHECK:STDOUT: .B = %B.decl
|
||||
@@ -523,23 +523,23 @@ fn P(o: O) {
|
||||
// CHECK:STDOUT: .H = %H.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %HasI.decl: type = interface_decl @HasI [template = constants.%HasI.type] {} {}
|
||||
// CHECK:STDOUT: %B.decl: type = class_decl @B [template = constants.%B] {} {}
|
||||
// CHECK:STDOUT: %E.decl: type = class_decl @E [template = constants.%E] {} {}
|
||||
// CHECK:STDOUT: %H.decl: %H.type = fn_decl @H [template = constants.%H] {
|
||||
// CHECK:STDOUT: %HasI.decl: type = interface_decl @HasI [concrete = constants.%HasI.type] {} {}
|
||||
// CHECK:STDOUT: %B.decl: type = class_decl @B [concrete = constants.%B] {} {}
|
||||
// CHECK:STDOUT: %E.decl: type = class_decl @E [concrete = constants.%E] {} {}
|
||||
// CHECK:STDOUT: %H.decl: %H.type = fn_decl @H [concrete = constants.%H] {
|
||||
// CHECK:STDOUT: %e.patt: %E = binding_pattern e
|
||||
// CHECK:STDOUT: %e.param_patt: %E = value_param_pattern %e.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %e.param: %E = value_param runtime_param0
|
||||
// CHECK:STDOUT: %E.ref.loc19: type = name_ref E, file.%E.decl [template = constants.%E]
|
||||
// CHECK:STDOUT: %E.ref.loc19: type = name_ref E, file.%E.decl [concrete = constants.%E]
|
||||
// CHECK:STDOUT: %e: %E = bind_name e, %e.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @HasI {
|
||||
// CHECK:STDOUT: %Self: %HasI.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self]
|
||||
// CHECK:STDOUT: %I.decl: %I.type.9bd = fn_decl @I.1 [template = constants.%I.0a6] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %HasI.assoc_type = assoc_entity element0, %I.decl [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %I.decl: %I.type.9bd = fn_decl @I.1 [concrete = constants.%I.0a6] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %HasI.assoc_type = assoc_entity element0, %I.decl [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -548,7 +548,7 @@ fn P(o: O) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl: %Self.ref as %HasI.ref {
|
||||
// CHECK:STDOUT: %I.decl: %I.type.395 = fn_decl @I.2 [template = constants.%I.e74] {} {}
|
||||
// CHECK:STDOUT: %I.decl: %I.type.395 = fn_decl @I.2 [concrete = constants.%I.e74] {} {}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .I = %I.decl
|
||||
@@ -556,8 +556,8 @@ fn P(o: O) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @B {
|
||||
// CHECK:STDOUT: %J.decl: %J.type = fn_decl @J [template = constants.%J] {} {}
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: %J.decl: %J.type = fn_decl @J [concrete = constants.%J] {} {}
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -566,14 +566,14 @@ fn P(o: O) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @E {
|
||||
// CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [template = constants.%B]
|
||||
// CHECK:STDOUT: %.loc13: %E.elem = base_decl %B.ref, element0 [template]
|
||||
// CHECK:STDOUT: impl_decl @impl [template] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%E [template = constants.%E]
|
||||
// CHECK:STDOUT: %HasI.ref: type = name_ref HasI, file.%HasI.decl [template = constants.%HasI.type]
|
||||
// CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [concrete = constants.%B]
|
||||
// CHECK:STDOUT: %.loc13: %E.elem = base_decl %B.ref, element0 [concrete]
|
||||
// CHECK:STDOUT: impl_decl @impl [concrete] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%E [concrete = constants.%E]
|
||||
// CHECK:STDOUT: %HasI.ref: type = name_ref HasI, file.%HasI.decl [concrete = constants.%HasI.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%I.decl) [template = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %struct_type.base.0ff [template = constants.%complete_type.98e]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%I.decl) [concrete = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %struct_type.base.0ff [concrete = constants.%complete_type.98e]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -599,19 +599,19 @@ fn P(o: O) {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @H(%e.param_patt: %E) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %E.ref.loc20: type = name_ref E, file.%E.decl [template = constants.%E]
|
||||
// CHECK:STDOUT: %I.ref.loc20: %HasI.assoc_type = name_ref I, @HasI.%assoc0 [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0.loc20: %.83f = impl_witness_access constants.%impl_witness, element0 [template = constants.%I.e74]
|
||||
// CHECK:STDOUT: %E.ref.loc20: type = name_ref E, file.%E.decl [concrete = constants.%E]
|
||||
// CHECK:STDOUT: %I.ref.loc20: %HasI.assoc_type = name_ref I, @HasI.%assoc0 [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0.loc20: %.83f = impl_witness_access constants.%impl_witness, element0 [concrete = constants.%I.e74]
|
||||
// CHECK:STDOUT: %I.call.loc20: init %empty_tuple.type = call %impl.elem0.loc20()
|
||||
// CHECK:STDOUT: %e.ref.loc21: %E = name_ref e, %e
|
||||
// CHECK:STDOUT: %I.ref.loc21: %HasI.assoc_type = name_ref I, @HasI.%assoc0 [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0.loc21: %.83f = impl_witness_access constants.%impl_witness, element0 [template = constants.%I.e74]
|
||||
// CHECK:STDOUT: %I.ref.loc21: %HasI.assoc_type = name_ref I, @HasI.%assoc0 [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0.loc21: %.83f = impl_witness_access constants.%impl_witness, element0 [concrete = constants.%I.e74]
|
||||
// CHECK:STDOUT: %I.call.loc21: init %empty_tuple.type = call %impl.elem0.loc21()
|
||||
// CHECK:STDOUT: %E.ref.loc22: type = name_ref E, file.%E.decl [template = constants.%E]
|
||||
// CHECK:STDOUT: %J.ref.loc22: %J.type = name_ref J, @B.%J.decl [template = constants.%J]
|
||||
// CHECK:STDOUT: %E.ref.loc22: type = name_ref E, file.%E.decl [concrete = constants.%E]
|
||||
// CHECK:STDOUT: %J.ref.loc22: %J.type = name_ref J, @B.%J.decl [concrete = constants.%J]
|
||||
// CHECK:STDOUT: %J.call.loc22: init %empty_tuple.type = call %J.ref.loc22()
|
||||
// CHECK:STDOUT: %e.ref.loc23: %E = name_ref e, %e
|
||||
// CHECK:STDOUT: %J.ref.loc23: %J.type = name_ref J, @B.%J.decl [template = constants.%J]
|
||||
// CHECK:STDOUT: %J.ref.loc23: %J.type = name_ref J, @B.%J.decl [concrete = constants.%J]
|
||||
// CHECK:STDOUT: %J.call.loc23: init %empty_tuple.type = call %J.ref.loc23()
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
@@ -623,38 +623,38 @@ fn P(o: O) {
|
||||
// CHECK:STDOUT: --- fail_ambiguous_impl_and_base.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %Base: type = class_type @Base [template]
|
||||
// CHECK:STDOUT: %K.type.5a4: type = fn_type @K.1 [template]
|
||||
// CHECK:STDOUT: %K.801: %K.type.5a4 = struct_value () [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %complete_type.357: <witness> = complete_type_witness %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %HasK.type: type = facet_type <@HasK> [template]
|
||||
// CHECK:STDOUT: %Base: type = class_type @Base [concrete]
|
||||
// CHECK:STDOUT: %K.type.5a4: type = fn_type @K.1 [concrete]
|
||||
// CHECK:STDOUT: %K.801: %K.type.5a4 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type.357: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %HasK.type: type = facet_type <@HasK> [concrete]
|
||||
// CHECK:STDOUT: %Self: %HasK.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %K.type.76f: type = fn_type @K.2 [template]
|
||||
// CHECK:STDOUT: %K.c0e: %K.type.76f = struct_value () [template]
|
||||
// CHECK:STDOUT: %HasK.assoc_type: type = assoc_entity_type %HasK.type [template]
|
||||
// CHECK:STDOUT: %assoc0: %HasK.assoc_type = assoc_entity element0, @HasK.%K.decl [template]
|
||||
// CHECK:STDOUT: %L: type = class_type @L [template]
|
||||
// CHECK:STDOUT: %L.elem: type = unbound_element_type %L, %Base [template]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%K.decl) [template]
|
||||
// CHECK:STDOUT: %K.type.bc2: type = fn_type @K.3 [template]
|
||||
// CHECK:STDOUT: %K.bd6: %K.type.bc2 = struct_value () [template]
|
||||
// CHECK:STDOUT: %HasK.facet: %HasK.type = facet_value %L, %impl_witness [template]
|
||||
// CHECK:STDOUT: %struct_type.base.b1e: type = struct_type {.base: %Base} [template]
|
||||
// CHECK:STDOUT: %complete_type.15c: <witness> = complete_type_witness %struct_type.base.b1e [template]
|
||||
// CHECK:STDOUT: %M.type: type = fn_type @M [template]
|
||||
// CHECK:STDOUT: %M: %M.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %K.type.76f: type = fn_type @K.2 [concrete]
|
||||
// CHECK:STDOUT: %K.c0e: %K.type.76f = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %HasK.assoc_type: type = assoc_entity_type %HasK.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0: %HasK.assoc_type = assoc_entity element0, @HasK.%K.decl [concrete]
|
||||
// CHECK:STDOUT: %L: type = class_type @L [concrete]
|
||||
// CHECK:STDOUT: %L.elem: type = unbound_element_type %L, %Base [concrete]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%K.decl) [concrete]
|
||||
// CHECK:STDOUT: %K.type.bc2: type = fn_type @K.3 [concrete]
|
||||
// CHECK:STDOUT: %K.bd6: %K.type.bc2 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %HasK.facet: %HasK.type = facet_value %L, %impl_witness [concrete]
|
||||
// CHECK:STDOUT: %struct_type.base.b1e: type = struct_type {.base: %Base} [concrete]
|
||||
// CHECK:STDOUT: %complete_type.15c: <witness> = complete_type_witness %struct_type.base.b1e [concrete]
|
||||
// CHECK:STDOUT: %M.type: type = fn_type @M [concrete]
|
||||
// CHECK:STDOUT: %M: %M.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Core = imports.%Core
|
||||
// CHECK:STDOUT: .Base = %Base.decl
|
||||
// CHECK:STDOUT: .HasK = %HasK.decl
|
||||
@@ -662,23 +662,23 @@ fn P(o: O) {
|
||||
// CHECK:STDOUT: .M = %M.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %Base.decl: type = class_decl @Base [template = constants.%Base] {} {}
|
||||
// CHECK:STDOUT: %HasK.decl: type = interface_decl @HasK [template = constants.%HasK.type] {} {}
|
||||
// CHECK:STDOUT: %L.decl: type = class_decl @L [template = constants.%L] {} {}
|
||||
// CHECK:STDOUT: %M.decl: %M.type = fn_decl @M [template = constants.%M] {
|
||||
// CHECK:STDOUT: %Base.decl: type = class_decl @Base [concrete = constants.%Base] {} {}
|
||||
// CHECK:STDOUT: %HasK.decl: type = interface_decl @HasK [concrete = constants.%HasK.type] {} {}
|
||||
// CHECK:STDOUT: %L.decl: type = class_decl @L [concrete = constants.%L] {} {}
|
||||
// CHECK:STDOUT: %M.decl: %M.type = fn_decl @M [concrete = constants.%M] {
|
||||
// CHECK:STDOUT: %l.patt: %L = binding_pattern l
|
||||
// CHECK:STDOUT: %l.param_patt: %L = value_param_pattern %l.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %l.param: %L = value_param runtime_param0
|
||||
// CHECK:STDOUT: %L.ref.loc19: type = name_ref L, file.%L.decl [template = constants.%L]
|
||||
// CHECK:STDOUT: %L.ref.loc19: type = name_ref L, file.%L.decl [concrete = constants.%L]
|
||||
// CHECK:STDOUT: %l: %L = bind_name l, %l.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @HasK {
|
||||
// CHECK:STDOUT: %Self: %HasK.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self]
|
||||
// CHECK:STDOUT: %K.decl: %K.type.76f = fn_decl @K.2 [template = constants.%K.c0e] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %HasK.assoc_type = assoc_entity element0, %K.decl [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %K.decl: %K.type.76f = fn_decl @K.2 [concrete = constants.%K.c0e] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %HasK.assoc_type = assoc_entity element0, %K.decl [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -687,7 +687,7 @@ fn P(o: O) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl: %Self.ref as %HasK.ref {
|
||||
// CHECK:STDOUT: %K.decl: %K.type.bc2 = fn_decl @K.3 [template = constants.%K.bd6] {} {}
|
||||
// CHECK:STDOUT: %K.decl: %K.type.bc2 = fn_decl @K.3 [concrete = constants.%K.bd6] {} {}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .K = %K.decl
|
||||
@@ -695,8 +695,8 @@ fn P(o: O) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @Base {
|
||||
// CHECK:STDOUT: %K.decl: %K.type.5a4 = fn_decl @K.1 [template = constants.%K.801] {} {}
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: %K.decl: %K.type.5a4 = fn_decl @K.1 [concrete = constants.%K.801] {} {}
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -705,14 +705,14 @@ fn P(o: O) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @L {
|
||||
// CHECK:STDOUT: %Base.ref: type = name_ref Base, file.%Base.decl [template = constants.%Base]
|
||||
// CHECK:STDOUT: %.loc13: %L.elem = base_decl %Base.ref, element0 [template]
|
||||
// CHECK:STDOUT: impl_decl @impl [template] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%L [template = constants.%L]
|
||||
// CHECK:STDOUT: %HasK.ref: type = name_ref HasK, file.%HasK.decl [template = constants.%HasK.type]
|
||||
// CHECK:STDOUT: %Base.ref: type = name_ref Base, file.%Base.decl [concrete = constants.%Base]
|
||||
// CHECK:STDOUT: %.loc13: %L.elem = base_decl %Base.ref, element0 [concrete]
|
||||
// CHECK:STDOUT: impl_decl @impl [concrete] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%L [concrete = constants.%L]
|
||||
// CHECK:STDOUT: %HasK.ref: type = name_ref HasK, file.%HasK.decl [concrete = constants.%HasK.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%K.decl) [template = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %struct_type.base.b1e [template = constants.%complete_type.15c]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%K.decl) [concrete = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %struct_type.base.b1e [concrete = constants.%complete_type.15c]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -738,10 +738,10 @@ fn P(o: O) {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @M(%l.param_patt: %L) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %L.ref.loc24: type = name_ref L, file.%L.decl [template = constants.%L]
|
||||
// CHECK:STDOUT: %K.ref.loc24: <error> = name_ref K, <error> [template = <error>]
|
||||
// CHECK:STDOUT: %L.ref.loc24: type = name_ref L, file.%L.decl [concrete = constants.%L]
|
||||
// CHECK:STDOUT: %K.ref.loc24: <error> = name_ref K, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %l.ref: %L = name_ref l, %l
|
||||
// CHECK:STDOUT: %K.ref.loc29: <error> = name_ref K, <error> [template = <error>]
|
||||
// CHECK:STDOUT: %K.ref.loc29: <error> = name_ref K, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -752,51 +752,51 @@ fn P(o: O) {
|
||||
// CHECK:STDOUT: --- ambiguity_hidden.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %NBase: type = class_type @NBase [template]
|
||||
// CHECK:STDOUT: %N.type.fbf: type = fn_type @N.1 [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %N.897: %N.type.fbf = struct_value () [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %complete_type.357: <witness> = complete_type_witness %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %HasN1.type: type = facet_type <@HasN1> [template]
|
||||
// CHECK:STDOUT: %NBase: type = class_type @NBase [concrete]
|
||||
// CHECK:STDOUT: %N.type.fbf: type = fn_type @N.1 [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %N.897: %N.type.fbf = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type.357: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %HasN1.type: type = facet_type <@HasN1> [concrete]
|
||||
// CHECK:STDOUT: %Self.e0b: %HasN1.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %N.type.3da: type = fn_type @N.2 [template]
|
||||
// CHECK:STDOUT: %N.a51: %N.type.3da = struct_value () [template]
|
||||
// CHECK:STDOUT: %HasN1.assoc_type: type = assoc_entity_type %HasN1.type [template]
|
||||
// CHECK:STDOUT: %assoc0.46d: %HasN1.assoc_type = assoc_entity element0, @HasN1.%N.decl [template]
|
||||
// CHECK:STDOUT: %HasN2.type: type = facet_type <@HasN2> [template]
|
||||
// CHECK:STDOUT: %N.type.3da: type = fn_type @N.2 [concrete]
|
||||
// CHECK:STDOUT: %N.a51: %N.type.3da = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %HasN1.assoc_type: type = assoc_entity_type %HasN1.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0.46d: %HasN1.assoc_type = assoc_entity element0, @HasN1.%N.decl [concrete]
|
||||
// CHECK:STDOUT: %HasN2.type: type = facet_type <@HasN2> [concrete]
|
||||
// CHECK:STDOUT: %Self.e6e: %HasN2.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %N.type.0aa: type = fn_type @N.3 [template]
|
||||
// CHECK:STDOUT: %N.1a4: %N.type.0aa = struct_value () [template]
|
||||
// CHECK:STDOUT: %HasN2.assoc_type: type = assoc_entity_type %HasN2.type [template]
|
||||
// CHECK:STDOUT: %assoc0.9ae: %HasN2.assoc_type = assoc_entity element0, @HasN2.%N.decl [template]
|
||||
// CHECK:STDOUT: %O: type = class_type @O [template]
|
||||
// CHECK:STDOUT: %O.elem: type = unbound_element_type %O, %NBase [template]
|
||||
// CHECK:STDOUT: %impl_witness.982: <witness> = impl_witness (@impl.1.%N.decl) [template]
|
||||
// CHECK:STDOUT: %N.type.ffc: type = fn_type @N.4 [template]
|
||||
// CHECK:STDOUT: %N.4f5: %N.type.ffc = struct_value () [template]
|
||||
// CHECK:STDOUT: %HasN1.facet: %HasN1.type = facet_value %O, %impl_witness.982 [template]
|
||||
// CHECK:STDOUT: %impl_witness.599: <witness> = impl_witness (@impl.2.%N.decl) [template]
|
||||
// CHECK:STDOUT: %N.type.8af: type = fn_type @N.5 [template]
|
||||
// CHECK:STDOUT: %N.308: %N.type.8af = struct_value () [template]
|
||||
// CHECK:STDOUT: %HasN2.facet: %HasN2.type = facet_value %O, %impl_witness.599 [template]
|
||||
// CHECK:STDOUT: %N.type.8b4: type = fn_type @N.6 [template]
|
||||
// CHECK:STDOUT: %N.cc3: %N.type.8b4 = struct_value () [template]
|
||||
// CHECK:STDOUT: %struct_type.base.9c6: type = struct_type {.base: %NBase} [template]
|
||||
// CHECK:STDOUT: %complete_type.121: <witness> = complete_type_witness %struct_type.base.9c6 [template]
|
||||
// CHECK:STDOUT: %P.type: type = fn_type @P [template]
|
||||
// CHECK:STDOUT: %P: %P.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %N.type.0aa: type = fn_type @N.3 [concrete]
|
||||
// CHECK:STDOUT: %N.1a4: %N.type.0aa = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %HasN2.assoc_type: type = assoc_entity_type %HasN2.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0.9ae: %HasN2.assoc_type = assoc_entity element0, @HasN2.%N.decl [concrete]
|
||||
// CHECK:STDOUT: %O: type = class_type @O [concrete]
|
||||
// CHECK:STDOUT: %O.elem: type = unbound_element_type %O, %NBase [concrete]
|
||||
// CHECK:STDOUT: %impl_witness.982: <witness> = impl_witness (@impl.1.%N.decl) [concrete]
|
||||
// CHECK:STDOUT: %N.type.ffc: type = fn_type @N.4 [concrete]
|
||||
// CHECK:STDOUT: %N.4f5: %N.type.ffc = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %HasN1.facet: %HasN1.type = facet_value %O, %impl_witness.982 [concrete]
|
||||
// CHECK:STDOUT: %impl_witness.599: <witness> = impl_witness (@impl.2.%N.decl) [concrete]
|
||||
// CHECK:STDOUT: %N.type.8af: type = fn_type @N.5 [concrete]
|
||||
// CHECK:STDOUT: %N.308: %N.type.8af = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %HasN2.facet: %HasN2.type = facet_value %O, %impl_witness.599 [concrete]
|
||||
// CHECK:STDOUT: %N.type.8b4: type = fn_type @N.6 [concrete]
|
||||
// CHECK:STDOUT: %N.cc3: %N.type.8b4 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %struct_type.base.9c6: type = struct_type {.base: %NBase} [concrete]
|
||||
// CHECK:STDOUT: %complete_type.121: <witness> = complete_type_witness %struct_type.base.9c6 [concrete]
|
||||
// CHECK:STDOUT: %P.type: type = fn_type @P [concrete]
|
||||
// CHECK:STDOUT: %P: %P.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Core = imports.%Core
|
||||
// CHECK:STDOUT: .NBase = %NBase.decl
|
||||
// CHECK:STDOUT: .HasN1 = %HasN1.decl
|
||||
@@ -805,24 +805,24 @@ fn P(o: O) {
|
||||
// CHECK:STDOUT: .P = %P.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %NBase.decl: type = class_decl @NBase [template = constants.%NBase] {} {}
|
||||
// CHECK:STDOUT: %HasN1.decl: type = interface_decl @HasN1 [template = constants.%HasN1.type] {} {}
|
||||
// CHECK:STDOUT: %HasN2.decl: type = interface_decl @HasN2 [template = constants.%HasN2.type] {} {}
|
||||
// CHECK:STDOUT: %O.decl: type = class_decl @O [template = constants.%O] {} {}
|
||||
// CHECK:STDOUT: %P.decl: %P.type = fn_decl @P [template = constants.%P] {
|
||||
// CHECK:STDOUT: %NBase.decl: type = class_decl @NBase [concrete = constants.%NBase] {} {}
|
||||
// CHECK:STDOUT: %HasN1.decl: type = interface_decl @HasN1 [concrete = constants.%HasN1.type] {} {}
|
||||
// CHECK:STDOUT: %HasN2.decl: type = interface_decl @HasN2 [concrete = constants.%HasN2.type] {} {}
|
||||
// CHECK:STDOUT: %O.decl: type = class_decl @O [concrete = constants.%O] {} {}
|
||||
// CHECK:STDOUT: %P.decl: %P.type = fn_decl @P [concrete = constants.%P] {
|
||||
// CHECK:STDOUT: %o.patt: %O = binding_pattern o
|
||||
// CHECK:STDOUT: %o.param_patt: %O = value_param_pattern %o.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %o.param: %O = value_param runtime_param0
|
||||
// CHECK:STDOUT: %O.ref.loc27: type = name_ref O, file.%O.decl [template = constants.%O]
|
||||
// CHECK:STDOUT: %O.ref.loc27: type = name_ref O, file.%O.decl [concrete = constants.%O]
|
||||
// CHECK:STDOUT: %o: %O = bind_name o, %o.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @HasN1 {
|
||||
// CHECK:STDOUT: %Self: %HasN1.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.e0b]
|
||||
// CHECK:STDOUT: %N.decl: %N.type.3da = fn_decl @N.2 [template = constants.%N.a51] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %HasN1.assoc_type = assoc_entity element0, %N.decl [template = constants.%assoc0.46d]
|
||||
// CHECK:STDOUT: %N.decl: %N.type.3da = fn_decl @N.2 [concrete = constants.%N.a51] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %HasN1.assoc_type = assoc_entity element0, %N.decl [concrete = constants.%assoc0.46d]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -832,8 +832,8 @@ fn P(o: O) {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @HasN2 {
|
||||
// CHECK:STDOUT: %Self: %HasN2.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.e6e]
|
||||
// CHECK:STDOUT: %N.decl: %N.type.0aa = fn_decl @N.3 [template = constants.%N.1a4] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %HasN2.assoc_type = assoc_entity element0, %N.decl [template = constants.%assoc0.9ae]
|
||||
// CHECK:STDOUT: %N.decl: %N.type.0aa = fn_decl @N.3 [concrete = constants.%N.1a4] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %HasN2.assoc_type = assoc_entity element0, %N.decl [concrete = constants.%assoc0.9ae]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -842,7 +842,7 @@ fn P(o: O) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl.1: %Self.ref as %HasN1.ref {
|
||||
// CHECK:STDOUT: %N.decl: %N.type.ffc = fn_decl @N.4 [template = constants.%N.4f5] {} {}
|
||||
// CHECK:STDOUT: %N.decl: %N.type.ffc = fn_decl @N.4 [concrete = constants.%N.4f5] {} {}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .N = %N.decl
|
||||
@@ -850,7 +850,7 @@ fn P(o: O) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl.2: %Self.ref as %HasN2.ref {
|
||||
// CHECK:STDOUT: %N.decl: %N.type.8af = fn_decl @N.5 [template = constants.%N.308] {} {}
|
||||
// CHECK:STDOUT: %N.decl: %N.type.8af = fn_decl @N.5 [concrete = constants.%N.308] {} {}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .N = %N.decl
|
||||
@@ -858,8 +858,8 @@ fn P(o: O) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @NBase {
|
||||
// CHECK:STDOUT: %N.decl: %N.type.fbf = fn_decl @N.1 [template = constants.%N.897] {} {}
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: %N.decl: %N.type.fbf = fn_decl @N.1 [concrete = constants.%N.897] {} {}
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -868,20 +868,20 @@ fn P(o: O) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @O {
|
||||
// CHECK:STDOUT: %NBase.ref: type = name_ref NBase, file.%NBase.decl [template = constants.%NBase]
|
||||
// CHECK:STDOUT: %.loc17: %O.elem = base_decl %NBase.ref, element0 [template]
|
||||
// CHECK:STDOUT: impl_decl @impl.1 [template] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%O [template = constants.%O]
|
||||
// CHECK:STDOUT: %HasN1.ref: type = name_ref HasN1, file.%HasN1.decl [template = constants.%HasN1.type]
|
||||
// CHECK:STDOUT: %NBase.ref: type = name_ref NBase, file.%NBase.decl [concrete = constants.%NBase]
|
||||
// CHECK:STDOUT: %.loc17: %O.elem = base_decl %NBase.ref, element0 [concrete]
|
||||
// CHECK:STDOUT: impl_decl @impl.1 [concrete] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%O [concrete = constants.%O]
|
||||
// CHECK:STDOUT: %HasN1.ref: type = name_ref HasN1, file.%HasN1.decl [concrete = constants.%HasN1.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness.loc18: <witness> = impl_witness (@impl.1.%N.decl) [template = constants.%impl_witness.982]
|
||||
// CHECK:STDOUT: impl_decl @impl.2 [template] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%O [template = constants.%O]
|
||||
// CHECK:STDOUT: %HasN2.ref: type = name_ref HasN2, file.%HasN2.decl [template = constants.%HasN2.type]
|
||||
// CHECK:STDOUT: %impl_witness.loc18: <witness> = impl_witness (@impl.1.%N.decl) [concrete = constants.%impl_witness.982]
|
||||
// CHECK:STDOUT: impl_decl @impl.2 [concrete] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%O [concrete = constants.%O]
|
||||
// CHECK:STDOUT: %HasN2.ref: type = name_ref HasN2, file.%HasN2.decl [concrete = constants.%HasN2.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness.loc21: <witness> = impl_witness (@impl.2.%N.decl) [template = constants.%impl_witness.599]
|
||||
// CHECK:STDOUT: %N.decl: %N.type.8b4 = fn_decl @N.6 [template = constants.%N.cc3] {} {}
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %struct_type.base.9c6 [template = constants.%complete_type.121]
|
||||
// CHECK:STDOUT: %impl_witness.loc21: <witness> = impl_witness (@impl.2.%N.decl) [concrete = constants.%impl_witness.599]
|
||||
// CHECK:STDOUT: %N.decl: %N.type.8b4 = fn_decl @N.6 [concrete = constants.%N.cc3] {} {}
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %struct_type.base.9c6 [concrete = constants.%complete_type.121]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -920,11 +920,11 @@ fn P(o: O) {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @P(%o.param_patt: %O) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %O.ref.loc28: type = name_ref O, file.%O.decl [template = constants.%O]
|
||||
// CHECK:STDOUT: %N.ref.loc28: %N.type.8b4 = name_ref N, @O.%N.decl [template = constants.%N.cc3]
|
||||
// CHECK:STDOUT: %O.ref.loc28: type = name_ref O, file.%O.decl [concrete = constants.%O]
|
||||
// CHECK:STDOUT: %N.ref.loc28: %N.type.8b4 = name_ref N, @O.%N.decl [concrete = constants.%N.cc3]
|
||||
// CHECK:STDOUT: %N.call.loc28: init %empty_tuple.type = call %N.ref.loc28()
|
||||
// CHECK:STDOUT: %o.ref: %O = name_ref o, %o
|
||||
// CHECK:STDOUT: %N.ref.loc29: %N.type.8b4 = name_ref N, @O.%N.decl [template = constants.%N.cc3]
|
||||
// CHECK:STDOUT: %N.ref.loc29: %N.type.8b4 = name_ref N, @O.%N.decl [concrete = constants.%N.cc3]
|
||||
// CHECK:STDOUT: %N.call.loc29: init %empty_tuple.type = call %N.ref.loc29()
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
+23
-23
@@ -21,39 +21,39 @@ impl C as Simple {
|
||||
// CHECK:STDOUT: --- basic.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %Simple.type: type = facet_type <@Simple> [template]
|
||||
// CHECK:STDOUT: %Simple.type: type = facet_type <@Simple> [concrete]
|
||||
// CHECK:STDOUT: %Self: %Simple.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %F.type.e2e: type = fn_type @F.1 [template]
|
||||
// CHECK:STDOUT: %F.df8: %F.type.e2e = struct_value () [template]
|
||||
// CHECK:STDOUT: %Simple.assoc_type: type = assoc_entity_type %Simple.type [template]
|
||||
// CHECK:STDOUT: %assoc0: %Simple.assoc_type = assoc_entity element0, @Simple.%F.decl [template]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%F.decl) [template]
|
||||
// CHECK:STDOUT: %F.type.f9e: type = fn_type @F.2 [template]
|
||||
// CHECK:STDOUT: %F.f50: %F.type.f9e = struct_value () [template]
|
||||
// CHECK:STDOUT: %Simple.facet: %Simple.type = facet_value %C, %impl_witness [template]
|
||||
// CHECK:STDOUT: %F.type.e2e: type = fn_type @F.1 [concrete]
|
||||
// CHECK:STDOUT: %F.df8: %F.type.e2e = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Simple.assoc_type: type = assoc_entity_type %Simple.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0: %Simple.assoc_type = assoc_entity element0, @Simple.%F.decl [concrete]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%F.decl) [concrete]
|
||||
// CHECK:STDOUT: %F.type.f9e: type = fn_type @F.2 [concrete]
|
||||
// CHECK:STDOUT: %F.f50: %F.type.f9e = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Simple.facet: %Simple.type = facet_value %C, %impl_witness [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Simple = %Simple.decl
|
||||
// CHECK:STDOUT: .C = %C.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Simple.decl: type = interface_decl @Simple [template = constants.%Simple.type] {} {}
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [template] {} {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %Simple.ref: type = name_ref Simple, file.%Simple.decl [template = constants.%Simple.type]
|
||||
// CHECK:STDOUT: %Simple.decl: type = interface_decl @Simple [concrete = constants.%Simple.type] {} {}
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [concrete] {} {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %Simple.ref: type = name_ref Simple, file.%Simple.decl [concrete = constants.%Simple.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%F.decl) [template = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%F.decl) [concrete = constants.%impl_witness]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @Simple {
|
||||
// CHECK:STDOUT: %Self: %Simple.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self]
|
||||
// CHECK:STDOUT: %F.decl: %F.type.e2e = fn_decl @F.1 [template = constants.%F.df8] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %Simple.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %F.decl: %F.type.e2e = fn_decl @F.1 [concrete = constants.%F.df8] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %Simple.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -62,7 +62,7 @@ impl C as Simple {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl: %C.ref as %Simple.ref {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.f9e = fn_decl @F.2 [template = constants.%F.f50] {} {}
|
||||
// CHECK:STDOUT: %F.decl: %F.type.f9e = fn_decl @F.2 [concrete = constants.%F.f50] {} {}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .F = %F.decl
|
||||
@@ -70,7 +70,7 @@ impl C as Simple {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @C {
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
|
||||
+13
-13
@@ -22,26 +22,26 @@ impl forall [T: type] C as I { }
|
||||
// CHECK:STDOUT: --- fail_fuzz_crash.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %C: type = class_type @C [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [template]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete]
|
||||
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [template]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .C = %C.decl
|
||||
// CHECK:STDOUT: .I = %I.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [template = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [template] {} {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type]
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [concrete] {} {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [template = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [concrete = constants.%impl_witness]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @I {
|
||||
@@ -58,7 +58,7 @@ impl forall [T: type] C as I { }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @C {
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
|
||||
+21
-21
@@ -28,37 +28,37 @@ impl AC as AI {}
|
||||
// CHECK:STDOUT: --- fail_alias.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [template]
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete]
|
||||
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [template]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .I = %I.decl
|
||||
// CHECK:STDOUT: .C = %C.decl
|
||||
// CHECK:STDOUT: .AI = %AI
|
||||
// CHECK:STDOUT: .AC = %AC
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [template = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, %I.decl [template = constants.%I.type]
|
||||
// CHECK:STDOUT: %AI: type = bind_alias AI, %I.decl [template = constants.%I.type]
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, %C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %AC: type = bind_alias AC, %C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: impl_decl @impl.1 [template] {} {
|
||||
// CHECK:STDOUT: %AC.ref: type = name_ref AC, file.%AC [template = constants.%C]
|
||||
// CHECK:STDOUT: %AI.ref: type = name_ref AI, file.%AI [template = constants.%I.type]
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, %I.decl [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: %AI: type = bind_alias AI, %I.decl [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, %C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %AC: type = bind_alias AC, %C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: impl_decl @impl.1 [concrete] {} {
|
||||
// CHECK:STDOUT: %AC.ref: type = name_ref AC, file.%AC [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %AI.ref: type = name_ref AI, file.%AI [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness.loc17: <witness> = impl_witness () [template = constants.%impl_witness]
|
||||
// CHECK:STDOUT: impl_decl @impl.2 [template] {} {
|
||||
// CHECK:STDOUT: %AC.ref: type = name_ref AC, file.%AC [template = constants.%C]
|
||||
// CHECK:STDOUT: %AI.ref: type = name_ref AI, file.%AI [template = constants.%I.type]
|
||||
// CHECK:STDOUT: %impl_witness.loc17: <witness> = impl_witness () [concrete = constants.%impl_witness]
|
||||
// CHECK:STDOUT: impl_decl @impl.2 [concrete] {} {
|
||||
// CHECK:STDOUT: %AC.ref: type = name_ref AC, file.%AC [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %AI.ref: type = name_ref AI, file.%AI [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness.loc26: <witness> = impl_witness () [template = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %impl_witness.loc26: <witness> = impl_witness () [concrete = constants.%impl_witness]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @I {
|
||||
@@ -80,7 +80,7 @@ impl AC as AI {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @C {
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
|
||||
@@ -67,23 +67,23 @@ fn F() {
|
||||
// CHECK:STDOUT: --- fail_extend_impl_file_scope.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [template]
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete]
|
||||
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .I = %I.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [template = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [template] {} {
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [concrete] {} {
|
||||
// CHECK:STDOUT: %.loc9_14.1: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc9_14.2: type = converted %.loc9_14.1, constants.%empty_tuple.type [template = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type]
|
||||
// CHECK:STDOUT: %.loc9_14.2: type = converted %.loc9_14.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [template = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [concrete = constants.%impl_witness]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @I {
|
||||
@@ -102,21 +102,21 @@ fn F() {
|
||||
// CHECK:STDOUT: --- fail_extend_impl_function_scope.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %J.type: type = facet_type <@J> [template]
|
||||
// CHECK:STDOUT: %J.type: type = facet_type <@J> [concrete]
|
||||
// CHECK:STDOUT: %Self: %J.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [template]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .J = %J.decl
|
||||
// CHECK:STDOUT: .F = %F.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %J.decl: type = interface_decl @J [template = constants.%J.type] {} {}
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} {}
|
||||
// CHECK:STDOUT: %J.decl: type = interface_decl @J [concrete = constants.%J.type] {} {}
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @J {
|
||||
@@ -134,19 +134,19 @@ fn F() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @F() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: impl_decl @impl [template] {} {
|
||||
// CHECK:STDOUT: impl_decl @impl [concrete] {} {
|
||||
// CHECK:STDOUT: %.loc10_16.1: %empty_struct_type = struct_literal ()
|
||||
// CHECK:STDOUT: %.loc10_16.2: type = converted %.loc10_16.1, constants.%empty_struct_type [template = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [template = constants.%J.type]
|
||||
// CHECK:STDOUT: %.loc10_16.2: type = converted %.loc10_16.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [template = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [concrete = constants.%impl_witness]
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: --- fail_extend_impl_self_interface.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %Z.type: type = facet_type <@Z> [template]
|
||||
// CHECK:STDOUT: %Z.type: type = facet_type <@Z> [concrete]
|
||||
// CHECK:STDOUT: %Self: %Z.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic]
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
+13
-13
@@ -22,31 +22,31 @@ impl () as I {}
|
||||
// CHECK:STDOUT: --- fail_impl_bad_assoc_const.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [template]
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete]
|
||||
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type %I.type [template]
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%T [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (<error>) [template]
|
||||
// CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type %I.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%T [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (<error>) [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .I = %I.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [template = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [template] {} {
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [concrete] {} {
|
||||
// CHECK:STDOUT: %.loc20_7.1: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc20_7.2: type = converted %.loc20_7.1, constants.%empty_tuple.type [template = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type]
|
||||
// CHECK:STDOUT: %.loc20_7.2: type = converted %.loc20_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (<error>) [template = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (<error>) [concrete = constants.%impl_witness]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @I {
|
||||
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self]
|
||||
// CHECK:STDOUT: %T: type = assoc_const_decl @T [template] {
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%T [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %T: type = assoc_const_decl @T [concrete] {
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%T [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
|
||||
@@ -19,23 +19,23 @@ impl true as I {}
|
||||
// CHECK:STDOUT: --- fail_impl_bad_type.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [template]
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete]
|
||||
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %true: bool = bool_literal true [template]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [template]
|
||||
// CHECK:STDOUT: %true: bool = bool_literal true [concrete]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .I = %I.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [template = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [template] {} {
|
||||
// CHECK:STDOUT: %true: bool = bool_literal true [template = constants.%true]
|
||||
// CHECK:STDOUT: %.loc17: type = converted %true, <error> [template = <error>]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type]
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [concrete] {} {
|
||||
// CHECK:STDOUT: %true: bool = bool_literal true [concrete = constants.%true]
|
||||
// CHECK:STDOUT: %.loc17: type = converted %true, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [template = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [concrete = constants.%impl_witness]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @I {
|
||||
|
||||
@@ -40,19 +40,19 @@ impl C as J {}
|
||||
// CHECK:STDOUT: --- fail_empty_struct.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .I = %I.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [template = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [template] {} {
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [concrete] {} {
|
||||
// CHECK:STDOUT: %.loc12_7.1: %empty_struct_type = struct_literal ()
|
||||
// CHECK:STDOUT: %.loc12_7.2: type = converted %.loc12_7.1, constants.%empty_struct_type [template = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type]
|
||||
// CHECK:STDOUT: %.loc12_7.2: type = converted %.loc12_7.1, constants.%empty_struct_type [concrete = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -66,22 +66,22 @@ impl C as J {}
|
||||
// CHECK:STDOUT: --- fail_class.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %J.type: type = facet_type <@J> [template]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %J.type: type = facet_type <@J> [concrete]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .J = %J.decl
|
||||
// CHECK:STDOUT: .C = %C.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %J.decl: type = interface_decl @J [template = constants.%J.type] {} {}
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [template] {} {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [template = constants.%J.type]
|
||||
// CHECK:STDOUT: %J.decl: type = interface_decl @J [concrete = constants.%J.type] {} {}
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [concrete] {} {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -93,7 +93,7 @@ impl C as J {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @C {
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
|
||||
@@ -92,15 +92,15 @@ impl forall [T:! type] T as I {
|
||||
// CHECK:STDOUT: --- same_self_and_interface.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %Interface.type: type = facet_type <@Interface> [template]
|
||||
// CHECK:STDOUT: %Interface.type: type = facet_type <@Interface> [concrete]
|
||||
// CHECK:STDOUT: %Self.719: %Interface.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [template]
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete]
|
||||
// CHECK:STDOUT: %Self.826: %I.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %J.type: type = facet_type <@J> [template]
|
||||
// CHECK:STDOUT: %J.type: type = facet_type <@J> [concrete]
|
||||
// CHECK:STDOUT: %Self.ccd: %J.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %K.type: type = facet_type <@K> [template]
|
||||
// CHECK:STDOUT: %K.type: type = facet_type <@K> [concrete]
|
||||
// CHECK:STDOUT: %Self.09f: %K.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %L.type: type = facet_type <@L> [template]
|
||||
// CHECK:STDOUT: %L.type: type = facet_type <@L> [concrete]
|
||||
// CHECK:STDOUT: %Self.1d2: %L.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.826: %I.type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt.3ad: %I.type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
@@ -121,116 +121,116 @@ impl forall [T:! type] T as I {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Interface = %Interface.decl
|
||||
// CHECK:STDOUT: .I = %I.decl
|
||||
// CHECK:STDOUT: .J = %J.decl
|
||||
// CHECK:STDOUT: .K = %K.decl
|
||||
// CHECK:STDOUT: .L = %L.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Interface.decl: type = interface_decl @Interface [template = constants.%Interface.type] {} {}
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [template = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: %J.decl: type = interface_decl @J [template = constants.%J.type] {} {}
|
||||
// CHECK:STDOUT: %K.decl: type = interface_decl @K [template = constants.%K.type] {} {}
|
||||
// CHECK:STDOUT: %L.decl: type = interface_decl @L [template = constants.%L.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl.1 [template] {
|
||||
// CHECK:STDOUT: %Interface.decl: type = interface_decl @Interface [concrete = constants.%Interface.type] {} {}
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: %J.decl: type = interface_decl @J [concrete = constants.%J.type] {} {}
|
||||
// CHECK:STDOUT: %K.decl: type = interface_decl @K [concrete = constants.%K.type] {} {}
|
||||
// CHECK:STDOUT: %L.decl: type = interface_decl @L [concrete = constants.%L.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl.1 [concrete] {
|
||||
// CHECK:STDOUT: %T.patt.loc11_14.1: %I.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc11_14.2 (constants.%T.patt.3ad)]
|
||||
// CHECK:STDOUT: %T.param_patt: %I.type = value_param_pattern %T.patt.loc11_14.1, runtime_param<none> [symbolic = %T.patt.loc11_14.2 (constants.%T.patt.3ad)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc11: %I.type = name_ref T, %T.loc11_14.1 [symbolic = %T.loc11_14.2 (constants.%T.826)]
|
||||
// CHECK:STDOUT: %T.as_type.loc11_21.1: type = facet_access_type %T.ref.loc11 [symbolic = %T.as_type.loc11_21.2 (constants.%T.as_type.b70)]
|
||||
// CHECK:STDOUT: %.loc11: type = converted %T.ref.loc11, %T.as_type.loc11_21.1 [symbolic = %T.as_type.loc11_21.2 (constants.%T.as_type.b70)]
|
||||
// CHECK:STDOUT: %Interface.ref.loc11: type = name_ref Interface, file.%Interface.decl [template = constants.%Interface.type]
|
||||
// CHECK:STDOUT: %Interface.ref.loc11: type = name_ref Interface, file.%Interface.decl [concrete = constants.%Interface.type]
|
||||
// CHECK:STDOUT: %T.param.loc11: %I.type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %I.ref.loc11: type = name_ref I, file.%I.decl [template = constants.%I.type]
|
||||
// CHECK:STDOUT: %I.ref.loc11: type = name_ref I, file.%I.decl [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: %T.loc11_14.1: %I.type = bind_symbolic_name T, 0, %T.param.loc11 [symbolic = %T.loc11_14.2 (constants.%T.826)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness.loc11: <witness> = impl_witness (), @impl.1(constants.%T.826) [symbolic = @impl.1.%impl_witness (constants.%impl_witness.d14)]
|
||||
// CHECK:STDOUT: impl_decl @impl.2 [template] {
|
||||
// CHECK:STDOUT: impl_decl @impl.2 [concrete] {
|
||||
// CHECK:STDOUT: %T.patt.loc12_14.1: %J.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc12_14.2 (constants.%T.patt.371)]
|
||||
// CHECK:STDOUT: %T.param_patt: %J.type = value_param_pattern %T.patt.loc12_14.1, runtime_param<none> [symbolic = %T.patt.loc12_14.2 (constants.%T.patt.371)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc12: %J.type = name_ref T, %T.loc12_14.1 [symbolic = %T.loc12_14.2 (constants.%T.ccd)]
|
||||
// CHECK:STDOUT: %T.as_type.loc12_21.1: type = facet_access_type %T.ref.loc12 [symbolic = %T.as_type.loc12_21.2 (constants.%T.as_type.3df)]
|
||||
// CHECK:STDOUT: %.loc12: type = converted %T.ref.loc12, %T.as_type.loc12_21.1 [symbolic = %T.as_type.loc12_21.2 (constants.%T.as_type.3df)]
|
||||
// CHECK:STDOUT: %Interface.ref.loc12: type = name_ref Interface, file.%Interface.decl [template = constants.%Interface.type]
|
||||
// CHECK:STDOUT: %Interface.ref.loc12: type = name_ref Interface, file.%Interface.decl [concrete = constants.%Interface.type]
|
||||
// CHECK:STDOUT: %T.param.loc12: %J.type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %J.ref.loc12: type = name_ref J, file.%J.decl [template = constants.%J.type]
|
||||
// CHECK:STDOUT: %J.ref.loc12: type = name_ref J, file.%J.decl [concrete = constants.%J.type]
|
||||
// CHECK:STDOUT: %T.loc12_14.1: %J.type = bind_symbolic_name T, 0, %T.param.loc12 [symbolic = %T.loc12_14.2 (constants.%T.ccd)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness.loc12: <witness> = impl_witness (), @impl.2(constants.%T.ccd) [symbolic = @impl.2.%impl_witness (constants.%impl_witness.d94)]
|
||||
// CHECK:STDOUT: impl_decl @impl.3 [template] {
|
||||
// CHECK:STDOUT: impl_decl @impl.3 [concrete] {
|
||||
// CHECK:STDOUT: %T.patt.loc13_14.1: %K.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc13_14.2 (constants.%T.patt.036)]
|
||||
// CHECK:STDOUT: %T.param_patt: %K.type = value_param_pattern %T.patt.loc13_14.1, runtime_param<none> [symbolic = %T.patt.loc13_14.2 (constants.%T.patt.036)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc13: %K.type = name_ref T, %T.loc13_14.1 [symbolic = %T.loc13_14.2 (constants.%T.09f)]
|
||||
// CHECK:STDOUT: %T.as_type.loc13_21.1: type = facet_access_type %T.ref.loc13 [symbolic = %T.as_type.loc13_21.2 (constants.%T.as_type.037)]
|
||||
// CHECK:STDOUT: %.loc13: type = converted %T.ref.loc13, %T.as_type.loc13_21.1 [symbolic = %T.as_type.loc13_21.2 (constants.%T.as_type.037)]
|
||||
// CHECK:STDOUT: %Interface.ref.loc13: type = name_ref Interface, file.%Interface.decl [template = constants.%Interface.type]
|
||||
// CHECK:STDOUT: %Interface.ref.loc13: type = name_ref Interface, file.%Interface.decl [concrete = constants.%Interface.type]
|
||||
// CHECK:STDOUT: %T.param.loc13: %K.type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %K.ref.loc13: type = name_ref K, file.%K.decl [template = constants.%K.type]
|
||||
// CHECK:STDOUT: %K.ref.loc13: type = name_ref K, file.%K.decl [concrete = constants.%K.type]
|
||||
// CHECK:STDOUT: %T.loc13_14.1: %K.type = bind_symbolic_name T, 0, %T.param.loc13 [symbolic = %T.loc13_14.2 (constants.%T.09f)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness.loc13: <witness> = impl_witness (), @impl.3(constants.%T.09f) [symbolic = @impl.3.%impl_witness (constants.%impl_witness.8aa)]
|
||||
// CHECK:STDOUT: impl_decl @impl.4 [template] {
|
||||
// CHECK:STDOUT: impl_decl @impl.4 [concrete] {
|
||||
// CHECK:STDOUT: %T.patt.loc14_14.1: %L.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc14_14.2 (constants.%T.patt.29d)]
|
||||
// CHECK:STDOUT: %T.param_patt: %L.type = value_param_pattern %T.patt.loc14_14.1, runtime_param<none> [symbolic = %T.patt.loc14_14.2 (constants.%T.patt.29d)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc14: %L.type = name_ref T, %T.loc14_14.1 [symbolic = %T.loc14_14.2 (constants.%T.1d2)]
|
||||
// CHECK:STDOUT: %T.as_type.loc14_21.1: type = facet_access_type %T.ref.loc14 [symbolic = %T.as_type.loc14_21.2 (constants.%T.as_type.0ed)]
|
||||
// CHECK:STDOUT: %.loc14: type = converted %T.ref.loc14, %T.as_type.loc14_21.1 [symbolic = %T.as_type.loc14_21.2 (constants.%T.as_type.0ed)]
|
||||
// CHECK:STDOUT: %Interface.ref.loc14: type = name_ref Interface, file.%Interface.decl [template = constants.%Interface.type]
|
||||
// CHECK:STDOUT: %Interface.ref.loc14: type = name_ref Interface, file.%Interface.decl [concrete = constants.%Interface.type]
|
||||
// CHECK:STDOUT: %T.param.loc14: %L.type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %L.ref.loc14: type = name_ref L, file.%L.decl [template = constants.%L.type]
|
||||
// CHECK:STDOUT: %L.ref.loc14: type = name_ref L, file.%L.decl [concrete = constants.%L.type]
|
||||
// CHECK:STDOUT: %T.loc14_14.1: %L.type = bind_symbolic_name T, 0, %T.param.loc14 [symbolic = %T.loc14_14.2 (constants.%T.1d2)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness.loc14: <witness> = impl_witness (), @impl.4(constants.%T.1d2) [symbolic = @impl.4.%impl_witness (constants.%impl_witness.da5)]
|
||||
// CHECK:STDOUT: impl_decl @impl.1 [template] {
|
||||
// CHECK:STDOUT: impl_decl @impl.1 [concrete] {
|
||||
// CHECK:STDOUT: %T.patt.loc11_14.1: %I.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc11_14.2 (constants.%T.patt.3ad)]
|
||||
// CHECK:STDOUT: %T.param_patt: %I.type = value_param_pattern %T.patt.loc11_14.1, runtime_param<none> [symbolic = %T.patt.loc11_14.2 (constants.%T.patt.3ad)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc18: %I.type = name_ref T, %T.loc18 [symbolic = constants.%T.826]
|
||||
// CHECK:STDOUT: %T.as_type.loc18: type = facet_access_type %T.ref.loc18 [symbolic = constants.%T.as_type.b70]
|
||||
// CHECK:STDOUT: %.loc18: type = converted %T.ref.loc18, %T.as_type.loc18 [symbolic = constants.%T.as_type.b70]
|
||||
// CHECK:STDOUT: %Interface.ref.loc18: type = name_ref Interface, file.%Interface.decl [template = constants.%Interface.type]
|
||||
// CHECK:STDOUT: %Interface.ref.loc18: type = name_ref Interface, file.%Interface.decl [concrete = constants.%Interface.type]
|
||||
// CHECK:STDOUT: %T.param.loc18: %I.type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %I.ref.loc18: type = name_ref I, file.%I.decl [template = constants.%I.type]
|
||||
// CHECK:STDOUT: %I.ref.loc18: type = name_ref I, file.%I.decl [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: %T.loc18: %I.type = bind_symbolic_name T, 0, %T.param.loc18 [symbolic = constants.%T.826]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: impl_decl @impl.2 [template] {
|
||||
// CHECK:STDOUT: impl_decl @impl.2 [concrete] {
|
||||
// CHECK:STDOUT: %T.patt.loc12_14.1: %J.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc12_14.2 (constants.%T.patt.371)]
|
||||
// CHECK:STDOUT: %T.param_patt: %J.type = value_param_pattern %T.patt.loc12_14.1, runtime_param<none> [symbolic = %T.patt.loc12_14.2 (constants.%T.patt.371)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc19: %J.type = name_ref T, %T.loc19 [symbolic = constants.%T.ccd]
|
||||
// CHECK:STDOUT: %T.as_type.loc19: type = facet_access_type %T.ref.loc19 [symbolic = constants.%T.as_type.3df]
|
||||
// CHECK:STDOUT: %.loc19: type = converted %T.ref.loc19, %T.as_type.loc19 [symbolic = constants.%T.as_type.3df]
|
||||
// CHECK:STDOUT: %Interface.ref.loc19: type = name_ref Interface, file.%Interface.decl [template = constants.%Interface.type]
|
||||
// CHECK:STDOUT: %Interface.ref.loc19: type = name_ref Interface, file.%Interface.decl [concrete = constants.%Interface.type]
|
||||
// CHECK:STDOUT: %T.param.loc19: %J.type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %J.ref.loc19: type = name_ref J, file.%J.decl [template = constants.%J.type]
|
||||
// CHECK:STDOUT: %J.ref.loc19: type = name_ref J, file.%J.decl [concrete = constants.%J.type]
|
||||
// CHECK:STDOUT: %T.loc19: %J.type = bind_symbolic_name T, 0, %T.param.loc19 [symbolic = constants.%T.ccd]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: impl_decl @impl.3 [template] {
|
||||
// CHECK:STDOUT: impl_decl @impl.3 [concrete] {
|
||||
// CHECK:STDOUT: %T.patt.loc13_14.1: %K.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc13_14.2 (constants.%T.patt.036)]
|
||||
// CHECK:STDOUT: %T.param_patt: %K.type = value_param_pattern %T.patt.loc13_14.1, runtime_param<none> [symbolic = %T.patt.loc13_14.2 (constants.%T.patt.036)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc20: %K.type = name_ref T, %T.loc20 [symbolic = constants.%T.09f]
|
||||
// CHECK:STDOUT: %T.as_type.loc20: type = facet_access_type %T.ref.loc20 [symbolic = constants.%T.as_type.037]
|
||||
// CHECK:STDOUT: %.loc20: type = converted %T.ref.loc20, %T.as_type.loc20 [symbolic = constants.%T.as_type.037]
|
||||
// CHECK:STDOUT: %Interface.ref.loc20: type = name_ref Interface, file.%Interface.decl [template = constants.%Interface.type]
|
||||
// CHECK:STDOUT: %Interface.ref.loc20: type = name_ref Interface, file.%Interface.decl [concrete = constants.%Interface.type]
|
||||
// CHECK:STDOUT: %T.param.loc20: %K.type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %K.ref.loc20: type = name_ref K, file.%K.decl [template = constants.%K.type]
|
||||
// CHECK:STDOUT: %K.ref.loc20: type = name_ref K, file.%K.decl [concrete = constants.%K.type]
|
||||
// CHECK:STDOUT: %T.loc20: %K.type = bind_symbolic_name T, 0, %T.param.loc20 [symbolic = constants.%T.09f]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: impl_decl @impl.4 [template] {
|
||||
// CHECK:STDOUT: impl_decl @impl.4 [concrete] {
|
||||
// CHECK:STDOUT: %T.patt.loc14_14.1: %L.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc14_14.2 (constants.%T.patt.29d)]
|
||||
// CHECK:STDOUT: %T.param_patt: %L.type = value_param_pattern %T.patt.loc14_14.1, runtime_param<none> [symbolic = %T.patt.loc14_14.2 (constants.%T.patt.29d)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc21: %L.type = name_ref T, %T.loc21 [symbolic = constants.%T.1d2]
|
||||
// CHECK:STDOUT: %T.as_type.loc21: type = facet_access_type %T.ref.loc21 [symbolic = constants.%T.as_type.0ed]
|
||||
// CHECK:STDOUT: %.loc21: type = converted %T.ref.loc21, %T.as_type.loc21 [symbolic = constants.%T.as_type.0ed]
|
||||
// CHECK:STDOUT: %Interface.ref.loc21: type = name_ref Interface, file.%Interface.decl [template = constants.%Interface.type]
|
||||
// CHECK:STDOUT: %Interface.ref.loc21: type = name_ref Interface, file.%Interface.decl [concrete = constants.%Interface.type]
|
||||
// CHECK:STDOUT: %T.param.loc21: %L.type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %L.ref.loc21: type = name_ref L, file.%L.decl [template = constants.%L.type]
|
||||
// CHECK:STDOUT: %L.ref.loc21: type = name_ref L, file.%L.decl [concrete = constants.%L.type]
|
||||
// CHECK:STDOUT: %T.loc21: %L.type = bind_symbolic_name T, 0, %T.param.loc21 [symbolic = constants.%T.1d2]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -370,9 +370,9 @@ impl forall [T:! type] T as I {
|
||||
// CHECK:STDOUT: --- fail_same_self_and_interface_redefined.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [template]
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete]
|
||||
// CHECK:STDOUT: %Self.826: %I.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %J.type: type = facet_type <@J> [template]
|
||||
// CHECK:STDOUT: %J.type: type = facet_type <@J> [concrete]
|
||||
// CHECK:STDOUT: %Self.ccd: %J.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T: %I.type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt: %I.type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
@@ -382,35 +382,35 @@ impl forall [T:! type] T as I {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .I = %I.decl
|
||||
// CHECK:STDOUT: .J = %J.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [template = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: %J.decl: type = interface_decl @J [template = constants.%J.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl.1 [template] {
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: %J.decl: type = interface_decl @J [concrete = constants.%J.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl.1 [concrete] {
|
||||
// CHECK:STDOUT: %T.patt.loc7_14.1: %I.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc7_14.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: %I.type = value_param_pattern %T.patt.loc7_14.1, runtime_param<none> [symbolic = %T.patt.loc7_14.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref: %I.type = name_ref T, %T.loc7_14.1 [symbolic = %T.loc7_14.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %T.as_type.loc7_21.1: type = facet_access_type %T.ref [symbolic = %T.as_type.loc7_21.2 (constants.%T.as_type)]
|
||||
// CHECK:STDOUT: %.loc7: type = converted %T.ref, %T.as_type.loc7_21.1 [symbolic = %T.as_type.loc7_21.2 (constants.%T.as_type)]
|
||||
// CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [template = constants.%J.type]
|
||||
// CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type]
|
||||
// CHECK:STDOUT: %T.param: %I.type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: %T.loc7_14.1: %I.type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc7_14.2 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness.loc7: <witness> = impl_witness (), @impl.1(constants.%T) [symbolic = @impl.1.%impl_witness (constants.%impl_witness.1896b7.1)]
|
||||
// CHECK:STDOUT: impl_decl @impl.2 [template] {
|
||||
// CHECK:STDOUT: impl_decl @impl.2 [concrete] {
|
||||
// CHECK:STDOUT: %T.patt.loc15_14.1: %I.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc15_14.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: %I.type = value_param_pattern %T.patt.loc15_14.1, runtime_param<none> [symbolic = %T.patt.loc15_14.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref: %I.type = name_ref T, %T.loc15_14.1 [symbolic = %T.loc15_14.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %T.as_type.loc15_21.1: type = facet_access_type %T.ref [symbolic = %T.as_type.loc15_21.2 (constants.%T.as_type)]
|
||||
// CHECK:STDOUT: %.loc15: type = converted %T.ref, %T.as_type.loc15_21.1 [symbolic = %T.as_type.loc15_21.2 (constants.%T.as_type)]
|
||||
// CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [template = constants.%J.type]
|
||||
// CHECK:STDOUT: %J.ref: type = name_ref J, file.%J.decl [concrete = constants.%J.type]
|
||||
// CHECK:STDOUT: %T.param: %I.type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: %T.loc15_14.1: %I.type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc15_14.2 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness.loc15: <witness> = impl_witness (), @impl.2(constants.%T) [symbolic = @impl.2.%impl_witness (constants.%impl_witness.1896b7.2)]
|
||||
@@ -481,38 +481,38 @@ impl forall [T:! type] T as I {
|
||||
// CHECK:STDOUT: --- same_type_different_spelling.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %C: type = class_type @C [template]
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [template]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [concrete]
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete]
|
||||
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [template]
|
||||
// CHECK:STDOUT: %tuple.type: type = tuple_type (type, type) [template]
|
||||
// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template]
|
||||
// CHECK:STDOUT: %tuple: %tuple.type = tuple_value (%C, %C) [template]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [concrete]
|
||||
// CHECK:STDOUT: %tuple.type: type = tuple_type (type, type) [concrete]
|
||||
// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete]
|
||||
// CHECK:STDOUT: %tuple: %tuple.type = tuple_value (%C, %C) [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .C = %C.decl
|
||||
// CHECK:STDOUT: .I = %I.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [template = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl.1 [template] {} {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type]
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl.1 [concrete] {} {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness.loc13: <witness> = impl_witness () [template = constants.%impl_witness]
|
||||
// CHECK:STDOUT: impl_decl @impl.2 [template] {} {
|
||||
// CHECK:STDOUT: %C.ref.loc14_7: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %C.ref.loc14_10: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %impl_witness.loc13: <witness> = impl_witness () [concrete = constants.%impl_witness]
|
||||
// CHECK:STDOUT: impl_decl @impl.2 [concrete] {} {
|
||||
// CHECK:STDOUT: %C.ref.loc14_7: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %C.ref.loc14_10: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %.loc14_11.1: %tuple.type = tuple_literal (%C.ref.loc14_7, %C.ref.loc14_10)
|
||||
// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [template = constants.%int_0]
|
||||
// CHECK:STDOUT: %tuple: %tuple.type = tuple_value (%C.ref.loc14_7, %C.ref.loc14_10) [template = constants.%tuple]
|
||||
// CHECK:STDOUT: %.loc14_11.2: %tuple.type = converted %.loc14_11.1, %tuple [template = constants.%tuple]
|
||||
// CHECK:STDOUT: %tuple.elem0: type = tuple_access %.loc14_11.2, element0 [template = constants.%C]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type]
|
||||
// CHECK:STDOUT: %int_0: Core.IntLiteral = int_value 0 [concrete = constants.%int_0]
|
||||
// CHECK:STDOUT: %tuple: %tuple.type = tuple_value (%C.ref.loc14_7, %C.ref.loc14_10) [concrete = constants.%tuple]
|
||||
// CHECK:STDOUT: %.loc14_11.2: %tuple.type = converted %.loc14_11.1, %tuple [concrete = constants.%tuple]
|
||||
// CHECK:STDOUT: %tuple.elem0: type = tuple_access %.loc14_11.2, element0 [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness.loc14: <witness> = impl_witness () [template = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %impl_witness.loc14: <witness> = impl_witness () [concrete = constants.%impl_witness]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @I {
|
||||
@@ -538,11 +538,11 @@ impl forall [T:! type] T as I {
|
||||
// CHECK:STDOUT: --- fail_redefinition_generic_regions.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [template]
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete]
|
||||
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %impl_witness.1f09a1.1: <witness> = impl_witness (), @impl.1(%T) [symbolic]
|
||||
// CHECK:STDOUT: %A.type: type = fn_type @A, @impl.1(%T) [symbolic]
|
||||
// CHECK:STDOUT: %A: %A.type = struct_value () [symbolic]
|
||||
@@ -553,31 +553,31 @@ impl forall [T:! type] T as I {
|
||||
// CHECK:STDOUT: %C: %C.type = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %D.type: type = fn_type @D, @impl.2(%T) [symbolic]
|
||||
// CHECK:STDOUT: %D: %D.type = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [template]
|
||||
// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete]
|
||||
// CHECK:STDOUT: %C.specific_fn: <specific function> = specific_function %C, @C(%T) [symbolic]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .I = %I.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [template = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl.1 [template] {
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl.1 [concrete] {
|
||||
// CHECK:STDOUT: %T.patt.loc4_14.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_14.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc4_14.1, runtime_param<none> [symbolic = %T.patt.loc4_14.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc4_14.1 [symbolic = %T.loc4_14.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: %T.param: type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %T.loc4_14.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_14.2 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness.loc4: <witness> = impl_witness (), @impl.1(constants.%T) [symbolic = @impl.1.%impl_witness (constants.%impl_witness.1f09a1.1)]
|
||||
// CHECK:STDOUT: impl_decl @impl.2 [template] {
|
||||
// CHECK:STDOUT: impl_decl @impl.2 [concrete] {
|
||||
// CHECK:STDOUT: %T.patt.loc15_14.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc15_14.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc15_14.1, runtime_param<none> [symbolic = %T.patt.loc15_14.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc15_14.1 [symbolic = %T.loc15_14.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: %T.param: type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %T.loc15_14.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc15_14.2 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -630,7 +630,7 @@ impl forall [T:! type] T as I {
|
||||
// CHECK:STDOUT: %return.param_patt: %empty_tuple.type = out_param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc19_14.1: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc19_14.2: type = converted %.loc19_14.1, constants.%empty_tuple.type [template = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %.loc19_14.2: type = converted %.loc19_14.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %return.param: ref %empty_tuple.type = out_param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref %empty_tuple.type = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
@@ -639,7 +639,7 @@ impl forall [T:! type] T as I {
|
||||
// CHECK:STDOUT: %return.param_patt: %empty_tuple.type = out_param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc20_14.1: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc20_14.2: type = converted %.loc20_14.1, constants.%empty_tuple.type [template = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %.loc20_14.2: type = converted %.loc20_14.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %return.param: ref %empty_tuple.type = out_param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref %empty_tuple.type = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
@@ -676,8 +676,8 @@ impl forall [T:! type] T as I {
|
||||
// CHECK:STDOUT: fn() -> %empty_tuple.type {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %.loc19_26: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [template = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc19_27: %empty_tuple.type = converted %.loc19_26, %empty_tuple [template = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc19_27: %empty_tuple.type = converted %.loc19_26, %empty_tuple [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: return %.loc19_27
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -697,8 +697,8 @@ impl forall [T:! type] T as I {
|
||||
// CHECK:STDOUT: %C.call: init %empty_tuple.type = call %C.specific_fn.loc21_12.1()
|
||||
// CHECK:STDOUT: %.loc21_14.1: ref %empty_tuple.type = temporary_storage
|
||||
// CHECK:STDOUT: %.loc21_14.2: ref %empty_tuple.type = temporary %.loc21_14.1, %C.call
|
||||
// CHECK:STDOUT: %tuple: %empty_tuple.type = tuple_value () [template = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc21_15: %empty_tuple.type = converted %C.call, %tuple [template = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc21_15: %empty_tuple.type = converted %C.call, %tuple [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: return %.loc21_15
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
+267
-267
File diff suppressed because it is too large
Load Diff
+245
-245
@@ -79,21 +79,21 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt);
|
||||
// CHECK:STDOUT: --- generic_impl.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %Add.type: type = facet_type <@Add> [template]
|
||||
// CHECK:STDOUT: %Add.type: type = facet_type <@Add> [concrete]
|
||||
// CHECK:STDOUT: %Self: %Add.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic]
|
||||
// CHECK:STDOUT: %Op.type.31b: type = fn_type @Op.1 [template]
|
||||
// CHECK:STDOUT: %Op.d59: %Op.type.31b = struct_value () [template]
|
||||
// CHECK:STDOUT: %Add.assoc_type: type = assoc_entity_type %Add.type [template]
|
||||
// CHECK:STDOUT: %assoc0: %Add.assoc_type = assoc_entity element0, @Add.%Op.decl [template]
|
||||
// CHECK:STDOUT: %IntLiteral.type: type = fn_type @IntLiteral [template]
|
||||
// CHECK:STDOUT: %IntLiteral: %IntLiteral.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %Int.type: type = fn_type @Int [template]
|
||||
// CHECK:STDOUT: %Int: %Int.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %Op.type.31b: type = fn_type @Op.1 [concrete]
|
||||
// CHECK:STDOUT: %Op.d59: %Op.type.31b = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Add.assoc_type: type = assoc_entity_type %Add.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0: %Add.assoc_type = assoc_entity element0, @Add.%Op.decl [concrete]
|
||||
// CHECK:STDOUT: %IntLiteral.type: type = fn_type @IntLiteral [concrete]
|
||||
// CHECK:STDOUT: %IntLiteral: %IntLiteral.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Int.type: type = fn_type @Int [concrete]
|
||||
// CHECK:STDOUT: %Int: %Int.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic]
|
||||
// CHECK:STDOUT: %N.patt: Core.IntLiteral = symbolic_binding_pattern N, 0 [symbolic]
|
||||
// CHECK:STDOUT: %MyInt.type: type = generic_class_type @MyInt [template]
|
||||
// CHECK:STDOUT: %MyInt.generic: %MyInt.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %MyInt.type: type = generic_class_type @MyInt [concrete]
|
||||
// CHECK:STDOUT: %MyInt.generic: %MyInt.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %MyInt: type = class_type @MyInt, @MyInt(%N) [symbolic]
|
||||
// CHECK:STDOUT: %iN.builtin: type = int_type signed, %N [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.f1b: <witness> = require_complete_type %iN.builtin [symbolic]
|
||||
@@ -103,76 +103,76 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt);
|
||||
// CHECK:STDOUT: %Op.8bc: %Op.type.883 = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.fc7: <witness> = require_complete_type %MyInt [symbolic]
|
||||
// CHECK:STDOUT: %Add.facet: %Add.type = facet_value %MyInt, %impl_witness [symbolic]
|
||||
// CHECK:STDOUT: %Double.type: type = fn_type @Double [template]
|
||||
// CHECK:STDOUT: %Double: %Double.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %Double.type: type = fn_type @Double [concrete]
|
||||
// CHECK:STDOUT: %Double: %Double.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %.dcc: type = fn_type_with_self_type %Op.type.31b, %Add.facet [symbolic]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Add = %Add.decl
|
||||
// CHECK:STDOUT: .IntLiteral = %IntLiteral.decl
|
||||
// CHECK:STDOUT: .Int = %Int.decl
|
||||
// CHECK:STDOUT: .MyInt = %MyInt.decl
|
||||
// CHECK:STDOUT: .Double = %Double.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Add.decl: type = interface_decl @Add [template = constants.%Add.type] {} {}
|
||||
// CHECK:STDOUT: %IntLiteral.decl: %IntLiteral.type = fn_decl @IntLiteral [template = constants.%IntLiteral] {
|
||||
// CHECK:STDOUT: %Add.decl: type = interface_decl @Add [concrete = constants.%Add.type] {} {}
|
||||
// CHECK:STDOUT: %IntLiteral.decl: %IntLiteral.type = fn_decl @IntLiteral [concrete = constants.%IntLiteral] {
|
||||
// CHECK:STDOUT: %return.patt: type = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: type = out_param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %return.param: ref type = out_param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref type = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Int.decl: %Int.type = fn_decl @Int [template = constants.%Int] {
|
||||
// CHECK:STDOUT: %Int.decl: %Int.type = fn_decl @Int [concrete = constants.%Int] {
|
||||
// CHECK:STDOUT: %n.patt: Core.IntLiteral = binding_pattern n
|
||||
// CHECK:STDOUT: %n.param_patt: Core.IntLiteral = value_param_pattern %n.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: type = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: type = out_param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %n.param: Core.IntLiteral = value_param runtime_param0
|
||||
// CHECK:STDOUT: %.loc9_22.1: type = splice_block %.loc9_22.3 [template = Core.IntLiteral] {
|
||||
// CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, file.%IntLiteral.decl [template = constants.%IntLiteral]
|
||||
// CHECK:STDOUT: %int_literal.make_type: init type = call %IntLiteral.ref() [template = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %.loc9_22.2: type = value_of_initializer %int_literal.make_type [template = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %.loc9_22.3: type = converted %int_literal.make_type, %.loc9_22.2 [template = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %.loc9_22.1: type = splice_block %.loc9_22.3 [concrete = Core.IntLiteral] {
|
||||
// CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, file.%IntLiteral.decl [concrete = constants.%IntLiteral]
|
||||
// CHECK:STDOUT: %int_literal.make_type: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %.loc9_22.2: type = value_of_initializer %int_literal.make_type [concrete = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %.loc9_22.3: type = converted %int_literal.make_type, %.loc9_22.2 [concrete = Core.IntLiteral]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %n: Core.IntLiteral = bind_name n, %n.param
|
||||
// CHECK:STDOUT: %return.param: ref type = out_param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref type = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %MyInt.decl: %MyInt.type = class_decl @MyInt [template = constants.%MyInt.generic] {
|
||||
// CHECK:STDOUT: %MyInt.decl: %MyInt.type = class_decl @MyInt [concrete = constants.%MyInt.generic] {
|
||||
// CHECK:STDOUT: %N.patt.loc11_13.1: Core.IntLiteral = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc11_13.2 (constants.%N.patt)]
|
||||
// CHECK:STDOUT: %N.param_patt: Core.IntLiteral = value_param_pattern %N.patt.loc11_13.1, runtime_param<none> [symbolic = %N.patt.loc11_13.2 (constants.%N.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %N.param: Core.IntLiteral = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %.loc11_28.1: type = splice_block %.loc11_28.3 [template = Core.IntLiteral] {
|
||||
// CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, file.%IntLiteral.decl [template = constants.%IntLiteral]
|
||||
// CHECK:STDOUT: %int_literal.make_type: init type = call %IntLiteral.ref() [template = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %.loc11_28.2: type = value_of_initializer %int_literal.make_type [template = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %.loc11_28.3: type = converted %int_literal.make_type, %.loc11_28.2 [template = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %.loc11_28.1: type = splice_block %.loc11_28.3 [concrete = Core.IntLiteral] {
|
||||
// CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, file.%IntLiteral.decl [concrete = constants.%IntLiteral]
|
||||
// CHECK:STDOUT: %int_literal.make_type: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %.loc11_28.2: type = value_of_initializer %int_literal.make_type [concrete = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %.loc11_28.3: type = converted %int_literal.make_type, %.loc11_28.2 [concrete = Core.IntLiteral]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %N.loc11_13.1: Core.IntLiteral = bind_symbolic_name N, 0, %N.param [symbolic = %N.loc11_13.2 (constants.%N)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: impl_decl @impl [template] {
|
||||
// CHECK:STDOUT: impl_decl @impl [concrete] {
|
||||
// CHECK:STDOUT: %N.patt.loc15_14.1: Core.IntLiteral = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc15_14.2 (constants.%N.patt)]
|
||||
// CHECK:STDOUT: %N.param_patt: Core.IntLiteral = value_param_pattern %N.patt.loc15_14.1, runtime_param<none> [symbolic = %N.patt.loc15_14.2 (constants.%N.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %MyInt.ref: %MyInt.type = name_ref MyInt, file.%MyInt.decl [template = constants.%MyInt.generic]
|
||||
// CHECK:STDOUT: %MyInt.ref: %MyInt.type = name_ref MyInt, file.%MyInt.decl [concrete = constants.%MyInt.generic]
|
||||
// CHECK:STDOUT: %N.ref: Core.IntLiteral = name_ref N, %N.loc15_14.1 [symbolic = %N.loc15_14.2 (constants.%N)]
|
||||
// CHECK:STDOUT: %MyInt.loc15_39.1: type = class_type @MyInt, @MyInt(constants.%N) [symbolic = %MyInt.loc15_39.2 (constants.%MyInt)]
|
||||
// CHECK:STDOUT: %Add.ref: type = name_ref Add, file.%Add.decl [template = constants.%Add.type]
|
||||
// CHECK:STDOUT: %Add.ref: type = name_ref Add, file.%Add.decl [concrete = constants.%Add.type]
|
||||
// CHECK:STDOUT: %N.param: Core.IntLiteral = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %.loc15_29.1: type = splice_block %.loc15_29.3 [template = Core.IntLiteral] {
|
||||
// CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, file.%IntLiteral.decl [template = constants.%IntLiteral]
|
||||
// CHECK:STDOUT: %int_literal.make_type: init type = call %IntLiteral.ref() [template = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %.loc15_29.2: type = value_of_initializer %int_literal.make_type [template = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %.loc15_29.3: type = converted %int_literal.make_type, %.loc15_29.2 [template = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %.loc15_29.1: type = splice_block %.loc15_29.3 [concrete = Core.IntLiteral] {
|
||||
// CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, file.%IntLiteral.decl [concrete = constants.%IntLiteral]
|
||||
// CHECK:STDOUT: %int_literal.make_type: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %.loc15_29.2: type = value_of_initializer %int_literal.make_type [concrete = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %.loc15_29.3: type = converted %int_literal.make_type, %.loc15_29.2 [concrete = Core.IntLiteral]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %N.loc15_14.1: Core.IntLiteral = bind_symbolic_name N, 0, %N.param [symbolic = %N.loc15_14.2 (constants.%N)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%Op.decl), @impl(constants.%N) [symbolic = @impl.%impl_witness (constants.%impl_witness)]
|
||||
// CHECK:STDOUT: %Double.decl: %Double.type = fn_decl @Double [template = constants.%Double] {
|
||||
// CHECK:STDOUT: %Double.decl: %Double.type = fn_decl @Double [concrete = constants.%Double] {
|
||||
// CHECK:STDOUT: %N.patt.loc19_11.1: Core.IntLiteral = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc19_11.2 (constants.%N.patt)]
|
||||
// CHECK:STDOUT: %N.param_patt: Core.IntLiteral = value_param_pattern %N.patt.loc19_11.1, runtime_param<none> [symbolic = %N.patt.loc19_11.2 (constants.%N.patt)]
|
||||
// CHECK:STDOUT: %x.patt: @Double.%MyInt.loc19_39.2 (%MyInt) = binding_pattern x
|
||||
@@ -180,20 +180,20 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt);
|
||||
// CHECK:STDOUT: %return.patt: @Double.%MyInt.loc19_39.2 (%MyInt) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @Double.%MyInt.loc19_39.2 (%MyInt) = out_param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %MyInt.ref.loc19_45: %MyInt.type = name_ref MyInt, file.%MyInt.decl [template = constants.%MyInt.generic]
|
||||
// CHECK:STDOUT: %MyInt.ref.loc19_45: %MyInt.type = name_ref MyInt, file.%MyInt.decl [concrete = constants.%MyInt.generic]
|
||||
// CHECK:STDOUT: %N.ref.loc19_51: Core.IntLiteral = name_ref N, %N.loc19_11.1 [symbolic = %N.loc19_11.2 (constants.%N)]
|
||||
// CHECK:STDOUT: %MyInt.loc19_52: type = class_type @MyInt, @MyInt(constants.%N) [symbolic = %MyInt.loc19_39.2 (constants.%MyInt)]
|
||||
// CHECK:STDOUT: %N.param: Core.IntLiteral = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %.loc19_26.1: type = splice_block %.loc19_26.3 [template = Core.IntLiteral] {
|
||||
// CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, file.%IntLiteral.decl [template = constants.%IntLiteral]
|
||||
// CHECK:STDOUT: %int_literal.make_type: init type = call %IntLiteral.ref() [template = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %.loc19_26.2: type = value_of_initializer %int_literal.make_type [template = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %.loc19_26.3: type = converted %int_literal.make_type, %.loc19_26.2 [template = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %.loc19_26.1: type = splice_block %.loc19_26.3 [concrete = Core.IntLiteral] {
|
||||
// CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, file.%IntLiteral.decl [concrete = constants.%IntLiteral]
|
||||
// CHECK:STDOUT: %int_literal.make_type: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %.loc19_26.2: type = value_of_initializer %int_literal.make_type [concrete = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %.loc19_26.3: type = converted %int_literal.make_type, %.loc19_26.2 [concrete = Core.IntLiteral]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %N.loc19_11.1: Core.IntLiteral = bind_symbolic_name N, 0, %N.param [symbolic = %N.loc19_11.2 (constants.%N)]
|
||||
// CHECK:STDOUT: %x.param: @Double.%MyInt.loc19_39.2 (%MyInt) = value_param runtime_param0
|
||||
// CHECK:STDOUT: %.loc19_39: type = splice_block %MyInt.loc19_39.1 [symbolic = %MyInt.loc19_39.2 (constants.%MyInt)] {
|
||||
// CHECK:STDOUT: %MyInt.ref.loc19_32: %MyInt.type = name_ref MyInt, file.%MyInt.decl [template = constants.%MyInt.generic]
|
||||
// CHECK:STDOUT: %MyInt.ref.loc19_32: %MyInt.type = name_ref MyInt, file.%MyInt.decl [concrete = constants.%MyInt.generic]
|
||||
// CHECK:STDOUT: %N.ref.loc19_38: Core.IntLiteral = name_ref N, %N.loc19_11.1 [symbolic = %N.loc19_11.2 (constants.%N)]
|
||||
// CHECK:STDOUT: %MyInt.loc19_39.1: type = class_type @MyInt, @MyInt(constants.%N) [symbolic = %MyInt.loc19_39.2 (constants.%MyInt)]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -205,7 +205,7 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt);
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @Add {
|
||||
// CHECK:STDOUT: %Self: %Add.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self]
|
||||
// CHECK:STDOUT: %Op.decl: %Op.type.31b = fn_decl @Op.1 [template = constants.%Op.d59] {
|
||||
// CHECK:STDOUT: %Op.decl: %Op.type.31b = fn_decl @Op.1 [concrete = constants.%Op.d59] {
|
||||
// CHECK:STDOUT: %self.patt: @Op.1.%Self.as_type.loc5_15.1 (%Self.as_type) = binding_pattern self
|
||||
// CHECK:STDOUT: %self.param_patt: @Op.1.%Self.as_type.loc5_15.1 (%Self.as_type) = value_param_pattern %self.patt, runtime_param0
|
||||
// CHECK:STDOUT: %other.patt: @Op.1.%Self.as_type.loc5_15.1 (%Self.as_type) = binding_pattern other
|
||||
@@ -233,7 +233,7 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt);
|
||||
// CHECK:STDOUT: %return.param: ref @Op.1.%Self.as_type.loc5_15.1 (%Self.as_type) = out_param runtime_param2
|
||||
// CHECK:STDOUT: %return: ref @Op.1.%Self.as_type.loc5_15.1 (%Self.as_type) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %assoc0: %Add.assoc_type = assoc_entity element0, %Op.decl [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %assoc0: %Add.assoc_type = assoc_entity element0, %Op.decl [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -288,12 +288,12 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt);
|
||||
// CHECK:STDOUT: %complete_type.loc13_1.2: <witness> = complete_type_witness @MyInt.%iN.builtin (%iN.builtin) [symbolic = %complete_type.loc13_1.2 (constants.%complete_type)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class {
|
||||
// CHECK:STDOUT: %Int.ref: %Int.type = name_ref Int, file.%Int.decl [template = constants.%Int]
|
||||
// CHECK:STDOUT: %Int.ref: %Int.type = name_ref Int, file.%Int.decl [concrete = constants.%Int]
|
||||
// CHECK:STDOUT: %N.ref: Core.IntLiteral = name_ref N, %N.loc11_13.1 [symbolic = %N.loc11_13.2 (constants.%N)]
|
||||
// CHECK:STDOUT: %int.make_type_signed: init type = call %Int.ref(%N.ref) [symbolic = %iN.builtin (constants.%iN.builtin)]
|
||||
// CHECK:STDOUT: %.loc12_15.1: type = value_of_initializer %int.make_type_signed [symbolic = %iN.builtin (constants.%iN.builtin)]
|
||||
// CHECK:STDOUT: %.loc12_15.2: type = converted %int.make_type_signed, %.loc12_15.1 [symbolic = %iN.builtin (constants.%iN.builtin)]
|
||||
// CHECK:STDOUT: adapt_decl %.loc12_15.2 [template]
|
||||
// CHECK:STDOUT: adapt_decl %.loc12_15.2 [concrete]
|
||||
// CHECK:STDOUT: %complete_type.loc13_1.1: <witness> = complete_type_witness %iN.builtin [symbolic = %complete_type.loc13_1.2 (constants.%complete_type)]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type.loc13_1.1
|
||||
// CHECK:STDOUT:
|
||||
@@ -338,8 +338,8 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt);
|
||||
// CHECK:STDOUT: fn[%N.param_patt: Core.IntLiteral](%x.param_patt: @Double.%MyInt.loc19_39.2 (%MyInt)) -> @Double.%MyInt.loc19_39.2 (%MyInt) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %x.ref.loc20_10: @Double.%MyInt.loc19_39.2 (%MyInt) = name_ref x, %x
|
||||
// CHECK:STDOUT: %Add.ref: type = name_ref Add, file.%Add.decl [template = constants.%Add.type]
|
||||
// CHECK:STDOUT: %Op.ref: %Add.assoc_type = name_ref Op, @Add.%assoc0 [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %Add.ref: type = name_ref Add, file.%Add.decl [concrete = constants.%Add.type]
|
||||
// CHECK:STDOUT: %Op.ref: %Add.assoc_type = name_ref Op, @Add.%assoc0 [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0: @Double.%.loc20_11 (%.dcc) = impl_witness_access constants.%impl_witness, element0 [symbolic = %Op (constants.%Op.8bc)]
|
||||
// CHECK:STDOUT: %bound_method: <bound method> = bound_method %x.ref.loc20_10, %impl.elem0
|
||||
// CHECK:STDOUT: %x.ref.loc20_21: @Double.%MyInt.loc19_39.2 (%MyInt) = name_ref x, %x
|
||||
@@ -409,65 +409,65 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt);
|
||||
// CHECK:STDOUT: --- use_generic_impl.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %MyInt.type: type = generic_class_type @MyInt [template]
|
||||
// CHECK:STDOUT: %MyInt.generic: %MyInt.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %MyInt.type: type = generic_class_type @MyInt [concrete]
|
||||
// CHECK:STDOUT: %MyInt.generic: %MyInt.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %N: Core.IntLiteral = bind_symbolic_name N, 0 [symbolic]
|
||||
// CHECK:STDOUT: %iN.builtin: type = int_type signed, %N [symbolic]
|
||||
// CHECK:STDOUT: %complete_type.a87: <witness> = complete_type_witness %iN.builtin [symbolic]
|
||||
// CHECK:STDOUT: %MyInt.09f: type = class_type @MyInt, @MyInt(%N) [symbolic]
|
||||
// CHECK:STDOUT: %N.patt: Core.IntLiteral = symbolic_binding_pattern N, 0 [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.f1b: <witness> = require_complete_type %iN.builtin [symbolic]
|
||||
// CHECK:STDOUT: %int_64: Core.IntLiteral = int_value 64 [template]
|
||||
// CHECK:STDOUT: %MyInt.f30: type = class_type @MyInt, @MyInt(%int_64) [template]
|
||||
// CHECK:STDOUT: %LocalDouble.type: type = fn_type @LocalDouble [template]
|
||||
// CHECK:STDOUT: %LocalDouble: %LocalDouble.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %i64.builtin: type = int_type signed, %int_64 [template]
|
||||
// CHECK:STDOUT: %complete_type.4a1: <witness> = complete_type_witness %i64.builtin [template]
|
||||
// CHECK:STDOUT: %Add.type: type = facet_type <@Add> [template]
|
||||
// CHECK:STDOUT: %int_64: Core.IntLiteral = int_value 64 [concrete]
|
||||
// CHECK:STDOUT: %MyInt.f30: type = class_type @MyInt, @MyInt(%int_64) [concrete]
|
||||
// CHECK:STDOUT: %LocalDouble.type: type = fn_type @LocalDouble [concrete]
|
||||
// CHECK:STDOUT: %LocalDouble: %LocalDouble.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %i64.builtin: type = int_type signed, %int_64 [concrete]
|
||||
// CHECK:STDOUT: %complete_type.4a1: <witness> = complete_type_witness %i64.builtin [concrete]
|
||||
// CHECK:STDOUT: %Add.type: type = facet_type <@Add> [concrete]
|
||||
// CHECK:STDOUT: %Self: %Add.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Add.assoc_type: type = assoc_entity_type %Add.type [template]
|
||||
// CHECK:STDOUT: %assoc0: %Add.assoc_type = assoc_entity element0, imports.%Main.import_ref.5a3 [template]
|
||||
// CHECK:STDOUT: %Add.assoc_type: type = assoc_entity_type %Add.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0: %Add.assoc_type = assoc_entity element0, imports.%Main.import_ref.5a3 [concrete]
|
||||
// CHECK:STDOUT: %impl_witness.3a3: <witness> = impl_witness (imports.%Main.import_ref.19b), @impl(%N) [symbolic]
|
||||
// CHECK:STDOUT: %Op.type.883: type = fn_type @Op.1, @impl(%N) [symbolic]
|
||||
// CHECK:STDOUT: %Op.8bc: %Op.type.883 = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.fc7: <witness> = require_complete_type %MyInt.09f [symbolic]
|
||||
// CHECK:STDOUT: %impl_witness.8d6: <witness> = impl_witness (imports.%Main.import_ref.19b), @impl(%int_64) [template]
|
||||
// CHECK:STDOUT: %impl_witness.8d6: <witness> = impl_witness (imports.%Main.import_ref.19b), @impl(%int_64) [concrete]
|
||||
// CHECK:STDOUT: %impl_witness.7e5be3.1: <witness> = impl_witness (imports.%Main.import_ref.464c51.1), @impl(%N) [symbolic]
|
||||
// CHECK:STDOUT: %Op.type.5a6: type = fn_type @Op.1, @impl(%int_64) [template]
|
||||
// CHECK:STDOUT: %Op.cf9: %Op.type.5a6 = struct_value () [template]
|
||||
// CHECK:STDOUT: %Op.type.31b: type = fn_type @Op.2 [template]
|
||||
// CHECK:STDOUT: %Op.type.5a6: type = fn_type @Op.1, @impl(%int_64) [concrete]
|
||||
// CHECK:STDOUT: %Op.cf9: %Op.type.5a6 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Op.type.31b: type = fn_type @Op.2 [concrete]
|
||||
// CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic]
|
||||
// CHECK:STDOUT: %Add.facet.3ca: %Add.type = facet_value %MyInt.f30, %impl_witness.8d6 [template]
|
||||
// CHECK:STDOUT: %.3ca: type = fn_type_with_self_type %Op.type.31b, %Add.facet.3ca [template]
|
||||
// CHECK:STDOUT: %CallImportedDouble.type: type = fn_type @CallImportedDouble [template]
|
||||
// CHECK:STDOUT: %CallImportedDouble: %CallImportedDouble.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %Double.type: type = fn_type @Double [template]
|
||||
// CHECK:STDOUT: %Double: %Double.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %Add.facet.3ca: %Add.type = facet_value %MyInt.f30, %impl_witness.8d6 [concrete]
|
||||
// CHECK:STDOUT: %.3ca: type = fn_type_with_self_type %Op.type.31b, %Add.facet.3ca [concrete]
|
||||
// CHECK:STDOUT: %CallImportedDouble.type: type = fn_type @CallImportedDouble [concrete]
|
||||
// CHECK:STDOUT: %CallImportedDouble: %CallImportedDouble.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Double.type: type = fn_type @Double [concrete]
|
||||
// CHECK:STDOUT: %Double: %Double.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %impl_witness.7e5be3.2: <witness> = impl_witness (imports.%Main.import_ref.464c51.2), @impl(%N) [symbolic]
|
||||
// CHECK:STDOUT: %Add.facet.9a8: %Add.type = facet_value %MyInt.09f, %impl_witness.7e5be3.2 [symbolic]
|
||||
// CHECK:STDOUT: %.72d: type = fn_type_with_self_type %Op.type.31b, %Add.facet.9a8 [symbolic]
|
||||
// CHECK:STDOUT: %Double.specific_fn: <specific function> = specific_function %Double, @Double(%int_64) [template]
|
||||
// CHECK:STDOUT: %impl_witness.bb3: <witness> = impl_witness (imports.%Main.import_ref.464c51.2), @impl(%int_64) [template]
|
||||
// CHECK:STDOUT: %Add.facet.22c: %Add.type = facet_value %MyInt.f30, %impl_witness.bb3 [template]
|
||||
// CHECK:STDOUT: %.41c: type = fn_type_with_self_type %Op.type.31b, %Add.facet.22c [template]
|
||||
// CHECK:STDOUT: %Double.specific_fn: <specific function> = specific_function %Double, @Double(%int_64) [concrete]
|
||||
// CHECK:STDOUT: %impl_witness.bb3: <witness> = impl_witness (imports.%Main.import_ref.464c51.2), @impl(%int_64) [concrete]
|
||||
// CHECK:STDOUT: %Add.facet.22c: %Add.type = facet_value %MyInt.f30, %impl_witness.bb3 [concrete]
|
||||
// CHECK:STDOUT: %.41c: type = fn_type_with_self_type %Op.type.31b, %Add.facet.22c [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Main.Add: type = import_ref Main//generic_impl, Add, loaded [template = constants.%Add.type]
|
||||
// CHECK:STDOUT: %Main.Add: type = import_ref Main//generic_impl, Add, loaded [concrete = constants.%Add.type]
|
||||
// CHECK:STDOUT: %Main.IntLiteral = import_ref Main//generic_impl, IntLiteral, unloaded
|
||||
// CHECK:STDOUT: %Main.Int = import_ref Main//generic_impl, Int, unloaded
|
||||
// CHECK:STDOUT: %Main.MyInt: %MyInt.type = import_ref Main//generic_impl, MyInt, loaded [template = constants.%MyInt.generic]
|
||||
// CHECK:STDOUT: %Main.Double: %Double.type = import_ref Main//generic_impl, Double, loaded [template = constants.%Double]
|
||||
// CHECK:STDOUT: %Main.MyInt: %MyInt.type = import_ref Main//generic_impl, MyInt, loaded [concrete = constants.%MyInt.generic]
|
||||
// CHECK:STDOUT: %Main.Double: %Double.type = import_ref Main//generic_impl, Double, loaded [concrete = constants.%Double]
|
||||
// CHECK:STDOUT: %Main.import_ref.50eccf.1: Core.IntLiteral = import_ref Main//generic_impl, loc11_13, loaded [symbolic = @MyInt.%N (constants.%N)]
|
||||
// CHECK:STDOUT: %Main.import_ref.9e9: <witness> = import_ref Main//generic_impl, loc13_1, loaded [symbolic = @MyInt.%complete_type (constants.%complete_type.a87)]
|
||||
// CHECK:STDOUT: %Main.import_ref.697 = import_ref Main//generic_impl, inst89 [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.07c = import_ref Main//generic_impl, inst15 [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.db7: %Add.assoc_type = import_ref Main//generic_impl, loc5_41, loaded [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %Main.import_ref.db7: %Add.assoc_type = import_ref Main//generic_impl, loc5_41, loaded [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %Main.Op = import_ref Main//generic_impl, Op, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.33b: <witness> = import_ref Main//generic_impl, loc15_48, loaded [symbolic = @impl.%impl_witness (constants.%impl_witness.7e5be3.1)]
|
||||
// CHECK:STDOUT: %Main.import_ref.50eccf.2: Core.IntLiteral = import_ref Main//generic_impl, loc15_14, loaded [symbolic = @impl.%N (constants.%N)]
|
||||
// CHECK:STDOUT: %Main.import_ref.719: type = import_ref Main//generic_impl, loc15_39, loaded [symbolic = @impl.%MyInt (constants.%MyInt.09f)]
|
||||
// CHECK:STDOUT: %Main.import_ref.bf0: type = import_ref Main//generic_impl, loc15_44, loaded [template = constants.%Add.type]
|
||||
// CHECK:STDOUT: %Main.import_ref.bf0: type = import_ref Main//generic_impl, loc15_44, loaded [concrete = constants.%Add.type]
|
||||
// CHECK:STDOUT: %Main.import_ref.19b: @impl.%Op.type (%Op.type.883) = import_ref Main//generic_impl, loc16_42, loaded [symbolic = @impl.%Op (constants.%Op.8bc)]
|
||||
// CHECK:STDOUT: %Main.import_ref.50eccf.3: Core.IntLiteral = import_ref Main//generic_impl, loc15_14, loaded [symbolic = @impl.%N (constants.%N)]
|
||||
// CHECK:STDOUT: %Main.import_ref.e5e: %Add.type = import_ref Main//generic_impl, inst15 [no loc], loaded [symbolic = constants.%Self]
|
||||
@@ -476,7 +476,7 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt);
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Add = imports.%Main.Add
|
||||
// CHECK:STDOUT: .IntLiteral = imports.%Main.IntLiteral
|
||||
// CHECK:STDOUT: .Int = imports.%Main.Int
|
||||
@@ -486,39 +486,39 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt);
|
||||
// CHECK:STDOUT: .CallImportedDouble = %CallImportedDouble.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %default.import = import <none>
|
||||
// CHECK:STDOUT: %LocalDouble.decl: %LocalDouble.type = fn_decl @LocalDouble [template = constants.%LocalDouble] {
|
||||
// CHECK:STDOUT: %LocalDouble.decl: %LocalDouble.type = fn_decl @LocalDouble [concrete = constants.%LocalDouble] {
|
||||
// CHECK:STDOUT: %x.patt: %MyInt.f30 = binding_pattern x
|
||||
// CHECK:STDOUT: %x.param_patt: %MyInt.f30 = value_param_pattern %x.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: %MyInt.f30 = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %MyInt.f30 = out_param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %MyInt.ref.loc8_33: %MyInt.type = name_ref MyInt, imports.%Main.MyInt [template = constants.%MyInt.generic]
|
||||
// CHECK:STDOUT: %int_64.loc8_39: Core.IntLiteral = int_value 64 [template = constants.%int_64]
|
||||
// CHECK:STDOUT: %MyInt.loc8_41: type = class_type @MyInt, @MyInt(constants.%int_64) [template = constants.%MyInt.f30]
|
||||
// CHECK:STDOUT: %MyInt.ref.loc8_33: %MyInt.type = name_ref MyInt, imports.%Main.MyInt [concrete = constants.%MyInt.generic]
|
||||
// CHECK:STDOUT: %int_64.loc8_39: Core.IntLiteral = int_value 64 [concrete = constants.%int_64]
|
||||
// CHECK:STDOUT: %MyInt.loc8_41: type = class_type @MyInt, @MyInt(constants.%int_64) [concrete = constants.%MyInt.f30]
|
||||
// CHECK:STDOUT: %x.param: %MyInt.f30 = value_param runtime_param0
|
||||
// CHECK:STDOUT: %.loc8: type = splice_block %MyInt.loc8_27 [template = constants.%MyInt.f30] {
|
||||
// CHECK:STDOUT: %MyInt.ref.loc8_19: %MyInt.type = name_ref MyInt, imports.%Main.MyInt [template = constants.%MyInt.generic]
|
||||
// CHECK:STDOUT: %int_64.loc8_25: Core.IntLiteral = int_value 64 [template = constants.%int_64]
|
||||
// CHECK:STDOUT: %MyInt.loc8_27: type = class_type @MyInt, @MyInt(constants.%int_64) [template = constants.%MyInt.f30]
|
||||
// CHECK:STDOUT: %.loc8: type = splice_block %MyInt.loc8_27 [concrete = constants.%MyInt.f30] {
|
||||
// CHECK:STDOUT: %MyInt.ref.loc8_19: %MyInt.type = name_ref MyInt, imports.%Main.MyInt [concrete = constants.%MyInt.generic]
|
||||
// CHECK:STDOUT: %int_64.loc8_25: Core.IntLiteral = int_value 64 [concrete = constants.%int_64]
|
||||
// CHECK:STDOUT: %MyInt.loc8_27: type = class_type @MyInt, @MyInt(constants.%int_64) [concrete = constants.%MyInt.f30]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %x: %MyInt.f30 = bind_name x, %x.param
|
||||
// CHECK:STDOUT: %return.param: ref %MyInt.f30 = out_param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref %MyInt.f30 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %CallImportedDouble.decl: %CallImportedDouble.type = fn_decl @CallImportedDouble [template = constants.%CallImportedDouble] {
|
||||
// CHECK:STDOUT: %CallImportedDouble.decl: %CallImportedDouble.type = fn_decl @CallImportedDouble [concrete = constants.%CallImportedDouble] {
|
||||
// CHECK:STDOUT: %n.patt: %MyInt.f30 = binding_pattern n
|
||||
// CHECK:STDOUT: %n.param_patt: %MyInt.f30 = value_param_pattern %n.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: %MyInt.f30 = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %MyInt.f30 = out_param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %MyInt.ref.loc12_40: %MyInt.type = name_ref MyInt, imports.%Main.MyInt [template = constants.%MyInt.generic]
|
||||
// CHECK:STDOUT: %int_64.loc12_46: Core.IntLiteral = int_value 64 [template = constants.%int_64]
|
||||
// CHECK:STDOUT: %MyInt.loc12_48: type = class_type @MyInt, @MyInt(constants.%int_64) [template = constants.%MyInt.f30]
|
||||
// CHECK:STDOUT: %MyInt.ref.loc12_40: %MyInt.type = name_ref MyInt, imports.%Main.MyInt [concrete = constants.%MyInt.generic]
|
||||
// CHECK:STDOUT: %int_64.loc12_46: Core.IntLiteral = int_value 64 [concrete = constants.%int_64]
|
||||
// CHECK:STDOUT: %MyInt.loc12_48: type = class_type @MyInt, @MyInt(constants.%int_64) [concrete = constants.%MyInt.f30]
|
||||
// CHECK:STDOUT: %n.param: %MyInt.f30 = value_param runtime_param0
|
||||
// CHECK:STDOUT: %.loc12: type = splice_block %MyInt.loc12_34 [template = constants.%MyInt.f30] {
|
||||
// CHECK:STDOUT: %MyInt.ref.loc12_26: %MyInt.type = name_ref MyInt, imports.%Main.MyInt [template = constants.%MyInt.generic]
|
||||
// CHECK:STDOUT: %int_64.loc12_32: Core.IntLiteral = int_value 64 [template = constants.%int_64]
|
||||
// CHECK:STDOUT: %MyInt.loc12_34: type = class_type @MyInt, @MyInt(constants.%int_64) [template = constants.%MyInt.f30]
|
||||
// CHECK:STDOUT: %.loc12: type = splice_block %MyInt.loc12_34 [concrete = constants.%MyInt.f30] {
|
||||
// CHECK:STDOUT: %MyInt.ref.loc12_26: %MyInt.type = name_ref MyInt, imports.%Main.MyInt [concrete = constants.%MyInt.generic]
|
||||
// CHECK:STDOUT: %int_64.loc12_32: Core.IntLiteral = int_value 64 [concrete = constants.%int_64]
|
||||
// CHECK:STDOUT: %MyInt.loc12_34: type = class_type @MyInt, @MyInt(constants.%int_64) [concrete = constants.%MyInt.f30]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %n: %MyInt.f30 = bind_name n, %n.param
|
||||
// CHECK:STDOUT: %return.param: ref %MyInt.f30 = out_param runtime_param1
|
||||
@@ -570,9 +570,9 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt);
|
||||
// CHECK:STDOUT: fn @LocalDouble(%x.param_patt: %MyInt.f30) -> %MyInt.f30 {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %x.ref.loc9_10: %MyInt.f30 = name_ref x, %x
|
||||
// CHECK:STDOUT: %Add.ref: type = name_ref Add, imports.%Main.Add [template = constants.%Add.type]
|
||||
// CHECK:STDOUT: %Op.ref: %Add.assoc_type = name_ref Op, imports.%Main.import_ref.db7 [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0: %.3ca = impl_witness_access constants.%impl_witness.8d6, element0 [template = constants.%Op.cf9]
|
||||
// CHECK:STDOUT: %Add.ref: type = name_ref Add, imports.%Main.Add [concrete = constants.%Add.type]
|
||||
// CHECK:STDOUT: %Op.ref: %Add.assoc_type = name_ref Op, imports.%Main.import_ref.db7 [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0: %.3ca = impl_witness_access constants.%impl_witness.8d6, element0 [concrete = constants.%Op.cf9]
|
||||
// CHECK:STDOUT: %bound_method: <bound method> = bound_method %x.ref.loc9_10, %impl.elem0
|
||||
// CHECK:STDOUT: %x.ref.loc9_21: %MyInt.f30 = name_ref x, %x
|
||||
// CHECK:STDOUT: %specific_fn: <specific function> = specific_function %bound_method, @Op.1(constants.%int_64)
|
||||
@@ -600,9 +600,9 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt);
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @CallImportedDouble(%n.param_patt: %MyInt.f30) -> %MyInt.f30 {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %Double.ref: %Double.type = name_ref Double, imports.%Main.Double [template = constants.%Double]
|
||||
// CHECK:STDOUT: %Double.ref: %Double.type = name_ref Double, imports.%Main.Double [concrete = constants.%Double]
|
||||
// CHECK:STDOUT: %n.ref: %MyInt.f30 = name_ref n, %n
|
||||
// CHECK:STDOUT: %Double.specific_fn: <specific function> = specific_function %Double.ref, @Double(constants.%int_64) [template = constants.%Double.specific_fn]
|
||||
// CHECK:STDOUT: %Double.specific_fn: <specific function> = specific_function %Double.ref, @Double(constants.%int_64) [concrete = constants.%Double.specific_fn]
|
||||
// CHECK:STDOUT: %Double.call: init %MyInt.f30 = call %Double.specific_fn(%n.ref)
|
||||
// CHECK:STDOUT: %.loc13_19.1: %MyInt.f30 = value_of_initializer %Double.call
|
||||
// CHECK:STDOUT: %.loc13_19.2: %MyInt.f30 = converted %Double.call, %.loc13_19.1
|
||||
@@ -721,41 +721,41 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt);
|
||||
// CHECK:STDOUT: --- convert_symbolic.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %IntLiteral.type: type = fn_type @IntLiteral [template]
|
||||
// CHECK:STDOUT: %IntLiteral: %IntLiteral.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %Int.type: type = fn_type @Int [template]
|
||||
// CHECK:STDOUT: %Int: %Int.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template]
|
||||
// CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [template]
|
||||
// CHECK:STDOUT: %ToLiteral.type.e7c: type = fn_type @ToLiteral.1 [template]
|
||||
// CHECK:STDOUT: %ToLiteral.cf3: %ToLiteral.type.e7c = struct_value () [template]
|
||||
// CHECK:STDOUT: %FromLiteral.type: type = fn_type @FromLiteral [template]
|
||||
// CHECK:STDOUT: %FromLiteral: %FromLiteral.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %IntLiteral.type: type = fn_type @IntLiteral [concrete]
|
||||
// CHECK:STDOUT: %IntLiteral: %IntLiteral.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Int.type: type = fn_type @Int [concrete]
|
||||
// CHECK:STDOUT: %Int: %Int.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete]
|
||||
// CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [concrete]
|
||||
// CHECK:STDOUT: %ToLiteral.type.e7c: type = fn_type @ToLiteral.1 [concrete]
|
||||
// CHECK:STDOUT: %ToLiteral.cf3: %ToLiteral.type.e7c = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %FromLiteral.type: type = fn_type @FromLiteral [concrete]
|
||||
// CHECK:STDOUT: %FromLiteral: %FromLiteral.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %N.987: %i32.builtin = bind_symbolic_name N, 0 [symbolic]
|
||||
// CHECK:STDOUT: %N.patt.36b: %i32.builtin = symbolic_binding_pattern N, 0 [symbolic]
|
||||
// CHECK:STDOUT: %int.convert_checked.346: init Core.IntLiteral = call %ToLiteral.cf3(%N.987) [symbolic]
|
||||
// CHECK:STDOUT: %iN.builtin.016: type = int_type signed, %int.convert_checked.346 [symbolic]
|
||||
// CHECK:STDOUT: %Make.type: type = fn_type @Make [template]
|
||||
// CHECK:STDOUT: %Make: %Make.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %Make.type: type = fn_type @Make [concrete]
|
||||
// CHECK:STDOUT: %Make: %Make.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %require_complete.88f: <witness> = require_complete_type %iN.builtin.016 [symbolic]
|
||||
// CHECK:STDOUT: %Make.specific_fn: <specific function> = specific_function %Make, @Make(%N.987) [symbolic]
|
||||
// CHECK:STDOUT: %OtherInt: type = class_type @OtherInt [template]
|
||||
// CHECK:STDOUT: %ToLiteral.type.67d: type = fn_type @ToLiteral.2 [template]
|
||||
// CHECK:STDOUT: %ToLiteral.ec2: %ToLiteral.type.67d = struct_value () [template]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %i32.builtin [template]
|
||||
// CHECK:STDOUT: %OtherInt: type = class_type @OtherInt [concrete]
|
||||
// CHECK:STDOUT: %ToLiteral.type.67d: type = fn_type @ToLiteral.2 [concrete]
|
||||
// CHECK:STDOUT: %ToLiteral.ec2: %ToLiteral.type.67d = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %i32.builtin [concrete]
|
||||
// CHECK:STDOUT: %N.335: %OtherInt = bind_symbolic_name N, 0 [symbolic]
|
||||
// CHECK:STDOUT: %N.patt.59d: %OtherInt = symbolic_binding_pattern N, 0 [symbolic]
|
||||
// CHECK:STDOUT: %ToLiteral.bound: <bound method> = bound_method %N.335, %ToLiteral.ec2 [symbolic]
|
||||
// CHECK:STDOUT: %int.convert_checked.b6b: init Core.IntLiteral = call %ToLiteral.bound(%N.335) [symbolic]
|
||||
// CHECK:STDOUT: %iN.builtin.9ef: type = int_type signed, %int.convert_checked.b6b [symbolic]
|
||||
// CHECK:STDOUT: %MakeFromClass.type: type = fn_type @MakeFromClass [template]
|
||||
// CHECK:STDOUT: %MakeFromClass: %MakeFromClass.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %MakeFromClass.type: type = fn_type @MakeFromClass [concrete]
|
||||
// CHECK:STDOUT: %MakeFromClass: %MakeFromClass.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %require_complete.c7d: <witness> = require_complete_type %iN.builtin.9ef [symbolic]
|
||||
// CHECK:STDOUT: %MakeFromClass.specific_fn: <specific function> = specific_function %MakeFromClass, @MakeFromClass(%N.335) [symbolic]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .IntLiteral = %IntLiteral.decl
|
||||
// CHECK:STDOUT: .Int = %Int.decl
|
||||
// CHECK:STDOUT: .ToLiteral = %ToLiteral.decl.loc6
|
||||
@@ -764,82 +764,82 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt);
|
||||
// CHECK:STDOUT: .OtherInt = %OtherInt.decl
|
||||
// CHECK:STDOUT: .MakeFromClass = %MakeFromClass.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %IntLiteral.decl: %IntLiteral.type = fn_decl @IntLiteral [template = constants.%IntLiteral] {
|
||||
// CHECK:STDOUT: %IntLiteral.decl: %IntLiteral.type = fn_decl @IntLiteral [concrete = constants.%IntLiteral] {
|
||||
// CHECK:STDOUT: %return.patt: type = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: type = out_param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %return.param: ref type = out_param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref type = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Int.decl: %Int.type = fn_decl @Int [template = constants.%Int] {
|
||||
// CHECK:STDOUT: %Int.decl: %Int.type = fn_decl @Int [concrete = constants.%Int] {
|
||||
// CHECK:STDOUT: %n.patt: Core.IntLiteral = binding_pattern n
|
||||
// CHECK:STDOUT: %n.param_patt: Core.IntLiteral = value_param_pattern %n.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: type = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: type = out_param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %n.param: Core.IntLiteral = value_param runtime_param0
|
||||
// CHECK:STDOUT: %.loc5_22.1: type = splice_block %.loc5_22.3 [template = Core.IntLiteral] {
|
||||
// CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, file.%IntLiteral.decl [template = constants.%IntLiteral]
|
||||
// CHECK:STDOUT: %int_literal.make_type: init type = call %IntLiteral.ref() [template = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %.loc5_22.2: type = value_of_initializer %int_literal.make_type [template = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %.loc5_22.3: type = converted %int_literal.make_type, %.loc5_22.2 [template = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %.loc5_22.1: type = splice_block %.loc5_22.3 [concrete = Core.IntLiteral] {
|
||||
// CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, file.%IntLiteral.decl [concrete = constants.%IntLiteral]
|
||||
// CHECK:STDOUT: %int_literal.make_type: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %.loc5_22.2: type = value_of_initializer %int_literal.make_type [concrete = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %.loc5_22.3: type = converted %int_literal.make_type, %.loc5_22.2 [concrete = Core.IntLiteral]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %n: Core.IntLiteral = bind_name n, %n.param
|
||||
// CHECK:STDOUT: %return.param: ref type = out_param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref type = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %ToLiteral.decl.loc6: %ToLiteral.type.e7c = fn_decl @ToLiteral.1 [template = constants.%ToLiteral.cf3] {
|
||||
// CHECK:STDOUT: %ToLiteral.decl.loc6: %ToLiteral.type.e7c = fn_decl @ToLiteral.1 [concrete = constants.%ToLiteral.cf3] {
|
||||
// CHECK:STDOUT: %n.patt: %i32.builtin = binding_pattern n
|
||||
// CHECK:STDOUT: %n.param_patt: %i32.builtin = value_param_pattern %n.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: Core.IntLiteral = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: Core.IntLiteral = out_param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, file.%IntLiteral.decl [template = constants.%IntLiteral]
|
||||
// CHECK:STDOUT: %int_literal.make_type: init type = call %IntLiteral.ref() [template = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %.loc6_40.1: type = value_of_initializer %int_literal.make_type [template = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %.loc6_40.2: type = converted %int_literal.make_type, %.loc6_40.1 [template = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, file.%IntLiteral.decl [concrete = constants.%IntLiteral]
|
||||
// CHECK:STDOUT: %int_literal.make_type: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %.loc6_40.1: type = value_of_initializer %int_literal.make_type [concrete = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %.loc6_40.2: type = converted %int_literal.make_type, %.loc6_40.1 [concrete = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %n.param: %i32.builtin = value_param runtime_param0
|
||||
// CHECK:STDOUT: %.loc6_23.1: type = splice_block %.loc6_23.3 [template = constants.%i32.builtin] {
|
||||
// CHECK:STDOUT: %Int.ref: %Int.type = name_ref Int, file.%Int.decl [template = constants.%Int]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %int.make_type_signed: init type = call %Int.ref(%int_32) [template = constants.%i32.builtin]
|
||||
// CHECK:STDOUT: %.loc6_23.2: type = value_of_initializer %int.make_type_signed [template = constants.%i32.builtin]
|
||||
// CHECK:STDOUT: %.loc6_23.3: type = converted %int.make_type_signed, %.loc6_23.2 [template = constants.%i32.builtin]
|
||||
// CHECK:STDOUT: %.loc6_23.1: type = splice_block %.loc6_23.3 [concrete = constants.%i32.builtin] {
|
||||
// CHECK:STDOUT: %Int.ref: %Int.type = name_ref Int, file.%Int.decl [concrete = constants.%Int]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %int.make_type_signed: init type = call %Int.ref(%int_32) [concrete = constants.%i32.builtin]
|
||||
// CHECK:STDOUT: %.loc6_23.2: type = value_of_initializer %int.make_type_signed [concrete = constants.%i32.builtin]
|
||||
// CHECK:STDOUT: %.loc6_23.3: type = converted %int.make_type_signed, %.loc6_23.2 [concrete = constants.%i32.builtin]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %n: %i32.builtin = bind_name n, %n.param
|
||||
// CHECK:STDOUT: %return.param: ref Core.IntLiteral = out_param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref Core.IntLiteral = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %FromLiteral.decl: %FromLiteral.type = fn_decl @FromLiteral [template = constants.%FromLiteral] {
|
||||
// CHECK:STDOUT: %FromLiteral.decl: %FromLiteral.type = fn_decl @FromLiteral [concrete = constants.%FromLiteral] {
|
||||
// CHECK:STDOUT: %n.patt: Core.IntLiteral = binding_pattern n
|
||||
// CHECK:STDOUT: %n.param_patt: Core.IntLiteral = value_param_pattern %n.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: %i32.builtin = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %i32.builtin = out_param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %Int.ref: %Int.type = name_ref Int, file.%Int.decl [template = constants.%Int]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %int.make_type_signed: init type = call %Int.ref(%int_32) [template = constants.%i32.builtin]
|
||||
// CHECK:STDOUT: %.loc7_42.1: type = value_of_initializer %int.make_type_signed [template = constants.%i32.builtin]
|
||||
// CHECK:STDOUT: %.loc7_42.2: type = converted %int.make_type_signed, %.loc7_42.1 [template = constants.%i32.builtin]
|
||||
// CHECK:STDOUT: %Int.ref: %Int.type = name_ref Int, file.%Int.decl [concrete = constants.%Int]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %int.make_type_signed: init type = call %Int.ref(%int_32) [concrete = constants.%i32.builtin]
|
||||
// CHECK:STDOUT: %.loc7_42.1: type = value_of_initializer %int.make_type_signed [concrete = constants.%i32.builtin]
|
||||
// CHECK:STDOUT: %.loc7_42.2: type = converted %int.make_type_signed, %.loc7_42.1 [concrete = constants.%i32.builtin]
|
||||
// CHECK:STDOUT: %n.param: Core.IntLiteral = value_param runtime_param0
|
||||
// CHECK:STDOUT: %.loc7_30.1: type = splice_block %.loc7_30.3 [template = Core.IntLiteral] {
|
||||
// CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, file.%IntLiteral.decl [template = constants.%IntLiteral]
|
||||
// CHECK:STDOUT: %int_literal.make_type: init type = call %IntLiteral.ref() [template = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %.loc7_30.2: type = value_of_initializer %int_literal.make_type [template = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %.loc7_30.3: type = converted %int_literal.make_type, %.loc7_30.2 [template = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %.loc7_30.1: type = splice_block %.loc7_30.3 [concrete = Core.IntLiteral] {
|
||||
// CHECK:STDOUT: %IntLiteral.ref: %IntLiteral.type = name_ref IntLiteral, file.%IntLiteral.decl [concrete = constants.%IntLiteral]
|
||||
// CHECK:STDOUT: %int_literal.make_type: init type = call %IntLiteral.ref() [concrete = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %.loc7_30.2: type = value_of_initializer %int_literal.make_type [concrete = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %.loc7_30.3: type = converted %int_literal.make_type, %.loc7_30.2 [concrete = Core.IntLiteral]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %n: Core.IntLiteral = bind_name n, %n.param
|
||||
// CHECK:STDOUT: %return.param: ref %i32.builtin = out_param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref %i32.builtin = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Make.decl: %Make.type = fn_decl @Make [template = constants.%Make] {
|
||||
// CHECK:STDOUT: %Make.decl: %Make.type = fn_decl @Make [concrete = constants.%Make] {
|
||||
// CHECK:STDOUT: %N.patt.loc9_9.1: %i32.builtin = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc9_9.2 (constants.%N.patt.36b)]
|
||||
// CHECK:STDOUT: %N.param_patt: %i32.builtin = value_param_pattern %N.patt.loc9_9.1, runtime_param<none> [symbolic = %N.patt.loc9_9.2 (constants.%N.patt.36b)]
|
||||
// CHECK:STDOUT: %return.patt: @Make.%iN.builtin (%iN.builtin.016) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @Make.%iN.builtin (%iN.builtin.016) = out_param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %Int.ref.loc9_25: %Int.type = name_ref Int, file.%Int.decl [template = constants.%Int]
|
||||
// CHECK:STDOUT: %ToLiteral.ref: %ToLiteral.type.e7c = name_ref ToLiteral, file.%ToLiteral.decl.loc6 [template = constants.%ToLiteral.cf3]
|
||||
// CHECK:STDOUT: %Int.ref.loc9_25: %Int.type = name_ref Int, file.%Int.decl [concrete = constants.%Int]
|
||||
// CHECK:STDOUT: %ToLiteral.ref: %ToLiteral.type.e7c = name_ref ToLiteral, file.%ToLiteral.decl.loc6 [concrete = constants.%ToLiteral.cf3]
|
||||
// CHECK:STDOUT: %N.ref.loc9_39: %i32.builtin = name_ref N, %N.loc9_9.1 [symbolic = %N.loc9_9.2 (constants.%N.987)]
|
||||
// CHECK:STDOUT: %int.convert_checked.loc9_40.1: init Core.IntLiteral = call %ToLiteral.ref(%N.ref.loc9_39) [symbolic = %int.convert_checked.loc9_40.2 (constants.%int.convert_checked.346)]
|
||||
// CHECK:STDOUT: %.loc9_40.1: Core.IntLiteral = value_of_initializer %int.convert_checked.loc9_40.1 [symbolic = %int.convert_checked.loc9_40.2 (constants.%int.convert_checked.346)]
|
||||
@@ -848,43 +848,43 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt);
|
||||
// CHECK:STDOUT: %.loc9_41.1: type = value_of_initializer %int.make_type_signed.loc9_41 [symbolic = %iN.builtin (constants.%iN.builtin.016)]
|
||||
// CHECK:STDOUT: %.loc9_41.2: type = converted %int.make_type_signed.loc9_41, %.loc9_41.1 [symbolic = %iN.builtin (constants.%iN.builtin.016)]
|
||||
// CHECK:STDOUT: %N.param: %i32.builtin = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %.loc9_19.1: type = splice_block %.loc9_19.3 [template = constants.%i32.builtin] {
|
||||
// CHECK:STDOUT: %Int.ref.loc9_13: %Int.type = name_ref Int, file.%Int.decl [template = constants.%Int]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %int.make_type_signed.loc9_19: init type = call %Int.ref.loc9_13(%int_32) [template = constants.%i32.builtin]
|
||||
// CHECK:STDOUT: %.loc9_19.2: type = value_of_initializer %int.make_type_signed.loc9_19 [template = constants.%i32.builtin]
|
||||
// CHECK:STDOUT: %.loc9_19.3: type = converted %int.make_type_signed.loc9_19, %.loc9_19.2 [template = constants.%i32.builtin]
|
||||
// CHECK:STDOUT: %.loc9_19.1: type = splice_block %.loc9_19.3 [concrete = constants.%i32.builtin] {
|
||||
// CHECK:STDOUT: %Int.ref.loc9_13: %Int.type = name_ref Int, file.%Int.decl [concrete = constants.%Int]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %int.make_type_signed.loc9_19: init type = call %Int.ref.loc9_13(%int_32) [concrete = constants.%i32.builtin]
|
||||
// CHECK:STDOUT: %.loc9_19.2: type = value_of_initializer %int.make_type_signed.loc9_19 [concrete = constants.%i32.builtin]
|
||||
// CHECK:STDOUT: %.loc9_19.3: type = converted %int.make_type_signed.loc9_19, %.loc9_19.2 [concrete = constants.%i32.builtin]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %N.loc9_9.1: %i32.builtin = bind_symbolic_name N, 0, %N.param [symbolic = %N.loc9_9.2 (constants.%N.987)]
|
||||
// CHECK:STDOUT: %return.param: ref @Make.%iN.builtin (%iN.builtin.016) = out_param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref @Make.%iN.builtin (%iN.builtin.016) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %OtherInt.decl: type = class_decl @OtherInt [template = constants.%OtherInt] {} {}
|
||||
// CHECK:STDOUT: %ToLiteral.decl.loc16: %ToLiteral.type.67d = fn_decl @ToLiteral.2 [template = constants.%ToLiteral.ec2] {
|
||||
// CHECK:STDOUT: %OtherInt.decl: type = class_decl @OtherInt [concrete = constants.%OtherInt] {} {}
|
||||
// CHECK:STDOUT: %ToLiteral.decl.loc16: %ToLiteral.type.67d = fn_decl @ToLiteral.2 [concrete = constants.%ToLiteral.ec2] {
|
||||
// CHECK:STDOUT: %self.patt: %OtherInt = binding_pattern self
|
||||
// CHECK:STDOUT: %self.param_patt: %OtherInt = value_param_pattern %self.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: Core.IntLiteral = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: Core.IntLiteral = out_param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %IntLiteral.ref.loc16: %IntLiteral.type = name_ref IntLiteral, file.%IntLiteral.decl [template = constants.%IntLiteral]
|
||||
// CHECK:STDOUT: %int_literal.make_type.loc16: init type = call %IntLiteral.ref.loc16() [template = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %.loc16_51.1: type = value_of_initializer %int_literal.make_type.loc16 [template = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %.loc16_51.2: type = converted %int_literal.make_type.loc16, %.loc16_51.1 [template = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %IntLiteral.ref.loc16: %IntLiteral.type = name_ref IntLiteral, file.%IntLiteral.decl [concrete = constants.%IntLiteral]
|
||||
// CHECK:STDOUT: %int_literal.make_type.loc16: init type = call %IntLiteral.ref.loc16() [concrete = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %.loc16_51.1: type = value_of_initializer %int_literal.make_type.loc16 [concrete = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %.loc16_51.2: type = converted %int_literal.make_type.loc16, %.loc16_51.1 [concrete = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %self.param.loc16: %OtherInt = value_param runtime_param0
|
||||
// CHECK:STDOUT: %Self.ref.loc16: type = name_ref Self, constants.%OtherInt [template = constants.%OtherInt]
|
||||
// CHECK:STDOUT: %Self.ref.loc16: type = name_ref Self, constants.%OtherInt [concrete = constants.%OtherInt]
|
||||
// CHECK:STDOUT: %self.loc16: %OtherInt = bind_name self, %self.param.loc16
|
||||
// CHECK:STDOUT: %return.param.loc16: ref Core.IntLiteral = out_param runtime_param1
|
||||
// CHECK:STDOUT: %return.loc16: ref Core.IntLiteral = return_slot %return.param.loc16
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %MakeFromClass.decl: %MakeFromClass.type = fn_decl @MakeFromClass [template = constants.%MakeFromClass] {
|
||||
// CHECK:STDOUT: %MakeFromClass.decl: %MakeFromClass.type = fn_decl @MakeFromClass [concrete = constants.%MakeFromClass] {
|
||||
// CHECK:STDOUT: %N.patt.loc18_18.1: %OtherInt = symbolic_binding_pattern N, 0 [symbolic = %N.patt.loc18_18.2 (constants.%N.patt.59d)]
|
||||
// CHECK:STDOUT: %N.param_patt: %OtherInt = value_param_pattern %N.patt.loc18_18.1, runtime_param<none> [symbolic = %N.patt.loc18_18.2 (constants.%N.patt.59d)]
|
||||
// CHECK:STDOUT: %return.patt: @MakeFromClass.%iN.builtin (%iN.builtin.9ef) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @MakeFromClass.%iN.builtin (%iN.builtin.9ef) = out_param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %Int.ref: %Int.type = name_ref Int, file.%Int.decl [template = constants.%Int]
|
||||
// CHECK:STDOUT: %Int.ref: %Int.type = name_ref Int, file.%Int.decl [concrete = constants.%Int]
|
||||
// CHECK:STDOUT: %N.ref.loc18_39: %OtherInt = name_ref N, %N.loc18_18.1 [symbolic = %N.loc18_18.2 (constants.%N.335)]
|
||||
// CHECK:STDOUT: %ToLiteral.ref: %ToLiteral.type.67d = name_ref ToLiteral, @OtherInt.%ToLiteral.decl [template = constants.%ToLiteral.ec2]
|
||||
// CHECK:STDOUT: %ToLiteral.ref: %ToLiteral.type.67d = name_ref ToLiteral, @OtherInt.%ToLiteral.decl [concrete = constants.%ToLiteral.ec2]
|
||||
// CHECK:STDOUT: %ToLiteral.bound.loc18_40.1: <bound method> = bound_method %N.ref.loc18_39, %ToLiteral.ref [symbolic = %ToLiteral.bound.loc18_40.2 (constants.%ToLiteral.bound)]
|
||||
// CHECK:STDOUT: %int.convert_checked.loc18_51.1: init Core.IntLiteral = call %ToLiteral.bound.loc18_40.1(%N.ref.loc18_39) [symbolic = %int.convert_checked.loc18_51.2 (constants.%int.convert_checked.b6b)]
|
||||
// CHECK:STDOUT: %.loc18_51.1: Core.IntLiteral = value_of_initializer %int.convert_checked.loc18_51.1 [symbolic = %int.convert_checked.loc18_51.2 (constants.%int.convert_checked.b6b)]
|
||||
@@ -893,7 +893,7 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt);
|
||||
// CHECK:STDOUT: %.loc18_52.1: type = value_of_initializer %int.make_type_signed [symbolic = %iN.builtin (constants.%iN.builtin.9ef)]
|
||||
// CHECK:STDOUT: %.loc18_52.2: type = converted %int.make_type_signed, %.loc18_52.1 [symbolic = %iN.builtin (constants.%iN.builtin.9ef)]
|
||||
// CHECK:STDOUT: %N.param: %OtherInt = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %OtherInt.ref: type = name_ref OtherInt, file.%OtherInt.decl [template = constants.%OtherInt]
|
||||
// CHECK:STDOUT: %OtherInt.ref: type = name_ref OtherInt, file.%OtherInt.decl [concrete = constants.%OtherInt]
|
||||
// CHECK:STDOUT: %N.loc18_18.1: %OtherInt = bind_symbolic_name N, 0, %N.param [symbolic = %N.loc18_18.2 (constants.%N.335)]
|
||||
// CHECK:STDOUT: %return.param: ref @MakeFromClass.%iN.builtin (%iN.builtin.9ef) = out_param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref @MakeFromClass.%iN.builtin (%iN.builtin.9ef) = return_slot %return.param
|
||||
@@ -901,29 +901,29 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt);
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @OtherInt {
|
||||
// CHECK:STDOUT: %Int.ref: %Int.type = name_ref Int, file.%Int.decl [template = constants.%Int]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %int.make_type_signed: init type = call %Int.ref(%int_32) [template = constants.%i32.builtin]
|
||||
// CHECK:STDOUT: %.loc12_16.1: type = value_of_initializer %int.make_type_signed [template = constants.%i32.builtin]
|
||||
// CHECK:STDOUT: %.loc12_16.2: type = converted %int.make_type_signed, %.loc12_16.1 [template = constants.%i32.builtin]
|
||||
// CHECK:STDOUT: adapt_decl %.loc12_16.2 [template]
|
||||
// CHECK:STDOUT: %ToLiteral.decl: %ToLiteral.type.67d = fn_decl @ToLiteral.2 [template = constants.%ToLiteral.ec2] {
|
||||
// CHECK:STDOUT: %Int.ref: %Int.type = name_ref Int, file.%Int.decl [concrete = constants.%Int]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %int.make_type_signed: init type = call %Int.ref(%int_32) [concrete = constants.%i32.builtin]
|
||||
// CHECK:STDOUT: %.loc12_16.1: type = value_of_initializer %int.make_type_signed [concrete = constants.%i32.builtin]
|
||||
// CHECK:STDOUT: %.loc12_16.2: type = converted %int.make_type_signed, %.loc12_16.1 [concrete = constants.%i32.builtin]
|
||||
// CHECK:STDOUT: adapt_decl %.loc12_16.2 [concrete]
|
||||
// CHECK:STDOUT: %ToLiteral.decl: %ToLiteral.type.67d = fn_decl @ToLiteral.2 [concrete = constants.%ToLiteral.ec2] {
|
||||
// CHECK:STDOUT: %self.patt: %OtherInt = binding_pattern self
|
||||
// CHECK:STDOUT: %self.param_patt: %OtherInt = value_param_pattern %self.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: Core.IntLiteral = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: Core.IntLiteral = out_param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %IntLiteral.ref.loc13: %IntLiteral.type = name_ref IntLiteral, file.%IntLiteral.decl [template = constants.%IntLiteral]
|
||||
// CHECK:STDOUT: %int_literal.make_type.loc13: init type = call %IntLiteral.ref.loc13() [template = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %.loc13_44.1: type = value_of_initializer %int_literal.make_type.loc13 [template = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %.loc13_44.2: type = converted %int_literal.make_type.loc13, %.loc13_44.1 [template = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %IntLiteral.ref.loc13: %IntLiteral.type = name_ref IntLiteral, file.%IntLiteral.decl [concrete = constants.%IntLiteral]
|
||||
// CHECK:STDOUT: %int_literal.make_type.loc13: init type = call %IntLiteral.ref.loc13() [concrete = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %.loc13_44.1: type = value_of_initializer %int_literal.make_type.loc13 [concrete = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %.loc13_44.2: type = converted %int_literal.make_type.loc13, %.loc13_44.1 [concrete = Core.IntLiteral]
|
||||
// CHECK:STDOUT: %self.param.loc13: %OtherInt = value_param runtime_param0
|
||||
// CHECK:STDOUT: %Self.ref.loc13: type = name_ref Self, constants.%OtherInt [template = constants.%OtherInt]
|
||||
// CHECK:STDOUT: %Self.ref.loc13: type = name_ref Self, constants.%OtherInt [concrete = constants.%OtherInt]
|
||||
// CHECK:STDOUT: %self.loc13: %OtherInt = bind_name self, %self.param.loc13
|
||||
// CHECK:STDOUT: %return.param.loc13: ref Core.IntLiteral = out_param runtime_param1
|
||||
// CHECK:STDOUT: %return.loc13: ref Core.IntLiteral = return_slot %return.param.loc13
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %i32.builtin [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %i32.builtin [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -951,7 +951,7 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt);
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn(%N.param_patt: %i32.builtin) -> @Make.%iN.builtin (%iN.builtin.016) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, file.%Make.decl [template = constants.%Make]
|
||||
// CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, file.%Make.decl [concrete = constants.%Make]
|
||||
// CHECK:STDOUT: %N.ref.loc9_57: %i32.builtin = name_ref N, %N.loc9_9.1 [symbolic = %N.loc9_9.2 (constants.%N.987)]
|
||||
// CHECK:STDOUT: %Make.specific_fn.loc9_52.1: <specific function> = specific_function %Make.ref, @Make(constants.%N.987) [symbolic = %Make.specific_fn.loc9_52.2 (constants.%Make.specific_fn)]
|
||||
// CHECK:STDOUT: %Make.call: init @Make.%iN.builtin (%iN.builtin.016) = call %Make.specific_fn.loc9_52.1()
|
||||
@@ -976,7 +976,7 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt);
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn(%N.param_patt: %OtherInt) -> @MakeFromClass.%iN.builtin (%iN.builtin.9ef) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %MakeFromClass.ref: %MakeFromClass.type = name_ref MakeFromClass, file.%MakeFromClass.decl [template = constants.%MakeFromClass]
|
||||
// CHECK:STDOUT: %MakeFromClass.ref: %MakeFromClass.type = name_ref MakeFromClass, file.%MakeFromClass.decl [concrete = constants.%MakeFromClass]
|
||||
// CHECK:STDOUT: %N.ref.loc18_77: %OtherInt = name_ref N, %N.loc18_18.1 [symbolic = %N.loc18_18.2 (constants.%N.335)]
|
||||
// CHECK:STDOUT: %MakeFromClass.specific_fn.loc18_63.1: <specific function> = specific_function %MakeFromClass.ref, @MakeFromClass(constants.%N.335) [symbolic = %MakeFromClass.specific_fn.loc18_63.2 (constants.%MakeFromClass.specific_fn)]
|
||||
// CHECK:STDOUT: %MakeFromClass.call: init @MakeFromClass.%iN.builtin (%iN.builtin.9ef) = call %MakeFromClass.specific_fn.loc18_63.1()
|
||||
@@ -1016,62 +1016,62 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt);
|
||||
// CHECK:STDOUT: --- use_convert_symbolic.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %Int.type: type = fn_type @Int [template]
|
||||
// CHECK:STDOUT: %Int: %Int.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %int_64.fab: Core.IntLiteral = int_value 64 [template]
|
||||
// CHECK:STDOUT: %i64.builtin: type = int_type signed, %int_64.fab [template]
|
||||
// CHECK:STDOUT: %Make.type: type = fn_type @Make [template]
|
||||
// CHECK:STDOUT: %Make: %Make.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template]
|
||||
// CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [template]
|
||||
// CHECK:STDOUT: %Int.type: type = fn_type @Int [concrete]
|
||||
// CHECK:STDOUT: %Int: %Int.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %int_64.fab: Core.IntLiteral = int_value 64 [concrete]
|
||||
// CHECK:STDOUT: %i64.builtin: type = int_type signed, %int_64.fab [concrete]
|
||||
// CHECK:STDOUT: %Make.type: type = fn_type @Make [concrete]
|
||||
// CHECK:STDOUT: %Make: %Make.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete]
|
||||
// CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [concrete]
|
||||
// CHECK:STDOUT: %N.patt.36b: %i32.builtin = symbolic_binding_pattern N, 0 [symbolic]
|
||||
// CHECK:STDOUT: %N.987: %i32.builtin = bind_symbolic_name N, 0 [symbolic]
|
||||
// CHECK:STDOUT: %ToLiteral.type.e7c: type = fn_type @ToLiteral.1 [template]
|
||||
// CHECK:STDOUT: %ToLiteral.cf3: %ToLiteral.type.e7c = struct_value () [template]
|
||||
// CHECK:STDOUT: %ToLiteral.type.e7c: type = fn_type @ToLiteral.1 [concrete]
|
||||
// CHECK:STDOUT: %ToLiteral.cf3: %ToLiteral.type.e7c = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %int.convert_checked.346: init Core.IntLiteral = call %ToLiteral.cf3(%N.987) [symbolic]
|
||||
// CHECK:STDOUT: %iN.builtin.016: type = int_type signed, %int.convert_checked.346 [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.88f: <witness> = require_complete_type %iN.builtin.016 [symbolic]
|
||||
// CHECK:STDOUT: %Make.specific_fn.8ec: <specific function> = specific_function %Make, @Make(%N.987) [symbolic]
|
||||
// CHECK:STDOUT: %FromLiteral.type: type = fn_type @FromLiteral [template]
|
||||
// CHECK:STDOUT: %FromLiteral: %FromLiteral.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %int_64.f82: %i32.builtin = int_value 64 [template]
|
||||
// CHECK:STDOUT: %Make.specific_fn.02d: <specific function> = specific_function %Make, @Make(%int_64.f82) [template]
|
||||
// CHECK:STDOUT: %MakeFromClass.type: type = fn_type @MakeFromClass [template]
|
||||
// CHECK:STDOUT: %MakeFromClass: %MakeFromClass.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %OtherInt: type = class_type @OtherInt [template]
|
||||
// CHECK:STDOUT: %complete_type.f8a: <witness> = complete_type_witness %i32.builtin [template]
|
||||
// CHECK:STDOUT: %FromLiteral.type: type = fn_type @FromLiteral [concrete]
|
||||
// CHECK:STDOUT: %FromLiteral: %FromLiteral.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %int_64.f82: %i32.builtin = int_value 64 [concrete]
|
||||
// CHECK:STDOUT: %Make.specific_fn.02d: <specific function> = specific_function %Make, @Make(%int_64.f82) [concrete]
|
||||
// CHECK:STDOUT: %MakeFromClass.type: type = fn_type @MakeFromClass [concrete]
|
||||
// CHECK:STDOUT: %MakeFromClass: %MakeFromClass.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %OtherInt: type = class_type @OtherInt [concrete]
|
||||
// CHECK:STDOUT: %complete_type.f8a: <witness> = complete_type_witness %i32.builtin [concrete]
|
||||
// CHECK:STDOUT: %N.patt.59d: %OtherInt = symbolic_binding_pattern N, 0 [symbolic]
|
||||
// CHECK:STDOUT: %N.335: %OtherInt = bind_symbolic_name N, 0 [symbolic]
|
||||
// CHECK:STDOUT: %ToLiteral.type.67d: type = fn_type @ToLiteral.2 [template]
|
||||
// CHECK:STDOUT: %ToLiteral.ec2: %ToLiteral.type.67d = struct_value () [template]
|
||||
// CHECK:STDOUT: %ToLiteral.type.67d: type = fn_type @ToLiteral.2 [concrete]
|
||||
// CHECK:STDOUT: %ToLiteral.ec2: %ToLiteral.type.67d = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %ToLiteral.bound.8e3: <bound method> = bound_method %N.335, %ToLiteral.ec2 [symbolic]
|
||||
// CHECK:STDOUT: %int.convert_checked.b6b: init Core.IntLiteral = call %ToLiteral.bound.8e3(%N.335) [symbolic]
|
||||
// CHECK:STDOUT: %iN.builtin.9ef: type = int_type signed, %int.convert_checked.b6b [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.c7d: <witness> = require_complete_type %iN.builtin.9ef [symbolic]
|
||||
// CHECK:STDOUT: %MakeFromClass.specific_fn.004: <specific function> = specific_function %MakeFromClass, @MakeFromClass(%N.335) [symbolic]
|
||||
// CHECK:STDOUT: %int_64.06b: %OtherInt = int_value 64 [template]
|
||||
// CHECK:STDOUT: %ToLiteral.bound.735: <bound method> = bound_method %int_64.06b, %ToLiteral.ec2 [template]
|
||||
// CHECK:STDOUT: %MakeFromClass.specific_fn.61b: <specific function> = specific_function %MakeFromClass, @MakeFromClass(%int_64.06b) [template]
|
||||
// CHECK:STDOUT: %complete_type.4a1: <witness> = complete_type_witness %i64.builtin [template]
|
||||
// CHECK:STDOUT: %int_64.06b: %OtherInt = int_value 64 [concrete]
|
||||
// CHECK:STDOUT: %ToLiteral.bound.735: <bound method> = bound_method %int_64.06b, %ToLiteral.ec2 [concrete]
|
||||
// CHECK:STDOUT: %MakeFromClass.specific_fn.61b: <specific function> = specific_function %MakeFromClass, @MakeFromClass(%int_64.06b) [concrete]
|
||||
// CHECK:STDOUT: %complete_type.4a1: <witness> = complete_type_witness %i64.builtin [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Main.IntLiteral = import_ref Main//convert_symbolic, IntLiteral, unloaded
|
||||
// CHECK:STDOUT: %Main.Int: %Int.type = import_ref Main//convert_symbolic, Int, loaded [template = constants.%Int]
|
||||
// CHECK:STDOUT: %Main.Int: %Int.type = import_ref Main//convert_symbolic, Int, loaded [concrete = constants.%Int]
|
||||
// CHECK:STDOUT: %Main.ToLiteral = import_ref Main//convert_symbolic, ToLiteral, unloaded
|
||||
// CHECK:STDOUT: %Main.FromLiteral: %FromLiteral.type = import_ref Main//convert_symbolic, FromLiteral, loaded [template = constants.%FromLiteral]
|
||||
// CHECK:STDOUT: %Main.Make: %Make.type = import_ref Main//convert_symbolic, Make, loaded [template = constants.%Make]
|
||||
// CHECK:STDOUT: %Main.OtherInt: type = import_ref Main//convert_symbolic, OtherInt, loaded [template = constants.%OtherInt]
|
||||
// CHECK:STDOUT: %Main.MakeFromClass: %MakeFromClass.type = import_ref Main//convert_symbolic, MakeFromClass, loaded [template = constants.%MakeFromClass]
|
||||
// CHECK:STDOUT: %Main.FromLiteral: %FromLiteral.type = import_ref Main//convert_symbolic, FromLiteral, loaded [concrete = constants.%FromLiteral]
|
||||
// CHECK:STDOUT: %Main.Make: %Make.type = import_ref Main//convert_symbolic, Make, loaded [concrete = constants.%Make]
|
||||
// CHECK:STDOUT: %Main.OtherInt: type = import_ref Main//convert_symbolic, OtherInt, loaded [concrete = constants.%OtherInt]
|
||||
// CHECK:STDOUT: %Main.MakeFromClass: %MakeFromClass.type = import_ref Main//convert_symbolic, MakeFromClass, loaded [concrete = constants.%MakeFromClass]
|
||||
// CHECK:STDOUT: %Main.import_ref.512: %i32.builtin = import_ref Main//convert_symbolic, loc9_9, loaded [symbolic = @Make.%N (constants.%N.987)]
|
||||
// CHECK:STDOUT: %Main.import_ref.b03: <witness> = import_ref Main//convert_symbolic, loc14_1, loaded [template = constants.%complete_type.f8a]
|
||||
// CHECK:STDOUT: %Main.import_ref.b03: <witness> = import_ref Main//convert_symbolic, loc14_1, loaded [concrete = constants.%complete_type.f8a]
|
||||
// CHECK:STDOUT: %Main.import_ref.d11 = import_ref Main//convert_symbolic, inst129 [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.8f7 = import_ref Main//convert_symbolic, loc13_45, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.b3c: %OtherInt = import_ref Main//convert_symbolic, loc18_18, loaded [symbolic = @MakeFromClass.%N (constants.%N.335)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .IntLiteral = imports.%Main.IntLiteral
|
||||
// CHECK:STDOUT: .Int = imports.%Main.Int
|
||||
// CHECK:STDOUT: .ToLiteral = imports.%Main.ToLiteral
|
||||
@@ -1088,12 +1088,12 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt);
|
||||
// CHECK:STDOUT: %.loc6_1: %i64.builtin = var_pattern %m.patt
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %m.var: ref %i64.builtin = var m
|
||||
// CHECK:STDOUT: %.loc6_14.1: type = splice_block %.loc6_14.3 [template = constants.%i64.builtin] {
|
||||
// CHECK:STDOUT: %Int.ref.loc6: %Int.type = name_ref Int, imports.%Main.Int [template = constants.%Int]
|
||||
// CHECK:STDOUT: %int_64.loc6: Core.IntLiteral = int_value 64 [template = constants.%int_64.fab]
|
||||
// CHECK:STDOUT: %int.make_type_signed.loc6: init type = call %Int.ref.loc6(%int_64.loc6) [template = constants.%i64.builtin]
|
||||
// CHECK:STDOUT: %.loc6_14.2: type = value_of_initializer %int.make_type_signed.loc6 [template = constants.%i64.builtin]
|
||||
// CHECK:STDOUT: %.loc6_14.3: type = converted %int.make_type_signed.loc6, %.loc6_14.2 [template = constants.%i64.builtin]
|
||||
// CHECK:STDOUT: %.loc6_14.1: type = splice_block %.loc6_14.3 [concrete = constants.%i64.builtin] {
|
||||
// CHECK:STDOUT: %Int.ref.loc6: %Int.type = name_ref Int, imports.%Main.Int [concrete = constants.%Int]
|
||||
// CHECK:STDOUT: %int_64.loc6: Core.IntLiteral = int_value 64 [concrete = constants.%int_64.fab]
|
||||
// CHECK:STDOUT: %int.make_type_signed.loc6: init type = call %Int.ref.loc6(%int_64.loc6) [concrete = constants.%i64.builtin]
|
||||
// CHECK:STDOUT: %.loc6_14.2: type = value_of_initializer %int.make_type_signed.loc6 [concrete = constants.%i64.builtin]
|
||||
// CHECK:STDOUT: %.loc6_14.3: type = converted %int.make_type_signed.loc6, %.loc6_14.2 [concrete = constants.%i64.builtin]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %m: ref %i64.builtin = bind_name m, %m.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
@@ -1101,12 +1101,12 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt);
|
||||
// CHECK:STDOUT: %.loc7_1: %i64.builtin = var_pattern %n.patt
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %n.var: ref %i64.builtin = var n
|
||||
// CHECK:STDOUT: %.loc7_14.1: type = splice_block %.loc7_14.3 [template = constants.%i64.builtin] {
|
||||
// CHECK:STDOUT: %Int.ref.loc7: %Int.type = name_ref Int, imports.%Main.Int [template = constants.%Int]
|
||||
// CHECK:STDOUT: %int_64.loc7: Core.IntLiteral = int_value 64 [template = constants.%int_64.fab]
|
||||
// CHECK:STDOUT: %int.make_type_signed.loc7: init type = call %Int.ref.loc7(%int_64.loc7) [template = constants.%i64.builtin]
|
||||
// CHECK:STDOUT: %.loc7_14.2: type = value_of_initializer %int.make_type_signed.loc7 [template = constants.%i64.builtin]
|
||||
// CHECK:STDOUT: %.loc7_14.3: type = converted %int.make_type_signed.loc7, %.loc7_14.2 [template = constants.%i64.builtin]
|
||||
// CHECK:STDOUT: %.loc7_14.1: type = splice_block %.loc7_14.3 [concrete = constants.%i64.builtin] {
|
||||
// CHECK:STDOUT: %Int.ref.loc7: %Int.type = name_ref Int, imports.%Main.Int [concrete = constants.%Int]
|
||||
// CHECK:STDOUT: %int_64.loc7: Core.IntLiteral = int_value 64 [concrete = constants.%int_64.fab]
|
||||
// CHECK:STDOUT: %int.make_type_signed.loc7: init type = call %Int.ref.loc7(%int_64.loc7) [concrete = constants.%i64.builtin]
|
||||
// CHECK:STDOUT: %.loc7_14.2: type = value_of_initializer %int.make_type_signed.loc7 [concrete = constants.%i64.builtin]
|
||||
// CHECK:STDOUT: %.loc7_14.3: type = converted %int.make_type_signed.loc7, %.loc7_14.2 [concrete = constants.%i64.builtin]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %n: ref %i64.builtin = bind_name n, %n.var
|
||||
// CHECK:STDOUT: }
|
||||
@@ -1156,25 +1156,25 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt);
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, imports.%Main.Make [template = constants.%Make]
|
||||
// CHECK:STDOUT: %FromLiteral.ref.loc6: %FromLiteral.type = name_ref FromLiteral, imports.%Main.FromLiteral [template = constants.%FromLiteral]
|
||||
// CHECK:STDOUT: %int_64.loc6: Core.IntLiteral = int_value 64 [template = constants.%int_64.fab]
|
||||
// CHECK:STDOUT: %int.convert_checked.loc6: init %i32.builtin = call %FromLiteral.ref.loc6(%int_64.loc6) [template = constants.%int_64.f82]
|
||||
// CHECK:STDOUT: %.loc6_38.1: %i32.builtin = value_of_initializer %int.convert_checked.loc6 [template = constants.%int_64.f82]
|
||||
// CHECK:STDOUT: %.loc6_38.2: %i32.builtin = converted %int.convert_checked.loc6, %.loc6_38.1 [template = constants.%int_64.f82]
|
||||
// CHECK:STDOUT: %Make.specific_fn: <specific function> = specific_function %Make.ref, @Make(constants.%int_64.f82) [template = constants.%Make.specific_fn.02d]
|
||||
// CHECK:STDOUT: %Make.ref: %Make.type = name_ref Make, imports.%Main.Make [concrete = constants.%Make]
|
||||
// CHECK:STDOUT: %FromLiteral.ref.loc6: %FromLiteral.type = name_ref FromLiteral, imports.%Main.FromLiteral [concrete = constants.%FromLiteral]
|
||||
// CHECK:STDOUT: %int_64.loc6: Core.IntLiteral = int_value 64 [concrete = constants.%int_64.fab]
|
||||
// CHECK:STDOUT: %int.convert_checked.loc6: init %i32.builtin = call %FromLiteral.ref.loc6(%int_64.loc6) [concrete = constants.%int_64.f82]
|
||||
// CHECK:STDOUT: %.loc6_38.1: %i32.builtin = value_of_initializer %int.convert_checked.loc6 [concrete = constants.%int_64.f82]
|
||||
// CHECK:STDOUT: %.loc6_38.2: %i32.builtin = converted %int.convert_checked.loc6, %.loc6_38.1 [concrete = constants.%int_64.f82]
|
||||
// CHECK:STDOUT: %Make.specific_fn: <specific function> = specific_function %Make.ref, @Make(constants.%int_64.f82) [concrete = constants.%Make.specific_fn.02d]
|
||||
// CHECK:STDOUT: %Make.call: init %i64.builtin = call %Make.specific_fn()
|
||||
// CHECK:STDOUT: assign file.%m.var, %Make.call
|
||||
// CHECK:STDOUT: %MakeFromClass.ref: %MakeFromClass.type = name_ref MakeFromClass, imports.%Main.MakeFromClass [template = constants.%MakeFromClass]
|
||||
// CHECK:STDOUT: %FromLiteral.ref.loc7: %FromLiteral.type = name_ref FromLiteral, imports.%Main.FromLiteral [template = constants.%FromLiteral]
|
||||
// CHECK:STDOUT: %int_64.loc7: Core.IntLiteral = int_value 64 [template = constants.%int_64.fab]
|
||||
// CHECK:STDOUT: %int.convert_checked.loc7: init %i32.builtin = call %FromLiteral.ref.loc7(%int_64.loc7) [template = constants.%int_64.f82]
|
||||
// CHECK:STDOUT: %OtherInt.ref: type = name_ref OtherInt, imports.%Main.OtherInt [template = constants.%OtherInt]
|
||||
// CHECK:STDOUT: %.loc7_48.1: init %OtherInt = as_compatible %int.convert_checked.loc7 [template = constants.%int_64.06b]
|
||||
// CHECK:STDOUT: %.loc7_48.2: init %OtherInt = converted %int.convert_checked.loc7, %.loc7_48.1 [template = constants.%int_64.06b]
|
||||
// CHECK:STDOUT: %.loc7_59.1: %OtherInt = value_of_initializer %.loc7_48.2 [template = constants.%int_64.06b]
|
||||
// CHECK:STDOUT: %.loc7_59.2: %OtherInt = converted %.loc7_48.2, %.loc7_59.1 [template = constants.%int_64.06b]
|
||||
// CHECK:STDOUT: %MakeFromClass.specific_fn: <specific function> = specific_function %MakeFromClass.ref, @MakeFromClass(constants.%int_64.06b) [template = constants.%MakeFromClass.specific_fn.61b]
|
||||
// CHECK:STDOUT: %MakeFromClass.ref: %MakeFromClass.type = name_ref MakeFromClass, imports.%Main.MakeFromClass [concrete = constants.%MakeFromClass]
|
||||
// CHECK:STDOUT: %FromLiteral.ref.loc7: %FromLiteral.type = name_ref FromLiteral, imports.%Main.FromLiteral [concrete = constants.%FromLiteral]
|
||||
// CHECK:STDOUT: %int_64.loc7: Core.IntLiteral = int_value 64 [concrete = constants.%int_64.fab]
|
||||
// CHECK:STDOUT: %int.convert_checked.loc7: init %i32.builtin = call %FromLiteral.ref.loc7(%int_64.loc7) [concrete = constants.%int_64.f82]
|
||||
// CHECK:STDOUT: %OtherInt.ref: type = name_ref OtherInt, imports.%Main.OtherInt [concrete = constants.%OtherInt]
|
||||
// CHECK:STDOUT: %.loc7_48.1: init %OtherInt = as_compatible %int.convert_checked.loc7 [concrete = constants.%int_64.06b]
|
||||
// CHECK:STDOUT: %.loc7_48.2: init %OtherInt = converted %int.convert_checked.loc7, %.loc7_48.1 [concrete = constants.%int_64.06b]
|
||||
// CHECK:STDOUT: %.loc7_59.1: %OtherInt = value_of_initializer %.loc7_48.2 [concrete = constants.%int_64.06b]
|
||||
// CHECK:STDOUT: %.loc7_59.2: %OtherInt = converted %.loc7_48.2, %.loc7_59.1 [concrete = constants.%int_64.06b]
|
||||
// CHECK:STDOUT: %MakeFromClass.specific_fn: <specific function> = specific_function %MakeFromClass.ref, @MakeFromClass(constants.%int_64.06b) [concrete = constants.%MakeFromClass.specific_fn.61b]
|
||||
// CHECK:STDOUT: %MakeFromClass.call: init %i64.builtin = call %MakeFromClass.specific_fn()
|
||||
// CHECK:STDOUT: assign file.%n.var, %MakeFromClass.call
|
||||
// CHECK:STDOUT: return
|
||||
|
||||
@@ -36,34 +36,34 @@ fn G(c: C) {
|
||||
// CHECK:STDOUT: --- extend_impl_library.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [template]
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete]
|
||||
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %F.type.cf0: type = fn_type @F.1 [template]
|
||||
// CHECK:STDOUT: %F.bc6: %F.type.cf0 = struct_value () [template]
|
||||
// CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type %I.type [template]
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%F.decl [template]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [template]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%F.decl) [template]
|
||||
// CHECK:STDOUT: %F.type.f36: type = fn_type @F.2 [template]
|
||||
// CHECK:STDOUT: %F.4c3: %F.type.f36 = struct_value () [template]
|
||||
// CHECK:STDOUT: %I.facet: %I.type = facet_value %C, %impl_witness [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %F.type.cf0: type = fn_type @F.1 [concrete]
|
||||
// CHECK:STDOUT: %F.bc6: %F.type.cf0 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type %I.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%F.decl [concrete]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [concrete]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%F.decl) [concrete]
|
||||
// CHECK:STDOUT: %F.type.f36: type = fn_type @F.2 [concrete]
|
||||
// CHECK:STDOUT: %F.4c3: %F.type.f36 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %I.facet: %I.type = facet_value %C, %impl_witness [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .I = %I.decl
|
||||
// CHECK:STDOUT: .C = %C.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [template = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @I {
|
||||
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self]
|
||||
// CHECK:STDOUT: %F.decl: %F.type.cf0 = fn_decl @F.1 [template = constants.%F.bc6] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %F.decl: %F.type.cf0 = fn_decl @F.1 [concrete = constants.%F.bc6] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -72,7 +72,7 @@ fn G(c: C) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl: %Self.ref as %I.ref {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.f36 = fn_decl @F.2 [template = constants.%F.4c3] {} {}
|
||||
// CHECK:STDOUT: %F.decl: %F.type.f36 = fn_decl @F.2 [concrete = constants.%F.4c3] {} {}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .F = %F.decl
|
||||
@@ -80,12 +80,12 @@ fn G(c: C) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @C {
|
||||
// CHECK:STDOUT: impl_decl @impl [template] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [template = constants.%C]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type]
|
||||
// CHECK:STDOUT: impl_decl @impl [concrete] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%F.decl) [template = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%F.decl) [concrete = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -109,52 +109,52 @@ fn G(c: C) {
|
||||
// CHECK:STDOUT: --- use_imported_class_extend_impl.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %C: type = class_type @C [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %G.type: type = fn_type @G [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %G: %G.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [template]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %G.type: type = fn_type @G [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %G: %G.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete]
|
||||
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type %I.type [template]
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, imports.%Main.import_ref.e03 [template]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (imports.%Main.import_ref.f6d) [template]
|
||||
// CHECK:STDOUT: %F.type.cf0: type = fn_type @F.1 [template]
|
||||
// CHECK:STDOUT: %I.facet: %I.type = facet_value %C, %impl_witness [template]
|
||||
// CHECK:STDOUT: %.8b3: type = fn_type_with_self_type %F.type.cf0, %I.facet [template]
|
||||
// CHECK:STDOUT: %F.type.f36: type = fn_type @F.2 [template]
|
||||
// CHECK:STDOUT: %F.4c3: %F.type.f36 = struct_value () [template]
|
||||
// CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type %I.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, imports.%Main.import_ref.e03 [concrete]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (imports.%Main.import_ref.f6d) [concrete]
|
||||
// CHECK:STDOUT: %F.type.cf0: type = fn_type @F.1 [concrete]
|
||||
// CHECK:STDOUT: %I.facet: %I.type = facet_value %C, %impl_witness [concrete]
|
||||
// CHECK:STDOUT: %.8b3: type = fn_type_with_self_type %F.type.cf0, %I.facet [concrete]
|
||||
// CHECK:STDOUT: %F.type.f36: type = fn_type @F.2 [concrete]
|
||||
// CHECK:STDOUT: %F.4c3: %F.type.f36 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Main.I = import_ref Main//extend_impl_library, I, unloaded
|
||||
// CHECK:STDOUT: %Main.C: type = import_ref Main//extend_impl_library, C, loaded [template = constants.%C]
|
||||
// CHECK:STDOUT: %Main.import_ref.8f2: <witness> = import_ref Main//extend_impl_library, loc12_1, loaded [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Main.C: type = import_ref Main//extend_impl_library, C, loaded [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %Main.import_ref.8f2: <witness> = import_ref Main//extend_impl_library, loc12_1, loaded [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//extend_impl_library, inst25 [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.3019d1.1: type = import_ref Main//extend_impl_library, loc9_18, loaded [template = constants.%I.type]
|
||||
// CHECK:STDOUT: %Main.import_ref.3019d1.1: type = import_ref Main//extend_impl_library, loc9_18, loaded [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: %Main.import_ref.e5d = import_ref Main//extend_impl_library, inst15 [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.bcb: %I.assoc_type = import_ref Main//extend_impl_library, loc5_9, loaded [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %Main.import_ref.bcb: %I.assoc_type = import_ref Main//extend_impl_library, loc5_9, loaded [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %Main.F = import_ref Main//extend_impl_library, F, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.b86: <witness> = import_ref Main//extend_impl_library, loc9_20, loaded [template = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %Main.import_ref.0ed: type = import_ref Main//extend_impl_library, loc9_15, loaded [template = constants.%C]
|
||||
// CHECK:STDOUT: %Main.import_ref.3019d1.2: type = import_ref Main//extend_impl_library, loc9_18, loaded [template = constants.%I.type]
|
||||
// CHECK:STDOUT: %Main.import_ref.b86: <witness> = import_ref Main//extend_impl_library, loc9_20, loaded [concrete = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %Main.import_ref.0ed: type = import_ref Main//extend_impl_library, loc9_15, loaded [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %Main.import_ref.3019d1.2: type = import_ref Main//extend_impl_library, loc9_18, loaded [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: %Main.import_ref.5dd: %I.type = import_ref Main//extend_impl_library, inst15 [no loc], loaded [symbolic = constants.%Self]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .I = imports.%Main.I
|
||||
// CHECK:STDOUT: .C = imports.%Main.C
|
||||
// CHECK:STDOUT: .G = %G.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %default.import = import <none>
|
||||
// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {
|
||||
// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] {
|
||||
// CHECK:STDOUT: %c.patt: %C = binding_pattern c
|
||||
// CHECK:STDOUT: %c.param_patt: %C = value_param_pattern %c.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %c.param: %C = value_param runtime_param0
|
||||
// CHECK:STDOUT: %C.ref.loc6: type = name_ref C, imports.%Main.C [template = constants.%C]
|
||||
// CHECK:STDOUT: %C.ref.loc6: type = name_ref C, imports.%Main.C [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %c: %C = bind_name c, %c.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -181,13 +181,13 @@ fn G(c: C) {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @G(%c.param_patt: %C) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %C.ref.loc7: type = name_ref C, imports.%Main.C [template = constants.%C]
|
||||
// CHECK:STDOUT: %F.ref.loc7: %I.assoc_type = name_ref F, imports.%Main.import_ref.bcb [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0.loc7: %.8b3 = impl_witness_access constants.%impl_witness, element0 [template = constants.%F.4c3]
|
||||
// CHECK:STDOUT: %C.ref.loc7: type = name_ref C, imports.%Main.C [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %F.ref.loc7: %I.assoc_type = name_ref F, imports.%Main.import_ref.bcb [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0.loc7: %.8b3 = impl_witness_access constants.%impl_witness, element0 [concrete = constants.%F.4c3]
|
||||
// CHECK:STDOUT: %F.call.loc7: init %empty_tuple.type = call %impl.elem0.loc7()
|
||||
// CHECK:STDOUT: %c.ref: %C = name_ref c, %c
|
||||
// CHECK:STDOUT: %F.ref.loc8: %I.assoc_type = name_ref F, imports.%Main.import_ref.bcb [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0.loc8: %.8b3 = impl_witness_access constants.%impl_witness, element0 [template = constants.%F.4c3]
|
||||
// CHECK:STDOUT: %F.ref.loc8: %I.assoc_type = name_ref F, imports.%Main.import_ref.bcb [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0.loc8: %.8b3 = impl_witness_access constants.%impl_witness, element0 [concrete = constants.%F.4c3]
|
||||
// CHECK:STDOUT: %F.call.loc8: init %empty_tuple.type = call %impl.elem0.loc8()
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
+79
-79
@@ -100,13 +100,13 @@ impl forall [T:! type] D as J(T*) {}
|
||||
// CHECK:STDOUT: --- import_generic.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %C: type = class_type @C [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %I.type.dac: type = generic_interface_type @I [template]
|
||||
// CHECK:STDOUT: %I.generic: %I.type.dac = struct_value () [template]
|
||||
// CHECK:STDOUT: %I.type.dac: type = generic_interface_type @I [concrete]
|
||||
// CHECK:STDOUT: %I.generic: %I.type.dac = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %I.type.325: type = facet_type <@I, @I(%T)> [symbolic]
|
||||
// CHECK:STDOUT: %Self: %I.type.325 = bind_symbolic_name Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.cfe: <witness> = require_complete_type %I.type.325 [symbolic]
|
||||
@@ -118,47 +118,47 @@ impl forall [T:! type] D as J(T*) {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .C = %C.decl
|
||||
// CHECK:STDOUT: .I = %I.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %I.decl: %I.type.dac = interface_decl @I [template = constants.%I.generic] {
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %I.decl: %I.type.dac = interface_decl @I [concrete = constants.%I.generic] {
|
||||
// CHECK:STDOUT: %T.patt.loc5_13.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc5_13.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc5_13.1, runtime_param<none> [symbolic = %T.patt.loc5_13.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.param: type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %T.loc5_13.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc5_13.2 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: impl_decl @impl.1 [template] {
|
||||
// CHECK:STDOUT: impl_decl @impl.1 [concrete] {
|
||||
// CHECK:STDOUT: %T.patt.loc8_14.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_14.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc8_14.1, runtime_param<none> [symbolic = %T.patt.loc8_14.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %C.ref.loc8: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %I.ref.loc8: %I.type.dac = name_ref I, file.%I.decl [template = constants.%I.generic]
|
||||
// CHECK:STDOUT: %C.ref.loc8: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %I.ref.loc8: %I.type.dac = name_ref I, file.%I.decl [concrete = constants.%I.generic]
|
||||
// CHECK:STDOUT: %T.ref.loc8: type = name_ref T, %T.loc8_14.1 [symbolic = %T.loc8_14.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %I.type.loc8_32.1: type = facet_type <@I, @I(constants.%T)> [symbolic = %I.type.loc8_32.2 (constants.%I.type.325)]
|
||||
// CHECK:STDOUT: %T.param.loc8: type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %T.loc8_14.1: type = bind_symbolic_name T, 0, %T.param.loc8 [symbolic = %T.loc8_14.2 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness.loc8: <witness> = impl_witness (), @impl.1(constants.%T) [symbolic = @impl.1.%impl_witness (constants.%impl_witness.eff)]
|
||||
// CHECK:STDOUT: impl_decl @impl.1 [template] {
|
||||
// CHECK:STDOUT: impl_decl @impl.1 [concrete] {
|
||||
// CHECK:STDOUT: %T.patt.loc8_14.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_14.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc8_14.1, runtime_param<none> [symbolic = %T.patt.loc8_14.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %C.ref.loc9: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %I.ref.loc9: %I.type.dac = name_ref I, file.%I.decl [template = constants.%I.generic]
|
||||
// CHECK:STDOUT: %C.ref.loc9: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %I.ref.loc9: %I.type.dac = name_ref I, file.%I.decl [concrete = constants.%I.generic]
|
||||
// CHECK:STDOUT: %T.ref.loc9: type = name_ref T, %T.loc9 [symbolic = constants.%T]
|
||||
// CHECK:STDOUT: %I.type.loc9: type = facet_type <@I, @I(constants.%T)> [symbolic = constants.%I.type.325]
|
||||
// CHECK:STDOUT: %T.param.loc9: type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %T.loc9: type = bind_symbolic_name T, 0, %T.param.loc9 [symbolic = constants.%T]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: impl_decl @impl.2 [template] {
|
||||
// CHECK:STDOUT: impl_decl @impl.2 [concrete] {
|
||||
// CHECK:STDOUT: %T.patt.loc12_14.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc12_14.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc12_14.1, runtime_param<none> [symbolic = %T.patt.loc12_14.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %I.ref: %I.type.dac = name_ref I, file.%I.decl [template = constants.%I.generic]
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %I.ref: %I.type.dac = name_ref I, file.%I.decl [concrete = constants.%I.generic]
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc12_14.1 [symbolic = %T.loc12_14.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %ptr.loc12_32.1: type = ptr_type %T [symbolic = %ptr.loc12_32.2 (constants.%ptr)]
|
||||
// CHECK:STDOUT: %I.type.loc12_33.1: type = facet_type <@I, @I(constants.%ptr)> [symbolic = %I.type.loc12_33.2 (constants.%I.type.0e2)]
|
||||
@@ -217,7 +217,7 @@ impl forall [T:! type] D as J(T*) {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @C {
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -273,14 +273,14 @@ impl forall [T:! type] D as J(T*) {}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %I.type.dac: type = generic_interface_type @I [template]
|
||||
// CHECK:STDOUT: %I.generic: %I.type.dac = struct_value () [template]
|
||||
// CHECK:STDOUT: %I.type.dac: type = generic_interface_type @I [concrete]
|
||||
// CHECK:STDOUT: %I.generic: %I.type.dac = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %I.type.325: type = facet_type <@I, @I(%T)> [symbolic]
|
||||
// CHECK:STDOUT: %Self: %I.type.325 = bind_symbolic_name Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %require_complete.cfe: <witness> = require_complete_type %I.type.325 [symbolic]
|
||||
// CHECK:STDOUT: %impl_witness.eff58b.1: <witness> = impl_witness (), @impl.1(%T) [symbolic]
|
||||
// CHECK:STDOUT: %ptr: type = ptr_type %T [symbolic]
|
||||
@@ -294,59 +294,59 @@ impl forall [T:! type] D as J(T*) {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Main.C: type = import_ref Main//import_generic, C, loaded [template = constants.%C]
|
||||
// CHECK:STDOUT: %Main.I: %I.type.dac = import_ref Main//import_generic, I, loaded [template = constants.%I.generic]
|
||||
// CHECK:STDOUT: %Main.C: type = import_ref Main//import_generic, C, loaded [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %Main.I: %I.type.dac = import_ref Main//import_generic, I, loaded [concrete = constants.%I.generic]
|
||||
// CHECK:STDOUT: %Main.import_ref.003 = import_ref Main//import_generic, loc8_33, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.f6b058.1: type = import_ref Main//import_generic, loc5_13, loaded [symbolic = @I.%T (constants.%T)]
|
||||
// CHECK:STDOUT: %Main.import_ref.884 = import_ref Main//import_generic, inst31 [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.8f2: <witness> = import_ref Main//import_generic, loc4_10, loaded [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Main.import_ref.8f2: <witness> = import_ref Main//import_generic, loc4_10, loaded [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//import_generic, inst14 [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.f6b058.2: type = import_ref Main//import_generic, loc8_14, loaded [symbolic = @impl.1.%T (constants.%T)]
|
||||
// CHECK:STDOUT: %Main.import_ref.29aca8.1: type = import_ref Main//import_generic, loc8_24, loaded [template = constants.%C]
|
||||
// CHECK:STDOUT: %Main.import_ref.29aca8.1: type = import_ref Main//import_generic, loc8_24, loaded [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %Main.import_ref.4be: type = import_ref Main//import_generic, loc8_32, loaded [symbolic = @impl.1.%I.type (constants.%I.type.325)]
|
||||
// CHECK:STDOUT: %Main.import_ref.4e1 = import_ref Main//import_generic, loc12_35, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.f6b058.3: type = import_ref Main//import_generic, loc12_14, loaded [symbolic = @impl.2.%T (constants.%T)]
|
||||
// CHECK:STDOUT: %Main.import_ref.29aca8.2: type = import_ref Main//import_generic, loc12_24, loaded [template = constants.%C]
|
||||
// CHECK:STDOUT: %Main.import_ref.29aca8.2: type = import_ref Main//import_generic, loc12_24, loaded [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %Main.import_ref.3e2: type = import_ref Main//import_generic, loc12_33, loaded [symbolic = @impl.2.%I.type (constants.%I.type.0e2)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .C = imports.%Main.C
|
||||
// CHECK:STDOUT: .I = imports.%Main.I
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %default.import.loc2_6.1 = import <none>
|
||||
// CHECK:STDOUT: %default.import.loc2_6.2 = import <none>
|
||||
// CHECK:STDOUT: impl_decl @impl.3 [template] {
|
||||
// CHECK:STDOUT: impl_decl @impl.3 [concrete] {
|
||||
// CHECK:STDOUT: %T.patt.loc8_14.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_14.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc8_14.1, runtime_param<none> [symbolic = %T.patt.loc8_14.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.C [template = constants.%C]
|
||||
// CHECK:STDOUT: %I.ref: %I.type.dac = name_ref I, imports.%Main.I [template = constants.%I.generic]
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.C [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %I.ref: %I.type.dac = name_ref I, imports.%Main.I [concrete = constants.%I.generic]
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc8_14.1 [symbolic = %T.loc8_14.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %I.type.loc8_32.1: type = facet_type <@I, @I(constants.%T)> [symbolic = %I.type.loc8_32.2 (constants.%I.type.325)]
|
||||
// CHECK:STDOUT: %T.param: type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %T.loc8_14.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc8_14.2 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness.loc8: <witness> = impl_witness (), @impl.3(constants.%T) [symbolic = @impl.3.%impl_witness (constants.%impl_witness.eff58b.2)]
|
||||
// CHECK:STDOUT: impl_decl @impl.4 [template] {
|
||||
// CHECK:STDOUT: impl_decl @impl.4 [concrete] {
|
||||
// CHECK:STDOUT: %T.patt.loc14_14.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc14_14.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc14_14.1, runtime_param<none> [symbolic = %T.patt.loc14_14.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.C [template = constants.%C]
|
||||
// CHECK:STDOUT: %I.ref: %I.type.dac = name_ref I, imports.%Main.I [template = constants.%I.generic]
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.C [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %I.ref: %I.type.dac = name_ref I, imports.%Main.I [concrete = constants.%I.generic]
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc14_14.1 [symbolic = %T.loc14_14.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %I.type.loc14_32.1: type = facet_type <@I, @I(constants.%T)> [symbolic = %I.type.loc14_32.2 (constants.%I.type.325)]
|
||||
// CHECK:STDOUT: %T.param: type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %T.loc14_14.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc14_14.2 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness.loc14: <witness> = impl_witness (), @impl.4(constants.%T) [symbolic = @impl.4.%impl_witness (constants.%impl_witness.eff58b.3)]
|
||||
// CHECK:STDOUT: impl_decl @impl.5 [template] {
|
||||
// CHECK:STDOUT: impl_decl @impl.5 [concrete] {
|
||||
// CHECK:STDOUT: %T.patt.loc20_14.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc20_14.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc20_14.1, runtime_param<none> [symbolic = %T.patt.loc20_14.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.C [template = constants.%C]
|
||||
// CHECK:STDOUT: %I.ref: %I.type.dac = name_ref I, imports.%Main.I [template = constants.%I.generic]
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.C [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %I.ref: %I.type.dac = name_ref I, imports.%Main.I [concrete = constants.%I.generic]
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc20_14.1 [symbolic = %T.loc20_14.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %ptr.loc20_32.1: type = ptr_type %T [symbolic = %ptr.loc20_32.2 (constants.%ptr)]
|
||||
// CHECK:STDOUT: %I.type.loc20_33.1: type = facet_type <@I, @I(constants.%ptr)> [symbolic = %I.type.loc20_33.2 (constants.%I.type.0e2)]
|
||||
@@ -354,12 +354,12 @@ impl forall [T:! type] D as J(T*) {}
|
||||
// CHECK:STDOUT: %T.loc20_14.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc20_14.2 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness.loc20: <witness> = impl_witness (), @impl.5(constants.%T) [symbolic = @impl.5.%impl_witness (constants.%impl_witness.46542c.2)]
|
||||
// CHECK:STDOUT: impl_decl @impl.6 [template] {
|
||||
// CHECK:STDOUT: impl_decl @impl.6 [concrete] {
|
||||
// CHECK:STDOUT: %T.patt.loc26_14.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc26_14.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc26_14.1, runtime_param<none> [symbolic = %T.patt.loc26_14.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.C [template = constants.%C]
|
||||
// CHECK:STDOUT: %I.ref: %I.type.dac = name_ref I, imports.%Main.I [template = constants.%I.generic]
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.C [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %I.ref: %I.type.dac = name_ref I, imports.%Main.I [concrete = constants.%I.generic]
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc26_14.1 [symbolic = %T.loc26_14.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %ptr.loc26_32.1: type = ptr_type %T [symbolic = %ptr.loc26_32.2 (constants.%ptr)]
|
||||
// CHECK:STDOUT: %I.type.loc26_33.1: type = facet_type <@I, @I(constants.%ptr)> [symbolic = %I.type.loc26_33.2 (constants.%I.type.0e2)]
|
||||
@@ -572,13 +572,13 @@ impl forall [T:! type] D as J(T*) {}
|
||||
// CHECK:STDOUT: --- fail_import_generic_decl.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %D: type = class_type @D [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %D: type = class_type @D [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %J.type.2b8: type = generic_interface_type @J [template]
|
||||
// CHECK:STDOUT: %J.generic: %J.type.2b8 = struct_value () [template]
|
||||
// CHECK:STDOUT: %J.type.2b8: type = generic_interface_type @J [concrete]
|
||||
// CHECK:STDOUT: %J.generic: %J.type.2b8 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %J.type.b72: type = facet_type <@J, @J(%T)> [symbolic]
|
||||
// CHECK:STDOUT: %Self: %J.type.b72 = bind_symbolic_name Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.287: <witness> = require_complete_type %J.type.b72 [symbolic]
|
||||
@@ -590,36 +590,36 @@ impl forall [T:! type] D as J(T*) {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .D = %D.decl
|
||||
// CHECK:STDOUT: .J = %J.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %D.decl: type = class_decl @D [template = constants.%D] {} {}
|
||||
// CHECK:STDOUT: %J.decl: %J.type.2b8 = interface_decl @J [template = constants.%J.generic] {
|
||||
// CHECK:STDOUT: %D.decl: type = class_decl @D [concrete = constants.%D] {} {}
|
||||
// CHECK:STDOUT: %J.decl: %J.type.2b8 = interface_decl @J [concrete = constants.%J.generic] {
|
||||
// CHECK:STDOUT: %T.patt.loc5_13.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc5_13.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc5_13.1, runtime_param<none> [symbolic = %T.patt.loc5_13.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.param: type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %T.loc5_13.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc5_13.2 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: impl_decl @impl.1 [template] {
|
||||
// CHECK:STDOUT: impl_decl @impl.1 [concrete] {
|
||||
// CHECK:STDOUT: %T.patt.loc11_14.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc11_14.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc11_14.1, runtime_param<none> [symbolic = %T.patt.loc11_14.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [template = constants.%D]
|
||||
// CHECK:STDOUT: %J.ref: %J.type.2b8 = name_ref J, file.%J.decl [template = constants.%J.generic]
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D]
|
||||
// CHECK:STDOUT: %J.ref: %J.type.2b8 = name_ref J, file.%J.decl [concrete = constants.%J.generic]
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc11_14.1 [symbolic = %T.loc11_14.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %J.type.loc11_32.1: type = facet_type <@J, @J(constants.%T)> [symbolic = %J.type.loc11_32.2 (constants.%J.type.b72)]
|
||||
// CHECK:STDOUT: %T.param: type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %T.loc11_14.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc11_14.2 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness.loc11: <witness> = impl_witness (), @impl.1(constants.%T) [symbolic = @impl.1.%impl_witness (constants.%impl_witness.0ef)]
|
||||
// CHECK:STDOUT: impl_decl @impl.2 [template] {
|
||||
// CHECK:STDOUT: impl_decl @impl.2 [concrete] {
|
||||
// CHECK:STDOUT: %T.patt.loc17_14.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc17_14.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc17_14.1, runtime_param<none> [symbolic = %T.patt.loc17_14.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [template = constants.%D]
|
||||
// CHECK:STDOUT: %J.ref: %J.type.2b8 = name_ref J, file.%J.decl [template = constants.%J.generic]
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D]
|
||||
// CHECK:STDOUT: %J.ref: %J.type.2b8 = name_ref J, file.%J.decl [concrete = constants.%J.generic]
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc17_14.1 [symbolic = %T.loc17_14.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %ptr.loc17_32.1: type = ptr_type %T [symbolic = %ptr.loc17_32.2 (constants.%ptr)]
|
||||
// CHECK:STDOUT: %J.type.loc17_33.1: type = facet_type <@J, @J(constants.%ptr)> [symbolic = %J.type.loc17_33.2 (constants.%J.type.628)]
|
||||
@@ -668,7 +668,7 @@ impl forall [T:! type] D as J(T*) {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @D {
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -724,14 +724,14 @@ impl forall [T:! type] D as J(T*) {}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %J.type.2b8: type = generic_interface_type @J [template]
|
||||
// CHECK:STDOUT: %J.generic: %J.type.2b8 = struct_value () [template]
|
||||
// CHECK:STDOUT: %J.type.2b8: type = generic_interface_type @J [concrete]
|
||||
// CHECK:STDOUT: %J.generic: %J.type.2b8 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %J.type.b72: type = facet_type <@J, @J(%T)> [symbolic]
|
||||
// CHECK:STDOUT: %Self: %J.type.b72 = bind_symbolic_name Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %D: type = class_type @D [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %D: type = class_type @D [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %require_complete.287: <witness> = require_complete_type %J.type.b72 [symbolic]
|
||||
// CHECK:STDOUT: %impl_witness.0ef94b.1: <witness> = impl_witness (), @impl.1(%T) [symbolic]
|
||||
// CHECK:STDOUT: %ptr: type = ptr_type %T [symbolic]
|
||||
@@ -745,57 +745,57 @@ impl forall [T:! type] D as J(T*) {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Main.D: type = import_ref Main//import_generic_decl, D, loaded [template = constants.%D]
|
||||
// CHECK:STDOUT: %Main.J: %J.type.2b8 = import_ref Main//import_generic_decl, J, loaded [template = constants.%J.generic]
|
||||
// CHECK:STDOUT: %Main.D: type = import_ref Main//import_generic_decl, D, loaded [concrete = constants.%D]
|
||||
// CHECK:STDOUT: %Main.J: %J.type.2b8 = import_ref Main//import_generic_decl, J, loaded [concrete = constants.%J.generic]
|
||||
// CHECK:STDOUT: %Main.import_ref.f6b058.1: type = import_ref Main//import_generic_decl, loc5_13, loaded [symbolic = @J.%T (constants.%T)]
|
||||
// CHECK:STDOUT: %Main.import_ref.ff5 = import_ref Main//import_generic_decl, inst31 [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.8f2: <witness> = import_ref Main//import_generic_decl, loc4_10, loaded [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Main.import_ref.8f2: <witness> = import_ref Main//import_generic_decl, loc4_10, loaded [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Main.import_ref.cab = import_ref Main//import_generic_decl, inst14 [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.f6b058.2: type = import_ref Main//import_generic_decl, loc11_14, loaded [symbolic = @impl.1.%T (constants.%T)]
|
||||
// CHECK:STDOUT: %Main.import_ref.aa9f8a.1: type = import_ref Main//import_generic_decl, loc11_24, loaded [template = constants.%D]
|
||||
// CHECK:STDOUT: %Main.import_ref.aa9f8a.1: type = import_ref Main//import_generic_decl, loc11_24, loaded [concrete = constants.%D]
|
||||
// CHECK:STDOUT: %Main.import_ref.ded: type = import_ref Main//import_generic_decl, loc11_32, loaded [symbolic = @impl.1.%J.type (constants.%J.type.b72)]
|
||||
// CHECK:STDOUT: %Main.import_ref.f6b058.3: type = import_ref Main//import_generic_decl, loc17_14, loaded [symbolic = @impl.2.%T (constants.%T)]
|
||||
// CHECK:STDOUT: %Main.import_ref.aa9f8a.2: type = import_ref Main//import_generic_decl, loc17_24, loaded [template = constants.%D]
|
||||
// CHECK:STDOUT: %Main.import_ref.aa9f8a.2: type = import_ref Main//import_generic_decl, loc17_24, loaded [concrete = constants.%D]
|
||||
// CHECK:STDOUT: %Main.import_ref.0d3: type = import_ref Main//import_generic_decl, loc17_33, loaded [symbolic = @impl.2.%J.type (constants.%J.type.628)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .D = imports.%Main.D
|
||||
// CHECK:STDOUT: .J = imports.%Main.J
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %default.import.loc2_6.1 = import <none>
|
||||
// CHECK:STDOUT: %default.import.loc2_6.2 = import <none>
|
||||
// CHECK:STDOUT: impl_decl @impl.3 [template] {
|
||||
// CHECK:STDOUT: impl_decl @impl.3 [concrete] {
|
||||
// CHECK:STDOUT: %T.patt.loc8_14.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_14.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc8_14.1, runtime_param<none> [symbolic = %T.patt.loc8_14.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, imports.%Main.D [template = constants.%D]
|
||||
// CHECK:STDOUT: %J.ref: %J.type.2b8 = name_ref J, imports.%Main.J [template = constants.%J.generic]
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, imports.%Main.D [concrete = constants.%D]
|
||||
// CHECK:STDOUT: %J.ref: %J.type.2b8 = name_ref J, imports.%Main.J [concrete = constants.%J.generic]
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc8_14.1 [symbolic = %T.loc8_14.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %J.type.loc8_32.1: type = facet_type <@J, @J(constants.%T)> [symbolic = %J.type.loc8_32.2 (constants.%J.type.b72)]
|
||||
// CHECK:STDOUT: %T.param: type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %T.loc8_14.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc8_14.2 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness.loc8: <witness> = impl_witness (), @impl.3(constants.%T) [symbolic = @impl.3.%impl_witness (constants.%impl_witness.0ef94b.2)]
|
||||
// CHECK:STDOUT: impl_decl @impl.4 [template] {
|
||||
// CHECK:STDOUT: impl_decl @impl.4 [concrete] {
|
||||
// CHECK:STDOUT: %T.patt.loc14_14.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc14_14.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc14_14.1, runtime_param<none> [symbolic = %T.patt.loc14_14.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, imports.%Main.D [template = constants.%D]
|
||||
// CHECK:STDOUT: %J.ref: %J.type.2b8 = name_ref J, imports.%Main.J [template = constants.%J.generic]
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, imports.%Main.D [concrete = constants.%D]
|
||||
// CHECK:STDOUT: %J.ref: %J.type.2b8 = name_ref J, imports.%Main.J [concrete = constants.%J.generic]
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc14_14.1 [symbolic = %T.loc14_14.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %J.type.loc14_32.1: type = facet_type <@J, @J(constants.%T)> [symbolic = %J.type.loc14_32.2 (constants.%J.type.b72)]
|
||||
// CHECK:STDOUT: %T.param: type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %T.loc14_14.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc14_14.2 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness.loc14: <witness> = impl_witness (), @impl.4(constants.%T) [symbolic = @impl.4.%impl_witness (constants.%impl_witness.0ef94b.3)]
|
||||
// CHECK:STDOUT: impl_decl @impl.5 [template] {
|
||||
// CHECK:STDOUT: impl_decl @impl.5 [concrete] {
|
||||
// CHECK:STDOUT: %T.patt.loc20_14.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc20_14.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc20_14.1, runtime_param<none> [symbolic = %T.patt.loc20_14.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, imports.%Main.D [template = constants.%D]
|
||||
// CHECK:STDOUT: %J.ref: %J.type.2b8 = name_ref J, imports.%Main.J [template = constants.%J.generic]
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, imports.%Main.D [concrete = constants.%D]
|
||||
// CHECK:STDOUT: %J.ref: %J.type.2b8 = name_ref J, imports.%Main.J [concrete = constants.%J.generic]
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc20_14.1 [symbolic = %T.loc20_14.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %ptr.loc20_32.1: type = ptr_type %T [symbolic = %ptr.loc20_32.2 (constants.%ptr)]
|
||||
// CHECK:STDOUT: %J.type.loc20_33.1: type = facet_type <@J, @J(constants.%ptr)> [symbolic = %J.type.loc20_33.2 (constants.%J.type.628)]
|
||||
@@ -803,12 +803,12 @@ impl forall [T:! type] D as J(T*) {}
|
||||
// CHECK:STDOUT: %T.loc20_14.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc20_14.2 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness.loc20: <witness> = impl_witness (), @impl.5(constants.%T) [symbolic = @impl.5.%impl_witness (constants.%impl_witness.b80f53.2)]
|
||||
// CHECK:STDOUT: impl_decl @impl.6 [template] {
|
||||
// CHECK:STDOUT: impl_decl @impl.6 [concrete] {
|
||||
// CHECK:STDOUT: %T.patt.loc26_14.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc26_14.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc26_14.1, runtime_param<none> [symbolic = %T.patt.loc26_14.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, imports.%Main.D [template = constants.%D]
|
||||
// CHECK:STDOUT: %J.ref: %J.type.2b8 = name_ref J, imports.%Main.J [template = constants.%J.generic]
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, imports.%Main.D [concrete = constants.%D]
|
||||
// CHECK:STDOUT: %J.ref: %J.type.2b8 = name_ref J, imports.%Main.J [concrete = constants.%J.generic]
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc26_14.1 [symbolic = %T.loc26_14.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %ptr.loc26_32.1: type = ptr_type %T [symbolic = %ptr.loc26_32.2 (constants.%ptr)]
|
||||
// CHECK:STDOUT: %J.type.loc26_33.1: type = facet_type <@J, @J(constants.%ptr)> [symbolic = %J.type.loc26_33.2 (constants.%J.type.628)]
|
||||
|
||||
+329
-329
File diff suppressed because it is too large
Load Diff
+48
-48
@@ -33,25 +33,25 @@ fn F(x: (), y: ()) -> () {
|
||||
// CHECK:STDOUT: --- a.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %Add.type: type = facet_type <@Add> [template]
|
||||
// CHECK:STDOUT: %Add.type: type = facet_type <@Add> [concrete]
|
||||
// CHECK:STDOUT: %Self: %Add.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic]
|
||||
// CHECK:STDOUT: %Op.type: type = fn_type @Op [template]
|
||||
// CHECK:STDOUT: %Op: %Op.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %Add.assoc_type: type = assoc_entity_type %Add.type [template]
|
||||
// CHECK:STDOUT: %assoc0: %Add.assoc_type = assoc_entity element0, @Add.%Op.decl [template]
|
||||
// CHECK:STDOUT: %Op.type: type = fn_type @Op [concrete]
|
||||
// CHECK:STDOUT: %Op: %Op.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Add.assoc_type: type = assoc_entity_type %Add.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0: %Add.assoc_type = assoc_entity element0, @Add.%Op.decl [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Add = %Add.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Add.decl: type = interface_decl @Add [template = constants.%Add.type] {} {}
|
||||
// CHECK:STDOUT: %Add.decl: type = interface_decl @Add [concrete = constants.%Add.type] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @Add {
|
||||
// CHECK:STDOUT: %Self: %Add.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self]
|
||||
// CHECK:STDOUT: %Op.decl: %Op.type = fn_decl @Op [template = constants.%Op] {
|
||||
// CHECK:STDOUT: %Op.decl: %Op.type = fn_decl @Op [concrete = constants.%Op] {
|
||||
// CHECK:STDOUT: %self.patt: @Op.%Self.as_type.loc5_15.1 (%Self.as_type) = binding_pattern self
|
||||
// CHECK:STDOUT: %self.param_patt: @Op.%Self.as_type.loc5_15.1 (%Self.as_type) = value_param_pattern %self.patt, runtime_param0
|
||||
// CHECK:STDOUT: %other.patt: @Op.%Self.as_type.loc5_15.1 (%Self.as_type) = binding_pattern other
|
||||
@@ -79,7 +79,7 @@ fn F(x: (), y: ()) -> () {
|
||||
// CHECK:STDOUT: %return.param: ref @Op.%Self.as_type.loc5_15.1 (%Self.as_type) = out_param runtime_param2
|
||||
// CHECK:STDOUT: %return: ref @Op.%Self.as_type.loc5_15.1 (%Self.as_type) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %assoc0: %Add.assoc_type = assoc_entity element0, %Op.decl [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %assoc0: %Add.assoc_type = assoc_entity element0, %Op.decl [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -102,45 +102,45 @@ fn F(x: (), y: ()) -> () {
|
||||
// CHECK:STDOUT: --- b.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %Add.type: type = facet_type <@Add> [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %Add.type: type = facet_type <@Add> [concrete]
|
||||
// CHECK:STDOUT: %Self: %Add.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Op.type.31b: type = fn_type @Op.1 [template]
|
||||
// CHECK:STDOUT: %Op.d59: %Op.type.31b = struct_value () [template]
|
||||
// CHECK:STDOUT: %Op.type.31b: type = fn_type @Op.1 [concrete]
|
||||
// CHECK:STDOUT: %Op.d59: %Op.type.31b = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%Op.decl) [template]
|
||||
// CHECK:STDOUT: %Op.type.adf: type = fn_type @Op.2 [template]
|
||||
// CHECK:STDOUT: %Op.489: %Op.type.adf = struct_value () [template]
|
||||
// CHECK:STDOUT: %Add.facet: %Add.type = facet_value %empty_tuple.type, %impl_witness [template]
|
||||
// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [template]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %Add.assoc_type: type = assoc_entity_type %Add.type [template]
|
||||
// CHECK:STDOUT: %assoc0: %Add.assoc_type = assoc_entity element0, imports.%Main.import_ref.5a3 [template]
|
||||
// CHECK:STDOUT: %.a26: type = fn_type_with_self_type %Op.type.31b, %Add.facet [template]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%Op.decl) [concrete]
|
||||
// CHECK:STDOUT: %Op.type.adf: type = fn_type @Op.2 [concrete]
|
||||
// CHECK:STDOUT: %Op.489: %Op.type.adf = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Add.facet: %Add.type = facet_value %empty_tuple.type, %impl_witness [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Add.assoc_type: type = assoc_entity_type %Add.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0: %Add.assoc_type = assoc_entity element0, imports.%Main.import_ref.5a3 [concrete]
|
||||
// CHECK:STDOUT: %.a26: type = fn_type_with_self_type %Op.type.31b, %Add.facet [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Main.Add: type = import_ref Main//a, Add, loaded [template = constants.%Add.type]
|
||||
// CHECK:STDOUT: %Main.Add: type = import_ref Main//a, Add, loaded [concrete = constants.%Add.type]
|
||||
// CHECK:STDOUT: %Main.import_ref.07c = import_ref Main//a, inst15 [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.db7: %Add.assoc_type = import_ref Main//a, loc5_41, loaded [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %Main.Op: %Op.type.31b = import_ref Main//a, Op, loaded [template = constants.%Op.d59]
|
||||
// CHECK:STDOUT: %Main.import_ref.db7: %Add.assoc_type = import_ref Main//a, loc5_41, loaded [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %Main.Op: %Op.type.31b = import_ref Main//a, Op, loaded [concrete = constants.%Op.d59]
|
||||
// CHECK:STDOUT: %Main.import_ref.e5e: %Add.type = import_ref Main//a, inst15 [no loc], loaded [symbolic = constants.%Self]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Add = imports.%Main.Add
|
||||
// CHECK:STDOUT: .F = %F.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %default.import = import <none>
|
||||
// CHECK:STDOUT: impl_decl @impl [template] {} {
|
||||
// CHECK:STDOUT: impl_decl @impl [concrete] {} {
|
||||
// CHECK:STDOUT: %.loc6_7.1: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc6_7.2: type = converted %.loc6_7.1, constants.%empty_tuple.type [template = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %Add.ref: type = name_ref Add, imports.%Main.Add [template = constants.%Add.type]
|
||||
// CHECK:STDOUT: %.loc6_7.2: type = converted %.loc6_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %Add.ref: type = name_ref Add, imports.%Main.Add [concrete = constants.%Add.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%Op.decl) [template = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%Op.decl) [concrete = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {
|
||||
// CHECK:STDOUT: %x.patt: %empty_tuple.type = binding_pattern x
|
||||
// CHECK:STDOUT: %x.param_patt: %empty_tuple.type = value_param_pattern %x.patt, runtime_param0
|
||||
// CHECK:STDOUT: %y.patt: %empty_tuple.type = binding_pattern y
|
||||
@@ -149,17 +149,17 @@ fn F(x: (), y: ()) -> () {
|
||||
// CHECK:STDOUT: %return.param_patt: %empty_tuple.type = out_param_pattern %return.patt, runtime_param2
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc10_24.1: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc10_24.2: type = converted %.loc10_24.1, constants.%empty_tuple.type [template = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %.loc10_24.2: type = converted %.loc10_24.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %x.param: %empty_tuple.type = value_param runtime_param0
|
||||
// CHECK:STDOUT: %.loc10_10.1: type = splice_block %.loc10_10.3 [template = constants.%empty_tuple.type] {
|
||||
// CHECK:STDOUT: %.loc10_10.1: type = splice_block %.loc10_10.3 [concrete = constants.%empty_tuple.type] {
|
||||
// CHECK:STDOUT: %.loc10_10.2: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc10_10.3: type = converted %.loc10_10.2, constants.%empty_tuple.type [template = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %.loc10_10.3: type = converted %.loc10_10.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %x: %empty_tuple.type = bind_name x, %x.param
|
||||
// CHECK:STDOUT: %y.param: %empty_tuple.type = value_param runtime_param1
|
||||
// CHECK:STDOUT: %.loc10_17.1: type = splice_block %.loc10_17.3 [template = constants.%empty_tuple.type] {
|
||||
// CHECK:STDOUT: %.loc10_17.1: type = splice_block %.loc10_17.3 [concrete = constants.%empty_tuple.type] {
|
||||
// CHECK:STDOUT: %.loc10_17.2: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc10_17.3: type = converted %.loc10_17.2, constants.%empty_tuple.type [template = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %.loc10_17.3: type = converted %.loc10_17.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %y: %empty_tuple.type = bind_name y, %y.param
|
||||
// CHECK:STDOUT: %return.param: ref %empty_tuple.type = out_param runtime_param2
|
||||
@@ -175,7 +175,7 @@ fn F(x: (), y: ()) -> () {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl: %.loc6_7.2 as %Add.ref {
|
||||
// CHECK:STDOUT: %Op.decl: %Op.type.adf = fn_decl @Op.2 [template = constants.%Op.489] {
|
||||
// CHECK:STDOUT: %Op.decl: %Op.type.adf = fn_decl @Op.2 [concrete = constants.%Op.489] {
|
||||
// CHECK:STDOUT: %self.patt: %empty_tuple.type = binding_pattern self
|
||||
// CHECK:STDOUT: %self.param_patt: %empty_tuple.type = value_param_pattern %self.patt, runtime_param0
|
||||
// CHECK:STDOUT: %other.patt: %empty_tuple.type = binding_pattern other
|
||||
@@ -183,12 +183,12 @@ fn F(x: (), y: ()) -> () {
|
||||
// CHECK:STDOUT: %return.patt: %empty_tuple.type = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %empty_tuple.type = out_param_pattern %return.patt, runtime_param2
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %Self.ref.loc7_37: type = name_ref Self, @impl.%.loc6_7.2 [template = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %Self.ref.loc7_37: type = name_ref Self, @impl.%.loc6_7.2 [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %self.param: %empty_tuple.type = value_param runtime_param0
|
||||
// CHECK:STDOUT: %Self.ref.loc7_15: type = name_ref Self, @impl.%.loc6_7.2 [template = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %Self.ref.loc7_15: type = name_ref Self, @impl.%.loc6_7.2 [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %self: %empty_tuple.type = bind_name self, %self.param
|
||||
// CHECK:STDOUT: %other.param: %empty_tuple.type = value_param runtime_param1
|
||||
// CHECK:STDOUT: %Self.ref.loc7_28: type = name_ref Self, @impl.%.loc6_7.2 [template = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %Self.ref.loc7_28: type = name_ref Self, @impl.%.loc6_7.2 [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %other: %empty_tuple.type = bind_name other, %other.param
|
||||
// CHECK:STDOUT: %return.param: ref %empty_tuple.type = out_param runtime_param2
|
||||
// CHECK:STDOUT: %return: ref %empty_tuple.type = return_slot %return.param
|
||||
@@ -209,24 +209,24 @@ fn F(x: (), y: ()) -> () {
|
||||
// CHECK:STDOUT: fn @Op.2[%self.param_patt: %empty_tuple.type](%other.param_patt: %empty_tuple.type) -> %empty_tuple.type {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %.loc7_52: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [template = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc7_53: %empty_tuple.type = converted %.loc7_52, %empty_tuple [template = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc7_53: %empty_tuple.type = converted %.loc7_52, %empty_tuple [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: return %.loc7_53
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @F(%x.param_patt: %empty_tuple.type, %y.param_patt: %empty_tuple.type) -> %empty_tuple.type {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %x.ref: %empty_tuple.type = name_ref x, %x
|
||||
// CHECK:STDOUT: %Add.ref: type = name_ref Add, imports.%Main.Add [template = constants.%Add.type]
|
||||
// CHECK:STDOUT: %Op.ref: %Add.assoc_type = name_ref Op, imports.%Main.import_ref.db7 [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0: %.a26 = impl_witness_access constants.%impl_witness, element0 [template = constants.%Op.489]
|
||||
// CHECK:STDOUT: %Add.ref: type = name_ref Add, imports.%Main.Add [concrete = constants.%Add.type]
|
||||
// CHECK:STDOUT: %Op.ref: %Add.assoc_type = name_ref Op, imports.%Main.import_ref.db7 [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0: %.a26 = impl_witness_access constants.%impl_witness, element0 [concrete = constants.%Op.489]
|
||||
// CHECK:STDOUT: %bound_method: <bound method> = bound_method %x.ref, %impl.elem0
|
||||
// CHECK:STDOUT: %y.ref: %empty_tuple.type = name_ref y, %y
|
||||
// CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %bound_method(%x.ref, %y.ref)
|
||||
// CHECK:STDOUT: %.loc11_22.1: ref %empty_tuple.type = temporary_storage
|
||||
// CHECK:STDOUT: %.loc11_22.2: ref %empty_tuple.type = temporary %.loc11_22.1, %Op.call
|
||||
// CHECK:STDOUT: %tuple: %empty_tuple.type = tuple_value () [template = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc11_23: %empty_tuple.type = converted %Op.call, %tuple [template = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %tuple: %empty_tuple.type = tuple_value () [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc11_23: %empty_tuple.type = converted %Op.call, %tuple [concrete = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: return %.loc11_23
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
@@ -45,17 +45,17 @@ fn F() -> c.(I.F)() {}
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %C.type: type = generic_class_type @C [template]
|
||||
// CHECK:STDOUT: %C.generic: %C.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %C.type: type = generic_class_type @C [concrete]
|
||||
// CHECK:STDOUT: %C.generic: %C.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %C: type = class_type @C, @C(%T) [symbolic]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete]
|
||||
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %F.type.cf0: type = fn_type @F.1 [template]
|
||||
// CHECK:STDOUT: %F.bc6: %F.type.cf0 = struct_value () [template]
|
||||
// CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type %I.type [template]
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%F.decl [template]
|
||||
// CHECK:STDOUT: %F.type.cf0: type = fn_type @F.1 [concrete]
|
||||
// CHECK:STDOUT: %F.bc6: %F.type.cf0 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type %I.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%F.decl [concrete]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%F.decl), @impl(%T) [symbolic]
|
||||
// CHECK:STDOUT: %F.type.40c: type = fn_type @F.2, @impl(%T) [symbolic]
|
||||
// CHECK:STDOUT: %F.071: %F.type.40c = struct_value () [symbolic]
|
||||
@@ -63,26 +63,26 @@ fn F() -> c.(I.F)() {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .C = %C.decl
|
||||
// CHECK:STDOUT: .I = %I.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %C.decl: %C.type = class_decl @C [template = constants.%C.generic] {
|
||||
// CHECK:STDOUT: %C.decl: %C.type = class_decl @C [concrete = constants.%C.generic] {
|
||||
// CHECK:STDOUT: %T.patt.loc4_9.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_9.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc4_9.1, runtime_param<none> [symbolic = %T.patt.loc4_9.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.param: type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %T.loc4_9.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_9.2 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [template = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [template] {
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [concrete] {
|
||||
// CHECK:STDOUT: %T.patt.loc10_14.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc10_14.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc10_14.1, runtime_param<none> [symbolic = %T.patt.loc10_14.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [template = constants.%C.generic]
|
||||
// CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [concrete = constants.%C.generic]
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc10_14.1 [symbolic = %T.loc10_14.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %C.loc10_27.1: type = class_type @C, @C(constants.%T) [symbolic = %C.loc10_27.2 (constants.%C)]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [template = constants.%I.type]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, file.%I.decl [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: %T.param: type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %T.loc10_14.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc10_14.2 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -91,8 +91,8 @@ fn F() -> c.(I.F)() {}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @I {
|
||||
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self]
|
||||
// CHECK:STDOUT: %F.decl: %F.type.cf0 = fn_decl @F.1 [template = constants.%F.bc6] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %F.decl: %F.type.cf0 = fn_decl @F.1 [concrete = constants.%F.bc6] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -126,7 +126,7 @@ fn F() -> c.(I.F)() {}
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class {
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -176,55 +176,55 @@ fn F() -> c.(I.F)() {}
|
||||
// CHECK:STDOUT: --- fail_use_in_fn_decl.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %C.type: type = generic_class_type @C [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %C.generic: %C.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %C.type: type = generic_class_type @C [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %C.generic: %C.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %C.f2e: type = class_type @C, @C(%T) [symbolic]
|
||||
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %C.7a7: type = class_type @C, @C(%empty_struct_type) [template]
|
||||
// CHECK:STDOUT: %C.val: %C.7a7 = struct_value () [template]
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [template]
|
||||
// CHECK:STDOUT: %C.7a7: type = class_type @C, @C(%empty_struct_type) [concrete]
|
||||
// CHECK:STDOUT: %C.val: %C.7a7 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete]
|
||||
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type %I.type [template]
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, imports.%Main.import_ref.e03 [template]
|
||||
// CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type %I.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, imports.%Main.import_ref.e03 [concrete]
|
||||
// CHECK:STDOUT: %impl_witness.681: <witness> = impl_witness (imports.%Main.import_ref.e2c), @impl(%T) [symbolic]
|
||||
// CHECK:STDOUT: %F.type.40c: type = fn_type @F.1, @impl(%T) [symbolic]
|
||||
// CHECK:STDOUT: %F.071: %F.type.40c = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %impl_witness.02b: <witness> = impl_witness (imports.%Main.import_ref.e2c), @impl(%empty_struct_type) [template]
|
||||
// CHECK:STDOUT: %impl_witness.02b: <witness> = impl_witness (imports.%Main.import_ref.e2c), @impl(%empty_struct_type) [concrete]
|
||||
// CHECK:STDOUT: %impl_witness.bbe: <witness> = impl_witness (imports.%Main.import_ref.c57), @impl(%T) [symbolic]
|
||||
// CHECK:STDOUT: %F.type.4a4: type = fn_type @F.1, @impl(%empty_struct_type) [template]
|
||||
// CHECK:STDOUT: %F.9e6: %F.type.4a4 = struct_value () [template]
|
||||
// CHECK:STDOUT: %F.type.cf0: type = fn_type @F.2 [template]
|
||||
// CHECK:STDOUT: %I.facet: %I.type = facet_value %C.7a7, %impl_witness.02b [template]
|
||||
// CHECK:STDOUT: %.c06: type = fn_type_with_self_type %F.type.cf0, %I.facet [template]
|
||||
// CHECK:STDOUT: %F.specific_fn: <specific function> = specific_function %F.9e6, @F.1(%empty_struct_type) [template]
|
||||
// CHECK:STDOUT: %F.type.b25: type = fn_type @F.3 [template]
|
||||
// CHECK:STDOUT: %F.c41: %F.type.b25 = struct_value () [template]
|
||||
// CHECK:STDOUT: %F.type.4a4: type = fn_type @F.1, @impl(%empty_struct_type) [concrete]
|
||||
// CHECK:STDOUT: %F.9e6: %F.type.4a4 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %F.type.cf0: type = fn_type @F.2 [concrete]
|
||||
// CHECK:STDOUT: %I.facet: %I.type = facet_value %C.7a7, %impl_witness.02b [concrete]
|
||||
// CHECK:STDOUT: %.c06: type = fn_type_with_self_type %F.type.cf0, %I.facet [concrete]
|
||||
// CHECK:STDOUT: %F.specific_fn: <specific function> = specific_function %F.9e6, @F.1(%empty_struct_type) [concrete]
|
||||
// CHECK:STDOUT: %F.type.b25: type = fn_type @F.3 [concrete]
|
||||
// CHECK:STDOUT: %F.c41: %F.type.b25 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Main.C: %C.type = import_ref Main//import_generic, C, loaded [template = constants.%C.generic]
|
||||
// CHECK:STDOUT: %Main.I: type = import_ref Main//import_generic, I, loaded [template = constants.%I.type]
|
||||
// CHECK:STDOUT: %Main.C: %C.type = import_ref Main//import_generic, C, loaded [concrete = constants.%C.generic]
|
||||
// CHECK:STDOUT: %Main.I: type = import_ref Main//import_generic, I, loaded [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: %Main.import_ref.f6b058.1: type = import_ref Main//import_generic, loc4_9, loaded [symbolic = @C.%T (constants.%T)]
|
||||
// CHECK:STDOUT: %Main.import_ref.8f2: <witness> = import_ref Main//import_generic, loc4_20, loaded [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Main.import_ref.8f2: <witness> = import_ref Main//import_generic, loc4_20, loaded [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Main.import_ref.4c0 = import_ref Main//import_generic, inst25 [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.e5d = import_ref Main//import_generic, inst31 [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.bcb: %I.assoc_type = import_ref Main//import_generic, loc7_9, loaded [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %Main.import_ref.bcb: %I.assoc_type = import_ref Main//import_generic, loc7_9, loaded [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %Main.F = import_ref Main//import_generic, F, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.d91: <witness> = import_ref Main//import_generic, loc10_34, loaded [symbolic = @impl.%impl_witness (constants.%impl_witness.bbe)]
|
||||
// CHECK:STDOUT: %Main.import_ref.f6b058.2: type = import_ref Main//import_generic, loc10_14, loaded [symbolic = @impl.%T (constants.%T)]
|
||||
// CHECK:STDOUT: %Main.import_ref.499: type = import_ref Main//import_generic, loc10_27, loaded [symbolic = @impl.%C (constants.%C.f2e)]
|
||||
// CHECK:STDOUT: %Main.import_ref.301: type = import_ref Main//import_generic, loc10_32, loaded [template = constants.%I.type]
|
||||
// CHECK:STDOUT: %Main.import_ref.301: type = import_ref Main//import_generic, loc10_32, loaded [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: %Main.import_ref.e2c: @impl.%F.type (%F.type.40c) = import_ref Main//import_generic, loc11_10, loaded [symbolic = @impl.%F (constants.%F.071)]
|
||||
// CHECK:STDOUT: %Main.import_ref.f6b058.3: type = import_ref Main//import_generic, loc10_14, loaded [symbolic = @impl.%T (constants.%T)]
|
||||
// CHECK:STDOUT: %Main.import_ref.5dd: %I.type = import_ref Main//import_generic, inst31 [no loc], loaded [symbolic = constants.%Self]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .C = imports.%Main.C
|
||||
// CHECK:STDOUT: .I = imports.%Main.I
|
||||
// CHECK:STDOUT: .c = %c
|
||||
@@ -236,26 +236,26 @@ fn F() -> c.(I.F)() {}
|
||||
// CHECK:STDOUT: %.loc6_1: %C.7a7 = var_pattern %c.patt
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %c.var: ref %C.7a7 = var c
|
||||
// CHECK:STDOUT: %.loc6_12.1: type = splice_block %C [template = constants.%C.7a7] {
|
||||
// CHECK:STDOUT: %C.ref: %C.type = name_ref C, imports.%Main.C [template = constants.%C.generic]
|
||||
// CHECK:STDOUT: %.loc6_12.1: type = splice_block %C [concrete = constants.%C.7a7] {
|
||||
// CHECK:STDOUT: %C.ref: %C.type = name_ref C, imports.%Main.C [concrete = constants.%C.generic]
|
||||
// CHECK:STDOUT: %.loc6_11: %empty_struct_type = struct_literal ()
|
||||
// CHECK:STDOUT: %.loc6_12.2: type = converted %.loc6_11, constants.%empty_struct_type [template = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%empty_struct_type) [template = constants.%C.7a7]
|
||||
// CHECK:STDOUT: %.loc6_12.2: type = converted %.loc6_11, constants.%empty_struct_type [concrete = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%empty_struct_type) [concrete = constants.%C.7a7]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %c: ref %C.7a7 = bind_name c, %c.var
|
||||
// CHECK:STDOUT: %F.decl: %F.type.b25 = fn_decl @F.3 [template = constants.%F.c41] {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.b25 = fn_decl @F.3 [concrete = constants.%F.c41] {
|
||||
// CHECK:STDOUT: %return.patt: <error> = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: <error> = out_param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %c.ref: ref %C.7a7 = name_ref c, file.%c
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, imports.%Main.I [template = constants.%I.type]
|
||||
// CHECK:STDOUT: %F.ref: %I.assoc_type = name_ref F, imports.%Main.import_ref.bcb [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0: %.c06 = impl_witness_access constants.%impl_witness.02b, element0 [template = constants.%F.9e6]
|
||||
// CHECK:STDOUT: %specific_fn: <specific function> = specific_function %impl.elem0, @F.1(constants.%empty_struct_type) [template = constants.%F.specific_fn]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, imports.%Main.I [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: %F.ref: %I.assoc_type = name_ref F, imports.%Main.import_ref.bcb [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0: %.c06 = impl_witness_access constants.%impl_witness.02b, element0 [concrete = constants.%F.9e6]
|
||||
// CHECK:STDOUT: %specific_fn: <specific function> = specific_function %impl.elem0, @F.1(constants.%empty_struct_type) [concrete = constants.%F.specific_fn]
|
||||
// CHECK:STDOUT: %F.call: init %empty_tuple.type = call %specific_fn()
|
||||
// CHECK:STDOUT: %.loc16_19.1: ref %empty_tuple.type = temporary_storage
|
||||
// CHECK:STDOUT: %.loc16_19.2: ref %empty_tuple.type = temporary %.loc16_19.1, %F.call
|
||||
// CHECK:STDOUT: %.loc16_19.3: type = converted %F.call, <error> [template = <error>]
|
||||
// CHECK:STDOUT: %.loc16_19.3: type = converted %F.call, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %return.param: ref <error> = out_param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref <error> = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
@@ -315,8 +315,8 @@ fn F() -> c.(I.F)() {}
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %.loc6_17.1: %empty_struct_type = struct_literal ()
|
||||
// CHECK:STDOUT: %.loc6_17.2: init %C.7a7 = class_init (), file.%c.var [template = constants.%C.val]
|
||||
// CHECK:STDOUT: %.loc6_1: init %C.7a7 = converted %.loc6_17.1, %.loc6_17.2 [template = constants.%C.val]
|
||||
// CHECK:STDOUT: %.loc6_17.2: init %C.7a7 = class_init (), file.%c.var [concrete = constants.%C.val]
|
||||
// CHECK:STDOUT: %.loc6_1: init %C.7a7 = converted %.loc6_17.1, %.loc6_17.2 [concrete = constants.%C.val]
|
||||
// CHECK:STDOUT: assign file.%c.var, %.loc6_1
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
+215
-215
@@ -84,65 +84,65 @@ fn MakeC(a: A) -> C {
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Action.type.29c: type = generic_interface_type @Action [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %Action.generic: %Action.type.29c = struct_value () [template]
|
||||
// CHECK:STDOUT: %Action.type.29c: type = generic_interface_type @Action [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %Action.generic: %Action.type.29c = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Action.type.cca: type = facet_type <@Action, @Action(%T)> [symbolic]
|
||||
// CHECK:STDOUT: %Self: %Action.type.cca = bind_symbolic_name Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: %Op.type.036: type = fn_type @Op.1, @Action(%T) [symbolic]
|
||||
// CHECK:STDOUT: %Op.6ed: %Op.type.036 = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %Action.assoc_type.8f9: type = assoc_entity_type %Action.type.cca [symbolic]
|
||||
// CHECK:STDOUT: %assoc0.69b: %Action.assoc_type.8f9 = assoc_entity element0, @Action.%Op.decl [symbolic]
|
||||
// CHECK:STDOUT: %A: type = class_type @A [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %B: type = class_type @B [template]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [template]
|
||||
// CHECK:STDOUT: %Action.type.cb0: type = facet_type <@Action, @Action(%B)> [template]
|
||||
// CHECK:STDOUT: %Op.type.54d: type = fn_type @Op.1, @Action(%B) [template]
|
||||
// CHECK:STDOUT: %Op.dba: %Op.type.54d = struct_value () [template]
|
||||
// CHECK:STDOUT: %Action.assoc_type.827: type = assoc_entity_type %Action.type.cb0 [template]
|
||||
// CHECK:STDOUT: %assoc0.035: %Action.assoc_type.827 = assoc_entity element0, @Action.%Op.decl [template]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%Op.decl) [template]
|
||||
// CHECK:STDOUT: %Op.type.4b4: type = fn_type @Op.2 [template]
|
||||
// CHECK:STDOUT: %Op.40d: %Op.type.4b4 = struct_value () [template]
|
||||
// CHECK:STDOUT: %Action.facet: %Action.type.cb0 = facet_value %A, %impl_witness [template]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.920: type = fn_type_with_self_type %Op.type.54d, %Action.facet [template]
|
||||
// CHECK:STDOUT: %A: type = class_type @A [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %B: type = class_type @B [concrete]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [concrete]
|
||||
// CHECK:STDOUT: %Action.type.cb0: type = facet_type <@Action, @Action(%B)> [concrete]
|
||||
// CHECK:STDOUT: %Op.type.54d: type = fn_type @Op.1, @Action(%B) [concrete]
|
||||
// CHECK:STDOUT: %Op.dba: %Op.type.54d = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Action.assoc_type.827: type = assoc_entity_type %Action.type.cb0 [concrete]
|
||||
// CHECK:STDOUT: %assoc0.035: %Action.assoc_type.827 = assoc_entity element0, @Action.%Op.decl [concrete]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%Op.decl) [concrete]
|
||||
// CHECK:STDOUT: %Op.type.4b4: type = fn_type @Op.2 [concrete]
|
||||
// CHECK:STDOUT: %Op.40d: %Op.type.4b4 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Action.facet: %Action.type.cb0 = facet_value %A, %impl_witness [concrete]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %.920: type = fn_type_with_self_type %Op.type.54d, %Action.facet [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Action = %Action.decl
|
||||
// CHECK:STDOUT: .A = %A.decl
|
||||
// CHECK:STDOUT: .B = %B.decl
|
||||
// CHECK:STDOUT: .C = %C.decl
|
||||
// CHECK:STDOUT: .F = %F.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Action.decl: %Action.type.29c = interface_decl @Action [template = constants.%Action.generic] {
|
||||
// CHECK:STDOUT: %Action.decl: %Action.type.29c = interface_decl @Action [concrete = constants.%Action.generic] {
|
||||
// CHECK:STDOUT: %T.patt.loc4_18.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_18.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc4_18.1, runtime_param<none> [symbolic = %T.patt.loc4_18.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.param: type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %T.loc4_18.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_18.2 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %A.decl: type = class_decl @A [template = constants.%A] {} {}
|
||||
// CHECK:STDOUT: %B.decl: type = class_decl @B [template = constants.%B] {} {}
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [template] {} {
|
||||
// CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [template = constants.%A]
|
||||
// CHECK:STDOUT: %Action.ref: %Action.type.29c = name_ref Action, file.%Action.decl [template = constants.%Action.generic]
|
||||
// CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [template = constants.%B]
|
||||
// CHECK:STDOUT: %Action.type: type = facet_type <@Action, @Action(constants.%B)> [template = constants.%Action.type.cb0]
|
||||
// CHECK:STDOUT: %A.decl: type = class_decl @A [concrete = constants.%A] {} {}
|
||||
// CHECK:STDOUT: %B.decl: type = class_decl @B [concrete = constants.%B] {} {}
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [concrete] {} {
|
||||
// CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A]
|
||||
// CHECK:STDOUT: %Action.ref: %Action.type.29c = name_ref Action, file.%Action.decl [concrete = constants.%Action.generic]
|
||||
// CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [concrete = constants.%B]
|
||||
// CHECK:STDOUT: %Action.type: type = facet_type <@Action, @Action(constants.%B)> [concrete = constants.%Action.type.cb0]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%Op.decl) [template = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%Op.decl) [concrete = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {
|
||||
// CHECK:STDOUT: %a.patt: %A = binding_pattern a
|
||||
// CHECK:STDOUT: %a.param_patt: %A = value_param_pattern %a.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param: %A = value_param runtime_param0
|
||||
// CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [template = constants.%A]
|
||||
// CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A]
|
||||
// CHECK:STDOUT: %a: %A = bind_name a, %a.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -172,7 +172,7 @@ fn MakeC(a: A) -> C {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl: %A.ref as %Action.type {
|
||||
// CHECK:STDOUT: %Op.decl: %Op.type.4b4 = fn_decl @Op.2 [template = constants.%Op.40d] {} {}
|
||||
// CHECK:STDOUT: %Op.decl: %Op.type.4b4 = fn_decl @Op.2 [concrete = constants.%Op.40d] {} {}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Op = %Op.decl
|
||||
@@ -180,7 +180,7 @@ fn MakeC(a: A) -> C {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @A {
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -188,7 +188,7 @@ fn MakeC(a: A) -> C {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @B {
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -196,7 +196,7 @@ fn MakeC(a: A) -> C {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @C {
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -215,12 +215,12 @@ fn MakeC(a: A) -> C {
|
||||
// CHECK:STDOUT: fn @F(%a.param_patt: %A) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %a.ref: %A = name_ref a, %a
|
||||
// CHECK:STDOUT: %Action.ref: %Action.type.29c = name_ref Action, file.%Action.decl [template = constants.%Action.generic]
|
||||
// CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [template = constants.%B]
|
||||
// CHECK:STDOUT: %Action.type: type = facet_type <@Action, @Action(constants.%B)> [template = constants.%Action.type.cb0]
|
||||
// CHECK:STDOUT: %.loc16: %Action.assoc_type.827 = specific_constant @Action.%assoc0.loc5_10.1, @Action(constants.%B) [template = constants.%assoc0.035]
|
||||
// CHECK:STDOUT: %Op.ref: %Action.assoc_type.827 = name_ref Op, %.loc16 [template = constants.%assoc0.035]
|
||||
// CHECK:STDOUT: %impl.elem0: %.920 = impl_witness_access constants.%impl_witness, element0 [template = constants.%Op.40d]
|
||||
// CHECK:STDOUT: %Action.ref: %Action.type.29c = name_ref Action, file.%Action.decl [concrete = constants.%Action.generic]
|
||||
// CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [concrete = constants.%B]
|
||||
// CHECK:STDOUT: %Action.type: type = facet_type <@Action, @Action(constants.%B)> [concrete = constants.%Action.type.cb0]
|
||||
// CHECK:STDOUT: %.loc16: %Action.assoc_type.827 = specific_constant @Action.%assoc0.loc5_10.1, @Action(constants.%B) [concrete = constants.%assoc0.035]
|
||||
// CHECK:STDOUT: %Op.ref: %Action.assoc_type.827 = name_ref Op, %.loc16 [concrete = constants.%assoc0.035]
|
||||
// CHECK:STDOUT: %impl.elem0: %.920 = impl_witness_access constants.%impl_witness, element0 [concrete = constants.%Op.40d]
|
||||
// CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %impl.elem0()
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
@@ -252,53 +252,53 @@ fn MakeC(a: A) -> C {
|
||||
// CHECK:STDOUT: --- action.impl.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %B: type = class_type @B [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %Action.type.29c: type = generic_interface_type @Action [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %Action.generic: %Action.type.29c = struct_value () [template]
|
||||
// CHECK:STDOUT: %B: type = class_type @B [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %Action.type.29c: type = generic_interface_type @Action [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %Action.generic: %Action.type.29c = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Action.type.cca: type = facet_type <@Action, @Action(%T)> [symbolic]
|
||||
// CHECK:STDOUT: %Self: %Action.type.cca = bind_symbolic_name Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Action.type.cb0: type = facet_type <@Action, @Action(%B)> [template]
|
||||
// CHECK:STDOUT: %A: type = class_type @A [template]
|
||||
// CHECK:STDOUT: %Action.type.cb0: type = facet_type <@Action, @Action(%B)> [concrete]
|
||||
// CHECK:STDOUT: %A: type = class_type @A [concrete]
|
||||
// CHECK:STDOUT: %Op.type.036: type = fn_type @Op.1, @Action(%T) [symbolic]
|
||||
// CHECK:STDOUT: %Op.6ed: %Op.type.036 = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %Action.assoc_type.8f9: type = assoc_entity_type %Action.type.cca [symbolic]
|
||||
// CHECK:STDOUT: %assoc0.905ab9.1: %Action.assoc_type.8f9 = assoc_entity element0, imports.%Main.import_ref.0e3753.1 [symbolic]
|
||||
// CHECK:STDOUT: %Op.type.54d: type = fn_type @Op.1, @Action(%B) [template]
|
||||
// CHECK:STDOUT: %Op.dba: %Op.type.54d = struct_value () [template]
|
||||
// CHECK:STDOUT: %Action.assoc_type.827: type = assoc_entity_type %Action.type.cb0 [template]
|
||||
// CHECK:STDOUT: %assoc0.4cc: %Action.assoc_type.827 = assoc_entity element0, imports.%Main.import_ref.1f6 [template]
|
||||
// CHECK:STDOUT: %G.type: type = fn_type @G [template]
|
||||
// CHECK:STDOUT: %G: %G.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %Op.type.54d: type = fn_type @Op.1, @Action(%B) [concrete]
|
||||
// CHECK:STDOUT: %Op.dba: %Op.type.54d = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Action.assoc_type.827: type = assoc_entity_type %Action.type.cb0 [concrete]
|
||||
// CHECK:STDOUT: %assoc0.4cc: %Action.assoc_type.827 = assoc_entity element0, imports.%Main.import_ref.1f6 [concrete]
|
||||
// CHECK:STDOUT: %G.type: type = fn_type @G [concrete]
|
||||
// CHECK:STDOUT: %G: %G.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %assoc0.905ab9.2: %Action.assoc_type.8f9 = assoc_entity element0, imports.%Main.import_ref.0e3753.2 [symbolic]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (imports.%Main.import_ref.d0b) [template]
|
||||
// CHECK:STDOUT: %Action.facet: %Action.type.cb0 = facet_value %A, %impl_witness [template]
|
||||
// CHECK:STDOUT: %.ae7: type = fn_type_with_self_type %Op.type.54d, %Action.facet [template]
|
||||
// CHECK:STDOUT: %Op.type.4b4: type = fn_type @Op.2 [template]
|
||||
// CHECK:STDOUT: %Op.40d: %Op.type.4b4 = struct_value () [template]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (imports.%Main.import_ref.d0b) [concrete]
|
||||
// CHECK:STDOUT: %Action.facet: %Action.type.cb0 = facet_value %A, %impl_witness [concrete]
|
||||
// CHECK:STDOUT: %.ae7: type = fn_type_with_self_type %Op.type.54d, %Action.facet [concrete]
|
||||
// CHECK:STDOUT: %Op.type.4b4: type = fn_type @Op.2 [concrete]
|
||||
// CHECK:STDOUT: %Op.40d: %Op.type.4b4 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Main.Action: %Action.type.29c = import_ref Main//action, Action, loaded [template = constants.%Action.generic]
|
||||
// CHECK:STDOUT: %Main.A: type = import_ref Main//action, A, loaded [template = constants.%A]
|
||||
// CHECK:STDOUT: %Main.B: type = import_ref Main//action, B, loaded [template = constants.%B]
|
||||
// CHECK:STDOUT: %Main.Action: %Action.type.29c = import_ref Main//action, Action, loaded [concrete = constants.%Action.generic]
|
||||
// CHECK:STDOUT: %Main.A: type = import_ref Main//action, A, loaded [concrete = constants.%A]
|
||||
// CHECK:STDOUT: %Main.B: type = import_ref Main//action, B, loaded [concrete = constants.%B]
|
||||
// CHECK:STDOUT: %Main.C = import_ref Main//action, C, unloaded
|
||||
// CHECK:STDOUT: %Main.F = import_ref Main//action, F, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.71c: <witness> = import_ref Main//action, loc12_21, loaded [template = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %Main.import_ref.8f24d3.1: <witness> = import_ref Main//action, loc9_10, loaded [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Main.import_ref.71c: <witness> = import_ref Main//action, loc12_21, loaded [concrete = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %Main.import_ref.8f24d3.1: <witness> = import_ref Main//action, loc9_10, loaded [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Main.import_ref.54a = import_ref Main//action, inst46 [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.f6b058.1: type = import_ref Main//action, loc4_18, loaded [symbolic = @Action.%T (constants.%T)]
|
||||
// CHECK:STDOUT: %Main.import_ref.ddc = import_ref Main//action, inst26 [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.318: @Action.%Action.assoc_type (%Action.assoc_type.8f9) = import_ref Main//action, loc5_10, loaded [symbolic = @Action.%assoc0 (constants.%assoc0.905ab9.2)]
|
||||
// CHECK:STDOUT: %Main.Op = import_ref Main//action, Op, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.8f24d3.2: <witness> = import_ref Main//action, loc8_10, loaded [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Main.import_ref.8f24d3.2: <witness> = import_ref Main//action, loc8_10, loaded [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Main.import_ref.da3 = import_ref Main//action, inst41 [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.984: type = import_ref Main//action, loc12_6, loaded [template = constants.%A]
|
||||
// CHECK:STDOUT: %Main.import_ref.bb2: type = import_ref Main//action, loc12_19, loaded [template = constants.%Action.type.cb0]
|
||||
// CHECK:STDOUT: %Main.import_ref.984: type = import_ref Main//action, loc12_6, loaded [concrete = constants.%A]
|
||||
// CHECK:STDOUT: %Main.import_ref.bb2: type = import_ref Main//action, loc12_19, loaded [concrete = constants.%Action.type.cb0]
|
||||
// CHECK:STDOUT: %Main.import_ref.7b5 = import_ref Main//action, loc13_11, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.f6b058.2: type = import_ref Main//action, loc4_18, loaded [symbolic = @Action.%T (constants.%T)]
|
||||
// CHECK:STDOUT: %Main.import_ref.835: @Action.%Action.type (%Action.type.cca) = import_ref Main//action, inst26 [no loc], loaded [symbolic = @Action.%Self (constants.%Self)]
|
||||
@@ -306,7 +306,7 @@ fn MakeC(a: A) -> C {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Action = imports.%Main.Action
|
||||
// CHECK:STDOUT: .A = imports.%Main.A
|
||||
// CHECK:STDOUT: .B = imports.%Main.B
|
||||
@@ -316,12 +316,12 @@ fn MakeC(a: A) -> C {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %default.import.loc2_6.1 = import <none>
|
||||
// CHECK:STDOUT: %default.import.loc2_6.2 = import <none>
|
||||
// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {
|
||||
// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] {
|
||||
// CHECK:STDOUT: %a.patt: %A = binding_pattern a
|
||||
// CHECK:STDOUT: %a.param_patt: %A = value_param_pattern %a.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param: %A = value_param runtime_param0
|
||||
// CHECK:STDOUT: %A.ref: type = name_ref A, imports.%Main.A [template = constants.%A]
|
||||
// CHECK:STDOUT: %A.ref: type = name_ref A, imports.%Main.A [concrete = constants.%A]
|
||||
// CHECK:STDOUT: %a: %A = bind_name a, %a.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -373,12 +373,12 @@ fn MakeC(a: A) -> C {
|
||||
// CHECK:STDOUT: fn @G(%a.param_patt: %A) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %a.ref: %A = name_ref a, %a
|
||||
// CHECK:STDOUT: %Action.ref: %Action.type.29c = name_ref Action, imports.%Main.Action [template = constants.%Action.generic]
|
||||
// CHECK:STDOUT: %B.ref: type = name_ref B, imports.%Main.B [template = constants.%B]
|
||||
// CHECK:STDOUT: %Action.type: type = facet_type <@Action, @Action(constants.%B)> [template = constants.%Action.type.cb0]
|
||||
// CHECK:STDOUT: %.loc4: %Action.assoc_type.827 = specific_constant imports.%Main.import_ref.318, @Action(constants.%B) [template = constants.%assoc0.4cc]
|
||||
// CHECK:STDOUT: %Op.ref: %Action.assoc_type.827 = name_ref Op, %.loc4 [template = constants.%assoc0.4cc]
|
||||
// CHECK:STDOUT: %impl.elem0: %.ae7 = impl_witness_access constants.%impl_witness, element0 [template = constants.%Op.40d]
|
||||
// CHECK:STDOUT: %Action.ref: %Action.type.29c = name_ref Action, imports.%Main.Action [concrete = constants.%Action.generic]
|
||||
// CHECK:STDOUT: %B.ref: type = name_ref B, imports.%Main.B [concrete = constants.%B]
|
||||
// CHECK:STDOUT: %Action.type: type = facet_type <@Action, @Action(constants.%B)> [concrete = constants.%Action.type.cb0]
|
||||
// CHECK:STDOUT: %.loc4: %Action.assoc_type.827 = specific_constant imports.%Main.import_ref.318, @Action(constants.%B) [concrete = constants.%assoc0.4cc]
|
||||
// CHECK:STDOUT: %Op.ref: %Action.assoc_type.827 = name_ref Op, %.loc4 [concrete = constants.%assoc0.4cc]
|
||||
// CHECK:STDOUT: %impl.elem0: %.ae7 = impl_witness_access constants.%impl_witness, element0 [concrete = constants.%Op.40d]
|
||||
// CHECK:STDOUT: %Op.call: init %empty_tuple.type = call %impl.elem0()
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
@@ -410,63 +410,63 @@ fn MakeC(a: A) -> C {
|
||||
// CHECK:STDOUT: --- fail_action.impl.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %B: type = class_type @B [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %Action.type.29c: type = generic_interface_type @Action [template]
|
||||
// CHECK:STDOUT: %Action.generic: %Action.type.29c = struct_value () [template]
|
||||
// CHECK:STDOUT: %B: type = class_type @B [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %Action.type.29c: type = generic_interface_type @Action [concrete]
|
||||
// CHECK:STDOUT: %Action.generic: %Action.type.29c = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Action.type.cca: type = facet_type <@Action, @Action(%T)> [symbolic]
|
||||
// CHECK:STDOUT: %Self: %Action.type.cca = bind_symbolic_name Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Action.type.cb0: type = facet_type <@Action, @Action(%B)> [template]
|
||||
// CHECK:STDOUT: %A: type = class_type @A [template]
|
||||
// CHECK:STDOUT: %Action.type.cb0: type = facet_type <@Action, @Action(%B)> [concrete]
|
||||
// CHECK:STDOUT: %A: type = class_type @A [concrete]
|
||||
// CHECK:STDOUT: %Op.type.036: type = fn_type @Op, @Action(%T) [symbolic]
|
||||
// CHECK:STDOUT: %Op.6ed: %Op.type.036 = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %Action.assoc_type.8f9: type = assoc_entity_type %Action.type.cca [symbolic]
|
||||
// CHECK:STDOUT: %assoc0.905ab9.1: %Action.assoc_type.8f9 = assoc_entity element0, imports.%Main.import_ref.0e3753.1 [symbolic]
|
||||
// CHECK:STDOUT: %Op.type.54d: type = fn_type @Op, @Action(%B) [template]
|
||||
// CHECK:STDOUT: %Op.dba: %Op.type.54d = struct_value () [template]
|
||||
// CHECK:STDOUT: %Action.assoc_type.827: type = assoc_entity_type %Action.type.cb0 [template]
|
||||
// CHECK:STDOUT: %assoc0.8f8: %Action.assoc_type.827 = assoc_entity element0, imports.%Main.import_ref.0e3753.2 [template]
|
||||
// CHECK:STDOUT: %G.type: type = fn_type @G [template]
|
||||
// CHECK:STDOUT: %G: %G.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [template]
|
||||
// CHECK:STDOUT: %Action.type.e2b: type = facet_type <@Action, @Action(%C)> [template]
|
||||
// CHECK:STDOUT: %Op.type.5ad: type = fn_type @Op, @Action(%C) [template]
|
||||
// CHECK:STDOUT: %Op.b10: %Op.type.5ad = struct_value () [template]
|
||||
// CHECK:STDOUT: %Action.assoc_type.0a7: type = assoc_entity_type %Action.type.e2b [template]
|
||||
// CHECK:STDOUT: %assoc0.85d: %Action.assoc_type.0a7 = assoc_entity element0, imports.%Main.import_ref.0e3753.1 [template]
|
||||
// CHECK:STDOUT: %Op.type.54d: type = fn_type @Op, @Action(%B) [concrete]
|
||||
// CHECK:STDOUT: %Op.dba: %Op.type.54d = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Action.assoc_type.827: type = assoc_entity_type %Action.type.cb0 [concrete]
|
||||
// CHECK:STDOUT: %assoc0.8f8: %Action.assoc_type.827 = assoc_entity element0, imports.%Main.import_ref.0e3753.2 [concrete]
|
||||
// CHECK:STDOUT: %G.type: type = fn_type @G [concrete]
|
||||
// CHECK:STDOUT: %G: %G.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [concrete]
|
||||
// CHECK:STDOUT: %Action.type.e2b: type = facet_type <@Action, @Action(%C)> [concrete]
|
||||
// CHECK:STDOUT: %Op.type.5ad: type = fn_type @Op, @Action(%C) [concrete]
|
||||
// CHECK:STDOUT: %Op.b10: %Op.type.5ad = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Action.assoc_type.0a7: type = assoc_entity_type %Action.type.e2b [concrete]
|
||||
// CHECK:STDOUT: %assoc0.85d: %Action.assoc_type.0a7 = assoc_entity element0, imports.%Main.import_ref.0e3753.1 [concrete]
|
||||
// CHECK:STDOUT: %assoc0.905ab9.2: %Action.assoc_type.8f9 = assoc_entity element0, imports.%Main.import_ref.0e3753.3 [symbolic]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Main.Action: %Action.type.29c = import_ref Main//action, Action, loaded [template = constants.%Action.generic]
|
||||
// CHECK:STDOUT: %Main.A: type = import_ref Main//action, A, loaded [template = constants.%A]
|
||||
// CHECK:STDOUT: %Main.Action: %Action.type.29c = import_ref Main//action, Action, loaded [concrete = constants.%Action.generic]
|
||||
// CHECK:STDOUT: %Main.A: type = import_ref Main//action, A, loaded [concrete = constants.%A]
|
||||
// CHECK:STDOUT: %Main.B = import_ref Main//action, B, unloaded
|
||||
// CHECK:STDOUT: %Main.C: type = import_ref Main//action, C, loaded [template = constants.%C]
|
||||
// CHECK:STDOUT: %Main.C: type = import_ref Main//action, C, loaded [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %Main.F = import_ref Main//action, F, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.7a1 = import_ref Main//action, loc12_21, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.8f24d3.1: <witness> = import_ref Main//action, loc9_10, loaded [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Main.import_ref.8f24d3.1: <witness> = import_ref Main//action, loc9_10, loaded [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Main.import_ref.54a = import_ref Main//action, inst46 [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.f6b058.1: type = import_ref Main//action, loc4_18, loaded [symbolic = @Action.%T (constants.%T)]
|
||||
// CHECK:STDOUT: %Main.import_ref.ddc = import_ref Main//action, inst26 [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.318: @Action.%Action.assoc_type (%Action.assoc_type.8f9) = import_ref Main//action, loc5_10, loaded [symbolic = @Action.%assoc0 (constants.%assoc0.905ab9.2)]
|
||||
// CHECK:STDOUT: %Main.Op = import_ref Main//action, Op, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.8f24d3.2: <witness> = import_ref Main//action, loc8_10, loaded [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Main.import_ref.8f24d3.2: <witness> = import_ref Main//action, loc8_10, loaded [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Main.import_ref.da3 = import_ref Main//action, inst41 [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.984: type = import_ref Main//action, loc12_6, loaded [template = constants.%A]
|
||||
// CHECK:STDOUT: %Main.import_ref.bb2: type = import_ref Main//action, loc12_19, loaded [template = constants.%Action.type.cb0]
|
||||
// CHECK:STDOUT: %Main.import_ref.984: type = import_ref Main//action, loc12_6, loaded [concrete = constants.%A]
|
||||
// CHECK:STDOUT: %Main.import_ref.bb2: type = import_ref Main//action, loc12_19, loaded [concrete = constants.%Action.type.cb0]
|
||||
// CHECK:STDOUT: %Main.import_ref.7b5 = import_ref Main//action, loc13_11, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.f6b058.2: type = import_ref Main//action, loc4_18, loaded [symbolic = @Action.%T (constants.%T)]
|
||||
// CHECK:STDOUT: %Main.import_ref.835: @Action.%Action.type (%Action.type.cca) = import_ref Main//action, inst26 [no loc], loaded [symbolic = @Action.%Self (constants.%Self)]
|
||||
// CHECK:STDOUT: %Main.import_ref.0e3753.1 = import_ref Main//action, loc5_10, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.8f24d3.3: <witness> = import_ref Main//action, loc10_10, loaded [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Main.import_ref.8f24d3.3: <witness> = import_ref Main//action, loc10_10, loaded [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//action, inst49 [no loc], unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Action = imports.%Main.Action
|
||||
// CHECK:STDOUT: .A = imports.%Main.A
|
||||
// CHECK:STDOUT: .B = imports.%Main.B
|
||||
@@ -476,12 +476,12 @@ fn MakeC(a: A) -> C {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %default.import.loc2_6.1 = import <none>
|
||||
// CHECK:STDOUT: %default.import.loc2_6.2 = import <none>
|
||||
// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {
|
||||
// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] {
|
||||
// CHECK:STDOUT: %a.patt: %A = binding_pattern a
|
||||
// CHECK:STDOUT: %a.param_patt: %A = value_param_pattern %a.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param: %A = value_param runtime_param0
|
||||
// CHECK:STDOUT: %A.ref: type = name_ref A, imports.%Main.A [template = constants.%A]
|
||||
// CHECK:STDOUT: %A.ref: type = name_ref A, imports.%Main.A [concrete = constants.%A]
|
||||
// CHECK:STDOUT: %a: %A = bind_name a, %a.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -540,11 +540,11 @@ fn MakeC(a: A) -> C {
|
||||
// CHECK:STDOUT: fn @G(%a.param_patt: %A) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %a.ref: %A = name_ref a, %a
|
||||
// CHECK:STDOUT: %Action.ref: %Action.type.29c = name_ref Action, imports.%Main.Action [template = constants.%Action.generic]
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.C [template = constants.%C]
|
||||
// CHECK:STDOUT: %Action.type: type = facet_type <@Action, @Action(constants.%C)> [template = constants.%Action.type.e2b]
|
||||
// CHECK:STDOUT: %.loc8: %Action.assoc_type.0a7 = specific_constant imports.%Main.import_ref.318, @Action(constants.%C) [template = constants.%assoc0.85d]
|
||||
// CHECK:STDOUT: %Op.ref: %Action.assoc_type.0a7 = name_ref Op, %.loc8 [template = constants.%assoc0.85d]
|
||||
// CHECK:STDOUT: %Action.ref: %Action.type.29c = name_ref Action, imports.%Main.Action [concrete = constants.%Action.generic]
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.C [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %Action.type: type = facet_type <@Action, @Action(constants.%C)> [concrete = constants.%Action.type.e2b]
|
||||
// CHECK:STDOUT: %.loc8: %Action.assoc_type.0a7 = specific_constant imports.%Main.import_ref.318, @Action(constants.%C) [concrete = constants.%assoc0.85d]
|
||||
// CHECK:STDOUT: %Op.ref: %Action.assoc_type.0a7 = name_ref Op, %.loc8 [concrete = constants.%assoc0.85d]
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -588,51 +588,51 @@ fn MakeC(a: A) -> C {
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Factory.type.1a8: type = generic_interface_type @Factory [template]
|
||||
// CHECK:STDOUT: %Factory.generic: %Factory.type.1a8 = struct_value () [template]
|
||||
// CHECK:STDOUT: %Factory.type.1a8: type = generic_interface_type @Factory [concrete]
|
||||
// CHECK:STDOUT: %Factory.generic: %Factory.type.1a8 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Factory.type.c96: type = facet_type <@Factory, @Factory(%T)> [symbolic]
|
||||
// CHECK:STDOUT: %Self: %Factory.type.c96 = bind_symbolic_name Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: %Make.type.598: type = fn_type @Make.1, @Factory(%T) [symbolic]
|
||||
// CHECK:STDOUT: %Make.737: %Make.type.598 = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %Factory.assoc_type.ca7: type = assoc_entity_type %Factory.type.c96 [symbolic]
|
||||
// CHECK:STDOUT: %assoc0.d7a: %Factory.assoc_type.ca7 = assoc_entity element0, @Factory.%Make.decl [symbolic]
|
||||
// CHECK:STDOUT: %A: type = class_type @A [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %B: type = class_type @B [template]
|
||||
// CHECK:STDOUT: %Factory.type.a5d: type = facet_type <@Factory, @Factory(%B)> [template]
|
||||
// CHECK:STDOUT: %Make.type.c59: type = fn_type @Make.1, @Factory(%B) [template]
|
||||
// CHECK:STDOUT: %Make.efe: %Make.type.c59 = struct_value () [template]
|
||||
// CHECK:STDOUT: %Factory.assoc_type.668: type = assoc_entity_type %Factory.type.a5d [template]
|
||||
// CHECK:STDOUT: %assoc0.40c: %Factory.assoc_type.668 = assoc_entity element0, @Factory.%Make.decl [template]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%Make.decl) [template]
|
||||
// CHECK:STDOUT: %Make.type.ec4: type = fn_type @Make.2 [template]
|
||||
// CHECK:STDOUT: %Make.377: %Make.type.ec4 = struct_value () [template]
|
||||
// CHECK:STDOUT: %Factory.facet: %Factory.type.a5d = facet_value %A, %impl_witness [template]
|
||||
// CHECK:STDOUT: %A: type = class_type @A [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %B: type = class_type @B [concrete]
|
||||
// CHECK:STDOUT: %Factory.type.a5d: type = facet_type <@Factory, @Factory(%B)> [concrete]
|
||||
// CHECK:STDOUT: %Make.type.c59: type = fn_type @Make.1, @Factory(%B) [concrete]
|
||||
// CHECK:STDOUT: %Make.efe: %Make.type.c59 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Factory.assoc_type.668: type = assoc_entity_type %Factory.type.a5d [concrete]
|
||||
// CHECK:STDOUT: %assoc0.40c: %Factory.assoc_type.668 = assoc_entity element0, @Factory.%Make.decl [concrete]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%Make.decl) [concrete]
|
||||
// CHECK:STDOUT: %Make.type.ec4: type = fn_type @Make.2 [concrete]
|
||||
// CHECK:STDOUT: %Make.377: %Make.type.ec4 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Factory.facet: %Factory.type.a5d = facet_value %A, %impl_witness [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Factory = %Factory.decl
|
||||
// CHECK:STDOUT: .A = %A.decl
|
||||
// CHECK:STDOUT: .B = %B.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Factory.decl: %Factory.type.1a8 = interface_decl @Factory [template = constants.%Factory.generic] {
|
||||
// CHECK:STDOUT: %Factory.decl: %Factory.type.1a8 = interface_decl @Factory [concrete = constants.%Factory.generic] {
|
||||
// CHECK:STDOUT: %T.patt.loc4_19.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_19.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc4_19.1, runtime_param<none> [symbolic = %T.patt.loc4_19.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.param: type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %T.loc4_19.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_19.2 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %A.decl: type = class_decl @A [template = constants.%A] {} {}
|
||||
// CHECK:STDOUT: %B.decl: type = class_decl @B [template = constants.%B] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [template] {} {
|
||||
// CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [template = constants.%A]
|
||||
// CHECK:STDOUT: %Factory.ref: %Factory.type.1a8 = name_ref Factory, file.%Factory.decl [template = constants.%Factory.generic]
|
||||
// CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [template = constants.%B]
|
||||
// CHECK:STDOUT: %Factory.type: type = facet_type <@Factory, @Factory(constants.%B)> [template = constants.%Factory.type.a5d]
|
||||
// CHECK:STDOUT: %A.decl: type = class_decl @A [concrete = constants.%A] {} {}
|
||||
// CHECK:STDOUT: %B.decl: type = class_decl @B [concrete = constants.%B] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [concrete] {} {
|
||||
// CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A]
|
||||
// CHECK:STDOUT: %Factory.ref: %Factory.type.1a8 = name_ref Factory, file.%Factory.decl [concrete = constants.%Factory.generic]
|
||||
// CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [concrete = constants.%B]
|
||||
// CHECK:STDOUT: %Factory.type: type = facet_type <@Factory, @Factory(constants.%B)> [concrete = constants.%Factory.type.a5d]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%Make.decl) [template = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%Make.decl) [concrete = constants.%impl_witness]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic interface @Factory(%T.loc4_19.1: type) {
|
||||
@@ -667,11 +667,11 @@ fn MakeC(a: A) -> C {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl: %A.ref as %Factory.type {
|
||||
// CHECK:STDOUT: %Make.decl: %Make.type.ec4 = fn_decl @Make.2 [template = constants.%Make.377] {
|
||||
// CHECK:STDOUT: %Make.decl: %Make.type.ec4 = fn_decl @Make.2 [concrete = constants.%Make.377] {
|
||||
// CHECK:STDOUT: %return.patt: %B = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %B = out_param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [template = constants.%B]
|
||||
// CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [concrete = constants.%B]
|
||||
// CHECK:STDOUT: %return.param: ref %B = out_param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref %B = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
@@ -682,7 +682,7 @@ fn MakeC(a: A) -> C {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @A {
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -690,7 +690,7 @@ fn MakeC(a: A) -> C {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @B {
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -736,50 +736,50 @@ fn MakeC(a: A) -> C {
|
||||
// CHECK:STDOUT: --- factory.impl.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %B: type = class_type @B [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %Factory.type.1a8: type = generic_interface_type @Factory [template]
|
||||
// CHECK:STDOUT: %Factory.generic: %Factory.type.1a8 = struct_value () [template]
|
||||
// CHECK:STDOUT: %B: type = class_type @B [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %Factory.type.1a8: type = generic_interface_type @Factory [concrete]
|
||||
// CHECK:STDOUT: %Factory.generic: %Factory.type.1a8 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Factory.type.c96: type = facet_type <@Factory, @Factory(%T)> [symbolic]
|
||||
// CHECK:STDOUT: %Self: %Factory.type.c96 = bind_symbolic_name Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Factory.type.a5d: type = facet_type <@Factory, @Factory(%B)> [template]
|
||||
// CHECK:STDOUT: %A: type = class_type @A [template]
|
||||
// CHECK:STDOUT: %Factory.type.a5d: type = facet_type <@Factory, @Factory(%B)> [concrete]
|
||||
// CHECK:STDOUT: %A: type = class_type @A [concrete]
|
||||
// CHECK:STDOUT: %Make.type.598: type = fn_type @Make.1, @Factory(%T) [symbolic]
|
||||
// CHECK:STDOUT: %Make.737: %Make.type.598 = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %Factory.assoc_type.ca7: type = assoc_entity_type %Factory.type.c96 [symbolic]
|
||||
// CHECK:STDOUT: %assoc0.35472f.1: %Factory.assoc_type.ca7 = assoc_entity element0, imports.%Main.import_ref.21018a.1 [symbolic]
|
||||
// CHECK:STDOUT: %Make.type.c59: type = fn_type @Make.1, @Factory(%B) [template]
|
||||
// CHECK:STDOUT: %Make.efe: %Make.type.c59 = struct_value () [template]
|
||||
// CHECK:STDOUT: %Factory.assoc_type.668: type = assoc_entity_type %Factory.type.a5d [template]
|
||||
// CHECK:STDOUT: %assoc0.503: %Factory.assoc_type.668 = assoc_entity element0, imports.%Main.import_ref.1aa [template]
|
||||
// CHECK:STDOUT: %MakeB.type: type = fn_type @MakeB [template]
|
||||
// CHECK:STDOUT: %MakeB: %MakeB.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %Make.type.c59: type = fn_type @Make.1, @Factory(%B) [concrete]
|
||||
// CHECK:STDOUT: %Make.efe: %Make.type.c59 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Factory.assoc_type.668: type = assoc_entity_type %Factory.type.a5d [concrete]
|
||||
// CHECK:STDOUT: %assoc0.503: %Factory.assoc_type.668 = assoc_entity element0, imports.%Main.import_ref.1aa [concrete]
|
||||
// CHECK:STDOUT: %MakeB.type: type = fn_type @MakeB [concrete]
|
||||
// CHECK:STDOUT: %MakeB: %MakeB.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %assoc0.35472f.2: %Factory.assoc_type.ca7 = assoc_entity element0, imports.%Main.import_ref.21018a.2 [symbolic]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (imports.%Main.import_ref.9ec) [template]
|
||||
// CHECK:STDOUT: %Factory.facet: %Factory.type.a5d = facet_value %A, %impl_witness [template]
|
||||
// CHECK:STDOUT: %.357: type = fn_type_with_self_type %Make.type.c59, %Factory.facet [template]
|
||||
// CHECK:STDOUT: %Make.type.ec4: type = fn_type @Make.2 [template]
|
||||
// CHECK:STDOUT: %Make.377: %Make.type.ec4 = struct_value () [template]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (imports.%Main.import_ref.9ec) [concrete]
|
||||
// CHECK:STDOUT: %Factory.facet: %Factory.type.a5d = facet_value %A, %impl_witness [concrete]
|
||||
// CHECK:STDOUT: %.357: type = fn_type_with_self_type %Make.type.c59, %Factory.facet [concrete]
|
||||
// CHECK:STDOUT: %Make.type.ec4: type = fn_type @Make.2 [concrete]
|
||||
// CHECK:STDOUT: %Make.377: %Make.type.ec4 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Main.Factory: %Factory.type.1a8 = import_ref Main//factory, Factory, loaded [template = constants.%Factory.generic]
|
||||
// CHECK:STDOUT: %Main.A: type = import_ref Main//factory, A, loaded [template = constants.%A]
|
||||
// CHECK:STDOUT: %Main.B: type = import_ref Main//factory, B, loaded [template = constants.%B]
|
||||
// CHECK:STDOUT: %Main.import_ref.72b: <witness> = import_ref Main//factory, loc11_22, loaded [template = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %Main.import_ref.8f24d3.1: <witness> = import_ref Main//factory, loc9_10, loaded [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Main.Factory: %Factory.type.1a8 = import_ref Main//factory, Factory, loaded [concrete = constants.%Factory.generic]
|
||||
// CHECK:STDOUT: %Main.A: type = import_ref Main//factory, A, loaded [concrete = constants.%A]
|
||||
// CHECK:STDOUT: %Main.B: type = import_ref Main//factory, B, loaded [concrete = constants.%B]
|
||||
// CHECK:STDOUT: %Main.import_ref.72b: <witness> = import_ref Main//factory, loc11_22, loaded [concrete = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %Main.import_ref.8f24d3.1: <witness> = import_ref Main//factory, loc9_10, loaded [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Main.import_ref.54a = import_ref Main//factory, inst52 [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.f6b058.1: type = import_ref Main//factory, loc4_19, loaded [symbolic = @Factory.%T (constants.%T)]
|
||||
// CHECK:STDOUT: %Main.import_ref.fbb = import_ref Main//factory, inst26 [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.8d5: @Factory.%Factory.assoc_type (%Factory.assoc_type.ca7) = import_ref Main//factory, loc5_17, loaded [symbolic = @Factory.%assoc0 (constants.%assoc0.35472f.2)]
|
||||
// CHECK:STDOUT: %Main.Make = import_ref Main//factory, Make, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.8f24d3.2: <witness> = import_ref Main//factory, loc8_10, loaded [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Main.import_ref.8f24d3.2: <witness> = import_ref Main//factory, loc8_10, loaded [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Main.import_ref.da3 = import_ref Main//factory, inst47 [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.984: type = import_ref Main//factory, loc11_6, loaded [template = constants.%A]
|
||||
// CHECK:STDOUT: %Main.import_ref.bd2: type = import_ref Main//factory, loc11_20, loaded [template = constants.%Factory.type.a5d]
|
||||
// CHECK:STDOUT: %Main.import_ref.984: type = import_ref Main//factory, loc11_6, loaded [concrete = constants.%A]
|
||||
// CHECK:STDOUT: %Main.import_ref.bd2: type = import_ref Main//factory, loc11_20, loaded [concrete = constants.%Factory.type.a5d]
|
||||
// CHECK:STDOUT: %Main.import_ref.a27 = import_ref Main//factory, loc12_17, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.f6b058.2: type = import_ref Main//factory, loc4_19, loaded [symbolic = @Factory.%T (constants.%T)]
|
||||
// CHECK:STDOUT: %Main.import_ref.91b: @Factory.%Factory.type (%Factory.type.c96) = import_ref Main//factory, inst26 [no loc], loaded [symbolic = @Factory.%Self (constants.%Self)]
|
||||
@@ -787,7 +787,7 @@ fn MakeC(a: A) -> C {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Factory = imports.%Main.Factory
|
||||
// CHECK:STDOUT: .A = imports.%Main.A
|
||||
// CHECK:STDOUT: .B = imports.%Main.B
|
||||
@@ -795,15 +795,15 @@ fn MakeC(a: A) -> C {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %default.import.loc2_6.1 = import <none>
|
||||
// CHECK:STDOUT: %default.import.loc2_6.2 = import <none>
|
||||
// CHECK:STDOUT: %MakeB.decl: %MakeB.type = fn_decl @MakeB [template = constants.%MakeB] {
|
||||
// CHECK:STDOUT: %MakeB.decl: %MakeB.type = fn_decl @MakeB [concrete = constants.%MakeB] {
|
||||
// CHECK:STDOUT: %a.patt: %A = binding_pattern a
|
||||
// CHECK:STDOUT: %a.param_patt: %A = value_param_pattern %a.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: %B = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %B = out_param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %B.ref.loc4: type = name_ref B, imports.%Main.B [template = constants.%B]
|
||||
// CHECK:STDOUT: %B.ref.loc4: type = name_ref B, imports.%Main.B [concrete = constants.%B]
|
||||
// CHECK:STDOUT: %a.param: %A = value_param runtime_param0
|
||||
// CHECK:STDOUT: %A.ref: type = name_ref A, imports.%Main.A [template = constants.%A]
|
||||
// CHECK:STDOUT: %A.ref: type = name_ref A, imports.%Main.A [concrete = constants.%A]
|
||||
// CHECK:STDOUT: %a: %A = bind_name a, %a.param
|
||||
// CHECK:STDOUT: %return.param: ref %B = out_param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref %B = return_slot %return.param
|
||||
@@ -859,12 +859,12 @@ fn MakeC(a: A) -> C {
|
||||
// CHECK:STDOUT: fn @MakeB(%a.param_patt: %A) -> %return.param_patt: %B {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %a.ref: %A = name_ref a, %a
|
||||
// CHECK:STDOUT: %Factory.ref: %Factory.type.1a8 = name_ref Factory, imports.%Main.Factory [template = constants.%Factory.generic]
|
||||
// CHECK:STDOUT: %B.ref.loc5: type = name_ref B, imports.%Main.B [template = constants.%B]
|
||||
// CHECK:STDOUT: %Factory.type: type = facet_type <@Factory, @Factory(constants.%B)> [template = constants.%Factory.type.a5d]
|
||||
// CHECK:STDOUT: %.loc5: %Factory.assoc_type.668 = specific_constant imports.%Main.import_ref.8d5, @Factory(constants.%B) [template = constants.%assoc0.503]
|
||||
// CHECK:STDOUT: %Make.ref: %Factory.assoc_type.668 = name_ref Make, %.loc5 [template = constants.%assoc0.503]
|
||||
// CHECK:STDOUT: %impl.elem0: %.357 = impl_witness_access constants.%impl_witness, element0 [template = constants.%Make.377]
|
||||
// CHECK:STDOUT: %Factory.ref: %Factory.type.1a8 = name_ref Factory, imports.%Main.Factory [concrete = constants.%Factory.generic]
|
||||
// CHECK:STDOUT: %B.ref.loc5: type = name_ref B, imports.%Main.B [concrete = constants.%B]
|
||||
// CHECK:STDOUT: %Factory.type: type = facet_type <@Factory, @Factory(constants.%B)> [concrete = constants.%Factory.type.a5d]
|
||||
// CHECK:STDOUT: %.loc5: %Factory.assoc_type.668 = specific_constant imports.%Main.import_ref.8d5, @Factory(constants.%B) [concrete = constants.%assoc0.503]
|
||||
// CHECK:STDOUT: %Make.ref: %Factory.assoc_type.668 = name_ref Make, %.loc5 [concrete = constants.%assoc0.503]
|
||||
// CHECK:STDOUT: %impl.elem0: %.357 = impl_witness_access constants.%impl_witness, element0 [concrete = constants.%Make.377]
|
||||
// CHECK:STDOUT: %.loc4: ref %B = splice_block %return {}
|
||||
// CHECK:STDOUT: %Make.call: init %B = call %impl.elem0() to %.loc4
|
||||
// CHECK:STDOUT: return %Make.call to %return
|
||||
@@ -899,51 +899,51 @@ fn MakeC(a: A) -> C {
|
||||
// CHECK:STDOUT: --- fail_factory.impl.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %B: type = class_type @B [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %Factory.type.1a8: type = generic_interface_type @Factory [template]
|
||||
// CHECK:STDOUT: %Factory.generic: %Factory.type.1a8 = struct_value () [template]
|
||||
// CHECK:STDOUT: %B: type = class_type @B [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %Factory.type.1a8: type = generic_interface_type @Factory [concrete]
|
||||
// CHECK:STDOUT: %Factory.generic: %Factory.type.1a8 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Factory.type.c96: type = facet_type <@Factory, @Factory(%T)> [symbolic]
|
||||
// CHECK:STDOUT: %Self: %Factory.type.c96 = bind_symbolic_name Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Factory.type.a5d: type = facet_type <@Factory, @Factory(%B)> [template]
|
||||
// CHECK:STDOUT: %A: type = class_type @A [template]
|
||||
// CHECK:STDOUT: %Factory.type.a5d: type = facet_type <@Factory, @Factory(%B)> [concrete]
|
||||
// CHECK:STDOUT: %A: type = class_type @A [concrete]
|
||||
// CHECK:STDOUT: %Make.type.598: type = fn_type @Make, @Factory(%T) [symbolic]
|
||||
// CHECK:STDOUT: %Make.737: %Make.type.598 = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %Factory.assoc_type.ca7: type = assoc_entity_type %Factory.type.c96 [symbolic]
|
||||
// CHECK:STDOUT: %assoc0.35472f.1: %Factory.assoc_type.ca7 = assoc_entity element0, imports.%Main.import_ref.21018a.1 [symbolic]
|
||||
// CHECK:STDOUT: %Make.type.c59: type = fn_type @Make, @Factory(%B) [template]
|
||||
// CHECK:STDOUT: %Make.efe: %Make.type.c59 = struct_value () [template]
|
||||
// CHECK:STDOUT: %Factory.assoc_type.668: type = assoc_entity_type %Factory.type.a5d [template]
|
||||
// CHECK:STDOUT: %assoc0.228: %Factory.assoc_type.668 = assoc_entity element0, imports.%Main.import_ref.21018a.2 [template]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [template]
|
||||
// CHECK:STDOUT: %MakeC.type: type = fn_type @MakeC [template]
|
||||
// CHECK:STDOUT: %MakeC: %MakeC.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %Factory.type.5c5: type = facet_type <@Factory, @Factory(%C)> [template]
|
||||
// CHECK:STDOUT: %Make.type.0de: type = fn_type @Make, @Factory(%C) [template]
|
||||
// CHECK:STDOUT: %Make.8ba: %Make.type.0de = struct_value () [template]
|
||||
// CHECK:STDOUT: %Factory.assoc_type.709: type = assoc_entity_type %Factory.type.5c5 [template]
|
||||
// CHECK:STDOUT: %assoc0.ef9: %Factory.assoc_type.709 = assoc_entity element0, imports.%Main.import_ref.21018a.1 [template]
|
||||
// CHECK:STDOUT: %Make.type.c59: type = fn_type @Make, @Factory(%B) [concrete]
|
||||
// CHECK:STDOUT: %Make.efe: %Make.type.c59 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Factory.assoc_type.668: type = assoc_entity_type %Factory.type.a5d [concrete]
|
||||
// CHECK:STDOUT: %assoc0.228: %Factory.assoc_type.668 = assoc_entity element0, imports.%Main.import_ref.21018a.2 [concrete]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [concrete]
|
||||
// CHECK:STDOUT: %MakeC.type: type = fn_type @MakeC [concrete]
|
||||
// CHECK:STDOUT: %MakeC: %MakeC.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Factory.type.5c5: type = facet_type <@Factory, @Factory(%C)> [concrete]
|
||||
// CHECK:STDOUT: %Make.type.0de: type = fn_type @Make, @Factory(%C) [concrete]
|
||||
// CHECK:STDOUT: %Make.8ba: %Make.type.0de = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Factory.assoc_type.709: type = assoc_entity_type %Factory.type.5c5 [concrete]
|
||||
// CHECK:STDOUT: %assoc0.ef9: %Factory.assoc_type.709 = assoc_entity element0, imports.%Main.import_ref.21018a.1 [concrete]
|
||||
// CHECK:STDOUT: %assoc0.35472f.2: %Factory.assoc_type.ca7 = assoc_entity element0, imports.%Main.import_ref.21018a.3 [symbolic]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Main.Factory: %Factory.type.1a8 = import_ref Main//factory, Factory, loaded [template = constants.%Factory.generic]
|
||||
// CHECK:STDOUT: %Main.A: type = import_ref Main//factory, A, loaded [template = constants.%A]
|
||||
// CHECK:STDOUT: %Main.Factory: %Factory.type.1a8 = import_ref Main//factory, Factory, loaded [concrete = constants.%Factory.generic]
|
||||
// CHECK:STDOUT: %Main.A: type = import_ref Main//factory, A, loaded [concrete = constants.%A]
|
||||
// CHECK:STDOUT: %Main.B = import_ref Main//factory, B, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.3e9 = import_ref Main//factory, loc11_22, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.8f24d3.1: <witness> = import_ref Main//factory, loc9_10, loaded [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Main.import_ref.8f24d3.1: <witness> = import_ref Main//factory, loc9_10, loaded [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Main.import_ref.54a = import_ref Main//factory, inst52 [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.f6b058.1: type = import_ref Main//factory, loc4_19, loaded [symbolic = @Factory.%T (constants.%T)]
|
||||
// CHECK:STDOUT: %Main.import_ref.fbb = import_ref Main//factory, inst26 [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.8d5: @Factory.%Factory.assoc_type (%Factory.assoc_type.ca7) = import_ref Main//factory, loc5_17, loaded [symbolic = @Factory.%assoc0 (constants.%assoc0.35472f.2)]
|
||||
// CHECK:STDOUT: %Main.Make = import_ref Main//factory, Make, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.8f24d3.2: <witness> = import_ref Main//factory, loc8_10, loaded [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Main.import_ref.8f24d3.2: <witness> = import_ref Main//factory, loc8_10, loaded [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Main.import_ref.da3 = import_ref Main//factory, inst47 [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.984: type = import_ref Main//factory, loc11_6, loaded [template = constants.%A]
|
||||
// CHECK:STDOUT: %Main.import_ref.bd2: type = import_ref Main//factory, loc11_20, loaded [template = constants.%Factory.type.a5d]
|
||||
// CHECK:STDOUT: %Main.import_ref.984: type = import_ref Main//factory, loc11_6, loaded [concrete = constants.%A]
|
||||
// CHECK:STDOUT: %Main.import_ref.bd2: type = import_ref Main//factory, loc11_20, loaded [concrete = constants.%Factory.type.a5d]
|
||||
// CHECK:STDOUT: %Main.import_ref.a27 = import_ref Main//factory, loc12_17, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.f6b058.2: type = import_ref Main//factory, loc4_19, loaded [symbolic = @Factory.%T (constants.%T)]
|
||||
// CHECK:STDOUT: %Main.import_ref.91b: @Factory.%Factory.type (%Factory.type.c96) = import_ref Main//factory, inst26 [no loc], loaded [symbolic = @Factory.%Self (constants.%Self)]
|
||||
@@ -951,7 +951,7 @@ fn MakeC(a: A) -> C {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Factory = imports.%Main.Factory
|
||||
// CHECK:STDOUT: .A = imports.%Main.A
|
||||
// CHECK:STDOUT: .B = imports.%Main.B
|
||||
@@ -960,16 +960,16 @@ fn MakeC(a: A) -> C {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %default.import.loc2_6.1 = import <none>
|
||||
// CHECK:STDOUT: %default.import.loc2_6.2 = import <none>
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %MakeC.decl: %MakeC.type = fn_decl @MakeC [template = constants.%MakeC] {
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %MakeC.decl: %MakeC.type = fn_decl @MakeC [concrete = constants.%MakeC] {
|
||||
// CHECK:STDOUT: %a.patt: %A = binding_pattern a
|
||||
// CHECK:STDOUT: %a.param_patt: %A = value_param_pattern %a.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: %C = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %C = out_param_pattern %return.patt, runtime_param1
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %C.ref.loc6: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %C.ref.loc6: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %a.param: %A = value_param runtime_param0
|
||||
// CHECK:STDOUT: %A.ref: type = name_ref A, imports.%Main.A [template = constants.%A]
|
||||
// CHECK:STDOUT: %A.ref: type = name_ref A, imports.%Main.A [concrete = constants.%A]
|
||||
// CHECK:STDOUT: %a: %A = bind_name a, %a.param
|
||||
// CHECK:STDOUT: %return.param: ref %C = out_param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref %C = return_slot %return.param
|
||||
@@ -1017,7 +1017,7 @@ fn MakeC(a: A) -> C {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @C {
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -1033,11 +1033,11 @@ fn MakeC(a: A) -> C {
|
||||
// CHECK:STDOUT: fn @MakeC(%a.param_patt: %A) -> %return.param_patt: %C {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %a.ref: %A = name_ref a, %a
|
||||
// CHECK:STDOUT: %Factory.ref: %Factory.type.1a8 = name_ref Factory, imports.%Main.Factory [template = constants.%Factory.generic]
|
||||
// CHECK:STDOUT: %C.ref.loc11: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %Factory.type: type = facet_type <@Factory, @Factory(constants.%C)> [template = constants.%Factory.type.5c5]
|
||||
// CHECK:STDOUT: %.loc11: %Factory.assoc_type.709 = specific_constant imports.%Main.import_ref.8d5, @Factory(constants.%C) [template = constants.%assoc0.ef9]
|
||||
// CHECK:STDOUT: %Make.ref: %Factory.assoc_type.709 = name_ref Make, %.loc11 [template = constants.%assoc0.ef9]
|
||||
// CHECK:STDOUT: %Factory.ref: %Factory.type.1a8 = name_ref Factory, imports.%Main.Factory [concrete = constants.%Factory.generic]
|
||||
// CHECK:STDOUT: %C.ref.loc11: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %Factory.type: type = facet_type <@Factory, @Factory(constants.%C)> [concrete = constants.%Factory.type.5c5]
|
||||
// CHECK:STDOUT: %.loc11: %Factory.assoc_type.709 = specific_constant imports.%Main.import_ref.8d5, @Factory(constants.%C) [concrete = constants.%assoc0.ef9]
|
||||
// CHECK:STDOUT: %Make.ref: %Factory.assoc_type.709 = name_ref Make, %.loc11 [concrete = constants.%assoc0.ef9]
|
||||
// CHECK:STDOUT: return <error> to %return
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+70
-70
@@ -103,23 +103,23 @@ impl () as D;
|
||||
// CHECK:STDOUT: --- fail_decl_in_api_definition_in_impl.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %A.type: type = facet_type <@A> [template]
|
||||
// CHECK:STDOUT: %A.type: type = facet_type <@A> [concrete]
|
||||
// CHECK:STDOUT: %Self: %A.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .A = %A.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %A.decl: type = interface_decl @A [template = constants.%A.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [template] {} {
|
||||
// CHECK:STDOUT: %A.decl: type = interface_decl @A [concrete = constants.%A.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [concrete] {} {
|
||||
// CHECK:STDOUT: %.loc10_7.1: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc10_7.2: type = converted %.loc10_7.1, constants.%empty_tuple.type [template = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [template = constants.%A.type]
|
||||
// CHECK:STDOUT: %.loc10_7.2: type = converted %.loc10_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [template = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [concrete = constants.%impl_witness]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @A {
|
||||
@@ -135,36 +135,36 @@ impl () as D;
|
||||
// CHECK:STDOUT: --- fail_decl_in_api_definition_in_impl.impl.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %A.type: type = facet_type <@A> [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [template]
|
||||
// CHECK:STDOUT: %A.type: type = facet_type <@A> [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Main.A: type = import_ref Main//decl_in_api_definition_in_impl, A, loaded [template = constants.%A.type]
|
||||
// CHECK:STDOUT: %Main.A: type = import_ref Main//decl_in_api_definition_in_impl, A, loaded [concrete = constants.%A.type]
|
||||
// CHECK:STDOUT: %Main.import_ref.b61 = import_ref Main//decl_in_api_definition_in_impl, inst15 [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.e5c: type = import_ref Main//decl_in_api_definition_in_impl, loc10_7, loaded [template = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %Main.import_ref.831: type = import_ref Main//decl_in_api_definition_in_impl, loc10_12, loaded [template = constants.%A.type]
|
||||
// CHECK:STDOUT: %Main.import_ref.e5c: type = import_ref Main//decl_in_api_definition_in_impl, loc10_7, loaded [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %Main.import_ref.831: type = import_ref Main//decl_in_api_definition_in_impl, loc10_12, loaded [concrete = constants.%A.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .A = imports.%Main.A
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %default.import.loc2_6.1 = import <none>
|
||||
// CHECK:STDOUT: %default.import.loc2_6.2 = import <none>
|
||||
// CHECK:STDOUT: impl_decl @impl.2 [template] {} {
|
||||
// CHECK:STDOUT: impl_decl @impl.2 [concrete] {} {
|
||||
// CHECK:STDOUT: %.loc8_7.1: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc8_7.2: type = converted %.loc8_7.1, constants.%empty_tuple.type [template = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %A.ref: type = name_ref A, imports.%Main.A [template = constants.%A.type]
|
||||
// CHECK:STDOUT: %.loc8_7.2: type = converted %.loc8_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %A.ref: type = name_ref A, imports.%Main.A [concrete = constants.%A.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness.loc8: <witness> = impl_witness () [template = constants.%impl_witness]
|
||||
// CHECK:STDOUT: impl_decl @impl.3 [template] {} {
|
||||
// CHECK:STDOUT: %impl_witness.loc8: <witness> = impl_witness () [concrete = constants.%impl_witness]
|
||||
// CHECK:STDOUT: impl_decl @impl.3 [concrete] {} {
|
||||
// CHECK:STDOUT: %.loc14_7.1: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc14_7.2: type = converted %.loc14_7.1, constants.%empty_tuple.type [template = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %A.ref: type = name_ref A, imports.%Main.A [template = constants.%A.type]
|
||||
// CHECK:STDOUT: %.loc14_7.2: type = converted %.loc14_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %A.ref: type = name_ref A, imports.%Main.A [concrete = constants.%A.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness.loc14: <witness> = impl_witness () [template = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %impl_witness.loc14: <witness> = impl_witness () [concrete = constants.%impl_witness]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @A [from "fail_decl_in_api_definition_in_impl.carbon"] {
|
||||
@@ -185,7 +185,7 @@ impl () as D;
|
||||
// CHECK:STDOUT: --- use_decl_in_api.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {}
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: --- use_decl_in_api.impl.carbon
|
||||
@@ -195,7 +195,7 @@ impl () as D;
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .A = imports.%Main.A
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %default.import.loc2_6.1 = import <none>
|
||||
@@ -205,23 +205,23 @@ impl () as D;
|
||||
// CHECK:STDOUT: --- fail_decl_only_in_api.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %B.type: type = facet_type <@B> [template]
|
||||
// CHECK:STDOUT: %B.type: type = facet_type <@B> [concrete]
|
||||
// CHECK:STDOUT: %Self: %B.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .B = %B.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %B.decl: type = interface_decl @B [template = constants.%B.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [template] {} {
|
||||
// CHECK:STDOUT: %B.decl: type = interface_decl @B [concrete = constants.%B.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [concrete] {} {
|
||||
// CHECK:STDOUT: %.loc10_7.1: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc10_7.2: type = converted %.loc10_7.1, constants.%empty_tuple.type [template = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [template = constants.%B.type]
|
||||
// CHECK:STDOUT: %.loc10_7.2: type = converted %.loc10_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [concrete = constants.%B.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [template = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [concrete = constants.%impl_witness]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @B {
|
||||
@@ -237,19 +237,19 @@ impl () as D;
|
||||
// CHECK:STDOUT: --- decl_only_in_api.impl.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %B.type: type = facet_type <@B> [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %B.type: type = facet_type <@B> [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Main.B = import_ref Main//decl_only_in_api, B, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.420 = import_ref Main//decl_only_in_api, inst15 [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.e5c: type = import_ref Main//decl_only_in_api, loc10_7, loaded [template = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %Main.import_ref.171: type = import_ref Main//decl_only_in_api, loc10_12, loaded [template = constants.%B.type]
|
||||
// CHECK:STDOUT: %Main.import_ref.e5c: type = import_ref Main//decl_only_in_api, loc10_7, loaded [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %Main.import_ref.171: type = import_ref Main//decl_only_in_api, loc10_12, loaded [concrete = constants.%B.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .B = imports.%Main.B
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %default.import.loc2_6.1 = import <none>
|
||||
@@ -267,23 +267,23 @@ impl () as D;
|
||||
// CHECK:STDOUT: --- fail_decl_in_api_decl_in_impl.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %C.type: type = facet_type <@C> [template]
|
||||
// CHECK:STDOUT: %C.type: type = facet_type <@C> [concrete]
|
||||
// CHECK:STDOUT: %Self: %C.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .C = %C.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %C.decl: type = interface_decl @C [template = constants.%C.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [template] {} {
|
||||
// CHECK:STDOUT: %C.decl: type = interface_decl @C [concrete = constants.%C.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [concrete] {} {
|
||||
// CHECK:STDOUT: %.loc10_7.1: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc10_7.2: type = converted %.loc10_7.1, constants.%empty_tuple.type [template = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C.type]
|
||||
// CHECK:STDOUT: %.loc10_7.2: type = converted %.loc10_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [template = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [concrete = constants.%impl_witness]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @C {
|
||||
@@ -299,30 +299,30 @@ impl () as D;
|
||||
// CHECK:STDOUT: --- fail_decl_in_api_decl_in_impl.impl.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %C.type: type = facet_type <@C> [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [template]
|
||||
// CHECK:STDOUT: %C.type: type = facet_type <@C> [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Main.C: type = import_ref Main//decl_in_api_decl_in_impl, C, loaded [template = constants.%C.type]
|
||||
// CHECK:STDOUT: %Main.C: type = import_ref Main//decl_in_api_decl_in_impl, C, loaded [concrete = constants.%C.type]
|
||||
// CHECK:STDOUT: %Main.import_ref.721 = import_ref Main//decl_in_api_decl_in_impl, inst15 [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.e5c: type = import_ref Main//decl_in_api_decl_in_impl, loc10_7, loaded [template = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %Main.import_ref.653: type = import_ref Main//decl_in_api_decl_in_impl, loc10_12, loaded [template = constants.%C.type]
|
||||
// CHECK:STDOUT: %Main.import_ref.e5c: type = import_ref Main//decl_in_api_decl_in_impl, loc10_7, loaded [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %Main.import_ref.653: type = import_ref Main//decl_in_api_decl_in_impl, loc10_12, loaded [concrete = constants.%C.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .C = imports.%Main.C
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %default.import.loc2_6.1 = import <none>
|
||||
// CHECK:STDOUT: %default.import.loc2_6.2 = import <none>
|
||||
// CHECK:STDOUT: impl_decl @impl.2 [template] {} {
|
||||
// CHECK:STDOUT: impl_decl @impl.2 [concrete] {} {
|
||||
// CHECK:STDOUT: %.loc8_7.1: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc8_7.2: type = converted %.loc8_7.1, constants.%empty_tuple.type [template = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.C [template = constants.%C.type]
|
||||
// CHECK:STDOUT: %.loc8_7.2: type = converted %.loc8_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.C [concrete = constants.%C.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [template = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [concrete = constants.%impl_witness]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @C [from "fail_decl_in_api_decl_in_impl.carbon"] {
|
||||
@@ -338,31 +338,31 @@ impl () as D;
|
||||
// CHECK:STDOUT: --- decl_only_in_impl.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {}
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: --- fail_decl_only_in_impl.impl.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %D.type: type = facet_type <@D> [template]
|
||||
// CHECK:STDOUT: %D.type: type = facet_type <@D> [concrete]
|
||||
// CHECK:STDOUT: %Self: %D.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .D = %D.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %default.import.loc2_6.1 = import <none>
|
||||
// CHECK:STDOUT: %default.import.loc2_6.2 = import <none>
|
||||
// CHECK:STDOUT: %D.decl: type = interface_decl @D [template = constants.%D.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [template] {} {
|
||||
// CHECK:STDOUT: %D.decl: type = interface_decl @D [concrete = constants.%D.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [concrete] {} {
|
||||
// CHECK:STDOUT: %.loc10_7.1: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc10_7.2: type = converted %.loc10_7.1, constants.%empty_tuple.type [template = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [template = constants.%D.type]
|
||||
// CHECK:STDOUT: %.loc10_7.2: type = converted %.loc10_7.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [template = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [concrete = constants.%impl_witness]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @D {
|
||||
|
||||
+30
-30
@@ -25,38 +25,38 @@ class A {
|
||||
// CHECK:STDOUT: --- self_in_class.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %DefaultConstructible.type: type = facet_type <@DefaultConstructible> [template]
|
||||
// CHECK:STDOUT: %DefaultConstructible.type: type = facet_type <@DefaultConstructible> [concrete]
|
||||
// CHECK:STDOUT: %Self: %DefaultConstructible.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic]
|
||||
// CHECK:STDOUT: %Make.type.068: type = fn_type @Make.1 [template]
|
||||
// CHECK:STDOUT: %Make.606: %Make.type.068 = struct_value () [template]
|
||||
// CHECK:STDOUT: %DefaultConstructible.assoc_type: type = assoc_entity_type %DefaultConstructible.type [template]
|
||||
// CHECK:STDOUT: %assoc0: %DefaultConstructible.assoc_type = assoc_entity element0, @DefaultConstructible.%Make.decl [template]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %A: type = class_type @A [template]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%Make.decl) [template]
|
||||
// CHECK:STDOUT: %Make.type.351: type = fn_type @Make.2 [template]
|
||||
// CHECK:STDOUT: %Make.b73: %Make.type.351 = struct_value () [template]
|
||||
// CHECK:STDOUT: %DefaultConstructible.facet: %DefaultConstructible.type = facet_value %C, %impl_witness [template]
|
||||
// CHECK:STDOUT: %C.val: %C = struct_value () [template]
|
||||
// CHECK:STDOUT: %Make.type.068: type = fn_type @Make.1 [concrete]
|
||||
// CHECK:STDOUT: %Make.606: %Make.type.068 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %DefaultConstructible.assoc_type: type = assoc_entity_type %DefaultConstructible.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0: %DefaultConstructible.assoc_type = assoc_entity element0, @DefaultConstructible.%Make.decl [concrete]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %A: type = class_type @A [concrete]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%Make.decl) [concrete]
|
||||
// CHECK:STDOUT: %Make.type.351: type = fn_type @Make.2 [concrete]
|
||||
// CHECK:STDOUT: %Make.b73: %Make.type.351 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %DefaultConstructible.facet: %DefaultConstructible.type = facet_value %C, %impl_witness [concrete]
|
||||
// CHECK:STDOUT: %C.val: %C = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .DefaultConstructible = %DefaultConstructible.decl
|
||||
// CHECK:STDOUT: .C = %C.decl
|
||||
// CHECK:STDOUT: .A = %A.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %DefaultConstructible.decl: type = interface_decl @DefaultConstructible [template = constants.%DefaultConstructible.type] {} {}
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %A.decl: type = class_decl @A [template = constants.%A] {} {}
|
||||
// CHECK:STDOUT: %DefaultConstructible.decl: type = interface_decl @DefaultConstructible [concrete = constants.%DefaultConstructible.type] {} {}
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %A.decl: type = class_decl @A [concrete = constants.%A] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @DefaultConstructible {
|
||||
// CHECK:STDOUT: %Self: %DefaultConstructible.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self]
|
||||
// CHECK:STDOUT: %Make.decl: %Make.type.068 = fn_decl @Make.1 [template = constants.%Make.606] {
|
||||
// CHECK:STDOUT: %Make.decl: %Make.type.068 = fn_decl @Make.1 [concrete = constants.%Make.606] {
|
||||
// CHECK:STDOUT: %return.patt: @Make.1.%Self.as_type.loc12_16.1 (%Self.as_type) = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: @Make.1.%Self.as_type.loc12_16.1 (%Self.as_type) = out_param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
@@ -66,7 +66,7 @@ class A {
|
||||
// CHECK:STDOUT: %return.param: ref @Make.1.%Self.as_type.loc12_16.1 (%Self.as_type) = out_param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref @Make.1.%Self.as_type.loc12_16.1 (%Self.as_type) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %assoc0: %DefaultConstructible.assoc_type = assoc_entity element0, %Make.decl [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %assoc0: %DefaultConstructible.assoc_type = assoc_entity element0, %Make.decl [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -75,11 +75,11 @@ class A {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl: %C.ref as %DefaultConstructible.ref {
|
||||
// CHECK:STDOUT: %Make.decl: %Make.type.351 = fn_decl @Make.2 [template = constants.%Make.b73] {
|
||||
// CHECK:STDOUT: %Make.decl: %Make.type.351 = fn_decl @Make.2 [concrete = constants.%Make.b73] {
|
||||
// CHECK:STDOUT: %return.patt: %C = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %C = out_param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, @impl.%C.ref [template = constants.%C]
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, @impl.%C.ref [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %return.param: ref %C = out_param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref %C = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
@@ -90,7 +90,7 @@ class A {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @C {
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -98,12 +98,12 @@ class A {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @A {
|
||||
// CHECK:STDOUT: impl_decl @impl [template] {} {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %DefaultConstructible.ref: type = name_ref DefaultConstructible, file.%DefaultConstructible.decl [template = constants.%DefaultConstructible.type]
|
||||
// CHECK:STDOUT: impl_decl @impl [concrete] {} {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %DefaultConstructible.ref: type = name_ref DefaultConstructible, file.%DefaultConstructible.decl [concrete = constants.%DefaultConstructible.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%Make.decl) [template = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%Make.decl) [concrete = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -120,8 +120,8 @@ class A {
|
||||
// CHECK:STDOUT: fn @Make.2() -> %return.param_patt: %C {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %.loc21_33.1: %empty_struct_type = struct_literal ()
|
||||
// CHECK:STDOUT: %.loc21_33.2: init %C = class_init (), %return [template = constants.%C.val]
|
||||
// CHECK:STDOUT: %.loc21_34: init %C = converted %.loc21_33.1, %.loc21_33.2 [template = constants.%C.val]
|
||||
// CHECK:STDOUT: %.loc21_33.2: init %C = class_init (), %return [concrete = constants.%C.val]
|
||||
// CHECK:STDOUT: %.loc21_34: init %C = converted %.loc21_33.1, %.loc21_33.2 [concrete = constants.%C.val]
|
||||
// CHECK:STDOUT: return %.loc21_34 to %return
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
@@ -39,91 +39,91 @@ impl D as SelfNested {
|
||||
// CHECK:STDOUT: --- self_in_signature.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %UseSelf.type: type = facet_type <@UseSelf> [template]
|
||||
// CHECK:STDOUT: %UseSelf.type: type = facet_type <@UseSelf> [concrete]
|
||||
// CHECK:STDOUT: %Self.085: %UseSelf.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Self.as_type.599: type = facet_access_type %Self.085 [symbolic]
|
||||
// CHECK:STDOUT: %F.type.86a: type = fn_type @F.1 [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %F.408: %F.type.86a = struct_value () [template]
|
||||
// CHECK:STDOUT: %UseSelf.assoc_type: type = assoc_entity_type %UseSelf.type [template]
|
||||
// CHECK:STDOUT: %assoc0.774: %UseSelf.assoc_type = assoc_entity element0, @UseSelf.%F.decl [template]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %D: type = class_type @D [template]
|
||||
// CHECK:STDOUT: %impl_witness.9ff: <witness> = impl_witness (@impl.1.%F.decl) [template]
|
||||
// CHECK:STDOUT: %F.type.fc6: type = fn_type @F.2 [template]
|
||||
// CHECK:STDOUT: %F.5e2: %F.type.fc6 = struct_value () [template]
|
||||
// CHECK:STDOUT: %UseSelf.facet.e62: %UseSelf.type = facet_value %C, %impl_witness.9ff [template]
|
||||
// CHECK:STDOUT: %C.val: %C = struct_value () [template]
|
||||
// CHECK:STDOUT: %impl_witness.320: <witness> = impl_witness (@impl.2.%F.decl) [template]
|
||||
// CHECK:STDOUT: %F.type.0aa: type = fn_type @F.3 [template]
|
||||
// CHECK:STDOUT: %F.f71: %F.type.0aa = struct_value () [template]
|
||||
// CHECK:STDOUT: %UseSelf.facet.848: %UseSelf.type = facet_value %D, %impl_witness.320 [template]
|
||||
// CHECK:STDOUT: %D.val: %D = struct_value () [template]
|
||||
// CHECK:STDOUT: %SelfNested.type: type = facet_type <@SelfNested> [template]
|
||||
// CHECK:STDOUT: %F.type.86a: type = fn_type @F.1 [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %F.408: %F.type.86a = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %UseSelf.assoc_type: type = assoc_entity_type %UseSelf.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0.774: %UseSelf.assoc_type = assoc_entity element0, @UseSelf.%F.decl [concrete]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %D: type = class_type @D [concrete]
|
||||
// CHECK:STDOUT: %impl_witness.9ff: <witness> = impl_witness (@impl.1.%F.decl) [concrete]
|
||||
// CHECK:STDOUT: %F.type.fc6: type = fn_type @F.2 [concrete]
|
||||
// CHECK:STDOUT: %F.5e2: %F.type.fc6 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %UseSelf.facet.e62: %UseSelf.type = facet_value %C, %impl_witness.9ff [concrete]
|
||||
// CHECK:STDOUT: %C.val: %C = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %impl_witness.320: <witness> = impl_witness (@impl.2.%F.decl) [concrete]
|
||||
// CHECK:STDOUT: %F.type.0aa: type = fn_type @F.3 [concrete]
|
||||
// CHECK:STDOUT: %F.f71: %F.type.0aa = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %UseSelf.facet.848: %UseSelf.type = facet_value %D, %impl_witness.320 [concrete]
|
||||
// CHECK:STDOUT: %D.val: %D = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %SelfNested.type: type = facet_type <@SelfNested> [concrete]
|
||||
// CHECK:STDOUT: %Self.2ff: %SelfNested.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Self.as_type.e1e: type = facet_access_type %Self.2ff [symbolic]
|
||||
// CHECK:STDOUT: %ptr.e87: type = ptr_type %Self.as_type.e1e [symbolic]
|
||||
// CHECK:STDOUT: %struct_type.x.y.270: type = struct_type {.x: %Self.as_type.e1e, .y: %empty_tuple.type} [symbolic]
|
||||
// CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [template]
|
||||
// CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.46b: type = tuple_type (%ptr.e87, %struct_type.x.y.270) [symbolic]
|
||||
// CHECK:STDOUT: %F.type.6ed: type = fn_type @F.4 [template]
|
||||
// CHECK:STDOUT: %F.998: %F.type.6ed = struct_value () [template]
|
||||
// CHECK:STDOUT: %SelfNested.assoc_type: type = assoc_entity_type %SelfNested.type [template]
|
||||
// CHECK:STDOUT: %assoc0.a58: %SelfNested.assoc_type = assoc_entity element0, @SelfNested.%F.decl [template]
|
||||
// CHECK:STDOUT: %impl_witness.f4e: <witness> = impl_witness (@impl.3.%F.decl) [template]
|
||||
// CHECK:STDOUT: %ptr.019: type = ptr_type %C [template]
|
||||
// CHECK:STDOUT: %struct_type.x.y.2f0: type = struct_type {.x: %C, .y: %empty_tuple.type} [template]
|
||||
// CHECK:STDOUT: %tuple.type.a17: type = tuple_type (%ptr.019, %struct_type.x.y.2f0) [template]
|
||||
// CHECK:STDOUT: %F.type.ef0: type = fn_type @F.5 [template]
|
||||
// CHECK:STDOUT: %F.9a9: %F.type.ef0 = struct_value () [template]
|
||||
// CHECK:STDOUT: %SelfNested.facet.f66: %SelfNested.type = facet_value %C, %impl_witness.f4e [template]
|
||||
// CHECK:STDOUT: %impl_witness.4b5: <witness> = impl_witness (@impl.4.%F.decl) [template]
|
||||
// CHECK:STDOUT: %ptr.19c: type = ptr_type %D [template]
|
||||
// CHECK:STDOUT: %struct_type.x.y.527: type = struct_type {.x: %D, .y: %empty_tuple.type} [template]
|
||||
// CHECK:STDOUT: %tuple.type.a5f: type = tuple_type (%ptr.19c, %struct_type.x.y.527) [template]
|
||||
// CHECK:STDOUT: %F.type.a9d: type = fn_type @F.6 [template]
|
||||
// CHECK:STDOUT: %F.c41: %F.type.a9d = struct_value () [template]
|
||||
// CHECK:STDOUT: %SelfNested.facet.2c0: %SelfNested.type = facet_value %D, %impl_witness.4b5 [template]
|
||||
// CHECK:STDOUT: %F.type.6ed: type = fn_type @F.4 [concrete]
|
||||
// CHECK:STDOUT: %F.998: %F.type.6ed = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %SelfNested.assoc_type: type = assoc_entity_type %SelfNested.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0.a58: %SelfNested.assoc_type = assoc_entity element0, @SelfNested.%F.decl [concrete]
|
||||
// CHECK:STDOUT: %impl_witness.f4e: <witness> = impl_witness (@impl.3.%F.decl) [concrete]
|
||||
// CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete]
|
||||
// CHECK:STDOUT: %struct_type.x.y.2f0: type = struct_type {.x: %C, .y: %empty_tuple.type} [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.a17: type = tuple_type (%ptr.019, %struct_type.x.y.2f0) [concrete]
|
||||
// CHECK:STDOUT: %F.type.ef0: type = fn_type @F.5 [concrete]
|
||||
// CHECK:STDOUT: %F.9a9: %F.type.ef0 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %SelfNested.facet.f66: %SelfNested.type = facet_value %C, %impl_witness.f4e [concrete]
|
||||
// CHECK:STDOUT: %impl_witness.4b5: <witness> = impl_witness (@impl.4.%F.decl) [concrete]
|
||||
// CHECK:STDOUT: %ptr.19c: type = ptr_type %D [concrete]
|
||||
// CHECK:STDOUT: %struct_type.x.y.527: type = struct_type {.x: %D, .y: %empty_tuple.type} [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.a5f: type = tuple_type (%ptr.19c, %struct_type.x.y.527) [concrete]
|
||||
// CHECK:STDOUT: %F.type.a9d: type = fn_type @F.6 [concrete]
|
||||
// CHECK:STDOUT: %F.c41: %F.type.a9d = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %SelfNested.facet.2c0: %SelfNested.type = facet_value %D, %impl_witness.4b5 [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .UseSelf = %UseSelf.decl
|
||||
// CHECK:STDOUT: .C = %C.decl
|
||||
// CHECK:STDOUT: .D = %D.decl
|
||||
// CHECK:STDOUT: .SelfNested = %SelfNested.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %UseSelf.decl: type = interface_decl @UseSelf [template = constants.%UseSelf.type] {} {}
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %D.decl: type = class_decl @D [template = constants.%D] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl.1 [template] {} {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %UseSelf.ref: type = name_ref UseSelf, file.%UseSelf.decl [template = constants.%UseSelf.type]
|
||||
// CHECK:STDOUT: %UseSelf.decl: type = interface_decl @UseSelf [concrete = constants.%UseSelf.type] {} {}
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %D.decl: type = class_decl @D [concrete = constants.%D] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl.1 [concrete] {} {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %UseSelf.ref: type = name_ref UseSelf, file.%UseSelf.decl [concrete = constants.%UseSelf.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness.loc19: <witness> = impl_witness (@impl.1.%F.decl) [template = constants.%impl_witness.9ff]
|
||||
// CHECK:STDOUT: impl_decl @impl.2 [template] {} {
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [template = constants.%D]
|
||||
// CHECK:STDOUT: %UseSelf.ref: type = name_ref UseSelf, file.%UseSelf.decl [template = constants.%UseSelf.type]
|
||||
// CHECK:STDOUT: %impl_witness.loc19: <witness> = impl_witness (@impl.1.%F.decl) [concrete = constants.%impl_witness.9ff]
|
||||
// CHECK:STDOUT: impl_decl @impl.2 [concrete] {} {
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D]
|
||||
// CHECK:STDOUT: %UseSelf.ref: type = name_ref UseSelf, file.%UseSelf.decl [concrete = constants.%UseSelf.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness.loc23: <witness> = impl_witness (@impl.2.%F.decl) [template = constants.%impl_witness.320]
|
||||
// CHECK:STDOUT: %SelfNested.decl: type = interface_decl @SelfNested [template = constants.%SelfNested.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl.3 [template] {} {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %SelfNested.ref: type = name_ref SelfNested, file.%SelfNested.decl [template = constants.%SelfNested.type]
|
||||
// CHECK:STDOUT: %impl_witness.loc23: <witness> = impl_witness (@impl.2.%F.decl) [concrete = constants.%impl_witness.320]
|
||||
// CHECK:STDOUT: %SelfNested.decl: type = interface_decl @SelfNested [concrete = constants.%SelfNested.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl.3 [concrete] {} {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %SelfNested.ref: type = name_ref SelfNested, file.%SelfNested.decl [concrete = constants.%SelfNested.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness.loc31: <witness> = impl_witness (@impl.3.%F.decl) [template = constants.%impl_witness.f4e]
|
||||
// CHECK:STDOUT: impl_decl @impl.4 [template] {} {
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [template = constants.%D]
|
||||
// CHECK:STDOUT: %SelfNested.ref: type = name_ref SelfNested, file.%SelfNested.decl [template = constants.%SelfNested.type]
|
||||
// CHECK:STDOUT: %impl_witness.loc31: <witness> = impl_witness (@impl.3.%F.decl) [concrete = constants.%impl_witness.f4e]
|
||||
// CHECK:STDOUT: impl_decl @impl.4 [concrete] {} {
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D]
|
||||
// CHECK:STDOUT: %SelfNested.ref: type = name_ref SelfNested, file.%SelfNested.decl [concrete = constants.%SelfNested.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness.loc35: <witness> = impl_witness (@impl.4.%F.decl) [template = constants.%impl_witness.4b5]
|
||||
// CHECK:STDOUT: %impl_witness.loc35: <witness> = impl_witness (@impl.4.%F.decl) [concrete = constants.%impl_witness.4b5]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @UseSelf {
|
||||
// CHECK:STDOUT: %Self: %UseSelf.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.085]
|
||||
// CHECK:STDOUT: %F.decl: %F.type.86a = fn_decl @F.1 [template = constants.%F.408] {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.86a = fn_decl @F.1 [concrete = constants.%F.408] {
|
||||
// CHECK:STDOUT: %self.patt: @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.599) = binding_pattern self
|
||||
// CHECK:STDOUT: %self.param_patt: @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.599) = value_param_pattern %self.patt, runtime_param0
|
||||
// CHECK:STDOUT: %x.patt: @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.599) = binding_pattern x
|
||||
@@ -151,7 +151,7 @@ impl D as SelfNested {
|
||||
// CHECK:STDOUT: %return.param: ref @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.599) = out_param runtime_param2
|
||||
// CHECK:STDOUT: %return: ref @F.1.%Self.as_type.loc12_14.1 (%Self.as_type.599) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %assoc0: %UseSelf.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0.774]
|
||||
// CHECK:STDOUT: %assoc0: %UseSelf.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0.774]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -161,7 +161,7 @@ impl D as SelfNested {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @SelfNested {
|
||||
// CHECK:STDOUT: %Self: %SelfNested.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.2ff]
|
||||
// CHECK:STDOUT: %F.decl: %F.type.6ed = fn_decl @F.4 [template = constants.%F.998] {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.6ed = fn_decl @F.4 [concrete = constants.%F.998] {
|
||||
// CHECK:STDOUT: %x.patt: @F.4.%tuple.type (%tuple.type.46b) = binding_pattern x
|
||||
// CHECK:STDOUT: %x.param_patt: @F.4.%tuple.type (%tuple.type.46b) = value_param_pattern %x.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
@@ -175,14 +175,14 @@ impl D as SelfNested {
|
||||
// CHECK:STDOUT: %Self.as_type.loc28_24: type = facet_access_type %Self.ref.loc28_24 [symbolic = %Self.as_type.loc28_16.1 (constants.%Self.as_type.e1e)]
|
||||
// CHECK:STDOUT: %.loc28_24: type = converted %Self.ref.loc28_24, %Self.as_type.loc28_24 [symbolic = %Self.as_type.loc28_16.1 (constants.%Self.as_type.e1e)]
|
||||
// CHECK:STDOUT: %.loc28_35.1: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc28_35.2: type = converted %.loc28_35.1, constants.%empty_tuple.type [template = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %.loc28_35.2: type = converted %.loc28_35.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %struct_type.x.y.loc28_36.2: type = struct_type {.x: %Self.as_type.e1e, .y: %empty_tuple.type} [symbolic = %struct_type.x.y.loc28_36.1 (constants.%struct_type.x.y.270)]
|
||||
// CHECK:STDOUT: %.loc28_37.2: %tuple.type.24b = tuple_literal (%ptr.loc28_16.2, %struct_type.x.y.loc28_36.2)
|
||||
// CHECK:STDOUT: %.loc28_37.3: type = converted %.loc28_37.2, constants.%tuple.type.46b [symbolic = %tuple.type (constants.%tuple.type.46b)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %x: @F.4.%tuple.type (%tuple.type.46b) = bind_name x, %x.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %assoc0: %SelfNested.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0.a58]
|
||||
// CHECK:STDOUT: %assoc0: %SelfNested.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0.a58]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -191,7 +191,7 @@ impl D as SelfNested {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl.1: %C.ref as %UseSelf.ref {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.fc6 = fn_decl @F.2 [template = constants.%F.5e2] {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.fc6 = fn_decl @F.2 [concrete = constants.%F.5e2] {
|
||||
// CHECK:STDOUT: %self.patt: %C = binding_pattern self
|
||||
// CHECK:STDOUT: %self.param_patt: %C = value_param_pattern %self.patt, runtime_param0
|
||||
// CHECK:STDOUT: %x.patt: %C = binding_pattern x
|
||||
@@ -199,12 +199,12 @@ impl D as SelfNested {
|
||||
// CHECK:STDOUT: %return.patt: %C = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %C = out_param_pattern %return.patt, runtime_param2
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %C.ref.loc20_26: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %C.ref.loc20_26: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %self.param: %C = value_param runtime_param0
|
||||
// CHECK:STDOUT: %C.ref.loc20_14: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %C.ref.loc20_14: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %self: %C = bind_name self, %self.param
|
||||
// CHECK:STDOUT: %x.param: %C = value_param runtime_param1
|
||||
// CHECK:STDOUT: %C.ref.loc20_20: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %C.ref.loc20_20: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %x: %C = bind_name x, %x.param
|
||||
// CHECK:STDOUT: %return.param: ref %C = out_param runtime_param2
|
||||
// CHECK:STDOUT: %return: ref %C = return_slot %return.param
|
||||
@@ -216,7 +216,7 @@ impl D as SelfNested {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl.2: %D.ref as %UseSelf.ref {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.0aa = fn_decl @F.3 [template = constants.%F.f71] {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.0aa = fn_decl @F.3 [concrete = constants.%F.f71] {
|
||||
// CHECK:STDOUT: %self.patt: %D = binding_pattern self
|
||||
// CHECK:STDOUT: %self.param_patt: %D = value_param_pattern %self.patt, runtime_param0
|
||||
// CHECK:STDOUT: %x.patt: %D = binding_pattern x
|
||||
@@ -224,12 +224,12 @@ impl D as SelfNested {
|
||||
// CHECK:STDOUT: %return.patt: %D = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %D = out_param_pattern %return.patt, runtime_param2
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %Self.ref.loc24_32: type = name_ref Self, @impl.2.%D.ref [template = constants.%D]
|
||||
// CHECK:STDOUT: %Self.ref.loc24_32: type = name_ref Self, @impl.2.%D.ref [concrete = constants.%D]
|
||||
// CHECK:STDOUT: %self.param: %D = value_param runtime_param0
|
||||
// CHECK:STDOUT: %Self.ref.loc24_14: type = name_ref Self, @impl.2.%D.ref [template = constants.%D]
|
||||
// CHECK:STDOUT: %Self.ref.loc24_14: type = name_ref Self, @impl.2.%D.ref [concrete = constants.%D]
|
||||
// CHECK:STDOUT: %self: %D = bind_name self, %self.param
|
||||
// CHECK:STDOUT: %x.param: %D = value_param runtime_param1
|
||||
// CHECK:STDOUT: %Self.ref.loc24_23: type = name_ref Self, @impl.2.%D.ref [template = constants.%D]
|
||||
// CHECK:STDOUT: %Self.ref.loc24_23: type = name_ref Self, @impl.2.%D.ref [concrete = constants.%D]
|
||||
// CHECK:STDOUT: %x: %D = bind_name x, %x.param
|
||||
// CHECK:STDOUT: %return.param: ref %D = out_param runtime_param2
|
||||
// CHECK:STDOUT: %return: ref %D = return_slot %return.param
|
||||
@@ -241,20 +241,20 @@ impl D as SelfNested {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl.3: %C.ref as %SelfNested.ref {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.ef0 = fn_decl @F.5 [template = constants.%F.9a9] {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.ef0 = fn_decl @F.5 [concrete = constants.%F.9a9] {
|
||||
// CHECK:STDOUT: %x.patt: %tuple.type.a17 = binding_pattern x
|
||||
// CHECK:STDOUT: %x.param_patt: %tuple.type.a17 = value_param_pattern %x.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %x.param: %tuple.type.a17 = value_param runtime_param0
|
||||
// CHECK:STDOUT: %.loc32_31.1: type = splice_block %.loc32_31.3 [template = constants.%tuple.type.a17] {
|
||||
// CHECK:STDOUT: %C.ref.loc32_12: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.019]
|
||||
// CHECK:STDOUT: %C.ref.loc32_21: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %.loc32_31.1: type = splice_block %.loc32_31.3 [concrete = constants.%tuple.type.a17] {
|
||||
// CHECK:STDOUT: %C.ref.loc32_12: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %ptr: type = ptr_type %C [concrete = constants.%ptr.019]
|
||||
// CHECK:STDOUT: %C.ref.loc32_21: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %.loc32_29.1: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc32_29.2: type = converted %.loc32_29.1, constants.%empty_tuple.type [template = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %struct_type.x.y: type = struct_type {.x: %C, .y: %empty_tuple.type} [template = constants.%struct_type.x.y.2f0]
|
||||
// CHECK:STDOUT: %.loc32_29.2: type = converted %.loc32_29.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %struct_type.x.y: type = struct_type {.x: %C, .y: %empty_tuple.type} [concrete = constants.%struct_type.x.y.2f0]
|
||||
// CHECK:STDOUT: %.loc32_31.2: %tuple.type.24b = tuple_literal (%ptr, %struct_type.x.y)
|
||||
// CHECK:STDOUT: %.loc32_31.3: type = converted %.loc32_31.2, constants.%tuple.type.a17 [template = constants.%tuple.type.a17]
|
||||
// CHECK:STDOUT: %.loc32_31.3: type = converted %.loc32_31.2, constants.%tuple.type.a17 [concrete = constants.%tuple.type.a17]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %x: %tuple.type.a17 = bind_name x, %x.param
|
||||
// CHECK:STDOUT: }
|
||||
@@ -265,20 +265,20 @@ impl D as SelfNested {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl.4: %D.ref as %SelfNested.ref {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.a9d = fn_decl @F.6 [template = constants.%F.c41] {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.a9d = fn_decl @F.6 [concrete = constants.%F.c41] {
|
||||
// CHECK:STDOUT: %x.patt: %tuple.type.a5f = binding_pattern x
|
||||
// CHECK:STDOUT: %x.param_patt: %tuple.type.a5f = value_param_pattern %x.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %x.param: %tuple.type.a5f = value_param runtime_param0
|
||||
// CHECK:STDOUT: %.loc36_37.1: type = splice_block %.loc36_37.3 [template = constants.%tuple.type.a5f] {
|
||||
// CHECK:STDOUT: %Self.ref.loc36_12: type = name_ref Self, @impl.4.%D.ref [template = constants.%D]
|
||||
// CHECK:STDOUT: %ptr: type = ptr_type %D [template = constants.%ptr.19c]
|
||||
// CHECK:STDOUT: %Self.ref.loc36_24: type = name_ref Self, @impl.4.%D.ref [template = constants.%D]
|
||||
// CHECK:STDOUT: %.loc36_37.1: type = splice_block %.loc36_37.3 [concrete = constants.%tuple.type.a5f] {
|
||||
// CHECK:STDOUT: %Self.ref.loc36_12: type = name_ref Self, @impl.4.%D.ref [concrete = constants.%D]
|
||||
// CHECK:STDOUT: %ptr: type = ptr_type %D [concrete = constants.%ptr.19c]
|
||||
// CHECK:STDOUT: %Self.ref.loc36_24: type = name_ref Self, @impl.4.%D.ref [concrete = constants.%D]
|
||||
// CHECK:STDOUT: %.loc36_35.1: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc36_35.2: type = converted %.loc36_35.1, constants.%empty_tuple.type [template = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %struct_type.x.y: type = struct_type {.x: %D, .y: %empty_tuple.type} [template = constants.%struct_type.x.y.527]
|
||||
// CHECK:STDOUT: %.loc36_35.2: type = converted %.loc36_35.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %struct_type.x.y: type = struct_type {.x: %D, .y: %empty_tuple.type} [concrete = constants.%struct_type.x.y.527]
|
||||
// CHECK:STDOUT: %.loc36_37.2: %tuple.type.24b = tuple_literal (%ptr, %struct_type.x.y)
|
||||
// CHECK:STDOUT: %.loc36_37.3: type = converted %.loc36_37.2, constants.%tuple.type.a5f [template = constants.%tuple.type.a5f]
|
||||
// CHECK:STDOUT: %.loc36_37.3: type = converted %.loc36_37.2, constants.%tuple.type.a5f [concrete = constants.%tuple.type.a5f]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %x: %tuple.type.a5f = bind_name x, %x.param
|
||||
// CHECK:STDOUT: }
|
||||
@@ -289,7 +289,7 @@ impl D as SelfNested {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @C {
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -297,7 +297,7 @@ impl D as SelfNested {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @D {
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -314,16 +314,16 @@ impl D as SelfNested {
|
||||
// CHECK:STDOUT: fn @F.2[%self.param_patt: %C](%x.param_patt: %C) -> %return.param_patt: %C {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %.loc20_38.1: %empty_struct_type = struct_literal ()
|
||||
// CHECK:STDOUT: %.loc20_38.2: init %C = class_init (), %return [template = constants.%C.val]
|
||||
// CHECK:STDOUT: %.loc20_39: init %C = converted %.loc20_38.1, %.loc20_38.2 [template = constants.%C.val]
|
||||
// CHECK:STDOUT: %.loc20_38.2: init %C = class_init (), %return [concrete = constants.%C.val]
|
||||
// CHECK:STDOUT: %.loc20_39: init %C = converted %.loc20_38.1, %.loc20_38.2 [concrete = constants.%C.val]
|
||||
// CHECK:STDOUT: return %.loc20_39 to %return
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @F.3[%self.param_patt: %D](%x.param_patt: %D) -> %return.param_patt: %D {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %.loc24_47.1: %empty_struct_type = struct_literal ()
|
||||
// CHECK:STDOUT: %.loc24_47.2: init %D = class_init (), %return [template = constants.%D.val]
|
||||
// CHECK:STDOUT: %.loc24_48: init %D = converted %.loc24_47.1, %.loc24_47.2 [template = constants.%D.val]
|
||||
// CHECK:STDOUT: %.loc24_47.2: init %D = class_init (), %return [concrete = constants.%D.val]
|
||||
// CHECK:STDOUT: %.loc24_48: init %D = converted %.loc24_47.1, %.loc24_47.2 [concrete = constants.%D.val]
|
||||
// CHECK:STDOUT: return %.loc24_48 to %return
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+25
-25
@@ -21,18 +21,18 @@ impl i32 as I {}
|
||||
// CHECK:STDOUT: --- redeclaration.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [template]
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete]
|
||||
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [template]
|
||||
// CHECK:STDOUT: %X: type = class_type @X [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %complete_type.357: <witness> = complete_type_witness %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [concrete]
|
||||
// CHECK:STDOUT: %X: type = class_type @X [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type.357: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
|
||||
// CHECK:STDOUT: .Int = %Core.Int
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
@@ -40,24 +40,24 @@ impl i32 as I {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Core = imports.%Core
|
||||
// CHECK:STDOUT: .I = %I.decl
|
||||
// CHECK:STDOUT: .X = %X.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [template = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [template] {} {
|
||||
// CHECK:STDOUT: %int_32.loc13: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc13: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: %I.ref.loc13: type = name_ref I, file.%I.decl [template = constants.%I.type]
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [concrete] {} {
|
||||
// CHECK:STDOUT: %int_32.loc13: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc13: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %I.ref.loc13: type = name_ref I, file.%I.decl [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [template = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %X.decl: type = class_decl @X [template = constants.%X] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [template] {} {
|
||||
// CHECK:STDOUT: %int_32.loc19: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc19: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: %I.ref.loc19: type = name_ref I, file.%I.decl [template = constants.%I.type]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness () [concrete = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %X.decl: type = class_decl @X [concrete = constants.%X] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [concrete] {} {
|
||||
// CHECK:STDOUT: %int_32.loc19: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc19: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %I.ref.loc19: type = name_ref I, file.%I.decl [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -75,12 +75,12 @@ impl i32 as I {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @X {
|
||||
// CHECK:STDOUT: impl_decl @impl [template] {} {
|
||||
// CHECK:STDOUT: %int_32.loc16: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc16: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: %I.ref.loc16: type = name_ref I, file.%I.decl [template = constants.%I.type]
|
||||
// CHECK:STDOUT: impl_decl @impl [concrete] {} {
|
||||
// CHECK:STDOUT: %int_32.loc16: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc16: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %I.ref.loc16: type = name_ref I, file.%I.decl [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
|
||||
Reference in New Issue
Block a user