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:
+13
-13
@@ -16,17 +16,17 @@ interface I {
|
||||
// CHECK:STDOUT: --- 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: %int_32: Core.IntLiteral = int_value 32 [template]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template]
|
||||
// CHECK:STDOUT: %assoc1: %I.assoc_type = assoc_entity element1, @I.%N [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: %int_32: Core.IntLiteral = int_value 32 [concrete]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %assoc1: %I.assoc_type = assoc_entity element1, @I.%N [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/...
|
||||
@@ -34,21 +34,21 @@ interface 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: %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: %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: %N: %i32 = assoc_const_decl @N [template] {
|
||||
// CHECK:STDOUT: %assoc1: %I.assoc_type = assoc_entity element1, @I.%N [template = constants.%assoc1]
|
||||
// CHECK:STDOUT: %N: %i32 = assoc_const_decl @N [concrete] {
|
||||
// CHECK:STDOUT: %assoc1: %I.assoc_type = assoc_entity element1, @I.%N [concrete = constants.%assoc1]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
|
||||
@@ -22,15 +22,15 @@ interface I {
|
||||
// CHECK:STDOUT: --- fail_assoc_const_bad_default.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: %I.assoc_type: type = assoc_entity_type %I.type [template]
|
||||
// CHECK:STDOUT: %assoc0.c7e: %I.assoc_type = assoc_entity element0, @I.%T [template]
|
||||
// CHECK:STDOUT: %int_42: Core.IntLiteral = int_value 42 [template]
|
||||
// CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type %I.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0.c7e: %I.assoc_type = assoc_entity element0, @I.%T [concrete]
|
||||
// CHECK:STDOUT: %int_42: Core.IntLiteral = int_value 42 [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/...
|
||||
@@ -38,20 +38,20 @@ interface 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: %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.826]
|
||||
// CHECK:STDOUT: %T: type = assoc_const_decl @T [template] {
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%T [template = constants.%assoc0.c7e]
|
||||
// CHECK:STDOUT: %int_42: Core.IntLiteral = int_value 42 [template = constants.%int_42]
|
||||
// CHECK:STDOUT: %.loc19: type = converted %int_42, <error> [template = <error>]
|
||||
// CHECK:STDOUT: %T: type = assoc_const_decl @T [concrete] {
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%T [concrete = constants.%assoc0.c7e]
|
||||
// CHECK:STDOUT: %int_42: Core.IntLiteral = int_value 42 [concrete = constants.%int_42]
|
||||
// CHECK:STDOUT: %.loc19: type = converted %int_42, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
|
||||
@@ -24,30 +24,30 @@ interface I {
|
||||
// CHECK:STDOUT: --- fail_todo_assoc_const_default.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: %I.assoc_type: type = assoc_entity_type %I.type [template]
|
||||
// CHECK:STDOUT: %assoc0.c7e: %I.assoc_type = assoc_entity element0, @I.%T [template]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template]
|
||||
// CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [template]
|
||||
// CHECK:STDOUT: %tuple.type.d07: type = tuple_type (%i32, %i32) [template]
|
||||
// CHECK:STDOUT: %assoc1: %I.assoc_type = assoc_entity element1, @I.%N [template]
|
||||
// CHECK:STDOUT: %int_42.20e: Core.IntLiteral = int_value 42 [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_42.20e, %Convert.956 [template]
|
||||
// CHECK:STDOUT: %Convert.specific_fn: <specific function> = specific_function %Convert.bound, @Convert.2(%int_32) [template]
|
||||
// CHECK:STDOUT: %int_42.c68: %i32 = int_value 42 [template]
|
||||
// CHECK:STDOUT: %I.assoc_type: type = assoc_entity_type %I.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0.c7e: %I.assoc_type = assoc_entity element0, @I.%T [concrete]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.d07: type = tuple_type (%i32, %i32) [concrete]
|
||||
// CHECK:STDOUT: %assoc1: %I.assoc_type = assoc_entity element1, @I.%N [concrete]
|
||||
// CHECK:STDOUT: %int_42.20e: Core.IntLiteral = int_value 42 [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_42.20e, %Convert.956 [concrete]
|
||||
// CHECK:STDOUT: %Convert.specific_fn: <specific function> = specific_function %Convert.bound, @Convert.2(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %int_42.c68: %i32 = int_value 42 [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
|
||||
@@ -56,34 +56,34 @@ interface 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: %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.826]
|
||||
// CHECK:STDOUT: %T: type = assoc_const_decl @T [template] {
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%T [template = constants.%assoc0.c7e]
|
||||
// CHECK:STDOUT: %int_32.loc16_27: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc16_27: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: %int_32.loc16_32: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc16_32: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: %T: type = assoc_const_decl @T [concrete] {
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%T [concrete = constants.%assoc0.c7e]
|
||||
// CHECK:STDOUT: %int_32.loc16_27: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc16_27: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %int_32.loc16_32: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc16_32: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %.loc16_35: %tuple.type.24b = tuple_literal (%i32.loc16_27, %i32.loc16_32)
|
||||
// CHECK:STDOUT: %.loc16_36: type = converted %.loc16_35, constants.%tuple.type.d07 [template = constants.%tuple.type.d07]
|
||||
// CHECK:STDOUT: %.loc16_36: type = converted %.loc16_35, constants.%tuple.type.d07 [concrete = constants.%tuple.type.d07]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %N: %i32 = assoc_const_decl @N [template] {
|
||||
// CHECK:STDOUT: %assoc1: %I.assoc_type = assoc_entity element1, @I.%N [template = constants.%assoc1]
|
||||
// CHECK:STDOUT: %int_42: Core.IntLiteral = int_value 42 [template = constants.%int_42.20e]
|
||||
// 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_42, %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_42) [template = constants.%int_42.c68]
|
||||
// CHECK:STDOUT: %.loc21_27.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_42.c68]
|
||||
// CHECK:STDOUT: %.loc21_27.2: %i32 = converted %int_42, %.loc21_27.1 [template = constants.%int_42.c68]
|
||||
// CHECK:STDOUT: %N: %i32 = assoc_const_decl @N [concrete] {
|
||||
// CHECK:STDOUT: %assoc1: %I.assoc_type = assoc_entity element1, @I.%N [concrete = constants.%assoc1]
|
||||
// CHECK:STDOUT: %int_42: Core.IntLiteral = int_value 42 [concrete = constants.%int_42.20e]
|
||||
// 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_42, %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_42) [concrete = constants.%int_42.c68]
|
||||
// CHECK:STDOUT: %.loc21_27.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_42.c68]
|
||||
// CHECK:STDOUT: %.loc21_27.2: %i32 = converted %int_42, %.loc21_27.1 [concrete = constants.%int_42.c68]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
|
||||
+25
-25
@@ -25,21 +25,21 @@ interface Interface {
|
||||
// CHECK:STDOUT: --- fail_todo_define_default_fn_inline.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: %Interface.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: %Interface.assoc_type: type = assoc_entity_type %Interface.type [template]
|
||||
// CHECK:STDOUT: %assoc0: %Interface.assoc_type = assoc_entity element0, @Interface.%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: %G.type: type = fn_type @G [template]
|
||||
// CHECK:STDOUT: %G: %G.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %assoc1: %Interface.assoc_type = assoc_entity element1, @Interface.%G.decl [template]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Interface.assoc_type: type = assoc_entity_type %Interface.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0: %Interface.assoc_type = assoc_entity element0, @Interface.%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: %G.type: type = fn_type @G [concrete]
|
||||
// CHECK:STDOUT: %G: %G.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %assoc1: %Interface.assoc_type = assoc_entity element1, @Interface.%G.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: .Int = %Core.Int
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
@@ -47,19 +47,19 @@ interface Interface {
|
||||
// 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: .Interface = %Interface.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %Interface.decl: type = interface_decl @Interface [template = constants.%Interface.type] {} {}
|
||||
// CHECK:STDOUT: %Interface.decl: type = interface_decl @Interface [concrete = constants.%Interface.type] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @Interface {
|
||||
// CHECK:STDOUT: %Self: %Interface.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self]
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %Interface.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %Interface.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] {
|
||||
// CHECK:STDOUT: %a.patt: %i32 = binding_pattern a
|
||||
// CHECK:STDOUT: %a.param_patt: %i32 = value_param_pattern %a.patt, runtime_param0
|
||||
// CHECK:STDOUT: %b.patt: %i32 = binding_pattern b
|
||||
@@ -67,24 +67,24 @@ interface Interface {
|
||||
// CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %i32 = out_param_pattern %return.patt, runtime_param2
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %int_32.loc22_35: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc22_35: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: %int_32.loc22_35: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc22_35: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %a.param: %i32 = value_param runtime_param0
|
||||
// CHECK:STDOUT: %.loc22_19: type = splice_block %i32.loc22_19 [template = constants.%i32] {
|
||||
// CHECK:STDOUT: %int_32.loc22_19: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc22_19: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: %.loc22_19: type = splice_block %i32.loc22_19 [concrete = constants.%i32] {
|
||||
// CHECK:STDOUT: %int_32.loc22_19: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc22_19: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %a: %i32 = bind_name a, %a.param
|
||||
// CHECK:STDOUT: %b.param: %i32 = value_param runtime_param1
|
||||
// CHECK:STDOUT: %.loc22_27: type = splice_block %i32.loc22_27 [template = constants.%i32] {
|
||||
// CHECK:STDOUT: %int_32.loc22_27: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc22_27: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: %.loc22_27: type = splice_block %i32.loc22_27 [concrete = constants.%i32] {
|
||||
// CHECK:STDOUT: %int_32.loc22_27: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc22_27: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %b: %i32 = bind_name b, %b.param
|
||||
// CHECK:STDOUT: %return.param: ref %i32 = out_param runtime_param2
|
||||
// CHECK:STDOUT: %return: ref %i32 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %assoc1: %Interface.assoc_type = assoc_entity element1, %G.decl [template = constants.%assoc1]
|
||||
// CHECK:STDOUT: %assoc1: %Interface.assoc_type = assoc_entity element1, %G.decl [concrete = constants.%assoc1]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
|
||||
+48
-48
@@ -67,25 +67,25 @@ fn Interface.C.F[self: Self](U:! type, u: U) -> U { return u; }
|
||||
// CHECK:STDOUT: --- fail_todo_define_default_fn_out_of_line.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: %Interface.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: %Interface.assoc_type: type = assoc_entity_type %Interface.type [template]
|
||||
// CHECK:STDOUT: %assoc0: %Interface.assoc_type = assoc_entity element0, @Interface.%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: %G.type: type = fn_type @G [template]
|
||||
// CHECK:STDOUT: %G: %G.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %assoc1: %Interface.assoc_type = assoc_entity element1, @Interface.%G.decl [template]
|
||||
// CHECK:STDOUT: %.type.136624.1: type = fn_type @.1 [template]
|
||||
// CHECK:STDOUT: %.563abc.1: %.type.136624.1 = struct_value () [template]
|
||||
// CHECK:STDOUT: %.type.136624.2: type = fn_type @.2 [template]
|
||||
// CHECK:STDOUT: %.563abc.2: %.type.136624.2 = struct_value () [template]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Interface.assoc_type: type = assoc_entity_type %Interface.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0: %Interface.assoc_type = assoc_entity element0, @Interface.%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: %G.type: type = fn_type @G [concrete]
|
||||
// CHECK:STDOUT: %G: %G.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %assoc1: %Interface.assoc_type = assoc_entity element1, @Interface.%G.decl [concrete]
|
||||
// CHECK:STDOUT: %.type.136624.1: type = fn_type @.1 [concrete]
|
||||
// CHECK:STDOUT: %.563abc.1: %.type.136624.1 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %.type.136624.2: type = fn_type @.2 [concrete]
|
||||
// CHECK:STDOUT: %.563abc.2: %.type.136624.2 = 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/...
|
||||
@@ -93,14 +93,14 @@ fn Interface.C.F[self: Self](U:! type, u: U) -> U { return u; }
|
||||
// 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: .Interface = %Interface.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %Interface.decl: type = interface_decl @Interface [template = constants.%Interface.type] {} {}
|
||||
// CHECK:STDOUT: %.decl.loc23: %.type.136624.1 = fn_decl @.1 [template = constants.%.563abc.1] {} {}
|
||||
// CHECK:STDOUT: %.decl.loc32: %.type.136624.2 = fn_decl @.2 [template = constants.%.563abc.2] {
|
||||
// CHECK:STDOUT: %Interface.decl: type = interface_decl @Interface [concrete = constants.%Interface.type] {} {}
|
||||
// CHECK:STDOUT: %.decl.loc23: %.type.136624.1 = fn_decl @.1 [concrete = constants.%.563abc.1] {} {}
|
||||
// CHECK:STDOUT: %.decl.loc32: %.type.136624.2 = fn_decl @.2 [concrete = constants.%.563abc.2] {
|
||||
// CHECK:STDOUT: %a.patt: %i32 = binding_pattern a
|
||||
// CHECK:STDOUT: %a.param_patt: %i32 = value_param_pattern %a.patt, runtime_param0
|
||||
// CHECK:STDOUT: %b.patt: %i32 = binding_pattern b
|
||||
@@ -108,18 +108,18 @@ fn Interface.C.F[self: Self](U:! type, u: U) -> U { return u; }
|
||||
// CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %i32 = out_param_pattern %return.patt, runtime_param2
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %int_32.loc32_35: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc32_35: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: %int_32.loc32_35: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc32_35: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %a.param: %i32 = value_param runtime_param0
|
||||
// CHECK:STDOUT: %.loc32_19: type = splice_block %i32.loc32_19 [template = constants.%i32] {
|
||||
// CHECK:STDOUT: %int_32.loc32_19: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc32_19: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: %.loc32_19: type = splice_block %i32.loc32_19 [concrete = constants.%i32] {
|
||||
// CHECK:STDOUT: %int_32.loc32_19: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc32_19: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %a: %i32 = bind_name a, %a.param
|
||||
// CHECK:STDOUT: %b.param: %i32 = value_param runtime_param1
|
||||
// CHECK:STDOUT: %.loc32_27: type = splice_block %i32.loc32_27 [template = constants.%i32] {
|
||||
// CHECK:STDOUT: %int_32.loc32_27: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc32_27: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: %.loc32_27: type = splice_block %i32.loc32_27 [concrete = constants.%i32] {
|
||||
// CHECK:STDOUT: %int_32.loc32_27: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc32_27: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %b: %i32 = bind_name b, %b.param
|
||||
// CHECK:STDOUT: %return.param: ref %i32 = out_param runtime_param2
|
||||
@@ -129,9 +129,9 @@ fn Interface.C.F[self: Self](U:! type, u: U) -> U { return u; }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @Interface {
|
||||
// CHECK:STDOUT: %Self: %Interface.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self]
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %Interface.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %Interface.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] {
|
||||
// CHECK:STDOUT: %a.patt: %i32 = binding_pattern a
|
||||
// CHECK:STDOUT: %a.param_patt: %i32 = value_param_pattern %a.patt, runtime_param0
|
||||
// CHECK:STDOUT: %b.patt: %i32 = binding_pattern b
|
||||
@@ -139,24 +139,24 @@ fn Interface.C.F[self: Self](U:! type, u: U) -> U { return u; }
|
||||
// CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %i32 = out_param_pattern %return.patt, runtime_param2
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %int_32.loc13_35: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc13_35: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: %int_32.loc13_35: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc13_35: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %a.param: %i32 = value_param runtime_param0
|
||||
// CHECK:STDOUT: %.loc13_19: type = splice_block %i32.loc13_19 [template = constants.%i32] {
|
||||
// CHECK:STDOUT: %int_32.loc13_19: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc13_19: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: %.loc13_19: type = splice_block %i32.loc13_19 [concrete = constants.%i32] {
|
||||
// CHECK:STDOUT: %int_32.loc13_19: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc13_19: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %a: %i32 = bind_name a, %a.param
|
||||
// CHECK:STDOUT: %b.param: %i32 = value_param runtime_param1
|
||||
// CHECK:STDOUT: %.loc13_27: type = splice_block %i32.loc13_27 [template = constants.%i32] {
|
||||
// CHECK:STDOUT: %int_32.loc13_27: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc13_27: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: %.loc13_27: type = splice_block %i32.loc13_27 [concrete = constants.%i32] {
|
||||
// CHECK:STDOUT: %int_32.loc13_27: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc13_27: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %b: %i32 = bind_name b, %b.param
|
||||
// CHECK:STDOUT: %return.param: ref %i32 = out_param runtime_param2
|
||||
// CHECK:STDOUT: %return: ref %i32 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %assoc1: %Interface.assoc_type = assoc_entity element1, %G.decl [template = constants.%assoc1]
|
||||
// CHECK:STDOUT: %assoc1: %Interface.assoc_type = assoc_entity element1, %G.decl [concrete = constants.%assoc1]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -199,34 +199,34 @@ fn Interface.C.F[self: Self](U:! type, u: U) -> U { return u; }
|
||||
// CHECK:STDOUT: --- dependent_return_type.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: %Interface.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %C.1ea: type = class_type @C [template]
|
||||
// CHECK:STDOUT: %C.1ea: type = class_type @C [concrete]
|
||||
// CHECK:STDOUT: %C.7e5: type = class_type @C, @C(%Self) [symbolic]
|
||||
// CHECK:STDOUT: %U: type = bind_symbolic_name U, 1 [symbolic]
|
||||
// CHECK:STDOUT: %U.patt: type = symbolic_binding_pattern U, 1 [symbolic]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F, @C(%Self) [symbolic]
|
||||
// CHECK:STDOUT: %F: %F.type = 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.b54: <witness> = require_complete_type %U [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.e44: <witness> = require_complete_type %C.7e5 [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: .Interface = %Interface.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %Interface.decl: type = interface_decl @Interface [template = constants.%Interface.type] {} {}
|
||||
// CHECK:STDOUT: %Interface.decl: type = interface_decl @Interface [concrete = constants.%Interface.type] {} {}
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [symbolic = constants.%F] {
|
||||
// CHECK:STDOUT: %self.patt: %C.7e5 = binding_pattern self
|
||||
// CHECK:STDOUT: %self.param_patt: %C.7e5 = value_param_pattern %self.patt, runtime_param0
|
||||
@@ -256,7 +256,7 @@ fn Interface.C.F[self: Self](U:! type, u: U) -> U { return u; }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @Interface {
|
||||
// CHECK:STDOUT: %Self: %Interface.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self]
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C.1ea] {} {}
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C.1ea] {} {}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -296,7 +296,7 @@ fn Interface.C.F[self: Self](U:! type, u: U) -> U { return u; }
|
||||
// CHECK:STDOUT: %return.param.loc14: ref @F.%U.loc14_22.1 (%U) = out_param runtime_param2
|
||||
// CHECK:STDOUT: %return.loc14: ref @F.%U.loc14_22.1 (%U) = return_slot %return.param.loc14
|
||||
// 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:
|
||||
|
||||
+56
-56
@@ -53,8 +53,8 @@ fn AccessMissingConcrete(I:! Interface(i32)) -> i32 {
|
||||
// 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: %Interface.type.e32: type = generic_interface_type @Interface [template]
|
||||
// CHECK:STDOUT: %Interface.generic: %Interface.type.e32 = struct_value () [template]
|
||||
// CHECK:STDOUT: %Interface.type.e32: type = generic_interface_type @Interface [concrete]
|
||||
// CHECK:STDOUT: %Interface.generic: %Interface.type.e32 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Interface.type.d32: type = facet_type <@Interface, @Interface(%T)> [symbolic]
|
||||
// CHECK:STDOUT: %Self: %Interface.type.d32 = bind_symbolic_name Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.4ae: <witness> = require_complete_type %T [symbolic]
|
||||
@@ -62,24 +62,24 @@ fn AccessMissingConcrete(I:! Interface(i32)) -> i32 {
|
||||
// CHECK:STDOUT: %assoc0.ed7: %Interface.assoc_type.3bd = assoc_entity element0, @Interface.%X [symbolic]
|
||||
// CHECK:STDOUT: %I.a5f: %Interface.type.d32 = bind_symbolic_name I, 1 [symbolic]
|
||||
// CHECK:STDOUT: %I.patt.47c: %Interface.type.d32 = symbolic_binding_pattern I, 1 [symbolic]
|
||||
// CHECK:STDOUT: %AccessGeneric.type: type = fn_type @AccessGeneric [template]
|
||||
// CHECK:STDOUT: %AccessGeneric: %AccessGeneric.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %AccessGeneric.type: type = fn_type @AccessGeneric [concrete]
|
||||
// CHECK:STDOUT: %AccessGeneric: %AccessGeneric.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %require_complete.6f3: <witness> = require_complete_type %Interface.type.d32 [symbolic]
|
||||
// CHECK:STDOUT: %I.as_type.59e: type = facet_access_type %I.a5f [symbolic]
|
||||
// CHECK:STDOUT: %I.as_wit.9f4: <witness> = facet_access_witness %I.a5f [symbolic]
|
||||
// CHECK:STDOUT: %Interface.facet.856: %Interface.type.d32 = facet_value %I.as_type.59e, %I.as_wit.9f4 [symbolic]
|
||||
// CHECK:STDOUT: %impl.elem0.68a: %T = impl_witness_access %I.as_wit.9f4, element0 [symbolic]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template]
|
||||
// CHECK:STDOUT: %Interface.type.981: type = facet_type <@Interface, @Interface(%i32)> [template]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %Interface.type.981: type = facet_type <@Interface, @Interface(%i32)> [concrete]
|
||||
// CHECK:STDOUT: %I.d08: %Interface.type.981 = bind_symbolic_name I, 0 [symbolic]
|
||||
// CHECK:STDOUT: %I.patt.1f8: %Interface.type.981 = symbolic_binding_pattern I, 0 [symbolic]
|
||||
// CHECK:STDOUT: %AccessConcrete.type: type = fn_type @AccessConcrete [template]
|
||||
// CHECK:STDOUT: %AccessConcrete: %AccessConcrete.type = struct_value () [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: %Interface.assoc_type.44d: type = assoc_entity_type %Interface.type.981 [template]
|
||||
// CHECK:STDOUT: %assoc0.4ff: %Interface.assoc_type.44d = assoc_entity element0, @Interface.%X [template]
|
||||
// CHECK:STDOUT: %AccessConcrete.type: type = fn_type @AccessConcrete [concrete]
|
||||
// CHECK:STDOUT: %AccessConcrete: %AccessConcrete.type = struct_value () [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: %Interface.assoc_type.44d: type = assoc_entity_type %Interface.type.981 [concrete]
|
||||
// CHECK:STDOUT: %assoc0.4ff: %Interface.assoc_type.44d = assoc_entity element0, @Interface.%X [concrete]
|
||||
// CHECK:STDOUT: %I.as_type.ee6: type = facet_access_type %I.d08 [symbolic]
|
||||
// CHECK:STDOUT: %I.as_wit.156: <witness> = facet_access_witness %I.d08 [symbolic]
|
||||
// CHECK:STDOUT: %Interface.facet.d35: %Interface.type.981 = facet_value %I.as_type.ee6, %I.as_wit.156 [symbolic]
|
||||
@@ -87,7 +87,7 @@ fn AccessMissingConcrete(I:! Interface(i32)) -> i32 {
|
||||
// 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/...
|
||||
@@ -95,21 +95,21 @@ fn AccessMissingConcrete(I:! Interface(i32)) -> 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: .Interface = %Interface.decl
|
||||
// CHECK:STDOUT: .AccessGeneric = %AccessGeneric.decl
|
||||
// CHECK:STDOUT: .AccessConcrete = %AccessConcrete.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %Interface.decl: %Interface.type.e32 = interface_decl @Interface [template = constants.%Interface.generic] {
|
||||
// CHECK:STDOUT: %Interface.decl: %Interface.type.e32 = interface_decl @Interface [concrete = constants.%Interface.generic] {
|
||||
// CHECK:STDOUT: %T.patt.loc4_21.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_21.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc4_21.1, runtime_param<none> [symbolic = %T.patt.loc4_21.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.param: type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %T.loc4_21.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_21.2 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %AccessGeneric.decl: %AccessGeneric.type = fn_decl @AccessGeneric [template = constants.%AccessGeneric] {
|
||||
// CHECK:STDOUT: %AccessGeneric.decl: %AccessGeneric.type = fn_decl @AccessGeneric [concrete = constants.%AccessGeneric] {
|
||||
// CHECK:STDOUT: %T.patt.loc8_18.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_18.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc8_18.1, runtime_param<none> [symbolic = %T.patt.loc8_18.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %I.patt.loc8_28.1: @AccessGeneric.%Interface.type.loc8_43.2 (%Interface.type.d32) = symbolic_binding_pattern I, 1 [symbolic = %I.patt.loc8_28.2 (constants.%I.patt.47c)]
|
||||
@@ -122,7 +122,7 @@ fn AccessMissingConcrete(I:! Interface(i32)) -> i32 {
|
||||
// CHECK:STDOUT: %T.loc8_18.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc8_18.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %I.param: @AccessGeneric.%Interface.type.loc8_43.2 (%Interface.type.d32) = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %.loc8: type = splice_block %Interface.type.loc8_43.1 [symbolic = %Interface.type.loc8_43.2 (constants.%Interface.type.d32)] {
|
||||
// CHECK:STDOUT: %Interface.ref: %Interface.type.e32 = name_ref Interface, file.%Interface.decl [template = constants.%Interface.generic]
|
||||
// CHECK:STDOUT: %Interface.ref: %Interface.type.e32 = name_ref Interface, file.%Interface.decl [concrete = constants.%Interface.generic]
|
||||
// CHECK:STDOUT: %T.ref.loc8_42: type = name_ref T, %T.loc8_18.1 [symbolic = %T.loc8_18.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %Interface.type.loc8_43.1: type = facet_type <@Interface, @Interface(constants.%T)> [symbolic = %Interface.type.loc8_43.2 (constants.%Interface.type.d32)]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -130,20 +130,20 @@ fn AccessMissingConcrete(I:! Interface(i32)) -> i32 {
|
||||
// CHECK:STDOUT: %return.param: ref @AccessGeneric.%T.loc8_18.2 (%T) = out_param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref @AccessGeneric.%T.loc8_18.2 (%T) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %AccessConcrete.decl: %AccessConcrete.type = fn_decl @AccessConcrete [template = constants.%AccessConcrete] {
|
||||
// CHECK:STDOUT: %AccessConcrete.decl: %AccessConcrete.type = fn_decl @AccessConcrete [concrete = constants.%AccessConcrete] {
|
||||
// CHECK:STDOUT: %I.patt.loc12_19.1: %Interface.type.981 = symbolic_binding_pattern I, 0 [symbolic = %I.patt.loc12_19.2 (constants.%I.patt.1f8)]
|
||||
// CHECK:STDOUT: %I.param_patt: %Interface.type.981 = value_param_pattern %I.patt.loc12_19.1, runtime_param<none> [symbolic = %I.patt.loc12_19.2 (constants.%I.patt.1f8)]
|
||||
// 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.loc12_42: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc12_42: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: %int_32.loc12_42: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc12_42: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %I.param: %Interface.type.981 = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %.loc12: type = splice_block %Interface.type [template = constants.%Interface.type.981] {
|
||||
// CHECK:STDOUT: %Interface.ref: %Interface.type.e32 = name_ref Interface, file.%Interface.decl [template = constants.%Interface.generic]
|
||||
// CHECK:STDOUT: %int_32.loc12_33: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc12_33: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: %Interface.type: type = facet_type <@Interface, @Interface(constants.%i32)> [template = constants.%Interface.type.981]
|
||||
// CHECK:STDOUT: %.loc12: type = splice_block %Interface.type [concrete = constants.%Interface.type.981] {
|
||||
// CHECK:STDOUT: %Interface.ref: %Interface.type.e32 = name_ref Interface, file.%Interface.decl [concrete = constants.%Interface.generic]
|
||||
// CHECK:STDOUT: %int_32.loc12_33: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc12_33: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %Interface.type: type = facet_type <@Interface, @Interface(constants.%i32)> [concrete = constants.%Interface.type.981]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %I.loc12_19.1: %Interface.type.981 = bind_symbolic_name I, 0, %I.param [symbolic = %I.loc12_19.2 (constants.%I.d08)]
|
||||
// CHECK:STDOUT: %return.param: ref %i32 = out_param runtime_param0
|
||||
@@ -163,7 +163,7 @@ fn AccessMissingConcrete(I:! Interface(i32)) -> i32 {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface {
|
||||
// CHECK:STDOUT: %Self.1: @Interface.%Interface.type (%Interface.type.d32) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)]
|
||||
// CHECK:STDOUT: %X: @X.%T (%T) = assoc_const_decl @X [template] {
|
||||
// CHECK:STDOUT: %X: @X.%T (%T) = assoc_const_decl @X [concrete] {
|
||||
// CHECK:STDOUT: %assoc0: @Interface.%Interface.assoc_type (%Interface.assoc_type.3bd) = assoc_entity element0, @Interface.%X [symbolic = @Interface.%assoc0 (constants.%assoc0.ed7)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -222,8 +222,8 @@ fn AccessMissingConcrete(I:! Interface(i32)) -> i32 {
|
||||
// CHECK:STDOUT: fn(%I.param_patt: %Interface.type.981) -> %i32 {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %I.ref: %Interface.type.981 = name_ref I, %I.loc12_19.1 [symbolic = %I.loc12_19.2 (constants.%I.d08)]
|
||||
// CHECK:STDOUT: %.loc13_11.1: %Interface.assoc_type.44d = specific_constant @X.%assoc0, @Interface(constants.%i32) [template = constants.%assoc0.4ff]
|
||||
// CHECK:STDOUT: %X.ref: %Interface.assoc_type.44d = name_ref X, %.loc13_11.1 [template = constants.%assoc0.4ff]
|
||||
// CHECK:STDOUT: %.loc13_11.1: %Interface.assoc_type.44d = specific_constant @X.%assoc0, @Interface(constants.%i32) [concrete = constants.%assoc0.4ff]
|
||||
// CHECK:STDOUT: %X.ref: %Interface.assoc_type.44d = name_ref X, %.loc13_11.1 [concrete = constants.%assoc0.4ff]
|
||||
// CHECK:STDOUT: %I.as_type.loc13_11.1: type = facet_access_type %I.ref [symbolic = %I.as_type.loc13_11.2 (constants.%I.as_type.ee6)]
|
||||
// CHECK:STDOUT: %.loc13_11.2: type = converted %I.ref, %I.as_type.loc13_11.1 [symbolic = %I.as_type.loc13_11.2 (constants.%I.as_type.ee6)]
|
||||
// CHECK:STDOUT: %I.as_wit.loc13_11.1: <witness> = facet_access_witness %I.ref [symbolic = %I.as_wit.loc13_11.2 (constants.%I.as_wit.156)]
|
||||
@@ -291,8 +291,8 @@ fn AccessMissingConcrete(I:! Interface(i32)) -> i32 {
|
||||
// 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: %Interface.type.e32: type = generic_interface_type @Interface [template]
|
||||
// CHECK:STDOUT: %Interface.generic: %Interface.type.e32 = struct_value () [template]
|
||||
// CHECK:STDOUT: %Interface.type.e32: type = generic_interface_type @Interface [concrete]
|
||||
// CHECK:STDOUT: %Interface.generic: %Interface.type.e32 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Interface.type.d32: type = facet_type <@Interface, @Interface(%T)> [symbolic]
|
||||
// CHECK:STDOUT: %Self: %Interface.type.d32 = bind_symbolic_name Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.4ae: <witness> = require_complete_type %T [symbolic]
|
||||
@@ -300,22 +300,22 @@ fn AccessMissingConcrete(I:! Interface(i32)) -> i32 {
|
||||
// CHECK:STDOUT: %assoc0.ed7: %Interface.assoc_type.3bd = assoc_entity element0, @Interface.%X [symbolic]
|
||||
// CHECK:STDOUT: %I.a5f: %Interface.type.d32 = bind_symbolic_name I, 1 [symbolic]
|
||||
// CHECK:STDOUT: %I.patt.47c: %Interface.type.d32 = symbolic_binding_pattern I, 1 [symbolic]
|
||||
// CHECK:STDOUT: %AccessMissingGeneric.type: type = fn_type @AccessMissingGeneric [template]
|
||||
// CHECK:STDOUT: %AccessMissingGeneric: %AccessMissingGeneric.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %AccessMissingGeneric.type: type = fn_type @AccessMissingGeneric [concrete]
|
||||
// CHECK:STDOUT: %AccessMissingGeneric: %AccessMissingGeneric.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %require_complete.6f3: <witness> = require_complete_type %Interface.type.d32 [symbolic]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [template]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [template]
|
||||
// CHECK:STDOUT: %Interface.type.981: type = facet_type <@Interface, @Interface(%i32)> [template]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete]
|
||||
// CHECK:STDOUT: %i32: type = class_type @Int, @Int(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %Interface.type.981: type = facet_type <@Interface, @Interface(%i32)> [concrete]
|
||||
// CHECK:STDOUT: %I.d08: %Interface.type.981 = bind_symbolic_name I, 0 [symbolic]
|
||||
// CHECK:STDOUT: %I.patt.1f8: %Interface.type.981 = symbolic_binding_pattern I, 0 [symbolic]
|
||||
// CHECK:STDOUT: %AccessMissingConcrete.type: type = fn_type @AccessMissingConcrete [template]
|
||||
// CHECK:STDOUT: %AccessMissingConcrete: %AccessMissingConcrete.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %Interface.assoc_type.44d: type = assoc_entity_type %Interface.type.981 [template]
|
||||
// CHECK:STDOUT: %assoc0.4ff: %Interface.assoc_type.44d = assoc_entity element0, @Interface.%X [template]
|
||||
// CHECK:STDOUT: %AccessMissingConcrete.type: type = fn_type @AccessMissingConcrete [concrete]
|
||||
// CHECK:STDOUT: %AccessMissingConcrete: %AccessMissingConcrete.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Interface.assoc_type.44d: type = assoc_entity_type %Interface.type.981 [concrete]
|
||||
// CHECK:STDOUT: %assoc0.4ff: %Interface.assoc_type.44d = assoc_entity element0, @Interface.%X [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/...
|
||||
@@ -323,21 +323,21 @@ fn AccessMissingConcrete(I:! Interface(i32)) -> 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: .Interface = %Interface.decl
|
||||
// CHECK:STDOUT: .AccessMissingGeneric = %AccessMissingGeneric.decl
|
||||
// CHECK:STDOUT: .AccessMissingConcrete = %AccessMissingConcrete.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %Interface.decl: %Interface.type.e32 = interface_decl @Interface [template = constants.%Interface.generic] {
|
||||
// CHECK:STDOUT: %Interface.decl: %Interface.type.e32 = interface_decl @Interface [concrete = constants.%Interface.generic] {
|
||||
// CHECK:STDOUT: %T.patt.loc4_21.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_21.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc4_21.1, runtime_param<none> [symbolic = %T.patt.loc4_21.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.param: type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %T.loc4_21.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc4_21.2 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %AccessMissingGeneric.decl: %AccessMissingGeneric.type = fn_decl @AccessMissingGeneric [template = constants.%AccessMissingGeneric] {
|
||||
// CHECK:STDOUT: %AccessMissingGeneric.decl: %AccessMissingGeneric.type = fn_decl @AccessMissingGeneric [concrete = constants.%AccessMissingGeneric] {
|
||||
// CHECK:STDOUT: %T.patt.loc8_25.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_25.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc8_25.1, runtime_param<none> [symbolic = %T.patt.loc8_25.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %I.patt.loc8_35.1: @AccessMissingGeneric.%Interface.type.loc8_50.2 (%Interface.type.d32) = symbolic_binding_pattern I, 1 [symbolic = %I.patt.loc8_35.2 (constants.%I.patt.47c)]
|
||||
@@ -350,7 +350,7 @@ fn AccessMissingConcrete(I:! Interface(i32)) -> i32 {
|
||||
// CHECK:STDOUT: %T.loc8_25.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc8_25.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %I.param: @AccessMissingGeneric.%Interface.type.loc8_50.2 (%Interface.type.d32) = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %.loc8: type = splice_block %Interface.type.loc8_50.1 [symbolic = %Interface.type.loc8_50.2 (constants.%Interface.type.d32)] {
|
||||
// CHECK:STDOUT: %Interface.ref: %Interface.type.e32 = name_ref Interface, file.%Interface.decl [template = constants.%Interface.generic]
|
||||
// CHECK:STDOUT: %Interface.ref: %Interface.type.e32 = name_ref Interface, file.%Interface.decl [concrete = constants.%Interface.generic]
|
||||
// CHECK:STDOUT: %T.ref.loc8_49: type = name_ref T, %T.loc8_25.1 [symbolic = %T.loc8_25.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %Interface.type.loc8_50.1: type = facet_type <@Interface, @Interface(constants.%T)> [symbolic = %Interface.type.loc8_50.2 (constants.%Interface.type.d32)]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -358,20 +358,20 @@ fn AccessMissingConcrete(I:! Interface(i32)) -> i32 {
|
||||
// CHECK:STDOUT: %return.param: ref @AccessMissingGeneric.%T.loc8_25.2 (%T) = out_param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref @AccessMissingGeneric.%T.loc8_25.2 (%T) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %AccessMissingConcrete.decl: %AccessMissingConcrete.type = fn_decl @AccessMissingConcrete [template = constants.%AccessMissingConcrete] {
|
||||
// CHECK:STDOUT: %AccessMissingConcrete.decl: %AccessMissingConcrete.type = fn_decl @AccessMissingConcrete [concrete = constants.%AccessMissingConcrete] {
|
||||
// CHECK:STDOUT: %I.patt.loc16_26.1: %Interface.type.981 = symbolic_binding_pattern I, 0 [symbolic = %I.patt.loc16_26.2 (constants.%I.patt.1f8)]
|
||||
// CHECK:STDOUT: %I.param_patt: %Interface.type.981 = value_param_pattern %I.patt.loc16_26.1, runtime_param<none> [symbolic = %I.patt.loc16_26.2 (constants.%I.patt.1f8)]
|
||||
// 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.loc16_49: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc16_49: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: %int_32.loc16_49: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc16_49: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %I.param: %Interface.type.981 = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %.loc16: type = splice_block %Interface.type [template = constants.%Interface.type.981] {
|
||||
// CHECK:STDOUT: %Interface.ref: %Interface.type.e32 = name_ref Interface, file.%Interface.decl [template = constants.%Interface.generic]
|
||||
// CHECK:STDOUT: %int_32.loc16_40: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc16_40: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: %Interface.type: type = facet_type <@Interface, @Interface(constants.%i32)> [template = constants.%Interface.type.981]
|
||||
// CHECK:STDOUT: %.loc16: type = splice_block %Interface.type [concrete = constants.%Interface.type.981] {
|
||||
// CHECK:STDOUT: %Interface.ref: %Interface.type.e32 = name_ref Interface, file.%Interface.decl [concrete = constants.%Interface.generic]
|
||||
// CHECK:STDOUT: %int_32.loc16_40: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc16_40: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %Interface.type: type = facet_type <@Interface, @Interface(constants.%i32)> [concrete = constants.%Interface.type.981]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %I.loc16_26.1: %Interface.type.981 = bind_symbolic_name I, 0, %I.param [symbolic = %I.loc16_26.2 (constants.%I.d08)]
|
||||
// CHECK:STDOUT: %return.param: ref %i32 = out_param runtime_param0
|
||||
@@ -391,7 +391,7 @@ fn AccessMissingConcrete(I:! Interface(i32)) -> i32 {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface {
|
||||
// CHECK:STDOUT: %Self.1: @Interface.%Interface.type (%Interface.type.d32) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self)]
|
||||
// CHECK:STDOUT: %X: @X.%T (%T) = assoc_const_decl @X [template] {
|
||||
// CHECK:STDOUT: %X: @X.%T (%T) = assoc_const_decl @X [concrete] {
|
||||
// CHECK:STDOUT: %assoc0: @Interface.%Interface.assoc_type (%Interface.assoc_type.3bd) = assoc_entity element0, @Interface.%X [symbolic = @Interface.%assoc0 (constants.%assoc0.ed7)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -422,7 +422,7 @@ fn AccessMissingConcrete(I:! Interface(i32)) -> i32 {
|
||||
// CHECK:STDOUT: fn[%T.param_patt: type](%I.param_patt: @AccessMissingGeneric.%Interface.type.loc8_50.2 (%Interface.type.d32)) -> @AccessMissingGeneric.%T.loc8_25.2 (%T) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %I.ref: @AccessMissingGeneric.%Interface.type.loc8_50.2 (%Interface.type.d32) = name_ref I, %I.loc8_35.1 [symbolic = %I.loc8_35.2 (constants.%I.a5f)]
|
||||
// CHECK:STDOUT: %nonesuch.ref: <error> = name_ref nonesuch, <error> [template = <error>]
|
||||
// CHECK:STDOUT: %nonesuch.ref: <error> = name_ref nonesuch, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: return <error>
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -436,7 +436,7 @@ fn AccessMissingConcrete(I:! Interface(i32)) -> i32 {
|
||||
// CHECK:STDOUT: fn(%I.param_patt: %Interface.type.981) -> %i32 {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %I.ref: %Interface.type.981 = name_ref I, %I.loc16_26.1 [symbolic = %I.loc16_26.2 (constants.%I.d08)]
|
||||
// CHECK:STDOUT: %nonesuch.ref: <error> = name_ref nonesuch, <error> [template = <error>]
|
||||
// CHECK:STDOUT: %nonesuch.ref: <error> = name_ref nonesuch, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: return <error>
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -15,24 +15,24 @@ fn F(e: Empty) {}
|
||||
// CHECK:STDOUT: --- as_type.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: %F.type: type = fn_type @F [template]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.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: .Empty = %Empty.decl
|
||||
// CHECK:STDOUT: .F = %F.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Empty.decl: type = interface_decl @Empty [template = constants.%Empty.type] {} {}
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {
|
||||
// CHECK:STDOUT: %Empty.decl: type = interface_decl @Empty [concrete = constants.%Empty.type] {} {}
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {
|
||||
// CHECK:STDOUT: %e.patt: %Empty.type = binding_pattern e
|
||||
// CHECK:STDOUT: %e.param_patt: %Empty.type = value_param_pattern %e.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %e.param: %Empty.type = value_param runtime_param0
|
||||
// CHECK:STDOUT: %Empty.ref: type = name_ref Empty, file.%Empty.decl [template = constants.%Empty.type]
|
||||
// CHECK:STDOUT: %Empty.ref: type = name_ref Empty, file.%Empty.decl [concrete = constants.%Empty.type]
|
||||
// CHECK:STDOUT: %e: %Empty.type = bind_name e, %e.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -17,28 +17,28 @@ fn F(T:! Empty) {
|
||||
// CHECK:STDOUT: --- as_type_of_type.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: %T: %Empty.type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt: %Empty.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: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %T.as_type: type = facet_access_type %T [symbolic]
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %T.as_type [symbolic]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Empty = %Empty.decl
|
||||
// CHECK:STDOUT: .F = %F.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Empty.decl: type = interface_decl @Empty [template = constants.%Empty.type] {} {}
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {
|
||||
// CHECK:STDOUT: %Empty.decl: type = interface_decl @Empty [concrete = constants.%Empty.type] {} {}
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {
|
||||
// CHECK:STDOUT: %T.patt.loc13_6.1: %Empty.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc13_6.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: %Empty.type = value_param_pattern %T.patt.loc13_6.1, runtime_param<none> [symbolic = %T.patt.loc13_6.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.param: %Empty.type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %Empty.ref: type = name_ref Empty, file.%Empty.decl [template = constants.%Empty.type]
|
||||
// CHECK:STDOUT: %Empty.ref: type = name_ref Empty, file.%Empty.decl [concrete = constants.%Empty.type]
|
||||
// CHECK:STDOUT: %T.loc13_6.1: %Empty.type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc13_6.2 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
+22
-22
@@ -28,9 +28,9 @@ fn H() {
|
||||
// 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: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %I.generic: %I.type.dac = struct_value () [template]
|
||||
// CHECK:STDOUT: %I.type.dac: type = generic_interface_type @I [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [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: %U: type = bind_symbolic_name U, 2 [symbolic]
|
||||
@@ -39,42 +39,42 @@ fn H() {
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %I.assoc_type.955: type = assoc_entity_type %I.type.325 [symbolic]
|
||||
// CHECK:STDOUT: %assoc0.fef: %I.assoc_type.955 = assoc_entity element0, @I.%F.decl [symbolic]
|
||||
// CHECK:STDOUT: %G.type: type = fn_type @G [template]
|
||||
// CHECK:STDOUT: %G: %G.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %G.type: type = fn_type @G [concrete]
|
||||
// CHECK:STDOUT: %G: %G.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %require_complete.cfe: <witness> = require_complete_type %I.type.325 [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.66f: <witness> = require_complete_type %I.assoc_type.955 [symbolic]
|
||||
// CHECK:STDOUT: %H.type: type = fn_type @H [template]
|
||||
// CHECK:STDOUT: %H: %H.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %G.specific_fn: <specific function> = specific_function %G, @G(%empty_struct_type) [template]
|
||||
// CHECK:STDOUT: %I.type.885: type = facet_type <@I, @I(%empty_struct_type)> [template]
|
||||
// CHECK:STDOUT: %complete_type.788: <witness> = complete_type_witness %I.type.885 [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.973: <witness> = complete_type_witness %I.assoc_type.67f [template]
|
||||
// CHECK:STDOUT: %H.type: type = fn_type @H [concrete]
|
||||
// CHECK:STDOUT: %H: %H.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %G.specific_fn: <specific function> = specific_function %G, @G(%empty_struct_type) [concrete]
|
||||
// CHECK:STDOUT: %I.type.885: type = facet_type <@I, @I(%empty_struct_type)> [concrete]
|
||||
// CHECK:STDOUT: %complete_type.788: <witness> = complete_type_witness %I.type.885 [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.973: <witness> = complete_type_witness %I.assoc_type.67f [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: .G = %G.decl
|
||||
// CHECK:STDOUT: .H = %H.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.loc11_13.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc11_13.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc11_13.1, runtime_param<none> [symbolic = %T.patt.loc11_13.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.param: type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %T.loc11_13.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc11_13.2 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
// 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: %T.patt.loc15_6.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc15_6.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc15_6.1, runtime_param<none> [symbolic = %T.patt.loc15_6.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.param: type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %T.loc15_6.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc15_6.2 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
// 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: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic interface @I(%T.loc11_13.1: type) {
|
||||
@@ -132,7 +132,7 @@ fn H() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn(%T.param_patt: type) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// 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: %T.ref: type = name_ref T, %T.loc15_6.1 [symbolic = %T.loc15_6.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %I.type.loc19_6.1: type = facet_type <@I, @I(constants.%T)> [symbolic = %I.type.loc19_6.2 (constants.%I.type.325)]
|
||||
// CHECK:STDOUT: %.loc19: @G.%I.assoc_type (%I.assoc_type.955) = specific_constant @I.%assoc0.loc12_22.1, @I(constants.%T) [symbolic = %assoc0 (constants.%assoc0.fef)]
|
||||
@@ -143,10 +143,10 @@ fn H() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @H() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %G.ref: %G.type = name_ref G, file.%G.decl [template = constants.%G]
|
||||
// CHECK:STDOUT: %G.ref: %G.type = name_ref G, file.%G.decl [concrete = constants.%G]
|
||||
// CHECK:STDOUT: %.loc23_6: %empty_struct_type = struct_literal ()
|
||||
// CHECK:STDOUT: %.loc23_7: type = converted %.loc23_6, constants.%empty_struct_type [template = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %G.specific_fn: <specific function> = specific_function %G.ref, @G(constants.%empty_struct_type) [template = constants.%G.specific_fn]
|
||||
// CHECK:STDOUT: %.loc23_7: type = converted %.loc23_6, constants.%empty_struct_type [concrete = constants.%empty_struct_type]
|
||||
// CHECK:STDOUT: %G.specific_fn: <specific function> = specific_function %G.ref, @G(constants.%empty_struct_type) [concrete = constants.%G.specific_fn]
|
||||
// CHECK:STDOUT: %G.call: init %empty_tuple.type = call %G.specific_fn()
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
+12
-12
@@ -20,24 +20,24 @@ interface ForwardDeclared {
|
||||
// CHECK:STDOUT: --- basic.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.193: %Empty.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %ForwardDeclared.type: type = facet_type <@ForwardDeclared> [template]
|
||||
// CHECK:STDOUT: %ForwardDeclared.type: type = facet_type <@ForwardDeclared> [concrete]
|
||||
// CHECK:STDOUT: %Self.efa: %ForwardDeclared.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: %ForwardDeclared.assoc_type: type = assoc_entity_type %ForwardDeclared.type [template]
|
||||
// CHECK:STDOUT: %assoc0: %ForwardDeclared.assoc_type = assoc_entity element0, @ForwardDeclared.%F.decl [template]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %ForwardDeclared.assoc_type: type = assoc_entity_type %ForwardDeclared.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0: %ForwardDeclared.assoc_type = assoc_entity element0, @ForwardDeclared.%F.decl [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Empty = %Empty.decl
|
||||
// CHECK:STDOUT: .ForwardDeclared = %ForwardDeclared.decl.loc14
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Empty.decl: type = interface_decl @Empty [template = constants.%Empty.type] {} {}
|
||||
// CHECK:STDOUT: %ForwardDeclared.decl.loc14: type = interface_decl @ForwardDeclared [template = constants.%ForwardDeclared.type] {} {}
|
||||
// CHECK:STDOUT: %ForwardDeclared.decl.loc16: type = interface_decl @ForwardDeclared [template = constants.%ForwardDeclared.type] {} {}
|
||||
// CHECK:STDOUT: %Empty.decl: type = interface_decl @Empty [concrete = constants.%Empty.type] {} {}
|
||||
// CHECK:STDOUT: %ForwardDeclared.decl.loc14: type = interface_decl @ForwardDeclared [concrete = constants.%ForwardDeclared.type] {} {}
|
||||
// CHECK:STDOUT: %ForwardDeclared.decl.loc16: type = interface_decl @ForwardDeclared [concrete = constants.%ForwardDeclared.type] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @Empty {
|
||||
@@ -50,8 +50,8 @@ interface ForwardDeclared {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @ForwardDeclared {
|
||||
// CHECK:STDOUT: %Self: %ForwardDeclared.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.efa]
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %ForwardDeclared.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: %ForwardDeclared.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
|
||||
+32
-32
@@ -26,35 +26,35 @@ class C {
|
||||
// CHECK:STDOUT: --- default_fn.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: %F.type.0b5: type = fn_type @F.1 [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %F.20c: %F.type.0b5 = 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.4a2: type = fn_type @F.2 [template]
|
||||
// CHECK:STDOUT: %F.eb2: %F.type.4a2 = 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: %C.val: %C = struct_value () [template]
|
||||
// CHECK:STDOUT: %.eab: type = fn_type_with_self_type %F.type.0b5, %I.facet [template]
|
||||
// CHECK:STDOUT: %F.type.0b5: type = fn_type @F.1 [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %F.20c: %F.type.0b5 = 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.4a2: type = fn_type @F.2 [concrete]
|
||||
// CHECK:STDOUT: %F.eb2: %F.type.4a2 = 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: %C.val: %C = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %.eab: type = fn_type_with_self_type %F.type.0b5, %I.facet [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 = class_decl @C [template = constants.%C] {} {}
|
||||
// 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.0b5 = fn_decl @F.1 [template = constants.%F.20c] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %F.decl: %F.type.0b5 = fn_decl @F.1 [concrete = constants.%F.20c] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -63,7 +63,7 @@ class C {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl: %C.ref as %I.ref {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.4a2 = fn_decl @F.2 [template = constants.%F.eb2] {} {}
|
||||
// CHECK:STDOUT: %F.decl: %F.type.4a2 = fn_decl @F.2 [concrete = constants.%F.eb2] {} {}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .F = %F.decl
|
||||
@@ -71,13 +71,13 @@ class C {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @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, @C.%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: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, @C.%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:
|
||||
@@ -96,15 +96,15 @@ class C {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %c.var: ref %C = var c
|
||||
// CHECK:STDOUT: %.loc16_19.1: %empty_struct_type = struct_literal ()
|
||||
// CHECK:STDOUT: %.loc16_19.2: init %C = class_init (), %c.var [template = constants.%C.val]
|
||||
// CHECK:STDOUT: %.loc16_7.2: init %C = converted %.loc16_19.1, %.loc16_19.2 [template = constants.%C.val]
|
||||
// CHECK:STDOUT: %.loc16_19.2: init %C = class_init (), %c.var [concrete = constants.%C.val]
|
||||
// CHECK:STDOUT: %.loc16_7.2: init %C = converted %.loc16_19.1, %.loc16_19.2 [concrete = constants.%C.val]
|
||||
// CHECK:STDOUT: assign %c.var, %.loc16_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: %c.ref: ref %C = name_ref c, %c
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, @C.%I.decl [template = constants.%I.type]
|
||||
// CHECK:STDOUT: %F.ref: %I.assoc_type = name_ref F, @I.%assoc0 [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0: %.eab = impl_witness_access constants.%impl_witness, element0 [template = constants.%F.eb2]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, @C.%I.decl [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: %F.ref: %I.assoc_type = name_ref F, @I.%assoc0 [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0: %.eab = impl_witness_access constants.%impl_witness, element0 [concrete = constants.%F.eb2]
|
||||
// CHECK:STDOUT: %F.call: init %empty_tuple.type = call %impl.elem0()
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -41,15 +41,15 @@ fn UseEmpty(i: I) {}
|
||||
// CHECK:STDOUT: --- base.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: }
|
||||
// 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: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @I {
|
||||
@@ -63,20 +63,20 @@ fn UseEmpty(i: I) {}
|
||||
// CHECK:STDOUT: --- export.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: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Main.I: type = import_ref Main//base, I, loaded [template = constants.%I.type]
|
||||
// CHECK:STDOUT: %Main.I: type = import_ref Main//base, I, loaded [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: %Main.import_ref = import_ref Main//base, inst15 [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 = %I
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %default.import = import <none>
|
||||
// CHECK:STDOUT: %I: type = export I, imports.%Main.I [template = constants.%I.type]
|
||||
// CHECK:STDOUT: %I: type = export I, imports.%Main.I [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @I [from "base.carbon"] {
|
||||
@@ -88,28 +88,28 @@ fn UseEmpty(i: I) {}
|
||||
// CHECK:STDOUT: --- use_export.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [template]
|
||||
// CHECK:STDOUT: %UseEmpty.type: type = fn_type @UseEmpty [template]
|
||||
// CHECK:STDOUT: %UseEmpty: %UseEmpty.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete]
|
||||
// CHECK:STDOUT: %UseEmpty.type: type = fn_type @UseEmpty [concrete]
|
||||
// CHECK:STDOUT: %UseEmpty: %UseEmpty.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Main.I: type = import_ref Main//export, I, loaded [template = constants.%I.type]
|
||||
// CHECK:STDOUT: %Main.I: type = import_ref Main//export, I, loaded [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: %Main.import_ref = import_ref Main//export, inst18 [indirect], 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: .UseEmpty = %UseEmpty.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %default.import = import <none>
|
||||
// CHECK:STDOUT: %UseEmpty.decl: %UseEmpty.type = fn_decl @UseEmpty [template = constants.%UseEmpty] {
|
||||
// CHECK:STDOUT: %UseEmpty.decl: %UseEmpty.type = fn_decl @UseEmpty [concrete = constants.%UseEmpty] {
|
||||
// CHECK:STDOUT: %i.patt: %I.type = binding_pattern i
|
||||
// CHECK:STDOUT: %i.param_patt: %I.type = value_param_pattern %i.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %i.param: %I.type = value_param runtime_param0
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, imports.%Main.I [template = constants.%I.type]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, imports.%Main.I [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: %i: %I.type = bind_name i, %i.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
+10
-10
@@ -35,13 +35,13 @@ interface Outer {
|
||||
// CHECK:STDOUT: --- fail_add_member_outside_definition.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: %F.type.1ad: type = fn_type @F.1 [template]
|
||||
// CHECK:STDOUT: %F.5d3: %F.type.1ad = struct_value () [template]
|
||||
// CHECK:STDOUT: %Outer.type: type = facet_type <@Outer> [template]
|
||||
// CHECK:STDOUT: %F.type.1ad: type = fn_type @F.1 [concrete]
|
||||
// CHECK:STDOUT: %F.5d3: %F.type.1ad = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Outer.type: type = facet_type <@Outer> [concrete]
|
||||
// CHECK:STDOUT: %Self.277: %Outer.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Inner.type.428: type = facet_type <@Inner> [template]
|
||||
// CHECK:STDOUT: %Inner.type.428: type = facet_type <@Inner> [concrete]
|
||||
// CHECK:STDOUT: %Inner.type.3d8: type = facet_type <@Inner, @Inner(%Self.277)> [symbolic]
|
||||
// CHECK:STDOUT: %Self.b60: %Inner.type.3d8 = bind_symbolic_name Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: %.type: type = fn_type @.1, @Inner(%Self.277) [symbolic]
|
||||
@@ -51,13 +51,13 @@ interface Outer {
|
||||
// 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: .Outer = %Outer.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Interface.decl: type = interface_decl @Interface [template = constants.%Interface.type] {} {}
|
||||
// CHECK:STDOUT: %F.decl: %F.type.1ad = fn_decl @F.1 [template = constants.%F.5d3] {} {}
|
||||
// CHECK:STDOUT: %Outer.decl: type = interface_decl @Outer [template = constants.%Outer.type] {} {}
|
||||
// CHECK:STDOUT: %Interface.decl: type = interface_decl @Interface [concrete = constants.%Interface.type] {} {}
|
||||
// CHECK:STDOUT: %F.decl: %F.type.1ad = fn_decl @F.1 [concrete = constants.%F.5d3] {} {}
|
||||
// CHECK:STDOUT: %Outer.decl: type = interface_decl @Outer [concrete = constants.%Outer.type] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @Interface {
|
||||
@@ -71,7 +71,7 @@ interface Outer {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @Outer {
|
||||
// CHECK:STDOUT: %Self: %Outer.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.277]
|
||||
// CHECK:STDOUT: %Inner.decl: type = interface_decl @Inner [template = constants.%Inner.type.428] {} {}
|
||||
// CHECK:STDOUT: %Inner.decl: type = interface_decl @Inner [concrete = constants.%Inner.type.428] {} {}
|
||||
// CHECK:STDOUT: %F.decl: %F.type.82c = fn_decl @F.2 [symbolic = constants.%F.978] {} {}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
|
||||
+6
-6
@@ -67,15 +67,15 @@ interface I {
|
||||
// CHECK:STDOUT: --- fail_tuple_pattern.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: }
|
||||
// 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: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @I {
|
||||
@@ -94,15 +94,15 @@ interface I {
|
||||
// CHECK:STDOUT: --- fail_tuple_pattern_with_default.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: }
|
||||
// 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: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @I {
|
||||
|
||||
+7
-7
@@ -29,23 +29,23 @@ alias UseOther = I.other;
|
||||
// CHECK:STDOUT: --- fail_assoc_const_not_constant.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: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .I = %I.decl
|
||||
// CHECK:STDOUT: .UseA = %UseA
|
||||
// CHECK:STDOUT: .UseOther = %UseOther
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [template = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: %I.ref.loc24: type = name_ref I, %I.decl [template = constants.%I.type]
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: %I.ref.loc24: type = name_ref I, %I.decl [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: %a.ref: <error> = name_ref a, <unexpected>.inst19.loc20_7
|
||||
// CHECK:STDOUT: %UseA: <error> = bind_alias UseA, <unexpected>.inst19.loc20_7
|
||||
// CHECK:STDOUT: %I.ref.loc27: type = name_ref I, %I.decl [template = constants.%I.type]
|
||||
// CHECK:STDOUT: %other.ref: <error> = name_ref other, <error> [template = <error>]
|
||||
// CHECK:STDOUT: %UseOther: <error> = bind_alias UseOther, <error> [template = <error>]
|
||||
// CHECK:STDOUT: %I.ref.loc27: type = name_ref I, %I.decl [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: %other.ref: <error> = name_ref other, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %UseOther: <error> = bind_alias UseOther, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @I {
|
||||
|
||||
+14
-14
@@ -27,17 +27,17 @@ fn Use(T:! I) {
|
||||
// CHECK:STDOUT: --- fail_member_access.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: %Self.as_type: type = facet_access_type %Self [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: %T: %I.type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt: %I.type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Use.type: type = fn_type @Use [template]
|
||||
// CHECK:STDOUT: %Use: %Use.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %Use.type: type = fn_type @Use [concrete]
|
||||
// CHECK:STDOUT: %Use: %Use.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %T.as_type: type = facet_access_type %T [symbolic]
|
||||
// CHECK:STDOUT: %T.as_wit: <witness> = facet_access_witness %T [symbolic]
|
||||
// CHECK:STDOUT: %I.facet: %I.type = facet_value %T.as_type, %T.as_wit [symbolic]
|
||||
@@ -47,24 +47,24 @@ fn Use(T:! 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: .Use = %Use.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [template = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: %Use.decl: %Use.type = fn_decl @Use [template = constants.%Use] {
|
||||
// CHECK:STDOUT: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: %Use.decl: %Use.type = fn_decl @Use [concrete = constants.%Use] {
|
||||
// CHECK:STDOUT: %T.patt.loc8_8.1: %I.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_8.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: %I.type = value_param_pattern %T.patt.loc8_8.1, runtime_param<none> [symbolic = %T.patt.loc8_8.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// 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.loc8_8.1: %I.type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc8_8.2 (constants.%T)]
|
||||
// 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 = fn_decl @F [template = constants.%F] {
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {
|
||||
// CHECK:STDOUT: %self.patt: @F.%Self.as_type.loc5_14.1 (%Self.as_type) = binding_pattern self
|
||||
// CHECK:STDOUT: %self.param_patt: @F.%Self.as_type.loc5_14.1 (%Self.as_type) = value_param_pattern %self.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
@@ -76,7 +76,7 @@ fn Use(T:! I) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %self: @F.%Self.as_type.loc5_14.1 (%Self.as_type) = bind_name self, %self.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
|
||||
@@ -106,7 +106,7 @@ fn Use(T:! I) {
|
||||
// CHECK:STDOUT: fn(%T.param_patt: %I.type) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %T.ref: %I.type = name_ref T, %T.loc8_8.1 [symbolic = %T.loc8_8.2 (constants.%T)]
|
||||
// CHECK:STDOUT: %F.ref: %I.assoc_type = name_ref F, @I.%assoc0 [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %F.ref: %I.assoc_type = name_ref F, @I.%assoc0 [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %T.as_type.loc13_4.1: type = facet_access_type %T.ref [symbolic = %T.as_type.loc13_4.2 (constants.%T.as_type)]
|
||||
// CHECK:STDOUT: %.loc13_4.1: type = converted %T.ref, %T.as_type.loc13_4.1 [symbolic = %T.as_type.loc13_4.2 (constants.%T.as_type)]
|
||||
// CHECK:STDOUT: %T.as_wit.loc13_4.1: <witness> = facet_access_witness %T.ref [symbolic = %T.as_wit.loc13_4.2 (constants.%T.as_wit)]
|
||||
|
||||
+8
-8
@@ -32,14 +32,14 @@ interface I {}
|
||||
// CHECK:STDOUT: --- a.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: }
|
||||
// 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: %I.decl: type = interface_decl @I [concrete = constants.%I.type] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @I;
|
||||
@@ -47,21 +47,21 @@ interface I {}
|
||||
// CHECK:STDOUT: --- fail_b.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [template]
|
||||
// CHECK:STDOUT: %.type: type = facet_type <@.1> [template]
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [concrete]
|
||||
// CHECK:STDOUT: %.type: type = facet_type <@.1> [concrete]
|
||||
// CHECK:STDOUT: %Self: %.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Main.I: type = import_ref Main//a, I, loaded [template = constants.%I.type]
|
||||
// CHECK:STDOUT: %Main.I: type = import_ref Main//a, I, loaded [concrete = constants.%I.type]
|
||||
// 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: }
|
||||
// CHECK:STDOUT: %default.import = import <none>
|
||||
// CHECK:STDOUT: %.decl: type = interface_decl @.1 [template = constants.%.type] {} {}
|
||||
// CHECK:STDOUT: %.decl: type = interface_decl @.1 [concrete = constants.%.type] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @I [from "a.carbon"];
|
||||
|
||||
@@ -73,22 +73,22 @@ interface Class { }
|
||||
// CHECK:STDOUT: --- fail_redefine_without_dependents.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: %.type: type = facet_type <@.1> [template]
|
||||
// CHECK:STDOUT: %.type: type = facet_type <@.1> [concrete]
|
||||
// CHECK:STDOUT: %Self.86e: %.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: %.assoc_type: type = assoc_entity_type %.type [template]
|
||||
// CHECK:STDOUT: %assoc0: %.assoc_type = assoc_entity element0, @.1.%F.decl [template]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %.assoc_type: type = assoc_entity_type %.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0: %.assoc_type = assoc_entity element0, @.1.%F.decl [concrete]
|
||||
// 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: }
|
||||
// CHECK:STDOUT: %Interface.decl: type = interface_decl @Interface [template = constants.%Interface.type] {} {}
|
||||
// CHECK:STDOUT: %.decl: type = interface_decl @.1 [template = constants.%.type] {} {}
|
||||
// CHECK:STDOUT: %Interface.decl: type = interface_decl @Interface [concrete = constants.%Interface.type] {} {}
|
||||
// CHECK:STDOUT: %.decl: type = interface_decl @.1 [concrete = constants.%.type] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @Interface {
|
||||
@@ -101,8 +101,8 @@ interface Class { }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @.1 {
|
||||
// CHECK:STDOUT: %Self: %.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.86e]
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %.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: %.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -119,23 +119,23 @@ interface Class { }
|
||||
// CHECK:STDOUT: --- fail_redefine_with_dependents.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: %.type: type = facet_type <@.1> [template]
|
||||
// CHECK:STDOUT: %.type: type = facet_type <@.1> [concrete]
|
||||
// CHECK:STDOUT: %Self.86e: %.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self.86e [symbolic]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.assoc_type: type = assoc_entity_type %.type [template]
|
||||
// CHECK:STDOUT: %assoc0: %.assoc_type = assoc_entity element0, @.1.%F.decl [template]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %.assoc_type: type = assoc_entity_type %.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0: %.assoc_type = assoc_entity element0, @.1.%F.decl [concrete]
|
||||
// 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: }
|
||||
// CHECK:STDOUT: %Interface.decl: type = interface_decl @Interface [template = constants.%Interface.type] {} {}
|
||||
// CHECK:STDOUT: %.decl: type = interface_decl @.1 [template = constants.%.type] {} {}
|
||||
// CHECK:STDOUT: %Interface.decl: type = interface_decl @Interface [concrete = constants.%Interface.type] {} {}
|
||||
// CHECK:STDOUT: %.decl: type = interface_decl @.1 [concrete = constants.%.type] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @Interface {
|
||||
@@ -148,7 +148,7 @@ interface Class { }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @.1 {
|
||||
// CHECK:STDOUT: %Self: %.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.86e]
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {
|
||||
// CHECK:STDOUT: %self.patt: @F.%Self.as_type.loc14_14.1 (%Self.as_type) = binding_pattern self
|
||||
// CHECK:STDOUT: %self.param_patt: @F.%Self.as_type.loc14_14.1 (%Self.as_type) = value_param_pattern %self.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
@@ -160,7 +160,7 @@ interface Class { }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %self: @F.%Self.as_type.loc14_14.1 (%Self.as_type) = bind_name self, %self.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %assoc0: %.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %assoc0: %.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -183,17 +183,17 @@ interface Class { }
|
||||
// CHECK:STDOUT: --- fail_name_conflict_with_fn.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %Function.type: type = fn_type @Function [template]
|
||||
// CHECK:STDOUT: %Function: %Function.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.type: type = facet_type <@.1> [template]
|
||||
// CHECK:STDOUT: %Function.type: type = fn_type @Function [concrete]
|
||||
// CHECK:STDOUT: %Function: %Function.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %.type: type = facet_type <@.1> [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Function = %Function.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Function.decl: %Function.type = fn_decl @Function [template = constants.%Function] {} {}
|
||||
// CHECK:STDOUT: %.decl: type = interface_decl @.1 [template = constants.%.type] {} {}
|
||||
// CHECK:STDOUT: %Function.decl: %Function.type = fn_decl @Function [concrete = constants.%Function] {} {}
|
||||
// CHECK:STDOUT: %.decl: type = interface_decl @.1 [concrete = constants.%.type] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @.1;
|
||||
@@ -203,17 +203,17 @@ interface Class { }
|
||||
// CHECK:STDOUT: --- fail_name_conflict_with_class.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %Class: type = class_type @Class [template]
|
||||
// CHECK:STDOUT: %.type: type = facet_type <@.1> [template]
|
||||
// CHECK:STDOUT: %Class: type = class_type @Class [concrete]
|
||||
// CHECK:STDOUT: %.type: type = facet_type <@.1> [concrete]
|
||||
// CHECK:STDOUT: %Self: %.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Class = %Class.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Class.decl: type = class_decl @Class [template = constants.%Class] {} {}
|
||||
// CHECK:STDOUT: %.decl: type = interface_decl @.1 [template = constants.%.type] {} {}
|
||||
// CHECK:STDOUT: %Class.decl: type = class_decl @Class [concrete = constants.%Class] {} {}
|
||||
// CHECK:STDOUT: %.decl: type = interface_decl @.1 [concrete = constants.%.type] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @.1 {
|
||||
|
||||
+20
-20
@@ -41,65 +41,65 @@ interface DifferentParams(T:! ()) {}
|
||||
// CHECK:STDOUT: --- fail_generic_redeclaration.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %NotGeneric.type: type = facet_type <@NotGeneric> [template]
|
||||
// CHECK:STDOUT: %NotGeneric.type: type = facet_type <@NotGeneric> [concrete]
|
||||
// CHECK:STDOUT: %T.8b3: type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt.e01: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %.type.abf52e.1: type = generic_interface_type @.1 [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %.generic.0a9e18.1: %.type.abf52e.1 = struct_value () [template]
|
||||
// CHECK:STDOUT: %.type.abf52e.1: type = generic_interface_type @.1 [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %.generic.0a9e18.1: %.type.abf52e.1 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %.type.eb3: type = facet_type <@.1, @.1(%T.8b3)> [symbolic]
|
||||
// CHECK:STDOUT: %Self.037: %.type.eb3 = bind_symbolic_name Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: %Generic.type: type = generic_interface_type @Generic [template]
|
||||
// CHECK:STDOUT: %Generic.generic: %Generic.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.type.4ea: type = facet_type <@.2> [template]
|
||||
// CHECK:STDOUT: %Generic.type: type = generic_interface_type @Generic [concrete]
|
||||
// CHECK:STDOUT: %Generic.generic: %Generic.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %.type.4ea: type = facet_type <@.2> [concrete]
|
||||
// CHECK:STDOUT: %Self.86e: %.type.4ea = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %DifferentParams.type: type = generic_interface_type @DifferentParams [template]
|
||||
// CHECK:STDOUT: %DifferentParams.generic: %DifferentParams.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %DifferentParams.type: type = generic_interface_type @DifferentParams [concrete]
|
||||
// CHECK:STDOUT: %DifferentParams.generic: %DifferentParams.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %T.7a6: %empty_tuple.type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt.e60: %empty_tuple.type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %.type.abf52e.2: type = generic_interface_type @.3 [template]
|
||||
// CHECK:STDOUT: %.generic.0a9e18.2: %.type.abf52e.2 = struct_value () [template]
|
||||
// CHECK:STDOUT: %.type.abf52e.2: type = generic_interface_type @.3 [concrete]
|
||||
// CHECK:STDOUT: %.generic.0a9e18.2: %.type.abf52e.2 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %.type.b4a: type = facet_type <@.3, @.3(%T.7a6)> [symbolic]
|
||||
// CHECK:STDOUT: %Self.bb6: %.type.b4a = bind_symbolic_name Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .NotGeneric = %NotGeneric.decl
|
||||
// CHECK:STDOUT: .Generic = %Generic.decl
|
||||
// CHECK:STDOUT: .DifferentParams = %DifferentParams.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %NotGeneric.decl: type = interface_decl @NotGeneric [template = constants.%NotGeneric.type] {} {}
|
||||
// CHECK:STDOUT: %.decl.loc19: %.type.abf52e.1 = interface_decl @.1 [template = constants.%.generic.0a9e18.1] {
|
||||
// CHECK:STDOUT: %NotGeneric.decl: type = interface_decl @NotGeneric [concrete = constants.%NotGeneric.type] {} {}
|
||||
// CHECK:STDOUT: %.decl.loc19: %.type.abf52e.1 = interface_decl @.1 [concrete = constants.%.generic.0a9e18.1] {
|
||||
// CHECK:STDOUT: %T.patt.loc19_22.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc19_22.2 (constants.%T.patt.e01)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc19_22.1, runtime_param<none> [symbolic = %T.patt.loc19_22.2 (constants.%T.patt.e01)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.param: type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %T.loc19_22.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc19_22.2 (constants.%T.8b3)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Generic.decl: %Generic.type = interface_decl @Generic [template = constants.%Generic.generic] {
|
||||
// CHECK:STDOUT: %Generic.decl: %Generic.type = interface_decl @Generic [concrete = constants.%Generic.generic] {
|
||||
// CHECK:STDOUT: %T.patt.loc21_19.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc21_19.2 (constants.%T.patt.e01)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc21_19.1, runtime_param<none> [symbolic = %T.patt.loc21_19.2 (constants.%T.patt.e01)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.param: type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %T.loc21_19.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc21_19.2 (constants.%T.8b3)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.decl.loc29: type = interface_decl @.2 [template = constants.%.type.4ea] {} {}
|
||||
// CHECK:STDOUT: %DifferentParams.decl: %DifferentParams.type = interface_decl @DifferentParams [template = constants.%DifferentParams.generic] {
|
||||
// CHECK:STDOUT: %.decl.loc29: type = interface_decl @.2 [concrete = constants.%.type.4ea] {} {}
|
||||
// CHECK:STDOUT: %DifferentParams.decl: %DifferentParams.type = interface_decl @DifferentParams [concrete = constants.%DifferentParams.generic] {
|
||||
// CHECK:STDOUT: %T.patt.loc31_27.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc31_27.2 (constants.%T.patt.e01)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc31_27.1, runtime_param<none> [symbolic = %T.patt.loc31_27.2 (constants.%T.patt.e01)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.param: type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %T.loc31_27.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc31_27.2 (constants.%T.8b3)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.decl.loc39: %.type.abf52e.2 = interface_decl @.3 [template = constants.%.generic.0a9e18.2] {
|
||||
// CHECK:STDOUT: %.decl.loc39: %.type.abf52e.2 = interface_decl @.3 [concrete = constants.%.generic.0a9e18.2] {
|
||||
// CHECK:STDOUT: %T.patt.loc39_27.1: %empty_tuple.type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc39_27.2 (constants.%T.patt.e60)]
|
||||
// CHECK:STDOUT: %T.param_patt: %empty_tuple.type = value_param_pattern %T.patt.loc39_27.1, runtime_param<none> [symbolic = %T.patt.loc39_27.2 (constants.%T.patt.e60)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.param: %empty_tuple.type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %.loc39_32.1: type = splice_block %.loc39_32.3 [template = constants.%empty_tuple.type] {
|
||||
// CHECK:STDOUT: %.loc39_32.1: type = splice_block %.loc39_32.3 [concrete = constants.%empty_tuple.type] {
|
||||
// CHECK:STDOUT: %.loc39_32.2: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc39_32.3: type = converted %.loc39_32.2, constants.%empty_tuple.type [template = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %.loc39_32.3: type = converted %.loc39_32.2, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %T.loc39_27.1: %empty_tuple.type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc39_27.2 (constants.%T.7a6)]
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -24,26 +24,26 @@ interface I {
|
||||
// CHECK:STDOUT: --- fail_incomplete_type.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: %I.assoc_type: type = assoc_entity_type %I.type [template]
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%T [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: }
|
||||
// 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: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
|
||||
// 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: %T: <error> = assoc_const_decl @T [template] {
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, @I.%T [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %T: <error> = 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:
|
||||
|
||||
+8
-8
@@ -31,11 +31,11 @@ let U: (type where .Self impls type).missing = {};
|
||||
// CHECK:STDOUT: --- fail_lookup_in_type.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// 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: .T = %T
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
@@ -54,24 +54,24 @@ let U: (type where .Self impls type).missing = {};
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %.Self: type = bind_symbolic_name .Self [symbolic]
|
||||
// CHECK:STDOUT: %type_where: type = facet_type <type where TODO> [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %type_where: type = facet_type <type where TODO> [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: .U = %U
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %U.patt: <error> = binding_pattern U
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.1: <error> = splice_block <error> [template = <error>] {
|
||||
// CHECK:STDOUT: %.1: <error> = splice_block <error> [concrete = <error>] {
|
||||
// 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: %.loc8: type = where_expr %.Self [template = constants.%type_where] {
|
||||
// CHECK:STDOUT: %.loc8: type = where_expr %.Self [concrete = constants.%type_where] {
|
||||
// CHECK:STDOUT: requirement_impls %.Self.ref, type
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %missing.ref: <error> = name_ref missing, <error> [template = <error>]
|
||||
// CHECK:STDOUT: %missing.ref: <error> = name_ref missing, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %U: <error> = bind_name U, <error>
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
+24
-24
@@ -53,48 +53,48 @@ interface BeingDefined {
|
||||
// CHECK:STDOUT: --- fail_lookup_undefined.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %Undefined.type: type = facet_type <@Undefined> [template]
|
||||
// CHECK:STDOUT: %.type.b6a: type = fn_type @.1 [template]
|
||||
// CHECK:STDOUT: %.d85: %.type.b6a = struct_value () [template]
|
||||
// CHECK:STDOUT: %Test.type: type = fn_type @Test [template]
|
||||
// CHECK:STDOUT: %Test: %Test.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %BeingDefined.type: type = facet_type <@BeingDefined> [template]
|
||||
// CHECK:STDOUT: %Undefined.type: type = facet_type <@Undefined> [concrete]
|
||||
// CHECK:STDOUT: %.type.b6a: type = fn_type @.1 [concrete]
|
||||
// CHECK:STDOUT: %.d85: %.type.b6a = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Test.type: type = fn_type @Test [concrete]
|
||||
// CHECK:STDOUT: %Test: %Test.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %BeingDefined.type: type = facet_type <@BeingDefined> [concrete]
|
||||
// CHECK:STDOUT: %Self: %BeingDefined.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %H.type: type = fn_type @H [template]
|
||||
// CHECK:STDOUT: %H: %H.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %BeingDefined.assoc_type: type = assoc_entity_type %BeingDefined.type [template]
|
||||
// CHECK:STDOUT: %assoc0: %BeingDefined.assoc_type = assoc_entity element0, @BeingDefined.%H.decl [template]
|
||||
// CHECK:STDOUT: %.type.5fb: type = fn_type @.2 [template]
|
||||
// CHECK:STDOUT: %.b15: %.type.5fb = struct_value () [template]
|
||||
// CHECK:STDOUT: %H.type: type = fn_type @H [concrete]
|
||||
// CHECK:STDOUT: %H: %H.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %BeingDefined.assoc_type: type = assoc_entity_type %BeingDefined.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0: %BeingDefined.assoc_type = assoc_entity element0, @BeingDefined.%H.decl [concrete]
|
||||
// CHECK:STDOUT: %.type.5fb: type = fn_type @.2 [concrete]
|
||||
// CHECK:STDOUT: %.b15: %.type.5fb = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Undefined = %Undefined.decl
|
||||
// CHECK:STDOUT: .Test = %Test.decl
|
||||
// CHECK:STDOUT: .BeingDefined = %BeingDefined.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Undefined.decl: type = interface_decl @Undefined [template = constants.%Undefined.type] {} {}
|
||||
// CHECK:STDOUT: %.decl: %.type.b6a = fn_decl @.1 [template = constants.%.d85] {} {}
|
||||
// CHECK:STDOUT: %Test.decl: %Test.type = fn_decl @Test [template = constants.%Test] {} {}
|
||||
// CHECK:STDOUT: %BeingDefined.decl: type = interface_decl @BeingDefined [template = constants.%BeingDefined.type] {} {}
|
||||
// CHECK:STDOUT: %Undefined.decl: type = interface_decl @Undefined [concrete = constants.%Undefined.type] {} {}
|
||||
// CHECK:STDOUT: %.decl: %.type.b6a = fn_decl @.1 [concrete = constants.%.d85] {} {}
|
||||
// CHECK:STDOUT: %Test.decl: %Test.type = fn_decl @Test [concrete = constants.%Test] {} {}
|
||||
// CHECK:STDOUT: %BeingDefined.decl: type = interface_decl @BeingDefined [concrete = constants.%BeingDefined.type] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @Undefined;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @BeingDefined {
|
||||
// CHECK:STDOUT: %Self: %BeingDefined.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self]
|
||||
// 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: %return.patt: <error> = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: <error> = out_param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %BeingDefined.ref: type = name_ref BeingDefined, file.%BeingDefined.decl [template = constants.%BeingDefined.type]
|
||||
// CHECK:STDOUT: %T.ref: <error> = name_ref T, <error> [template = <error>]
|
||||
// CHECK:STDOUT: %BeingDefined.ref: type = name_ref BeingDefined, file.%BeingDefined.decl [concrete = constants.%BeingDefined.type]
|
||||
// CHECK:STDOUT: %T.ref: <error> = name_ref T, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %return.param: ref <error> = out_param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref <error> = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %assoc0: %BeingDefined.assoc_type = assoc_entity element0, %H.decl [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %.decl: %.type.5fb = fn_decl @.2 [template = constants.%.b15] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %BeingDefined.assoc_type = assoc_entity element0, %H.decl [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %.decl: %.type.5fb = fn_decl @.2 [concrete = constants.%.b15] {} {}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -106,8 +106,8 @@ interface BeingDefined {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @Test() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %Undefined.ref: type = name_ref Undefined, file.%Undefined.decl [template = constants.%Undefined.type]
|
||||
// CHECK:STDOUT: %G.ref: <error> = name_ref G, <error> [template = <error>]
|
||||
// CHECK:STDOUT: %Undefined.ref: type = name_ref Undefined, file.%Undefined.decl [concrete = constants.%Undefined.type]
|
||||
// CHECK:STDOUT: %G.ref: <error> = name_ref G, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
@@ -39,44 +39,44 @@ fn G(U:! Different) -> U.(Interface.T);
|
||||
// CHECK:STDOUT: --- fail_member_lookup.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: %F.type.1ad: type = fn_type @F.1 [template]
|
||||
// CHECK:STDOUT: %F.5d3: %F.type.1ad = struct_value () [template]
|
||||
// CHECK:STDOUT: %Interface.assoc_type: type = assoc_entity_type %Interface.type [template]
|
||||
// CHECK:STDOUT: %assoc0: %Interface.assoc_type = assoc_entity element0, @Interface.%F.decl [template]
|
||||
// CHECK:STDOUT: %assoc1: %Interface.assoc_type = assoc_entity element1, @Interface.%T [template]
|
||||
// CHECK:STDOUT: %F.type.b25: type = fn_type @F.2 [template]
|
||||
// CHECK:STDOUT: %F.c41: %F.type.b25 = struct_value () [template]
|
||||
// CHECK:STDOUT: %Different.type: type = facet_type <@Different> [template]
|
||||
// CHECK:STDOUT: %F.type.1ad: type = fn_type @F.1 [concrete]
|
||||
// CHECK:STDOUT: %F.5d3: %F.type.1ad = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Interface.assoc_type: type = assoc_entity_type %Interface.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0: %Interface.assoc_type = assoc_entity element0, @Interface.%F.decl [concrete]
|
||||
// CHECK:STDOUT: %assoc1: %Interface.assoc_type = assoc_entity element1, @Interface.%T [concrete]
|
||||
// CHECK:STDOUT: %F.type.b25: type = fn_type @F.2 [concrete]
|
||||
// CHECK:STDOUT: %F.c41: %F.type.b25 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Different.type: type = facet_type <@Different> [concrete]
|
||||
// CHECK:STDOUT: %Self.e7f: %Different.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %U: %Different.type = bind_symbolic_name U, 0 [symbolic]
|
||||
// CHECK:STDOUT: %U.patt: %Different.type = symbolic_binding_pattern U, 0 [symbolic]
|
||||
// CHECK:STDOUT: %G.type: type = fn_type @G [template]
|
||||
// CHECK:STDOUT: %G: %G.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %G.type: type = fn_type @G [concrete]
|
||||
// CHECK:STDOUT: %G: %G.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: .Interface = %Interface.decl
|
||||
// CHECK:STDOUT: .F = %F.decl
|
||||
// CHECK:STDOUT: .Different = %Different.decl
|
||||
// CHECK:STDOUT: .G = %G.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Interface.decl: type = interface_decl @Interface [template = constants.%Interface.type] {} {}
|
||||
// CHECK:STDOUT: %F.decl: %F.type.b25 = fn_decl @F.2 [template = constants.%F.c41] {} {}
|
||||
// CHECK:STDOUT: %Different.decl: type = interface_decl @Different [template = constants.%Different.type] {} {}
|
||||
// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {
|
||||
// CHECK:STDOUT: %Interface.decl: type = interface_decl @Interface [concrete = constants.%Interface.type] {} {}
|
||||
// CHECK:STDOUT: %F.decl: %F.type.b25 = fn_decl @F.2 [concrete = constants.%F.c41] {} {}
|
||||
// CHECK:STDOUT: %Different.decl: type = interface_decl @Different [concrete = constants.%Different.type] {} {}
|
||||
// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] {
|
||||
// CHECK:STDOUT: %U.patt.loc37_6.1: %Different.type = symbolic_binding_pattern U, 0 [symbolic = %U.patt.loc37_6.2 (constants.%U.patt)]
|
||||
// CHECK:STDOUT: %U.param_patt: %Different.type = value_param_pattern %U.patt.loc37_6.1, runtime_param<none> [symbolic = %U.patt.loc37_6.2 (constants.%U.patt)]
|
||||
// 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: %U.ref: %Different.type = name_ref U, %U.loc37_6.1 [symbolic = %U.loc37_6.2 (constants.%U)]
|
||||
// CHECK:STDOUT: %Interface.ref: type = name_ref Interface, file.%Interface.decl [template = constants.%Interface.type]
|
||||
// CHECK:STDOUT: %T.ref: %Interface.assoc_type = name_ref T, @T.%assoc1 [template = constants.%assoc1]
|
||||
// CHECK:STDOUT: %Interface.ref: type = name_ref Interface, file.%Interface.decl [concrete = constants.%Interface.type]
|
||||
// CHECK:STDOUT: %T.ref: %Interface.assoc_type = name_ref T, @T.%assoc1 [concrete = constants.%assoc1]
|
||||
// CHECK:STDOUT: %U.param: %Different.type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %Different.ref: type = name_ref Different, file.%Different.decl [template = constants.%Different.type]
|
||||
// CHECK:STDOUT: %Different.ref: type = name_ref Different, file.%Different.decl [concrete = constants.%Different.type]
|
||||
// CHECK:STDOUT: %U.loc37_6.1: %Different.type = bind_symbolic_name U, 0, %U.param [symbolic = %U.loc37_6.2 (constants.%U)]
|
||||
// CHECK:STDOUT: %return.param: ref <error> = out_param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref <error> = return_slot %return.param
|
||||
@@ -85,10 +85,10 @@ fn G(U:! Different) -> U.(Interface.T);
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @Interface {
|
||||
// CHECK:STDOUT: %Self: %Interface.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.719]
|
||||
// CHECK:STDOUT: %F.decl: %F.type.1ad = fn_decl @F.1 [template = constants.%F.5d3] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %Interface.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %T: type = assoc_const_decl @T [template] {
|
||||
// CHECK:STDOUT: %assoc1: %Interface.assoc_type = assoc_entity element1, @Interface.%T [template = constants.%assoc1]
|
||||
// CHECK:STDOUT: %F.decl: %F.type.1ad = fn_decl @F.1 [concrete = constants.%F.5d3] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %Interface.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %T: type = assoc_const_decl @T [concrete] {
|
||||
// CHECK:STDOUT: %assoc1: %Interface.assoc_type = assoc_entity element1, @Interface.%T [concrete = constants.%assoc1]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -116,17 +116,17 @@ fn G(U:! Different) -> U.(Interface.T);
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @F.2() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %Interface.ref.loc22: type = name_ref Interface, file.%Interface.decl [template = constants.%Interface.type]
|
||||
// CHECK:STDOUT: %F.ref: %Interface.assoc_type = name_ref F, @Interface.%assoc0 [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %Interface.ref.loc22: type = name_ref Interface, file.%Interface.decl [concrete = constants.%Interface.type]
|
||||
// CHECK:STDOUT: %F.ref: %Interface.assoc_type = name_ref F, @Interface.%assoc0 [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %v.patt: <error> = binding_pattern v
|
||||
// CHECK:STDOUT: %.loc28_3: <error> = var_pattern %v.patt
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %v.var: ref <error> = var v
|
||||
// CHECK:STDOUT: %.1: <error> = splice_block <error> [template = <error>] {
|
||||
// CHECK:STDOUT: %Interface.ref.loc28: type = name_ref Interface, file.%Interface.decl [template = constants.%Interface.type]
|
||||
// CHECK:STDOUT: %T.ref: %Interface.assoc_type = name_ref T, @T.%assoc1 [template = constants.%assoc1]
|
||||
// CHECK:STDOUT: %.loc28_19: type = converted %T.ref, <error> [template = <error>]
|
||||
// CHECK:STDOUT: %.1: <error> = splice_block <error> [concrete = <error>] {
|
||||
// CHECK:STDOUT: %Interface.ref.loc28: type = name_ref Interface, file.%Interface.decl [concrete = constants.%Interface.type]
|
||||
// CHECK:STDOUT: %T.ref: %Interface.assoc_type = name_ref T, @T.%assoc1 [concrete = constants.%assoc1]
|
||||
// CHECK:STDOUT: %.loc28_19: type = converted %T.ref, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %v: <error> = bind_name v, <error>
|
||||
// CHECK:STDOUT: return
|
||||
|
||||
@@ -77,15 +77,15 @@ interface I {
|
||||
// CHECK:STDOUT: --- fail_abstract.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %Abstract.type: type = facet_type <@Abstract> [template]
|
||||
// CHECK:STDOUT: %Abstract.type: type = facet_type <@Abstract> [concrete]
|
||||
// CHECK:STDOUT: %Self: %Abstract.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Abstract = %Abstract.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Abstract.decl: type = interface_decl @Abstract [template = constants.%Abstract.type] {} {}
|
||||
// CHECK:STDOUT: %Abstract.decl: type = interface_decl @Abstract [concrete = constants.%Abstract.type] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @Abstract {
|
||||
@@ -99,14 +99,14 @@ interface I {
|
||||
// CHECK:STDOUT: --- fail_default.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %Default.type: type = facet_type <@Default> [template]
|
||||
// CHECK:STDOUT: %Default.type: type = facet_type <@Default> [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Default = %Default.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Default.decl: type = interface_decl @Default [template = constants.%Default.type] {} {}
|
||||
// CHECK:STDOUT: %Default.decl: type = interface_decl @Default [concrete = constants.%Default.type] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @Default;
|
||||
@@ -114,15 +114,15 @@ interface I {
|
||||
// CHECK:STDOUT: --- fail_virtual.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %Virtual.type: type = facet_type <@Virtual> [template]
|
||||
// CHECK:STDOUT: %Virtual.type: type = facet_type <@Virtual> [concrete]
|
||||
// CHECK:STDOUT: %Self: %Virtual.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Virtual = %Virtual.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Virtual.decl: type = interface_decl @Virtual [template = constants.%Virtual.type] {} {}
|
||||
// CHECK:STDOUT: %Virtual.decl: type = interface_decl @Virtual [concrete = constants.%Virtual.type] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @Virtual {
|
||||
@@ -136,14 +136,14 @@ interface I {
|
||||
// CHECK:STDOUT: --- fail_protected.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %Protected.type: type = facet_type <@Protected> [template]
|
||||
// CHECK:STDOUT: %Protected.type: type = facet_type <@Protected> [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Protected = %Protected.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Protected.decl: type = interface_decl @Protected [template = constants.%Protected.type] {} {}
|
||||
// CHECK:STDOUT: %Protected.decl: type = interface_decl @Protected [concrete = constants.%Protected.type] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @Protected;
|
||||
@@ -151,25 +151,25 @@ interface I {
|
||||
// CHECK:STDOUT: --- fail_private_member.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: %Self.as_type: type = facet_access_type %Self [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: 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: %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: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {
|
||||
// CHECK:STDOUT: %self.patt: @F.%Self.as_type.loc9_22.1 (%Self.as_type) = binding_pattern self
|
||||
// CHECK:STDOUT: %self.param_patt: @F.%Self.as_type.loc9_22.1 (%Self.as_type) = value_param_pattern %self.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
@@ -181,7 +181,7 @@ interface I {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %self: @F.%Self.as_type.loc9_22.1 (%Self.as_type) = bind_name self, %self.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
|
||||
@@ -204,25 +204,25 @@ interface I {
|
||||
// CHECK:STDOUT: --- fail_protected_member.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: %Self.as_type: type = facet_access_type %Self [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: 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: %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: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {
|
||||
// CHECK:STDOUT: %self.patt: @F.%Self.as_type.loc9_24.1 (%Self.as_type) = binding_pattern self
|
||||
// CHECK:STDOUT: %self.param_patt: @F.%Self.as_type.loc9_24.1 (%Self.as_type) = value_param_pattern %self.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
@@ -234,7 +234,7 @@ interface I {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %self: @F.%Self.as_type.loc9_24.1 (%Self.as_type) = bind_name self, %self.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
|
||||
|
||||
+12
-12
@@ -23,28 +23,28 @@ interface Interface {
|
||||
// CHECK:STDOUT: --- fail_redeclare_member.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: %Interface.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: %Interface.assoc_type: type = assoc_entity_type %Interface.type [template]
|
||||
// CHECK:STDOUT: %assoc0: %Interface.assoc_type = assoc_entity element0, @Interface.%F.decl [template]
|
||||
// CHECK:STDOUT: %.type: type = fn_type @.1 [template]
|
||||
// CHECK:STDOUT: %.563: %.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Interface.assoc_type: type = assoc_entity_type %Interface.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0: %Interface.assoc_type = assoc_entity element0, @Interface.%F.decl [concrete]
|
||||
// CHECK:STDOUT: %.type: type = fn_type @.1 [concrete]
|
||||
// CHECK:STDOUT: %.563: %.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: .Interface = %Interface.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Interface.decl: type = interface_decl @Interface [template = constants.%Interface.type] {} {}
|
||||
// CHECK:STDOUT: %Interface.decl: type = interface_decl @Interface [concrete = constants.%Interface.type] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @Interface {
|
||||
// CHECK:STDOUT: %Self: %Interface.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self]
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %Interface.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [template = constants.%.563] {} {}
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %Interface.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %.decl: %.type = fn_decl @.1 [concrete = constants.%.563] {} {}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
|
||||
+4
-4
@@ -27,8 +27,8 @@ fn I(T:! type).F[self: Self]() -> Self { return self; }
|
||||
// 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: %Self.as_type: type = facet_access_type %Self [symbolic]
|
||||
@@ -42,10 +42,10 @@ fn I(T:! type).F[self: Self]() -> Self { return self; }
|
||||
// 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: %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.loc11_13.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc11_13.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc11_13.1, runtime_param<none> [symbolic = %T.patt.loc11_13.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
|
||||
@@ -24,30 +24,30 @@ interface Modifiers {
|
||||
// CHECK:STDOUT: --- fail_todo_modifiers.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %Modifiers.type: type = facet_type <@Modifiers> [template]
|
||||
// CHECK:STDOUT: %Modifiers.type: type = facet_type <@Modifiers> [concrete]
|
||||
// CHECK:STDOUT: %Self: %Modifiers.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Final.type: type = fn_type @Final [template]
|
||||
// CHECK:STDOUT: %Final: %Final.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %Modifiers.assoc_type: type = assoc_entity_type %Modifiers.type [template]
|
||||
// CHECK:STDOUT: %assoc0: %Modifiers.assoc_type = assoc_entity element0, @Modifiers.%Final.decl [template]
|
||||
// CHECK:STDOUT: %Default.type: type = fn_type @Default [template]
|
||||
// CHECK:STDOUT: %Default: %Default.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %assoc1: %Modifiers.assoc_type = assoc_entity element1, @Modifiers.%Default.decl [template]
|
||||
// CHECK:STDOUT: %Final.type: type = fn_type @Final [concrete]
|
||||
// CHECK:STDOUT: %Final: %Final.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Modifiers.assoc_type: type = assoc_entity_type %Modifiers.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0: %Modifiers.assoc_type = assoc_entity element0, @Modifiers.%Final.decl [concrete]
|
||||
// CHECK:STDOUT: %Default.type: type = fn_type @Default [concrete]
|
||||
// CHECK:STDOUT: %Default: %Default.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %assoc1: %Modifiers.assoc_type = assoc_entity element1, @Modifiers.%Default.decl [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Modifiers = %Modifiers.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Modifiers.decl: type = interface_decl @Modifiers [template = constants.%Modifiers.type] {} {}
|
||||
// CHECK:STDOUT: %Modifiers.decl: type = interface_decl @Modifiers [concrete = constants.%Modifiers.type] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @Modifiers {
|
||||
// CHECK:STDOUT: %Self: %Modifiers.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self]
|
||||
// CHECK:STDOUT: %Final.decl: %Final.type = fn_decl @Final [template = constants.%Final] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %Modifiers.assoc_type = assoc_entity element0, %Final.decl [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %Default.decl: %Default.type = fn_decl @Default [template = constants.%Default] {} {}
|
||||
// CHECK:STDOUT: %assoc1: %Modifiers.assoc_type = assoc_entity element1, %Default.decl [template = constants.%assoc1]
|
||||
// CHECK:STDOUT: %Final.decl: %Final.type = fn_decl @Final [concrete = constants.%Final] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %Modifiers.assoc_type = assoc_entity element0, %Final.decl [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %Default.decl: %Default.type = fn_decl @Default [concrete = constants.%Default] {} {}
|
||||
// CHECK:STDOUT: %assoc1: %Modifiers.assoc_type = assoc_entity element1, %Default.decl [concrete = constants.%assoc1]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
|
||||
+93
-93
@@ -71,50 +71,50 @@ fn G(T:! Generic(B)) {
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %T.8b3: type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt.e01: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Simple.type.3b3: type = generic_interface_type @Simple [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %Simple.generic: %Simple.type.3b3 = struct_value () [template]
|
||||
// CHECK:STDOUT: %Simple.type.3b3: type = generic_interface_type @Simple [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %Simple.generic: %Simple.type.3b3 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Simple.type.d08: type = facet_type <@Simple, @Simple(%T.8b3)> [symbolic]
|
||||
// CHECK:STDOUT: %Self.faf: %Simple.type.d08 = bind_symbolic_name Self, 1 [symbolic]
|
||||
// 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: %WithAssocFn.type.509: type = generic_interface_type @WithAssocFn [template]
|
||||
// CHECK:STDOUT: %WithAssocFn.generic: %WithAssocFn.type.509 = 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: %WithAssocFn.type.509: type = generic_interface_type @WithAssocFn [concrete]
|
||||
// CHECK:STDOUT: %WithAssocFn.generic: %WithAssocFn.type.509 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %WithAssocFn.type.ce6: type = facet_type <@WithAssocFn, @WithAssocFn(%T.8b3)> [symbolic]
|
||||
// CHECK:STDOUT: %Self.088: %WithAssocFn.type.ce6 = bind_symbolic_name Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: %F.type.1af: type = fn_type @F.1, @WithAssocFn(%T.8b3) [symbolic]
|
||||
// CHECK:STDOUT: %F.b7d: %F.type.1af = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %WithAssocFn.assoc_type.02b: type = assoc_entity_type %WithAssocFn.type.ce6 [symbolic]
|
||||
// CHECK:STDOUT: %assoc0.470: %WithAssocFn.assoc_type.02b = assoc_entity element0, @WithAssocFn.%F.decl [symbolic]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [template]
|
||||
// CHECK:STDOUT: %Simple.type.51f: type = facet_type <@Simple, @Simple(%C)> [template]
|
||||
// CHECK:STDOUT: %impl_witness.1bc: <witness> = impl_witness () [template]
|
||||
// CHECK:STDOUT: %WithAssocFn.type.683: type = facet_type <@WithAssocFn, @WithAssocFn(%C)> [template]
|
||||
// CHECK:STDOUT: %F.type.18c: type = fn_type @F.1, @WithAssocFn(%C) [template]
|
||||
// CHECK:STDOUT: %F.e46: %F.type.18c = struct_value () [template]
|
||||
// CHECK:STDOUT: %WithAssocFn.assoc_type.480: type = assoc_entity_type %WithAssocFn.type.683 [template]
|
||||
// CHECK:STDOUT: %assoc0.136: %WithAssocFn.assoc_type.480 = assoc_entity element0, @WithAssocFn.%F.decl [template]
|
||||
// CHECK:STDOUT: %impl_witness.49b: <witness> = impl_witness (@impl.2.%F.decl) [template]
|
||||
// CHECK:STDOUT: %F.type.005: type = fn_type @F.2 [template]
|
||||
// CHECK:STDOUT: %F.317: %F.type.005 = struct_value () [template]
|
||||
// CHECK:STDOUT: %WithAssocFn.facet: %WithAssocFn.type.683 = facet_value %C, %impl_witness.49b [template]
|
||||
// CHECK:STDOUT: %X.val: %X = struct_value () [template]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [concrete]
|
||||
// CHECK:STDOUT: %Simple.type.51f: type = facet_type <@Simple, @Simple(%C)> [concrete]
|
||||
// CHECK:STDOUT: %impl_witness.1bc: <witness> = impl_witness () [concrete]
|
||||
// CHECK:STDOUT: %WithAssocFn.type.683: type = facet_type <@WithAssocFn, @WithAssocFn(%C)> [concrete]
|
||||
// CHECK:STDOUT: %F.type.18c: type = fn_type @F.1, @WithAssocFn(%C) [concrete]
|
||||
// CHECK:STDOUT: %F.e46: %F.type.18c = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %WithAssocFn.assoc_type.480: type = assoc_entity_type %WithAssocFn.type.683 [concrete]
|
||||
// CHECK:STDOUT: %assoc0.136: %WithAssocFn.assoc_type.480 = assoc_entity element0, @WithAssocFn.%F.decl [concrete]
|
||||
// CHECK:STDOUT: %impl_witness.49b: <witness> = impl_witness (@impl.2.%F.decl) [concrete]
|
||||
// CHECK:STDOUT: %F.type.005: type = fn_type @F.2 [concrete]
|
||||
// CHECK:STDOUT: %F.317: %F.type.005 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %WithAssocFn.facet: %WithAssocFn.type.683 = facet_value %C, %impl_witness.49b [concrete]
|
||||
// CHECK:STDOUT: %X.val: %X = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %N: %T.8b3 = bind_symbolic_name N, 1 [symbolic]
|
||||
// CHECK:STDOUT: %N.patt: %T.8b3 = symbolic_binding_pattern N, 1 [symbolic]
|
||||
// CHECK:STDOUT: %WithImplicitArgs.type: type = generic_interface_type @WithImplicitArgs [template]
|
||||
// CHECK:STDOUT: %WithImplicitArgs.generic: %WithImplicitArgs.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %WithImplicitArgs.type: type = generic_interface_type @WithImplicitArgs [concrete]
|
||||
// CHECK:STDOUT: %WithImplicitArgs.generic: %WithImplicitArgs.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %T.692: %Simple.type.51f = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt.6ae: %Simple.type.51f = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Receive.type: type = fn_type @Receive [template]
|
||||
// CHECK:STDOUT: %Receive: %Receive.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %Pass.type: type = fn_type @Pass [template]
|
||||
// CHECK:STDOUT: %Pass: %Pass.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %Receive.type: type = fn_type @Receive [concrete]
|
||||
// CHECK:STDOUT: %Receive: %Receive.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Pass.type: type = fn_type @Pass [concrete]
|
||||
// CHECK:STDOUT: %Pass: %Pass.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Receive.specific_fn: <specific function> = specific_function %Receive, @Receive(%T.692) [symbolic]
|
||||
// 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: .X = %X.decl
|
||||
// CHECK:STDOUT: .WithAssocFn = %WithAssocFn.decl
|
||||
@@ -123,23 +123,23 @@ fn G(T:! Generic(B)) {
|
||||
// CHECK:STDOUT: .Receive = %Receive.decl
|
||||
// CHECK:STDOUT: .Pass = %Pass.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Simple.decl: %Simple.type.3b3 = interface_decl @Simple [template = constants.%Simple.generic] {
|
||||
// CHECK:STDOUT: %Simple.decl: %Simple.type.3b3 = interface_decl @Simple [concrete = constants.%Simple.generic] {
|
||||
// CHECK:STDOUT: %T.patt.loc4_18.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_18.2 (constants.%T.patt.e01)]
|
||||
// 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.e01)]
|
||||
// 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.8b3)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %X.decl: type = class_decl @X [template = constants.%X] {} {}
|
||||
// CHECK:STDOUT: %WithAssocFn.decl: %WithAssocFn.type.509 = interface_decl @WithAssocFn [template = constants.%WithAssocFn.generic] {
|
||||
// CHECK:STDOUT: %X.decl: type = class_decl @X [concrete = constants.%X] {} {}
|
||||
// CHECK:STDOUT: %WithAssocFn.decl: %WithAssocFn.type.509 = interface_decl @WithAssocFn [concrete = constants.%WithAssocFn.generic] {
|
||||
// CHECK:STDOUT: %T.patt.loc8_23.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc8_23.2 (constants.%T.patt.e01)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc8_23.1, runtime_param<none> [symbolic = %T.patt.loc8_23.2 (constants.%T.patt.e01)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.param: type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %T.loc8_23.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc8_23.2 (constants.%T.8b3)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %WithImplicitArgs.decl: %WithImplicitArgs.type = interface_decl @WithImplicitArgs [template = constants.%WithImplicitArgs.generic] {
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %WithImplicitArgs.decl: %WithImplicitArgs.type = interface_decl @WithImplicitArgs [concrete = constants.%WithImplicitArgs.generic] {
|
||||
// CHECK:STDOUT: %T.patt.loc22_28.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc22_28.2 (constants.%T.patt.e01)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc22_28.1, runtime_param<none> [symbolic = %T.patt.loc22_28.2 (constants.%T.patt.e01)]
|
||||
// CHECK:STDOUT: %N.patt.loc22_38.1: @WithImplicitArgs.%T.loc22_28.2 (%T.8b3) = symbolic_binding_pattern N, 1 [symbolic = %N.patt.loc22_38.2 (constants.%N.patt)]
|
||||
@@ -151,27 +151,27 @@ fn G(T:! Generic(B)) {
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc22_28.1 [symbolic = %T.loc22_28.2 (constants.%T.8b3)]
|
||||
// CHECK:STDOUT: %N.loc22_38.1: @WithImplicitArgs.%T.loc22_28.2 (%T.8b3) = bind_symbolic_name N, 1, %N.param [symbolic = %N.loc22_38.2 (constants.%N)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Receive.decl: %Receive.type = fn_decl @Receive [template = constants.%Receive] {
|
||||
// CHECK:STDOUT: %Receive.decl: %Receive.type = fn_decl @Receive [concrete = constants.%Receive] {
|
||||
// CHECK:STDOUT: %T.patt.loc24_12.1: %Simple.type.51f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc24_12.2 (constants.%T.patt.6ae)]
|
||||
// CHECK:STDOUT: %T.param_patt: %Simple.type.51f = value_param_pattern %T.patt.loc24_12.1, runtime_param<none> [symbolic = %T.patt.loc24_12.2 (constants.%T.patt.6ae)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.param: %Simple.type.51f = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %.loc24: type = splice_block %Simple.type [template = constants.%Simple.type.51f] {
|
||||
// CHECK:STDOUT: %Simple.ref: %Simple.type.3b3 = name_ref Simple, file.%Simple.decl [template = constants.%Simple.generic]
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %Simple.type: type = facet_type <@Simple, @Simple(constants.%C)> [template = constants.%Simple.type.51f]
|
||||
// CHECK:STDOUT: %.loc24: type = splice_block %Simple.type [concrete = constants.%Simple.type.51f] {
|
||||
// CHECK:STDOUT: %Simple.ref: %Simple.type.3b3 = name_ref Simple, file.%Simple.decl [concrete = constants.%Simple.generic]
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %Simple.type: type = facet_type <@Simple, @Simple(constants.%C)> [concrete = constants.%Simple.type.51f]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %T.loc24_12.1: %Simple.type.51f = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc24_12.2 (constants.%T.692)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Pass.decl: %Pass.type = fn_decl @Pass [template = constants.%Pass] {
|
||||
// CHECK:STDOUT: %Pass.decl: %Pass.type = fn_decl @Pass [concrete = constants.%Pass] {
|
||||
// CHECK:STDOUT: %T.patt.loc25_9.1: %Simple.type.51f = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc25_9.2 (constants.%T.patt.6ae)]
|
||||
// CHECK:STDOUT: %T.param_patt: %Simple.type.51f = value_param_pattern %T.patt.loc25_9.1, runtime_param<none> [symbolic = %T.patt.loc25_9.2 (constants.%T.patt.6ae)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.param: %Simple.type.51f = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %.loc25: type = splice_block %Simple.type [template = constants.%Simple.type.51f] {
|
||||
// CHECK:STDOUT: %Simple.ref: %Simple.type.3b3 = name_ref Simple, file.%Simple.decl [template = constants.%Simple.generic]
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %Simple.type: type = facet_type <@Simple, @Simple(constants.%C)> [template = constants.%Simple.type.51f]
|
||||
// CHECK:STDOUT: %.loc25: type = splice_block %Simple.type [concrete = constants.%Simple.type.51f] {
|
||||
// CHECK:STDOUT: %Simple.ref: %Simple.type.3b3 = name_ref Simple, file.%Simple.decl [concrete = constants.%Simple.generic]
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %Simple.type: type = facet_type <@Simple, @Simple(constants.%C)> [concrete = constants.%Simple.type.51f]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %T.loc25_9.1: %Simple.type.51f = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc25_9.2 (constants.%T.692)]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -212,7 +212,7 @@ fn G(T:! Generic(B)) {
|
||||
// CHECK:STDOUT: %return.patt: %X = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %X = out_param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %X.ref: type = name_ref X, file.%X.decl [template = constants.%X]
|
||||
// CHECK:STDOUT: %X.ref: type = name_ref X, file.%X.decl [concrete = constants.%X]
|
||||
// CHECK:STDOUT: %return.param: ref %X = out_param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref %X = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
@@ -240,11 +240,11 @@ fn G(T:! Generic(B)) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl.2: %Self.ref as %WithAssocFn.type {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.005 = fn_decl @F.2 [template = constants.%F.317] {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.005 = fn_decl @F.2 [concrete = constants.%F.317] {
|
||||
// CHECK:STDOUT: %return.patt: %X = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %X = out_param_pattern %return.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %X.ref: type = name_ref X, file.%X.decl [template = constants.%X]
|
||||
// CHECK:STDOUT: %X.ref: type = name_ref X, file.%X.decl [concrete = constants.%X]
|
||||
// CHECK:STDOUT: %return.param: ref %X = out_param runtime_param0
|
||||
// CHECK:STDOUT: %return: ref %X = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
@@ -255,7 +255,7 @@ fn G(T:! Generic(B)) {
|
||||
// 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:
|
||||
@@ -263,21 +263,21 @@ fn G(T:! Generic(B)) {
|
||||
// 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: %Simple.ref: %Simple.type.3b3 = name_ref Simple, file.%Simple.decl [template = constants.%Simple.generic]
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %Simple.type: type = facet_type <@Simple, @Simple(constants.%C)> [template = constants.%Simple.type.51f]
|
||||
// CHECK:STDOUT: impl_decl @impl.1 [concrete] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %Simple.ref: %Simple.type.3b3 = name_ref Simple, file.%Simple.decl [concrete = constants.%Simple.generic]
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %Simple.type: type = facet_type <@Simple, @Simple(constants.%C)> [concrete = constants.%Simple.type.51f]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness.loc14: <witness> = impl_witness () [template = constants.%impl_witness.1bc]
|
||||
// CHECK:STDOUT: impl_decl @impl.2 [template] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [template = constants.%C]
|
||||
// CHECK:STDOUT: %WithAssocFn.ref: %WithAssocFn.type.509 = name_ref WithAssocFn, file.%WithAssocFn.decl [template = constants.%WithAssocFn.generic]
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %WithAssocFn.type: type = facet_type <@WithAssocFn, @WithAssocFn(constants.%C)> [template = constants.%WithAssocFn.type.683]
|
||||
// CHECK:STDOUT: %impl_witness.loc14: <witness> = impl_witness () [concrete = constants.%impl_witness.1bc]
|
||||
// CHECK:STDOUT: impl_decl @impl.2 [concrete] {} {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %WithAssocFn.ref: %WithAssocFn.type.509 = name_ref WithAssocFn, file.%WithAssocFn.decl [concrete = constants.%WithAssocFn.generic]
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %WithAssocFn.type: type = facet_type <@WithAssocFn, @WithAssocFn(constants.%C)> [concrete = constants.%WithAssocFn.type.683]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness.loc15: <witness> = impl_witness (@impl.2.%F.decl) [template = constants.%impl_witness.49b]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %impl_witness.loc15: <witness> = impl_witness (@impl.2.%F.decl) [concrete = constants.%impl_witness.49b]
|
||||
// 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:
|
||||
@@ -291,8 +291,8 @@ fn G(T:! Generic(B)) {
|
||||
// CHECK:STDOUT: fn @F.2() -> %return.param_patt: %X {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %.loc17_15.1: %empty_struct_type = struct_literal ()
|
||||
// CHECK:STDOUT: %.loc17_15.2: init %X = class_init (), %return [template = constants.%X.val]
|
||||
// CHECK:STDOUT: %.loc17_16: init %X = converted %.loc17_15.1, %.loc17_15.2 [template = constants.%X.val]
|
||||
// CHECK:STDOUT: %.loc17_15.2: init %X = class_init (), %return [concrete = constants.%X.val]
|
||||
// CHECK:STDOUT: %.loc17_16: init %X = converted %.loc17_15.1, %.loc17_15.2 [concrete = constants.%X.val]
|
||||
// CHECK:STDOUT: return %.loc17_16 to %return
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -317,7 +317,7 @@ fn G(T:! Generic(B)) {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn(%T.param_patt: %Simple.type.51f) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %Receive.ref: %Receive.type = name_ref Receive, file.%Receive.decl [template = constants.%Receive]
|
||||
// CHECK:STDOUT: %Receive.ref: %Receive.type = name_ref Receive, file.%Receive.decl [concrete = constants.%Receive]
|
||||
// CHECK:STDOUT: %T.ref: %Simple.type.51f = name_ref T, %T.loc25_9.1 [symbolic = %T.loc25_9.2 (constants.%T.692)]
|
||||
// CHECK:STDOUT: %Receive.specific_fn.loc26_3.1: <specific function> = specific_function %Receive.ref, @Receive(constants.%T.692) [symbolic = %Receive.specific_fn.loc26_3.2 (constants.%Receive.specific_fn)]
|
||||
// CHECK:STDOUT: %Receive.call: init %empty_tuple.type = call %Receive.specific_fn.loc26_3.1()
|
||||
@@ -391,64 +391,64 @@ fn G(T:! Generic(B)) {
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %T.8b3: type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt.e01: type = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Generic.type.c21: type = generic_interface_type @Generic [template]
|
||||
// CHECK:STDOUT: %Generic.generic: %Generic.type.c21 = struct_value () [template]
|
||||
// CHECK:STDOUT: %Generic.type.c21: type = generic_interface_type @Generic [concrete]
|
||||
// CHECK:STDOUT: %Generic.generic: %Generic.type.c21 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Generic.type.91c: type = facet_type <@Generic, @Generic(%T.8b3)> [symbolic]
|
||||
// CHECK:STDOUT: %Self: %Generic.type.91c = bind_symbolic_name Self, 1 [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: %Generic.type.c7c: type = facet_type <@Generic, @Generic(%A)> [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: %Generic.type.c7c: type = facet_type <@Generic, @Generic(%A)> [concrete]
|
||||
// CHECK:STDOUT: %T.a53: %Generic.type.c7c = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt.3e0: %Generic.type.c7c = 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: %Generic.type.4ce: type = facet_type <@Generic, @Generic(%B)> [template]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Generic.type.4ce: type = facet_type <@Generic, @Generic(%B)> [concrete]
|
||||
// CHECK:STDOUT: %T.bae: %Generic.type.4ce = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt.53a: %Generic.type.4ce = symbolic_binding_pattern T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %G.type: type = fn_type @G [template]
|
||||
// CHECK:STDOUT: %G: %G.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %G.type: type = fn_type @G [concrete]
|
||||
// CHECK:STDOUT: %G: %G.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: .Generic = %Generic.decl
|
||||
// CHECK:STDOUT: .A = %A.decl
|
||||
// CHECK:STDOUT: .B = %B.decl
|
||||
// CHECK:STDOUT: .F = %F.decl
|
||||
// CHECK:STDOUT: .G = %G.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Generic.decl: %Generic.type.c21 = interface_decl @Generic [template = constants.%Generic.generic] {
|
||||
// CHECK:STDOUT: %Generic.decl: %Generic.type.c21 = interface_decl @Generic [concrete = constants.%Generic.generic] {
|
||||
// CHECK:STDOUT: %T.patt.loc4_19.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc4_19.2 (constants.%T.patt.e01)]
|
||||
// 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.e01)]
|
||||
// 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.8b3)]
|
||||
// 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: %F.decl: %F.type = fn_decl @F [template = constants.%F] {
|
||||
// CHECK:STDOUT: %A.decl: type = class_decl @A [concrete = constants.%A] {} {}
|
||||
// CHECK:STDOUT: %B.decl: type = class_decl @B [concrete = constants.%B] {} {}
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {
|
||||
// CHECK:STDOUT: %T.patt.loc9_6.1: %Generic.type.c7c = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc9_6.2 (constants.%T.patt.3e0)]
|
||||
// CHECK:STDOUT: %T.param_patt: %Generic.type.c7c = value_param_pattern %T.patt.loc9_6.1, runtime_param<none> [symbolic = %T.patt.loc9_6.2 (constants.%T.patt.3e0)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.param: %Generic.type.c7c = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %.loc9: type = splice_block %Generic.type [template = constants.%Generic.type.c7c] {
|
||||
// CHECK:STDOUT: %Generic.ref: %Generic.type.c21 = name_ref Generic, file.%Generic.decl [template = constants.%Generic.generic]
|
||||
// CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [template = constants.%A]
|
||||
// CHECK:STDOUT: %Generic.type: type = facet_type <@Generic, @Generic(constants.%A)> [template = constants.%Generic.type.c7c]
|
||||
// CHECK:STDOUT: %.loc9: type = splice_block %Generic.type [concrete = constants.%Generic.type.c7c] {
|
||||
// CHECK:STDOUT: %Generic.ref: %Generic.type.c21 = name_ref Generic, file.%Generic.decl [concrete = constants.%Generic.generic]
|
||||
// CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A]
|
||||
// CHECK:STDOUT: %Generic.type: type = facet_type <@Generic, @Generic(constants.%A)> [concrete = constants.%Generic.type.c7c]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %T.loc9_6.1: %Generic.type.c7c = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc9_6.2 (constants.%T.a53)]
|
||||
// CHECK:STDOUT: }
|
||||
// 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: %T.patt.loc10_6.1: %Generic.type.4ce = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc10_6.2 (constants.%T.patt.53a)]
|
||||
// CHECK:STDOUT: %T.param_patt: %Generic.type.4ce = value_param_pattern %T.patt.loc10_6.1, runtime_param<none> [symbolic = %T.patt.loc10_6.2 (constants.%T.patt.53a)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.param: %Generic.type.4ce = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %.loc10: type = splice_block %Generic.type [template = constants.%Generic.type.4ce] {
|
||||
// CHECK:STDOUT: %Generic.ref: %Generic.type.c21 = name_ref Generic, file.%Generic.decl [template = constants.%Generic.generic]
|
||||
// CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [template = constants.%B]
|
||||
// CHECK:STDOUT: %Generic.type: type = facet_type <@Generic, @Generic(constants.%B)> [template = constants.%Generic.type.4ce]
|
||||
// CHECK:STDOUT: %.loc10: type = splice_block %Generic.type [concrete = constants.%Generic.type.4ce] {
|
||||
// CHECK:STDOUT: %Generic.ref: %Generic.type.c21 = name_ref Generic, file.%Generic.decl [concrete = constants.%Generic.generic]
|
||||
// CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [concrete = constants.%B]
|
||||
// CHECK:STDOUT: %Generic.type: type = facet_type <@Generic, @Generic(constants.%B)> [concrete = constants.%Generic.type.4ce]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %T.loc10_6.1: %Generic.type.4ce = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc10_6.2 (constants.%T.bae)]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -472,7 +472,7 @@ fn G(T:! Generic(B)) {
|
||||
// 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:
|
||||
@@ -480,7 +480,7 @@ fn G(T:! Generic(B)) {
|
||||
// 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:
|
||||
@@ -502,9 +502,9 @@ fn G(T:! Generic(B)) {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn(%T.param_patt: %Generic.type.4ce) {
|
||||
// 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: %T.ref: %Generic.type.4ce = name_ref T, %T.loc10_6.1 [symbolic = %T.loc10_6.2 (constants.%T.bae)]
|
||||
// CHECK:STDOUT: %.loc26: %Generic.type.c7c = converted %T.ref, <error> [template = <error>]
|
||||
// CHECK:STDOUT: %.loc26: %Generic.type.c7c = converted %T.ref, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
+17
-17
@@ -19,48 +19,48 @@ interface I {
|
||||
// CHECK:STDOUT: --- generic_binding_after_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: %T: type = bind_symbolic_name T, 1 [symbolic]
|
||||
// CHECK:STDOUT: %T.patt: type = symbolic_binding_pattern T, 1 [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: %assoc1: %I.assoc_type = assoc_entity element1, @I.%U [template]
|
||||
// CHECK:STDOUT: %G.type: type = fn_type @G [template]
|
||||
// CHECK:STDOUT: %G: %G.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %assoc2: %I.assoc_type = assoc_entity element2, @I.%G.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: %assoc1: %I.assoc_type = assoc_entity element1, @I.%U [concrete]
|
||||
// CHECK:STDOUT: %G.type: type = fn_type @G [concrete]
|
||||
// CHECK:STDOUT: %G: %G.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %assoc2: %I.assoc_type = assoc_entity element2, @I.%G.decl [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: %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: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {
|
||||
// CHECK:STDOUT: %T.patt.loc12_8.2: type = symbolic_binding_pattern T, 1 [symbolic = %T.patt.loc12_8.1 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc12_8.2, runtime_param<none> [symbolic = %T.patt.loc12_8.1 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.param: type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %T.loc12_8.2: type = bind_symbolic_name T, 1, %T.param [symbolic = %T.loc12_8.1 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %U: type = assoc_const_decl @U [template] {
|
||||
// CHECK:STDOUT: %assoc1: %I.assoc_type = assoc_entity element1, @I.%U [template = constants.%assoc1]
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %U: type = assoc_const_decl @U [concrete] {
|
||||
// CHECK:STDOUT: %assoc1: %I.assoc_type = assoc_entity element1, @I.%U [concrete = constants.%assoc1]
|
||||
// CHECK:STDOUT: }
|
||||
// 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: %T.patt.loc16_8.2: type = symbolic_binding_pattern T, 1 [symbolic = %T.patt.loc16_8.1 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc16_8.2, runtime_param<none> [symbolic = %T.patt.loc16_8.1 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.param: type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %T.loc16_8.2: type = bind_symbolic_name T, 1, %T.param [symbolic = %T.loc16_8.1 (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %assoc2: %I.assoc_type = assoc_entity element2, %G.decl [template = constants.%assoc2]
|
||||
// CHECK:STDOUT: %assoc2: %I.assoc_type = assoc_entity element2, %G.decl [concrete = constants.%assoc2]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
|
||||
@@ -32,8 +32,8 @@ impl C as AddWith(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: %AddWith.type.b35: type = generic_interface_type @AddWith [template]
|
||||
// CHECK:STDOUT: %AddWith.generic: %AddWith.type.b35 = struct_value () [template]
|
||||
// CHECK:STDOUT: %AddWith.type.b35: type = generic_interface_type @AddWith [concrete]
|
||||
// CHECK:STDOUT: %AddWith.generic: %AddWith.type.b35 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %AddWith.type.bc7: type = facet_type <@AddWith, @AddWith(%T)> [symbolic]
|
||||
// CHECK:STDOUT: %Self: %AddWith.type.bc7 = bind_symbolic_name Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F, @AddWith(%T) [symbolic]
|
||||
@@ -43,10 +43,10 @@ impl C as AddWith(C) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .AddWith = %AddWith.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %AddWith.decl: %AddWith.type.b35 = interface_decl @AddWith [template = constants.%AddWith.generic] {
|
||||
// CHECK:STDOUT: %AddWith.decl: %AddWith.type.b35 = interface_decl @AddWith [concrete = constants.%AddWith.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: } {
|
||||
@@ -95,11 +95,11 @@ impl C as AddWith(C) {
|
||||
// CHECK:STDOUT: --- b.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: %AddWith.type.b35: type = generic_interface_type @AddWith [template]
|
||||
// CHECK:STDOUT: %AddWith.generic: %AddWith.type.b35 = 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: %AddWith.type.b35: type = generic_interface_type @AddWith [concrete]
|
||||
// CHECK:STDOUT: %AddWith.generic: %AddWith.type.b35 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %AddWith.type.bc7: type = facet_type <@AddWith, @AddWith(%T)> [symbolic]
|
||||
// CHECK:STDOUT: %Self: %AddWith.type.bc7 = bind_symbolic_name Self, 1 [symbolic]
|
||||
@@ -108,19 +108,19 @@ impl C as AddWith(C) {
|
||||
// CHECK:STDOUT: %F.be3: %F.type.fbc = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %AddWith.assoc_type.73f: type = assoc_entity_type %AddWith.type.bc7 [symbolic]
|
||||
// CHECK:STDOUT: %assoc0.80d: %AddWith.assoc_type.73f = assoc_entity element0, imports.%Main.import_ref.0c5 [symbolic]
|
||||
// CHECK:STDOUT: %AddWith.type.e8e: type = facet_type <@AddWith, @AddWith(%C)> [template]
|
||||
// CHECK:STDOUT: %F.type.cd2: type = fn_type @F.1, @AddWith(%C) [template]
|
||||
// CHECK:STDOUT: %F.b58: %F.type.cd2 = struct_value () [template]
|
||||
// CHECK:STDOUT: %AddWith.assoc_type.ace: type = assoc_entity_type %AddWith.type.e8e [template]
|
||||
// CHECK:STDOUT: %assoc0.a9f: %AddWith.assoc_type.ace = assoc_entity element0, imports.%Main.import_ref.0c5 [template]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%F.decl) [template]
|
||||
// CHECK:STDOUT: %F.type.c09: type = fn_type @F.2 [template]
|
||||
// CHECK:STDOUT: %F.e62: %F.type.c09 = struct_value () [template]
|
||||
// CHECK:STDOUT: %AddWith.facet: %AddWith.type.e8e = facet_value %C, %impl_witness [template]
|
||||
// CHECK:STDOUT: %AddWith.type.e8e: type = facet_type <@AddWith, @AddWith(%C)> [concrete]
|
||||
// CHECK:STDOUT: %F.type.cd2: type = fn_type @F.1, @AddWith(%C) [concrete]
|
||||
// CHECK:STDOUT: %F.b58: %F.type.cd2 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %AddWith.assoc_type.ace: type = assoc_entity_type %AddWith.type.e8e [concrete]
|
||||
// CHECK:STDOUT: %assoc0.a9f: %AddWith.assoc_type.ace = assoc_entity element0, imports.%Main.import_ref.0c5 [concrete]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%F.decl) [concrete]
|
||||
// CHECK:STDOUT: %F.type.c09: type = fn_type @F.2 [concrete]
|
||||
// CHECK:STDOUT: %F.e62: %F.type.c09 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %AddWith.facet: %AddWith.type.e8e = facet_value %C, %impl_witness [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Main.AddWith: %AddWith.type.b35 = import_ref Main//a, AddWith, loaded [template = constants.%AddWith.generic]
|
||||
// CHECK:STDOUT: %Main.AddWith: %AddWith.type.b35 = import_ref Main//a, AddWith, loaded [concrete = constants.%AddWith.generic]
|
||||
// CHECK:STDOUT: %Main.import_ref.f6b058.1: type = import_ref Main//a, loc4_19, loaded [symbolic = @AddWith.%T (constants.%T)]
|
||||
// CHECK:STDOUT: %Main.import_ref.476 = import_ref Main//a, inst26 [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.550 = import_ref Main//a, loc5_9, unloaded
|
||||
@@ -131,19 +131,19 @@ impl C as AddWith(C) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .AddWith = imports.%Main.AddWith
|
||||
// CHECK:STDOUT: .C = %C.decl
|
||||
// CHECK:STDOUT: }
|
||||
// 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.loc7_6: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %AddWith.ref: %AddWith.type.b35 = name_ref AddWith, imports.%Main.AddWith [template = constants.%AddWith.generic]
|
||||
// CHECK:STDOUT: %C.ref.loc7_19: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %AddWith.type: type = facet_type <@AddWith, @AddWith(constants.%C)> [template = constants.%AddWith.type.e8e]
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl [concrete] {} {
|
||||
// CHECK:STDOUT: %C.ref.loc7_6: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %AddWith.ref: %AddWith.type.b35 = name_ref AddWith, imports.%Main.AddWith [concrete = constants.%AddWith.generic]
|
||||
// CHECK:STDOUT: %C.ref.loc7_19: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %AddWith.type: type = facet_type <@AddWith, @AddWith(constants.%C)> [concrete = constants.%AddWith.type.e8e]
|
||||
// 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 @AddWith(imports.%Main.import_ref.f6b058.1: type) [from "a.carbon"] {
|
||||
@@ -167,7 +167,7 @@ impl C as AddWith(C) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl: %C.ref.loc7_6 as %AddWith.type {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.c09 = fn_decl @F.2 [template = constants.%F.e62] {} {}
|
||||
// CHECK:STDOUT: %F.decl: %F.type.c09 = fn_decl @F.2 [concrete = constants.%F.e62] {} {}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .F = %F.decl
|
||||
@@ -175,7 +175,7 @@ impl C as AddWith(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:
|
||||
|
||||
@@ -51,22 +51,22 @@ interface A(T: type) {}
|
||||
// CHECK:STDOUT: --- params.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %NotGenericNoParams.type: type = facet_type <@NotGenericNoParams> [template]
|
||||
// CHECK:STDOUT: %NotGenericNoParams.type: type = facet_type <@NotGenericNoParams> [concrete]
|
||||
// CHECK:STDOUT: %Self.238: %NotGenericNoParams.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %NotGenericButParams.type.f26: type = generic_interface_type @NotGenericButParams [template]
|
||||
// CHECK:STDOUT: %NotGenericButParams.generic: %NotGenericButParams.type.f26 = struct_value () [template]
|
||||
// CHECK:STDOUT: %NotGenericButParams.type.014: type = facet_type <@NotGenericButParams> [template]
|
||||
// CHECK:STDOUT: %NotGenericButParams.type.f26: type = generic_interface_type @NotGenericButParams [concrete]
|
||||
// CHECK:STDOUT: %NotGenericButParams.generic: %NotGenericButParams.type.f26 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %NotGenericButParams.type.014: type = facet_type <@NotGenericButParams> [concrete]
|
||||
// CHECK:STDOUT: %Self.43b: %NotGenericButParams.type.014 = 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: %GenericAndParams.type.cde: type = generic_interface_type @GenericAndParams.1 [template]
|
||||
// CHECK:STDOUT: %GenericAndParams.generic.827: %GenericAndParams.type.cde = struct_value () [template]
|
||||
// CHECK:STDOUT: %GenericAndParams.type.cde: type = generic_interface_type @GenericAndParams.1 [concrete]
|
||||
// CHECK:STDOUT: %GenericAndParams.generic.827: %GenericAndParams.type.cde = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %GenericAndParams.type.73e: type = facet_type <@GenericAndParams.1, @GenericAndParams.1(%T)> [symbolic]
|
||||
// CHECK:STDOUT: %Self.2f4: %GenericAndParams.type.73e = bind_symbolic_name Self, 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.f2e: type = class_type @C, @C(%T) [symbolic]
|
||||
// CHECK:STDOUT: %GenericNoParams.type.f90: type = facet_type <@GenericNoParams> [template]
|
||||
// CHECK:STDOUT: %GenericNoParams.type.f90: type = facet_type <@GenericNoParams> [concrete]
|
||||
// CHECK:STDOUT: %GenericNoParams.type.b79: type = facet_type <@GenericNoParams, @GenericNoParams(%T)> [symbolic]
|
||||
// CHECK:STDOUT: %Self.0f6: %GenericNoParams.type.b79 = bind_symbolic_name Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: %U: type = bind_symbolic_name U, 1 [symbolic]
|
||||
@@ -75,79 +75,79 @@ interface A(T: type) {}
|
||||
// CHECK:STDOUT: %GenericAndParams.generic.2ec: %GenericAndParams.type.597 = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %GenericAndParams.type.d96: type = facet_type <@GenericAndParams.2, @GenericAndParams.2(%T, %U)> [symbolic]
|
||||
// CHECK:STDOUT: %Self.37a: %GenericAndParams.type.d96 = bind_symbolic_name Self, 2 [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: %impl_witness: <witness> = impl_witness () [template]
|
||||
// CHECK:STDOUT: %GenericAndParams.type.4b6: type = facet_type <@GenericAndParams.1, @GenericAndParams.1(%X)> [template]
|
||||
// CHECK:STDOUT: %C.fac: type = class_type @C, @C(%X) [template]
|
||||
// CHECK:STDOUT: %GenericAndParams.type.425: type = generic_interface_type @GenericAndParams.2, @C(%X) [template]
|
||||
// CHECK:STDOUT: %GenericAndParams.generic.b50: %GenericAndParams.type.425 = struct_value () [template]
|
||||
// CHECK:STDOUT: %GenericAndParams.type.79c: type = facet_type <@GenericAndParams.2, @GenericAndParams.2(%X, %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: %impl_witness: <witness> = impl_witness () [concrete]
|
||||
// CHECK:STDOUT: %GenericAndParams.type.4b6: type = facet_type <@GenericAndParams.1, @GenericAndParams.1(%X)> [concrete]
|
||||
// CHECK:STDOUT: %C.fac: type = class_type @C, @C(%X) [concrete]
|
||||
// CHECK:STDOUT: %GenericAndParams.type.425: type = generic_interface_type @GenericAndParams.2, @C(%X) [concrete]
|
||||
// CHECK:STDOUT: %GenericAndParams.generic.b50: %GenericAndParams.type.425 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %GenericAndParams.type.79c: type = facet_type <@GenericAndParams.2, @GenericAndParams.2(%X, %X)> [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .NotGenericNoParams = %NotGenericNoParams.decl
|
||||
// CHECK:STDOUT: .NotGenericButParams = %NotGenericButParams.decl
|
||||
// CHECK:STDOUT: .GenericAndParams = %GenericAndParams.decl
|
||||
// CHECK:STDOUT: .C = %C.decl
|
||||
// CHECK:STDOUT: .X = %X.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %NotGenericNoParams.decl: type = interface_decl @NotGenericNoParams [template = constants.%NotGenericNoParams.type] {} {}
|
||||
// CHECK:STDOUT: %NotGenericButParams.decl: %NotGenericButParams.type.f26 = interface_decl @NotGenericButParams [template = constants.%NotGenericButParams.generic] {} {}
|
||||
// CHECK:STDOUT: %GenericAndParams.decl: %GenericAndParams.type.cde = interface_decl @GenericAndParams.1 [template = constants.%GenericAndParams.generic.827] {
|
||||
// CHECK:STDOUT: %NotGenericNoParams.decl: type = interface_decl @NotGenericNoParams [concrete = constants.%NotGenericNoParams.type] {} {}
|
||||
// CHECK:STDOUT: %NotGenericButParams.decl: %NotGenericButParams.type.f26 = interface_decl @NotGenericButParams [concrete = constants.%NotGenericButParams.generic] {} {}
|
||||
// CHECK:STDOUT: %GenericAndParams.decl: %GenericAndParams.type.cde = interface_decl @GenericAndParams.1 [concrete = constants.%GenericAndParams.generic.827] {
|
||||
// CHECK:STDOUT: %T.patt.loc6_28.1: type = symbolic_binding_pattern T, 0 [symbolic = %T.patt.loc6_28.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: %T.param_patt: type = value_param_pattern %T.patt.loc6_28.1, runtime_param<none> [symbolic = %T.patt.loc6_28.2 (constants.%T.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.param: type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %T.loc6_28.1: type = bind_symbolic_name T, 0, %T.param [symbolic = %T.loc6_28.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.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: %X.decl: type = class_decl @X [template = constants.%X] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl.1 [template] {} {
|
||||
// CHECK:STDOUT: %X.ref: type = name_ref X, file.%X.decl [template = constants.%X]
|
||||
// CHECK:STDOUT: %NotGenericNoParams.ref: type = name_ref NotGenericNoParams, file.%NotGenericNoParams.decl [template = constants.%NotGenericNoParams.type]
|
||||
// CHECK:STDOUT: %X.decl: type = class_decl @X [concrete = constants.%X] {} {}
|
||||
// CHECK:STDOUT: impl_decl @impl.1 [concrete] {} {
|
||||
// CHECK:STDOUT: %X.ref: type = name_ref X, file.%X.decl [concrete = constants.%X]
|
||||
// CHECK:STDOUT: %NotGenericNoParams.ref: type = name_ref NotGenericNoParams, file.%NotGenericNoParams.decl [concrete = constants.%NotGenericNoParams.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness.loc14: <witness> = impl_witness () [template = constants.%impl_witness]
|
||||
// CHECK:STDOUT: impl_decl @impl.2 [template] {} {
|
||||
// CHECK:STDOUT: %X.ref: type = name_ref X, file.%X.decl [template = constants.%X]
|
||||
// CHECK:STDOUT: %NotGenericButParams.ref: %NotGenericButParams.type.f26 = name_ref NotGenericButParams, file.%NotGenericButParams.decl [template = constants.%NotGenericButParams.generic]
|
||||
// CHECK:STDOUT: %NotGenericButParams.type: type = facet_type <@NotGenericButParams> [template = constants.%NotGenericButParams.type.014]
|
||||
// CHECK:STDOUT: %impl_witness.loc14: <witness> = impl_witness () [concrete = constants.%impl_witness]
|
||||
// CHECK:STDOUT: impl_decl @impl.2 [concrete] {} {
|
||||
// CHECK:STDOUT: %X.ref: type = name_ref X, file.%X.decl [concrete = constants.%X]
|
||||
// CHECK:STDOUT: %NotGenericButParams.ref: %NotGenericButParams.type.f26 = name_ref NotGenericButParams, file.%NotGenericButParams.decl [concrete = constants.%NotGenericButParams.generic]
|
||||
// CHECK:STDOUT: %NotGenericButParams.type: type = facet_type <@NotGenericButParams> [concrete = constants.%NotGenericButParams.type.014]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness.loc15: <witness> = impl_witness () [template = constants.%impl_witness]
|
||||
// CHECK:STDOUT: impl_decl @impl.3 [template] {} {
|
||||
// CHECK:STDOUT: %X.ref.loc16_6: type = name_ref X, file.%X.decl [template = constants.%X]
|
||||
// CHECK:STDOUT: %GenericAndParams.ref: %GenericAndParams.type.cde = name_ref GenericAndParams, file.%GenericAndParams.decl [template = constants.%GenericAndParams.generic.827]
|
||||
// CHECK:STDOUT: %X.ref.loc16_28: type = name_ref X, file.%X.decl [template = constants.%X]
|
||||
// CHECK:STDOUT: %GenericAndParams.type: type = facet_type <@GenericAndParams.1, @GenericAndParams.1(constants.%X)> [template = constants.%GenericAndParams.type.4b6]
|
||||
// CHECK:STDOUT: %impl_witness.loc15: <witness> = impl_witness () [concrete = constants.%impl_witness]
|
||||
// CHECK:STDOUT: impl_decl @impl.3 [concrete] {} {
|
||||
// CHECK:STDOUT: %X.ref.loc16_6: type = name_ref X, file.%X.decl [concrete = constants.%X]
|
||||
// CHECK:STDOUT: %GenericAndParams.ref: %GenericAndParams.type.cde = name_ref GenericAndParams, file.%GenericAndParams.decl [concrete = constants.%GenericAndParams.generic.827]
|
||||
// CHECK:STDOUT: %X.ref.loc16_28: type = name_ref X, file.%X.decl [concrete = constants.%X]
|
||||
// CHECK:STDOUT: %GenericAndParams.type: type = facet_type <@GenericAndParams.1, @GenericAndParams.1(constants.%X)> [concrete = constants.%GenericAndParams.type.4b6]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness.loc16: <witness> = impl_witness () [template = constants.%impl_witness]
|
||||
// CHECK:STDOUT: impl_decl @impl.4 [template] {} {
|
||||
// CHECK:STDOUT: %X.ref.loc17_6: type = name_ref X, file.%X.decl [template = constants.%X]
|
||||
// CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [template = constants.%C.generic]
|
||||
// CHECK:STDOUT: %X.ref.loc17_13: type = name_ref X, file.%X.decl [template = constants.%X]
|
||||
// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%X) [template = constants.%C.fac]
|
||||
// CHECK:STDOUT: %GenericNoParams.ref: type = name_ref GenericNoParams, @C.%GenericNoParams.decl [template = constants.%GenericNoParams.type.f90]
|
||||
// CHECK:STDOUT: %impl_witness.loc16: <witness> = impl_witness () [concrete = constants.%impl_witness]
|
||||
// CHECK:STDOUT: impl_decl @impl.4 [concrete] {} {
|
||||
// CHECK:STDOUT: %X.ref.loc17_6: type = name_ref X, file.%X.decl [concrete = constants.%X]
|
||||
// CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [concrete = constants.%C.generic]
|
||||
// CHECK:STDOUT: %X.ref.loc17_13: type = name_ref X, file.%X.decl [concrete = constants.%X]
|
||||
// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%X) [concrete = constants.%C.fac]
|
||||
// CHECK:STDOUT: %GenericNoParams.ref: type = name_ref GenericNoParams, @C.%GenericNoParams.decl [concrete = constants.%GenericNoParams.type.f90]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness.loc17: <witness> = impl_witness () [template = constants.%impl_witness]
|
||||
// CHECK:STDOUT: impl_decl @impl.5 [template] {} {
|
||||
// CHECK:STDOUT: %X.ref.loc18_6: type = name_ref X, file.%X.decl [template = constants.%X]
|
||||
// CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [template = constants.%C.generic]
|
||||
// CHECK:STDOUT: %X.ref.loc18_13: type = name_ref X, file.%X.decl [template = constants.%X]
|
||||
// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%X) [template = constants.%C.fac]
|
||||
// CHECK:STDOUT: %.loc18: %GenericAndParams.type.425 = specific_constant @C.%GenericAndParams.decl, @C(constants.%X) [template = constants.%GenericAndParams.generic.b50]
|
||||
// CHECK:STDOUT: %GenericAndParams.ref: %GenericAndParams.type.425 = name_ref GenericAndParams, %.loc18 [template = constants.%GenericAndParams.generic.b50]
|
||||
// CHECK:STDOUT: %X.ref.loc18_33: type = name_ref X, file.%X.decl [template = constants.%X]
|
||||
// CHECK:STDOUT: %GenericAndParams.type: type = facet_type <@GenericAndParams.2, @GenericAndParams.2(constants.%X, constants.%X)> [template = constants.%GenericAndParams.type.79c]
|
||||
// CHECK:STDOUT: %impl_witness.loc17: <witness> = impl_witness () [concrete = constants.%impl_witness]
|
||||
// CHECK:STDOUT: impl_decl @impl.5 [concrete] {} {
|
||||
// CHECK:STDOUT: %X.ref.loc18_6: type = name_ref X, file.%X.decl [concrete = constants.%X]
|
||||
// CHECK:STDOUT: %C.ref: %C.type = name_ref C, file.%C.decl [concrete = constants.%C.generic]
|
||||
// CHECK:STDOUT: %X.ref.loc18_13: type = name_ref X, file.%X.decl [concrete = constants.%X]
|
||||
// CHECK:STDOUT: %C: type = class_type @C, @C(constants.%X) [concrete = constants.%C.fac]
|
||||
// CHECK:STDOUT: %.loc18: %GenericAndParams.type.425 = specific_constant @C.%GenericAndParams.decl, @C(constants.%X) [concrete = constants.%GenericAndParams.generic.b50]
|
||||
// CHECK:STDOUT: %GenericAndParams.ref: %GenericAndParams.type.425 = name_ref GenericAndParams, %.loc18 [concrete = constants.%GenericAndParams.generic.b50]
|
||||
// CHECK:STDOUT: %X.ref.loc18_33: type = name_ref X, file.%X.decl [concrete = constants.%X]
|
||||
// CHECK:STDOUT: %GenericAndParams.type: type = facet_type <@GenericAndParams.2, @GenericAndParams.2(constants.%X, constants.%X)> [concrete = constants.%GenericAndParams.type.79c]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness.loc18: <witness> = impl_witness () [template = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %impl_witness.loc18: <witness> = impl_witness () [concrete = constants.%impl_witness]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @NotGenericNoParams {
|
||||
@@ -250,7 +250,7 @@ interface A(T: type) {}
|
||||
// CHECK:STDOUT: %GenericAndParams.generic: @C.%GenericAndParams.type (%GenericAndParams.type.597) = struct_value () [symbolic = %GenericAndParams.generic (constants.%GenericAndParams.generic.2ec)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class {
|
||||
// CHECK:STDOUT: %GenericNoParams.decl: type = interface_decl @GenericNoParams [template = constants.%GenericNoParams.type.f90] {} {}
|
||||
// CHECK:STDOUT: %GenericNoParams.decl: type = interface_decl @GenericNoParams [concrete = constants.%GenericNoParams.type.f90] {} {}
|
||||
// CHECK:STDOUT: %GenericAndParams.decl: @C.%GenericAndParams.type (%GenericAndParams.type.597) = interface_decl @GenericAndParams.2 [symbolic = @C.%GenericAndParams.generic (constants.%GenericAndParams.generic.2ec)] {
|
||||
// CHECK:STDOUT: %U.patt.loc10_30.1: type = symbolic_binding_pattern U, 1 [symbolic = %U.patt.loc10_30.2 (constants.%U.patt)]
|
||||
// CHECK:STDOUT: %U.param_patt: type = value_param_pattern %U.patt.loc10_30.1, runtime_param<none> [symbolic = %U.patt.loc10_30.2 (constants.%U.patt)]
|
||||
@@ -258,7 +258,7 @@ interface A(T: type) {}
|
||||
// CHECK:STDOUT: %U.param: type = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %U.loc10_30.1: type = bind_symbolic_name U, 1, %U.param [symbolic = %U.loc10_30.2 (constants.%U)]
|
||||
// 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:
|
||||
@@ -269,7 +269,7 @@ interface A(T: type) {}
|
||||
// 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:
|
||||
@@ -332,17 +332,17 @@ interface A(T: type) {}
|
||||
// CHECK:STDOUT: --- fail_non_generic_implicit_params.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %A.type.495: type = generic_interface_type @A [template]
|
||||
// CHECK:STDOUT: %A.generic: %A.type.495 = struct_value () [template]
|
||||
// CHECK:STDOUT: %A.type.c7f: type = facet_type <@A> [template]
|
||||
// CHECK:STDOUT: %A.type.495: type = generic_interface_type @A [concrete]
|
||||
// CHECK:STDOUT: %A.generic: %A.type.495 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %A.type.c7f: type = facet_type <@A> [concrete]
|
||||
// CHECK:STDOUT: %Self: %A.type.c7f = bind_symbolic_name Self, 0 [symbolic]
|
||||
// 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: %A.type.495 = interface_decl @A [template = constants.%A.generic] {} {}
|
||||
// CHECK:STDOUT: %A.decl: %A.type.495 = interface_decl @A [concrete = constants.%A.generic] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @A {
|
||||
@@ -356,17 +356,17 @@ interface A(T: type) {}
|
||||
// CHECK:STDOUT: --- fail_non_generic_params.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %A.type.495: type = generic_interface_type @A [template]
|
||||
// CHECK:STDOUT: %A.generic: %A.type.495 = struct_value () [template]
|
||||
// CHECK:STDOUT: %A.type.c7f: type = facet_type <@A> [template]
|
||||
// CHECK:STDOUT: %A.type.495: type = generic_interface_type @A [concrete]
|
||||
// CHECK:STDOUT: %A.generic: %A.type.495 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %A.type.c7f: type = facet_type <@A> [concrete]
|
||||
// CHECK:STDOUT: %Self: %A.type.c7f = bind_symbolic_name Self, 0 [symbolic]
|
||||
// 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: %A.type.495 = interface_decl @A [template = constants.%A.generic] {} {}
|
||||
// CHECK:STDOUT: %A.decl: %A.type.495 = interface_decl @A [concrete = constants.%A.generic] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @A {
|
||||
|
||||
+75
-75
@@ -51,43 +51,43 @@ var f: ForwardDeclared* = &f_ref.f;
|
||||
// CHECK:STDOUT: --- a.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.193: %Empty.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Basic.type: type = facet_type <@Basic> [template]
|
||||
// CHECK:STDOUT: %Basic.type: type = facet_type <@Basic> [concrete]
|
||||
// CHECK:STDOUT: %Self.1c7: %Basic.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Basic.assoc_type: type = assoc_entity_type %Basic.type [template]
|
||||
// CHECK:STDOUT: %assoc0.017: %Basic.assoc_type = assoc_entity element0, @Basic.%T [template]
|
||||
// CHECK:STDOUT: %F.type.320: type = fn_type @F.1 [template]
|
||||
// CHECK:STDOUT: %F.952: %F.type.320 = struct_value () [template]
|
||||
// CHECK:STDOUT: %assoc1.9c9: %Basic.assoc_type = assoc_entity element1, @Basic.%F.decl [template]
|
||||
// CHECK:STDOUT: %ForwardDeclared.type: type = facet_type <@ForwardDeclared> [template]
|
||||
// CHECK:STDOUT: %Basic.assoc_type: type = assoc_entity_type %Basic.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0.017: %Basic.assoc_type = assoc_entity element0, @Basic.%T [concrete]
|
||||
// CHECK:STDOUT: %F.type.320: type = fn_type @F.1 [concrete]
|
||||
// CHECK:STDOUT: %F.952: %F.type.320 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %assoc1.9c9: %Basic.assoc_type = assoc_entity element1, @Basic.%F.decl [concrete]
|
||||
// CHECK:STDOUT: %ForwardDeclared.type: type = facet_type <@ForwardDeclared> [concrete]
|
||||
// CHECK:STDOUT: %Self.efa: %ForwardDeclared.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %ForwardDeclared.assoc_type: type = assoc_entity_type %ForwardDeclared.type [template]
|
||||
// CHECK:STDOUT: %assoc0.ec6: %ForwardDeclared.assoc_type = assoc_entity element0, @ForwardDeclared.%T [template]
|
||||
// CHECK:STDOUT: %F.type.505: type = fn_type @F.2 [template]
|
||||
// CHECK:STDOUT: %F.eb5: %F.type.505 = struct_value () [template]
|
||||
// CHECK:STDOUT: %assoc1.02a: %ForwardDeclared.assoc_type = assoc_entity element1, @ForwardDeclared.%F.decl [template]
|
||||
// CHECK:STDOUT: %struct_type.f.2f5: type = struct_type {.f: %ForwardDeclared.type} [template]
|
||||
// CHECK:STDOUT: %ForwardDeclared.assoc_type: type = assoc_entity_type %ForwardDeclared.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0.ec6: %ForwardDeclared.assoc_type = assoc_entity element0, @ForwardDeclared.%T [concrete]
|
||||
// CHECK:STDOUT: %F.type.505: type = fn_type @F.2 [concrete]
|
||||
// CHECK:STDOUT: %F.eb5: %F.type.505 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %assoc1.02a: %ForwardDeclared.assoc_type = assoc_entity element1, @ForwardDeclared.%F.decl [concrete]
|
||||
// CHECK:STDOUT: %struct_type.f.2f5: type = struct_type {.f: %ForwardDeclared.type} [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Empty = %Empty.decl
|
||||
// CHECK:STDOUT: .Basic = %Basic.decl
|
||||
// CHECK:STDOUT: .ForwardDeclared = %ForwardDeclared.decl
|
||||
// CHECK:STDOUT: .f_ref = %f_ref
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Empty.decl: type = interface_decl @Empty [template = constants.%Empty.type] {} {}
|
||||
// CHECK:STDOUT: %Basic.decl: type = interface_decl @Basic [template = constants.%Basic.type] {} {}
|
||||
// CHECK:STDOUT: %ForwardDeclared.decl: type = interface_decl @ForwardDeclared [template = constants.%ForwardDeclared.type] {} {}
|
||||
// CHECK:STDOUT: %Empty.decl: type = interface_decl @Empty [concrete = constants.%Empty.type] {} {}
|
||||
// CHECK:STDOUT: %Basic.decl: type = interface_decl @Basic [concrete = constants.%Basic.type] {} {}
|
||||
// CHECK:STDOUT: %ForwardDeclared.decl: type = interface_decl @ForwardDeclared [concrete = constants.%ForwardDeclared.type] {} {}
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %f_ref.patt: %struct_type.f.2f5 = binding_pattern f_ref
|
||||
// CHECK:STDOUT: %.loc20_1: %struct_type.f.2f5 = var_pattern %f_ref.patt
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %f_ref.var: ref %struct_type.f.2f5 = var f_ref
|
||||
// CHECK:STDOUT: %.loc20_32: type = splice_block %struct_type.f [template = constants.%struct_type.f.2f5] {
|
||||
// CHECK:STDOUT: %ForwardDeclared.ref: type = name_ref ForwardDeclared, %ForwardDeclared.decl [template = constants.%ForwardDeclared.type]
|
||||
// CHECK:STDOUT: %struct_type.f: type = struct_type {.f: %ForwardDeclared.type} [template = constants.%struct_type.f.2f5]
|
||||
// CHECK:STDOUT: %.loc20_32: type = splice_block %struct_type.f [concrete = constants.%struct_type.f.2f5] {
|
||||
// CHECK:STDOUT: %ForwardDeclared.ref: type = name_ref ForwardDeclared, %ForwardDeclared.decl [concrete = constants.%ForwardDeclared.type]
|
||||
// CHECK:STDOUT: %struct_type.f: type = struct_type {.f: %ForwardDeclared.type} [concrete = constants.%struct_type.f.2f5]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %f_ref: ref %struct_type.f.2f5 = bind_name f_ref, %f_ref.var
|
||||
// CHECK:STDOUT: }
|
||||
@@ -102,11 +102,11 @@ var f: ForwardDeclared* = &f_ref.f;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @Basic {
|
||||
// CHECK:STDOUT: %Self: %Basic.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.1c7]
|
||||
// CHECK:STDOUT: %T: type = assoc_const_decl @T.loc8 [template] {
|
||||
// CHECK:STDOUT: %assoc0: %Basic.assoc_type = assoc_entity element0, @Basic.%T [template = constants.%assoc0.017]
|
||||
// CHECK:STDOUT: %T: type = assoc_const_decl @T.loc8 [concrete] {
|
||||
// CHECK:STDOUT: %assoc0: %Basic.assoc_type = assoc_entity element0, @Basic.%T [concrete = constants.%assoc0.017]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %F.decl: %F.type.320 = fn_decl @F.1 [template = constants.%F.952] {} {}
|
||||
// CHECK:STDOUT: %assoc1: %Basic.assoc_type = assoc_entity element1, %F.decl [template = constants.%assoc1.9c9]
|
||||
// CHECK:STDOUT: %F.decl: %F.type.320 = fn_decl @F.1 [concrete = constants.%F.952] {} {}
|
||||
// CHECK:STDOUT: %assoc1: %Basic.assoc_type = assoc_entity element1, %F.decl [concrete = constants.%assoc1.9c9]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -117,11 +117,11 @@ var f: ForwardDeclared* = &f_ref.f;
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @ForwardDeclared {
|
||||
// CHECK:STDOUT: %Self: %ForwardDeclared.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.efa]
|
||||
// CHECK:STDOUT: %T: type = assoc_const_decl @T.loc16 [template] {
|
||||
// CHECK:STDOUT: %assoc0: %ForwardDeclared.assoc_type = assoc_entity element0, @ForwardDeclared.%T [template = constants.%assoc0.ec6]
|
||||
// CHECK:STDOUT: %T: type = assoc_const_decl @T.loc16 [concrete] {
|
||||
// CHECK:STDOUT: %assoc0: %ForwardDeclared.assoc_type = assoc_entity element0, @ForwardDeclared.%T [concrete = constants.%assoc0.ec6]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %F.decl: %F.type.505 = fn_decl @F.2 [template = constants.%F.eb5] {} {}
|
||||
// CHECK:STDOUT: %assoc1: %ForwardDeclared.assoc_type = assoc_entity element1, %F.decl [template = constants.%assoc1.02a]
|
||||
// CHECK:STDOUT: %F.decl: %F.type.505 = fn_decl @F.2 [concrete = constants.%F.eb5] {} {}
|
||||
// CHECK:STDOUT: %assoc1: %ForwardDeclared.assoc_type = assoc_entity element1, %F.decl [concrete = constants.%assoc1.02a]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -157,45 +157,45 @@ var f: ForwardDeclared* = &f_ref.f;
|
||||
// CHECK:STDOUT: --- b.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %Empty.type: type = facet_type <@Empty> [template]
|
||||
// CHECK:STDOUT: %UseEmpty.type: type = fn_type @UseEmpty [template]
|
||||
// CHECK:STDOUT: %UseEmpty: %UseEmpty.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %Basic.type: type = facet_type <@Basic> [template]
|
||||
// CHECK:STDOUT: %UseBasic.type: type = fn_type @UseBasic [template]
|
||||
// CHECK:STDOUT: %UseBasic: %UseBasic.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %ForwardDeclared.type: type = facet_type <@ForwardDeclared> [template]
|
||||
// CHECK:STDOUT: %UseForwardDeclared.type: type = fn_type @UseForwardDeclared [template]
|
||||
// CHECK:STDOUT: %UseForwardDeclared: %UseForwardDeclared.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %Basic.assoc_type: type = assoc_entity_type %Basic.type [template]
|
||||
// CHECK:STDOUT: %assoc0.b26: %Basic.assoc_type = assoc_entity element0, imports.%Main.import_ref.a4a [template]
|
||||
// CHECK:STDOUT: %assoc1.0bf: %Basic.assoc_type = assoc_entity element1, imports.%Main.import_ref.0be [template]
|
||||
// CHECK:STDOUT: %ForwardDeclared.assoc_type: type = assoc_entity_type %ForwardDeclared.type [template]
|
||||
// CHECK:STDOUT: %assoc0.c94: %ForwardDeclared.assoc_type = assoc_entity element0, imports.%Main.import_ref.69a [template]
|
||||
// CHECK:STDOUT: %assoc1.660: %ForwardDeclared.assoc_type = assoc_entity element1, imports.%Main.import_ref.1cc [template]
|
||||
// CHECK:STDOUT: %ptr: type = ptr_type %ForwardDeclared.type [template]
|
||||
// CHECK:STDOUT: %struct_type.f.2f5: type = struct_type {.f: %ForwardDeclared.type} [template]
|
||||
// CHECK:STDOUT: %Empty.type: type = facet_type <@Empty> [concrete]
|
||||
// CHECK:STDOUT: %UseEmpty.type: type = fn_type @UseEmpty [concrete]
|
||||
// CHECK:STDOUT: %UseEmpty: %UseEmpty.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Basic.type: type = facet_type <@Basic> [concrete]
|
||||
// CHECK:STDOUT: %UseBasic.type: type = fn_type @UseBasic [concrete]
|
||||
// CHECK:STDOUT: %UseBasic: %UseBasic.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %ForwardDeclared.type: type = facet_type <@ForwardDeclared> [concrete]
|
||||
// CHECK:STDOUT: %UseForwardDeclared.type: type = fn_type @UseForwardDeclared [concrete]
|
||||
// CHECK:STDOUT: %UseForwardDeclared: %UseForwardDeclared.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Basic.assoc_type: type = assoc_entity_type %Basic.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0.b26: %Basic.assoc_type = assoc_entity element0, imports.%Main.import_ref.a4a [concrete]
|
||||
// CHECK:STDOUT: %assoc1.0bf: %Basic.assoc_type = assoc_entity element1, imports.%Main.import_ref.0be [concrete]
|
||||
// CHECK:STDOUT: %ForwardDeclared.assoc_type: type = assoc_entity_type %ForwardDeclared.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0.c94: %ForwardDeclared.assoc_type = assoc_entity element0, imports.%Main.import_ref.69a [concrete]
|
||||
// CHECK:STDOUT: %assoc1.660: %ForwardDeclared.assoc_type = assoc_entity element1, imports.%Main.import_ref.1cc [concrete]
|
||||
// CHECK:STDOUT: %ptr: type = ptr_type %ForwardDeclared.type [concrete]
|
||||
// CHECK:STDOUT: %struct_type.f.2f5: type = struct_type {.f: %ForwardDeclared.type} [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Main.Empty: type = import_ref Main//a, Empty, loaded [template = constants.%Empty.type]
|
||||
// CHECK:STDOUT: %Main.Basic: type = import_ref Main//a, Basic, loaded [template = constants.%Basic.type]
|
||||
// CHECK:STDOUT: %Main.ForwardDeclared: type = import_ref Main//a, ForwardDeclared, loaded [template = constants.%ForwardDeclared.type]
|
||||
// CHECK:STDOUT: %Main.Empty: type = import_ref Main//a, Empty, loaded [concrete = constants.%Empty.type]
|
||||
// CHECK:STDOUT: %Main.Basic: type = import_ref Main//a, Basic, loaded [concrete = constants.%Basic.type]
|
||||
// CHECK:STDOUT: %Main.ForwardDeclared: type = import_ref Main//a, ForwardDeclared, loaded [concrete = constants.%ForwardDeclared.type]
|
||||
// CHECK:STDOUT: %Main.f_ref: ref %struct_type.f.2f5 = import_ref Main//a, f_ref, loaded
|
||||
// CHECK:STDOUT: %Main.import_ref.cc0 = import_ref Main//a, inst15 [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.37f = import_ref Main//a, inst19 [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.152: %Basic.assoc_type = import_ref Main//a, loc8_8, loaded [template = constants.%assoc0.b26]
|
||||
// CHECK:STDOUT: %Main.import_ref.30b: %Basic.assoc_type = import_ref Main//a, loc9_9, loaded [template = constants.%assoc1.0bf]
|
||||
// CHECK:STDOUT: %Main.import_ref.152: %Basic.assoc_type = import_ref Main//a, loc8_8, loaded [concrete = constants.%assoc0.b26]
|
||||
// CHECK:STDOUT: %Main.import_ref.30b: %Basic.assoc_type = import_ref Main//a, loc9_9, loaded [concrete = constants.%assoc1.0bf]
|
||||
// CHECK:STDOUT: %Main.T.44f = import_ref Main//a, T, unloaded
|
||||
// CHECK:STDOUT: %Main.F.eea = import_ref Main//a, F, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.52b = import_ref Main//a, inst33 [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.de0: %ForwardDeclared.assoc_type = import_ref Main//a, loc16_8, loaded [template = constants.%assoc0.c94]
|
||||
// CHECK:STDOUT: %Main.import_ref.c9c: %ForwardDeclared.assoc_type = import_ref Main//a, loc17_9, loaded [template = constants.%assoc1.660]
|
||||
// CHECK:STDOUT: %Main.import_ref.de0: %ForwardDeclared.assoc_type = import_ref Main//a, loc16_8, loaded [concrete = constants.%assoc0.c94]
|
||||
// CHECK:STDOUT: %Main.import_ref.c9c: %ForwardDeclared.assoc_type = import_ref Main//a, loc17_9, loaded [concrete = constants.%assoc1.660]
|
||||
// CHECK:STDOUT: %Main.T.6ee = import_ref Main//a, T, unloaded
|
||||
// CHECK:STDOUT: %Main.F.5d0 = import_ref Main//a, F, unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Empty = imports.%Main.Empty
|
||||
// CHECK:STDOUT: .Basic = imports.%Main.Basic
|
||||
// CHECK:STDOUT: .ForwardDeclared = imports.%Main.ForwardDeclared
|
||||
@@ -210,50 +210,50 @@ var f: ForwardDeclared* = &f_ref.f;
|
||||
// CHECK:STDOUT: .f = %f
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %default.import = import <none>
|
||||
// CHECK:STDOUT: %UseEmpty.decl: %UseEmpty.type = fn_decl @UseEmpty [template = constants.%UseEmpty] {
|
||||
// CHECK:STDOUT: %UseEmpty.decl: %UseEmpty.type = fn_decl @UseEmpty [concrete = constants.%UseEmpty] {
|
||||
// CHECK:STDOUT: %e.patt: %Empty.type = binding_pattern e
|
||||
// CHECK:STDOUT: %e.param_patt: %Empty.type = value_param_pattern %e.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %e.param: %Empty.type = value_param runtime_param0
|
||||
// CHECK:STDOUT: %Empty.ref: type = name_ref Empty, imports.%Main.Empty [template = constants.%Empty.type]
|
||||
// CHECK:STDOUT: %Empty.ref: type = name_ref Empty, imports.%Main.Empty [concrete = constants.%Empty.type]
|
||||
// CHECK:STDOUT: %e: %Empty.type = bind_name e, %e.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %UseBasic.decl: %UseBasic.type = fn_decl @UseBasic [template = constants.%UseBasic] {
|
||||
// CHECK:STDOUT: %UseBasic.decl: %UseBasic.type = fn_decl @UseBasic [concrete = constants.%UseBasic] {
|
||||
// CHECK:STDOUT: %e.patt: %Basic.type = binding_pattern e
|
||||
// CHECK:STDOUT: %e.param_patt: %Basic.type = value_param_pattern %e.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %e.param: %Basic.type = value_param runtime_param0
|
||||
// CHECK:STDOUT: %Basic.ref: type = name_ref Basic, imports.%Main.Basic [template = constants.%Basic.type]
|
||||
// CHECK:STDOUT: %Basic.ref: type = name_ref Basic, imports.%Main.Basic [concrete = constants.%Basic.type]
|
||||
// CHECK:STDOUT: %e: %Basic.type = bind_name e, %e.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %UseForwardDeclared.decl: %UseForwardDeclared.type = fn_decl @UseForwardDeclared [template = constants.%UseForwardDeclared] {
|
||||
// CHECK:STDOUT: %UseForwardDeclared.decl: %UseForwardDeclared.type = fn_decl @UseForwardDeclared [concrete = constants.%UseForwardDeclared] {
|
||||
// CHECK:STDOUT: %f.patt: %ForwardDeclared.type = binding_pattern f
|
||||
// CHECK:STDOUT: %f.param_patt: %ForwardDeclared.type = value_param_pattern %f.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %f.param: %ForwardDeclared.type = value_param runtime_param0
|
||||
// CHECK:STDOUT: %ForwardDeclared.ref: type = name_ref ForwardDeclared, imports.%Main.ForwardDeclared [template = constants.%ForwardDeclared.type]
|
||||
// CHECK:STDOUT: %ForwardDeclared.ref: type = name_ref ForwardDeclared, imports.%Main.ForwardDeclared [concrete = constants.%ForwardDeclared.type]
|
||||
// CHECK:STDOUT: %f: %ForwardDeclared.type = bind_name f, %f.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Basic.ref.loc10: type = name_ref Basic, imports.%Main.Basic [template = constants.%Basic.type]
|
||||
// CHECK:STDOUT: %T.ref.loc10: %Basic.assoc_type = name_ref T, imports.%Main.import_ref.152 [template = constants.%assoc0.b26]
|
||||
// CHECK:STDOUT: %UseBasicT: %Basic.assoc_type = bind_alias UseBasicT, imports.%Main.import_ref.152 [template = constants.%assoc0.b26]
|
||||
// CHECK:STDOUT: %Basic.ref.loc11: type = name_ref Basic, imports.%Main.Basic [template = constants.%Basic.type]
|
||||
// CHECK:STDOUT: %F.ref.loc11: %Basic.assoc_type = name_ref F, imports.%Main.import_ref.30b [template = constants.%assoc1.0bf]
|
||||
// CHECK:STDOUT: %UseBasicF: %Basic.assoc_type = bind_alias UseBasicF, imports.%Main.import_ref.30b [template = constants.%assoc1.0bf]
|
||||
// CHECK:STDOUT: %ForwardDeclared.ref.loc13: type = name_ref ForwardDeclared, imports.%Main.ForwardDeclared [template = constants.%ForwardDeclared.type]
|
||||
// CHECK:STDOUT: %T.ref.loc13: %ForwardDeclared.assoc_type = name_ref T, imports.%Main.import_ref.de0 [template = constants.%assoc0.c94]
|
||||
// CHECK:STDOUT: %UseForwardDeclaredT: %ForwardDeclared.assoc_type = bind_alias UseForwardDeclaredT, imports.%Main.import_ref.de0 [template = constants.%assoc0.c94]
|
||||
// CHECK:STDOUT: %ForwardDeclared.ref.loc14: type = name_ref ForwardDeclared, imports.%Main.ForwardDeclared [template = constants.%ForwardDeclared.type]
|
||||
// CHECK:STDOUT: %F.ref.loc14: %ForwardDeclared.assoc_type = name_ref F, imports.%Main.import_ref.c9c [template = constants.%assoc1.660]
|
||||
// CHECK:STDOUT: %UseForwardDeclaredF: %ForwardDeclared.assoc_type = bind_alias UseForwardDeclaredF, imports.%Main.import_ref.c9c [template = constants.%assoc1.660]
|
||||
// CHECK:STDOUT: %Basic.ref.loc10: type = name_ref Basic, imports.%Main.Basic [concrete = constants.%Basic.type]
|
||||
// CHECK:STDOUT: %T.ref.loc10: %Basic.assoc_type = name_ref T, imports.%Main.import_ref.152 [concrete = constants.%assoc0.b26]
|
||||
// CHECK:STDOUT: %UseBasicT: %Basic.assoc_type = bind_alias UseBasicT, imports.%Main.import_ref.152 [concrete = constants.%assoc0.b26]
|
||||
// CHECK:STDOUT: %Basic.ref.loc11: type = name_ref Basic, imports.%Main.Basic [concrete = constants.%Basic.type]
|
||||
// CHECK:STDOUT: %F.ref.loc11: %Basic.assoc_type = name_ref F, imports.%Main.import_ref.30b [concrete = constants.%assoc1.0bf]
|
||||
// CHECK:STDOUT: %UseBasicF: %Basic.assoc_type = bind_alias UseBasicF, imports.%Main.import_ref.30b [concrete = constants.%assoc1.0bf]
|
||||
// CHECK:STDOUT: %ForwardDeclared.ref.loc13: type = name_ref ForwardDeclared, imports.%Main.ForwardDeclared [concrete = constants.%ForwardDeclared.type]
|
||||
// CHECK:STDOUT: %T.ref.loc13: %ForwardDeclared.assoc_type = name_ref T, imports.%Main.import_ref.de0 [concrete = constants.%assoc0.c94]
|
||||
// CHECK:STDOUT: %UseForwardDeclaredT: %ForwardDeclared.assoc_type = bind_alias UseForwardDeclaredT, imports.%Main.import_ref.de0 [concrete = constants.%assoc0.c94]
|
||||
// CHECK:STDOUT: %ForwardDeclared.ref.loc14: type = name_ref ForwardDeclared, imports.%Main.ForwardDeclared [concrete = constants.%ForwardDeclared.type]
|
||||
// CHECK:STDOUT: %F.ref.loc14: %ForwardDeclared.assoc_type = name_ref F, imports.%Main.import_ref.c9c [concrete = constants.%assoc1.660]
|
||||
// CHECK:STDOUT: %UseForwardDeclaredF: %ForwardDeclared.assoc_type = bind_alias UseForwardDeclaredF, imports.%Main.import_ref.c9c [concrete = constants.%assoc1.660]
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %f.patt: %ptr = binding_pattern f
|
||||
// CHECK:STDOUT: %.loc16_1: %ptr = var_pattern %f.patt
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %f.var: ref %ptr = var f
|
||||
// CHECK:STDOUT: %.loc16_23: type = splice_block %ptr [template = constants.%ptr] {
|
||||
// CHECK:STDOUT: %ForwardDeclared.ref.loc16: type = name_ref ForwardDeclared, imports.%Main.ForwardDeclared [template = constants.%ForwardDeclared.type]
|
||||
// CHECK:STDOUT: %ptr: type = ptr_type %ForwardDeclared.type [template = constants.%ptr]
|
||||
// CHECK:STDOUT: %.loc16_23: type = splice_block %ptr [concrete = constants.%ptr] {
|
||||
// CHECK:STDOUT: %ForwardDeclared.ref.loc16: type = name_ref ForwardDeclared, imports.%Main.ForwardDeclared [concrete = constants.%ForwardDeclared.type]
|
||||
// CHECK:STDOUT: %ptr: type = ptr_type %ForwardDeclared.type [concrete = constants.%ptr]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %f: ref %ptr = bind_name f, %f.var
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -151,15 +151,15 @@ private interface Redecl {}
|
||||
// CHECK:STDOUT: --- def.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %Def.type: type = facet_type <@Def> [template]
|
||||
// CHECK:STDOUT: %Def.type: type = facet_type <@Def> [concrete]
|
||||
// CHECK:STDOUT: %Self: %Def.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Def [private] = %Def.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Def.decl: type = interface_decl @Def [template = constants.%Def.type] {} {}
|
||||
// CHECK:STDOUT: %Def.decl: type = interface_decl @Def [concrete = constants.%Def.type] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @Def {
|
||||
@@ -173,16 +173,16 @@ private interface Redecl {}
|
||||
// CHECK:STDOUT: --- forward_with_def.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %ForwardWithDef.type: type = facet_type <@ForwardWithDef> [template]
|
||||
// CHECK:STDOUT: %ForwardWithDef.type: type = facet_type <@ForwardWithDef> [concrete]
|
||||
// CHECK:STDOUT: %Self: %ForwardWithDef.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .ForwardWithDef [private] = %ForwardWithDef.decl.loc4
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %ForwardWithDef.decl.loc4: type = interface_decl @ForwardWithDef [template = constants.%ForwardWithDef.type] {} {}
|
||||
// CHECK:STDOUT: %ForwardWithDef.decl.loc6: type = interface_decl @ForwardWithDef [template = constants.%ForwardWithDef.type] {} {}
|
||||
// CHECK:STDOUT: %ForwardWithDef.decl.loc4: type = interface_decl @ForwardWithDef [concrete = constants.%ForwardWithDef.type] {} {}
|
||||
// CHECK:STDOUT: %ForwardWithDef.decl.loc6: type = interface_decl @ForwardWithDef [concrete = constants.%ForwardWithDef.type] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @ForwardWithDef {
|
||||
@@ -196,35 +196,35 @@ private interface Redecl {}
|
||||
// CHECK:STDOUT: --- forward.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {}
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: --- def.impl.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %Def.type: type = facet_type <@Def> [template]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %Def.type: type = facet_type <@Def> [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: %Test.Def: type = import_ref Test//def, Def, loaded [template = constants.%Def.type]
|
||||
// CHECK:STDOUT: %Test.Def: type = import_ref Test//def, Def, loaded [concrete = constants.%Def.type]
|
||||
// CHECK:STDOUT: %Test.import_ref = import_ref Test//def, inst15 [no loc], unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Def [private] = imports.%Test.Def
|
||||
// CHECK:STDOUT: .F = %F.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Test.import = import Test
|
||||
// CHECK:STDOUT: %default.import = import <none>
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {
|
||||
// CHECK:STDOUT: %i.patt: %Def.type = binding_pattern i
|
||||
// CHECK:STDOUT: %i.param_patt: %Def.type = value_param_pattern %i.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %i.param: %Def.type = value_param runtime_param0
|
||||
// CHECK:STDOUT: %Def.ref: type = name_ref Def, imports.%Test.Def [template = constants.%Def.type]
|
||||
// CHECK:STDOUT: %Def.ref: type = name_ref Def, imports.%Test.Def [concrete = constants.%Def.type]
|
||||
// CHECK:STDOUT: %i: %Def.type = bind_name i, %i.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -243,21 +243,21 @@ private interface Redecl {}
|
||||
// CHECK:STDOUT: --- fail_local_def.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.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: .F = %F.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %default.import = import <none>
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {
|
||||
// CHECK:STDOUT: %i.patt: <error> = binding_pattern i
|
||||
// CHECK:STDOUT: %i.param_patt: <error> = value_param_pattern %i.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %i.param: <error> = value_param runtime_param0
|
||||
// CHECK:STDOUT: %Def.ref: <error> = name_ref Def, <error> [template = <error>]
|
||||
// CHECK:STDOUT: %Def.ref: <error> = name_ref Def, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %i: <error> = bind_name i, %i.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -270,30 +270,30 @@ private interface Redecl {}
|
||||
// CHECK:STDOUT: --- fail_other_def.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
|
||||
// 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: %Test: <namespace> = namespace file.%Test.import, [template] {
|
||||
// CHECK:STDOUT: %Test: <namespace> = namespace file.%Test.import, [concrete] {
|
||||
// CHECK:STDOUT: import Test//def
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Test = imports.%Test
|
||||
// CHECK:STDOUT: .F = %F.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Test.import = import Test
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {
|
||||
// CHECK:STDOUT: %i.patt: <error> = binding_pattern i
|
||||
// CHECK:STDOUT: %i.param_patt: <error> = value_param_pattern %i.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %i.param: <error> = value_param runtime_param0
|
||||
// CHECK:STDOUT: %.1: <error> = splice_block <error> [template = <error>] {
|
||||
// CHECK:STDOUT: %Test.ref: <namespace> = name_ref Test, imports.%Test [template = imports.%Test]
|
||||
// CHECK:STDOUT: %Def.ref: <error> = name_ref Def, <error> [template = <error>]
|
||||
// CHECK:STDOUT: %.1: <error> = splice_block <error> [concrete = <error>] {
|
||||
// CHECK:STDOUT: %Test.ref: <namespace> = name_ref Test, imports.%Test [concrete = imports.%Test]
|
||||
// CHECK:STDOUT: %Def.ref: <error> = name_ref Def, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %i: <error> = bind_name i, %i.param
|
||||
// CHECK:STDOUT: }
|
||||
@@ -307,29 +307,29 @@ private interface Redecl {}
|
||||
// CHECK:STDOUT: --- forward_with_def.impl.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %ForwardWithDef.type: type = facet_type <@ForwardWithDef> [template]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %ForwardWithDef.type: type = facet_type <@ForwardWithDef> [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: %Test.ForwardWithDef: type = import_ref Test//forward_with_def, ForwardWithDef, loaded [template = constants.%ForwardWithDef.type]
|
||||
// CHECK:STDOUT: %Test.ForwardWithDef: type = import_ref Test//forward_with_def, ForwardWithDef, loaded [concrete = constants.%ForwardWithDef.type]
|
||||
// CHECK:STDOUT: %Test.import_ref = import_ref Test//forward_with_def, inst16 [no loc], unloaded
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .ForwardWithDef [private] = imports.%Test.ForwardWithDef
|
||||
// CHECK:STDOUT: .F = %F.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Test.import = import Test
|
||||
// CHECK:STDOUT: %default.import = import <none>
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {
|
||||
// CHECK:STDOUT: %i.patt: %ForwardWithDef.type = binding_pattern i
|
||||
// CHECK:STDOUT: %i.param_patt: %ForwardWithDef.type = value_param_pattern %i.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %i.param: %ForwardWithDef.type = value_param runtime_param0
|
||||
// CHECK:STDOUT: %ForwardWithDef.ref: type = name_ref ForwardWithDef, imports.%Test.ForwardWithDef [template = constants.%ForwardWithDef.type]
|
||||
// CHECK:STDOUT: %ForwardWithDef.ref: type = name_ref ForwardWithDef, imports.%Test.ForwardWithDef [concrete = constants.%ForwardWithDef.type]
|
||||
// CHECK:STDOUT: %i: %ForwardWithDef.type = bind_name i, %i.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -348,21 +348,21 @@ private interface Redecl {}
|
||||
// CHECK:STDOUT: --- fail_local_forward_with_def.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.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: .F = %F.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %default.import = import <none>
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {
|
||||
// CHECK:STDOUT: %i.patt: <error> = binding_pattern i
|
||||
// CHECK:STDOUT: %i.param_patt: <error> = value_param_pattern %i.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %i.param: <error> = value_param runtime_param0
|
||||
// CHECK:STDOUT: %ForwardWithDef.ref: <error> = name_ref ForwardWithDef, <error> [template = <error>]
|
||||
// CHECK:STDOUT: %ForwardWithDef.ref: <error> = name_ref ForwardWithDef, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %i: <error> = bind_name i, %i.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -375,30 +375,30 @@ private interface Redecl {}
|
||||
// CHECK:STDOUT: --- fail_other_forward_with_def.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
|
||||
// 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: %Test: <namespace> = namespace file.%Test.import, [template] {
|
||||
// CHECK:STDOUT: %Test: <namespace> = namespace file.%Test.import, [concrete] {
|
||||
// CHECK:STDOUT: import Test//forward_with_def
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Test = imports.%Test
|
||||
// CHECK:STDOUT: .F = %F.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Test.import = import Test
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {
|
||||
// CHECK:STDOUT: %i.patt: <error> = binding_pattern i
|
||||
// CHECK:STDOUT: %i.param_patt: <error> = value_param_pattern %i.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %i.param: <error> = value_param runtime_param0
|
||||
// CHECK:STDOUT: %.1: <error> = splice_block <error> [template = <error>] {
|
||||
// CHECK:STDOUT: %Test.ref: <namespace> = name_ref Test, imports.%Test [template = imports.%Test]
|
||||
// CHECK:STDOUT: %ForwardWithDef.ref: <error> = name_ref ForwardWithDef, <error> [template = <error>]
|
||||
// CHECK:STDOUT: %.1: <error> = splice_block <error> [concrete = <error>] {
|
||||
// CHECK:STDOUT: %Test.ref: <namespace> = name_ref Test, imports.%Test [concrete = imports.%Test]
|
||||
// CHECK:STDOUT: %ForwardWithDef.ref: <error> = name_ref ForwardWithDef, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %i: <error> = bind_name i, %i.param
|
||||
// CHECK:STDOUT: }
|
||||
@@ -412,30 +412,30 @@ private interface Redecl {}
|
||||
// CHECK:STDOUT: --- fail_todo_forward.impl.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %Forward.type: type = facet_type <@Forward> [template]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Forward.type: type = facet_type <@Forward> [concrete]
|
||||
// CHECK:STDOUT: %Self: %Forward.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .F = %F.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Test.import = import Test
|
||||
// CHECK:STDOUT: %default.import = import <none>
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {
|
||||
// CHECK:STDOUT: %i.patt: <error> = binding_pattern i
|
||||
// CHECK:STDOUT: %i.param_patt: <error> = value_param_pattern %i.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %i.param: <error> = value_param runtime_param0
|
||||
// CHECK:STDOUT: %.loc11: type = splice_block %ptr [template = <error>] {
|
||||
// CHECK:STDOUT: %Forward.ref: <error> = name_ref Forward, <error> [template = <error>]
|
||||
// CHECK:STDOUT: %ptr: type = ptr_type <error> [template = <error>]
|
||||
// CHECK:STDOUT: %.loc11: type = splice_block %ptr [concrete = <error>] {
|
||||
// CHECK:STDOUT: %Forward.ref: <error> = name_ref Forward, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %ptr: type = ptr_type <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %i: <error> = bind_name i, %i.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Forward.decl: type = interface_decl @Forward [template = constants.%Forward.type] {} {}
|
||||
// CHECK:STDOUT: %Forward.decl: type = interface_decl @Forward [concrete = constants.%Forward.type] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @Forward {
|
||||
@@ -454,23 +454,23 @@ private interface Redecl {}
|
||||
// CHECK:STDOUT: --- fail_local_forward.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.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: .F = %F.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %default.import = import <none>
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {
|
||||
// CHECK:STDOUT: %i.patt: <error> = binding_pattern i
|
||||
// CHECK:STDOUT: %i.param_patt: <error> = value_param_pattern %i.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %i.param: <error> = value_param runtime_param0
|
||||
// CHECK:STDOUT: %.loc10: type = splice_block %ptr [template = <error>] {
|
||||
// CHECK:STDOUT: %Forward.ref: <error> = name_ref Forward, <error> [template = <error>]
|
||||
// CHECK:STDOUT: %ptr: type = ptr_type <error> [template = <error>]
|
||||
// CHECK:STDOUT: %.loc10: type = splice_block %ptr [concrete = <error>] {
|
||||
// CHECK:STDOUT: %Forward.ref: <error> = name_ref Forward, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %ptr: type = ptr_type <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %i: <error> = bind_name i, %i.param
|
||||
// CHECK:STDOUT: }
|
||||
@@ -484,30 +484,30 @@ private interface Redecl {}
|
||||
// CHECK:STDOUT: --- fail_other_forward.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
|
||||
// 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: %Test: <namespace> = namespace file.%Test.import, [template] {
|
||||
// CHECK:STDOUT: %Test: <namespace> = namespace file.%Test.import, [concrete] {
|
||||
// CHECK:STDOUT: import Test//forward
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Test = imports.%Test
|
||||
// CHECK:STDOUT: .F = %F.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Test.import = import Test
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {
|
||||
// CHECK:STDOUT: %i.patt: <error> = binding_pattern i
|
||||
// CHECK:STDOUT: %i.param_patt: <error> = value_param_pattern %i.patt, runtime_param0
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %i.param: <error> = value_param runtime_param0
|
||||
// CHECK:STDOUT: %.loc10: type = splice_block %ptr [template = <error>] {
|
||||
// CHECK:STDOUT: %Forward.ref: <error> = name_ref Forward, <error> [template = <error>]
|
||||
// CHECK:STDOUT: %ptr: type = ptr_type <error> [template = <error>]
|
||||
// CHECK:STDOUT: %.loc10: type = splice_block %ptr [concrete = <error>] {
|
||||
// CHECK:STDOUT: %Forward.ref: <error> = name_ref Forward, <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: %ptr: type = ptr_type <error> [concrete = <error>]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %i: <error> = bind_name i, %i.param
|
||||
// CHECK:STDOUT: }
|
||||
@@ -521,16 +521,16 @@ private interface Redecl {}
|
||||
// CHECK:STDOUT: --- todo_fail_private_on_redecl.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %Redecl.type: type = facet_type <@Redecl> [template]
|
||||
// CHECK:STDOUT: %Redecl.type: type = facet_type <@Redecl> [concrete]
|
||||
// CHECK:STDOUT: %Self: %Redecl.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Redecl [private] = %Redecl.decl.loc4
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Redecl.decl.loc4: type = interface_decl @Redecl [template = constants.%Redecl.type] {} {}
|
||||
// CHECK:STDOUT: %Redecl.decl.loc6: type = interface_decl @Redecl [template = constants.%Redecl.type] {} {}
|
||||
// CHECK:STDOUT: %Redecl.decl.loc4: type = interface_decl @Redecl [concrete = constants.%Redecl.type] {} {}
|
||||
// CHECK:STDOUT: %Redecl.decl.loc6: type = interface_decl @Redecl [concrete = constants.%Redecl.type] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @Redecl {
|
||||
|
||||
+18
-18
@@ -30,14 +30,14 @@ impl library "[[@TEST_NAME]]";
|
||||
// CHECK:STDOUT: --- a.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: }
|
||||
// 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: %A.decl: type = interface_decl @A [concrete = constants.%A.type] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @A;
|
||||
@@ -49,7 +49,7 @@ impl library "[[@TEST_NAME]]";
|
||||
// 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.loc1_6.1 = import <none>
|
||||
@@ -59,23 +59,23 @@ impl library "[[@TEST_NAME]]";
|
||||
// CHECK:STDOUT: --- fail_b.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: %.loc7_7.1: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc7_7.2: type = converted %.loc7_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: %.loc7_7.2: type = converted %.loc7_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 {
|
||||
@@ -91,19 +91,19 @@ impl library "[[@TEST_NAME]]";
|
||||
// CHECK:STDOUT: --- b.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//b, B, unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.420 = import_ref Main//b, inst15 [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.e5c: type = import_ref Main//b, loc7_7, loaded [template = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %Main.import_ref.171: type = import_ref Main//b, loc7_12, loaded [template = constants.%B.type]
|
||||
// CHECK:STDOUT: %Main.import_ref.e5c: type = import_ref Main//b, loc7_7, loaded [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %Main.import_ref.171: type = import_ref Main//b, loc7_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.loc1_6.1 = import <none>
|
||||
|
||||
+26
-26
@@ -21,33 +21,33 @@ fn F() {
|
||||
// CHECK:STDOUT: --- local.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %I.type: type = facet_type <@I> [template]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %F: %F.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: %G.type.bff: type = fn_type @G.1 [template]
|
||||
// CHECK:STDOUT: %G.f0a: %G.type.bff = 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.%G.decl [template]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%G.decl) [template]
|
||||
// CHECK:STDOUT: %G.type.c84: type = fn_type @G.2 [template]
|
||||
// CHECK:STDOUT: %G.5a2: %G.type.c84 = struct_value () [template]
|
||||
// CHECK:STDOUT: %I.facet: %I.type = facet_value %empty_tuple.type, %impl_witness [template]
|
||||
// CHECK:STDOUT: %.fbf: type = fn_type_with_self_type %G.type.bff, %I.facet [template]
|
||||
// CHECK:STDOUT: %G.type.bff: type = fn_type @G.1 [concrete]
|
||||
// CHECK:STDOUT: %G.f0a: %G.type.bff = 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.%G.decl [concrete]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%G.decl) [concrete]
|
||||
// CHECK:STDOUT: %G.type.c84: type = fn_type @G.2 [concrete]
|
||||
// CHECK:STDOUT: %G.5a2: %G.type.c84 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %I.facet: %I.type = facet_value %empty_tuple.type, %impl_witness [concrete]
|
||||
// CHECK:STDOUT: %.fbf: type = fn_type_with_self_type %G.type.bff, %I.facet [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .F = %F.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {} {}
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @I {
|
||||
// CHECK:STDOUT: %Self: %I.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self]
|
||||
// CHECK:STDOUT: %G.decl: %G.type.bff = fn_decl @G.1 [template = constants.%G.f0a] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %G.decl [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %G.decl: %G.type.bff = fn_decl @G.1 [concrete = constants.%G.f0a] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %I.assoc_type = assoc_entity element0, %G.decl [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -56,7 +56,7 @@ fn F() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl @impl: %.loc15_9.2 as %I.ref {
|
||||
// CHECK:STDOUT: %G.decl: %G.type.c84 = fn_decl @G.2 [template = constants.%G.5a2] {} {}
|
||||
// CHECK:STDOUT: %G.decl: %G.type.c84 = fn_decl @G.2 [concrete = constants.%G.5a2] {} {}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .G = %G.decl
|
||||
@@ -65,17 +65,17 @@ fn F() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @F() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// 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_9.1: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc15_9.2: type = converted %.loc15_9.1, constants.%empty_tuple.type [template = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, @F.%I.decl [template = constants.%I.type]
|
||||
// CHECK:STDOUT: %.loc15_9.2: type = converted %.loc15_9.1, constants.%empty_tuple.type [concrete = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, @F.%I.decl [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%G.decl) [template = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %impl_witness: <witness> = impl_witness (@impl.%G.decl) [concrete = constants.%impl_witness]
|
||||
// CHECK:STDOUT: %.loc18: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, %I.decl [template = constants.%I.type]
|
||||
// CHECK:STDOUT: %G.ref: %I.assoc_type = name_ref G, @I.%assoc0 [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0: %.fbf = impl_witness_access constants.%impl_witness, element0 [template = constants.%G.5a2]
|
||||
// CHECK:STDOUT: %I.ref: type = name_ref I, %I.decl [concrete = constants.%I.type]
|
||||
// CHECK:STDOUT: %G.ref: %I.assoc_type = name_ref G, @I.%assoc0 [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT: %impl.elem0: %.fbf = impl_witness_access constants.%impl_witness, element0 [concrete = constants.%G.5a2]
|
||||
// CHECK:STDOUT: %G.call: init %empty_tuple.type = call %impl.elem0()
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -15,25 +15,25 @@ interface UseSelf {
|
||||
// CHECK:STDOUT: --- self.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: %UseSelf.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Self.as_type: type = facet_access_type %Self [symbolic]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [template]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %UseSelf.assoc_type: type = assoc_entity_type %UseSelf.type [template]
|
||||
// CHECK:STDOUT: %assoc0: %UseSelf.assoc_type = assoc_entity element0, @UseSelf.%F.decl [template]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %UseSelf.assoc_type: type = assoc_entity_type %UseSelf.type [concrete]
|
||||
// CHECK:STDOUT: %assoc0: %UseSelf.assoc_type = assoc_entity element0, @UseSelf.%F.decl [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: }
|
||||
// CHECK:STDOUT: %UseSelf.decl: type = interface_decl @UseSelf [template = constants.%UseSelf.type] {} {}
|
||||
// CHECK:STDOUT: %UseSelf.decl: type = interface_decl @UseSelf [concrete = constants.%UseSelf.type] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @UseSelf {
|
||||
// CHECK:STDOUT: %Self: %UseSelf.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self]
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [template = constants.%F] {
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {
|
||||
// CHECK:STDOUT: %self.patt: @F.%Self.as_type.loc12_14.1 (%Self.as_type) = binding_pattern self
|
||||
// CHECK:STDOUT: %self.param_patt: @F.%Self.as_type.loc12_14.1 (%Self.as_type) = value_param_pattern %self.patt, runtime_param0
|
||||
// CHECK:STDOUT: %return.patt: @F.%Self.as_type.loc12_14.1 (%Self.as_type) = return_slot_pattern
|
||||
@@ -52,7 +52,7 @@ interface UseSelf {
|
||||
// CHECK:STDOUT: %return.param: ref @F.%Self.as_type.loc12_14.1 (%Self.as_type) = out_param runtime_param1
|
||||
// CHECK:STDOUT: %return: ref @F.%Self.as_type.loc12_14.1 (%Self.as_type) = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %assoc0: %UseSelf.assoc_type = assoc_entity element0, %F.decl [template = constants.%assoc0]
|
||||
// CHECK:STDOUT: %assoc0: %UseSelf.assoc_type = assoc_entity element0, %F.decl [concrete = constants.%assoc0]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
|
||||
+188
-188
@@ -189,61 +189,61 @@ interface Foo(a:! const (const C)) {}
|
||||
// CHECK:STDOUT: --- basic.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: %a: %C = bind_symbolic_name a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %a.patt: %C = symbolic_binding_pattern a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Foo.type.538: type = generic_interface_type @Foo [template]
|
||||
// CHECK:STDOUT: %Foo.generic: %Foo.type.538 = struct_value () [template]
|
||||
// CHECK:STDOUT: %Foo.type.538: type = generic_interface_type @Foo [concrete]
|
||||
// CHECK:STDOUT: %Foo.generic: %Foo.type.538 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Foo.type.7d0: type = facet_type <@Foo, @Foo(%a)> [symbolic]
|
||||
// CHECK:STDOUT: %Self.a71: %Foo.type.7d0 = bind_symbolic_name Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: %Bar.type.982: type = generic_interface_type @Bar [template]
|
||||
// CHECK:STDOUT: %Bar.generic: %Bar.type.982 = struct_value () [template]
|
||||
// CHECK:STDOUT: %Bar.type.982: type = generic_interface_type @Bar [concrete]
|
||||
// CHECK:STDOUT: %Bar.generic: %Bar.type.982 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Bar.type.6a9: type = facet_type <@Bar, @Bar(%a)> [symbolic]
|
||||
// CHECK:STDOUT: %Self.cec: %Bar.type.6a9 = bind_symbolic_name Self, 1 [symbolic]
|
||||
// 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: .D = %D
|
||||
// CHECK:STDOUT: .Foo = %Foo.decl.loc7
|
||||
// CHECK:STDOUT: .Bar = %Bar.decl.loc10
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, %C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %D: type = bind_alias D, %C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %Foo.decl.loc7: %Foo.type.538 = interface_decl @Foo [template = constants.%Foo.generic] {
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, %C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %D: type = bind_alias D, %C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %Foo.decl.loc7: %Foo.type.538 = interface_decl @Foo [concrete = constants.%Foo.generic] {
|
||||
// CHECK:STDOUT: %a.patt.loc7_15.1: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc7_15.2 (constants.%a.patt)]
|
||||
// CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt.loc7_15.1, runtime_param<none> [symbolic = %a.patt.loc7_15.2 (constants.%a.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param.loc7: %C = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %C.ref.loc7: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %C.ref.loc7: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %a.loc7_15.1: %C = bind_symbolic_name a, 0, %a.param.loc7 [symbolic = %a.loc7_15.2 (constants.%a)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Foo.decl.loc8: %Foo.type.538 = interface_decl @Foo [template = constants.%Foo.generic] {
|
||||
// CHECK:STDOUT: %Foo.decl.loc8: %Foo.type.538 = interface_decl @Foo [concrete = constants.%Foo.generic] {
|
||||
// CHECK:STDOUT: %a.patt.loc7_15.1: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc7_15.2 (constants.%a.patt)]
|
||||
// CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt.loc7_15.1, runtime_param<none> [symbolic = %a.patt.loc7_15.2 (constants.%a.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param.loc8: %C = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %C.ref.loc8: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %C.ref.loc8: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %a.loc8: %C = bind_symbolic_name a, 0, %a.param.loc8 [symbolic = constants.%a]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Bar.decl.loc10: %Bar.type.982 = interface_decl @Bar [template = constants.%Bar.generic] {
|
||||
// CHECK:STDOUT: %Bar.decl.loc10: %Bar.type.982 = interface_decl @Bar [concrete = constants.%Bar.generic] {
|
||||
// CHECK:STDOUT: %a.patt.loc10_15.1: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc10_15.2 (constants.%a.patt)]
|
||||
// CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt.loc10_15.1, runtime_param<none> [symbolic = %a.patt.loc10_15.2 (constants.%a.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param.loc10: %C = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %D.ref.loc10: type = name_ref D, file.%D [template = constants.%C]
|
||||
// CHECK:STDOUT: %D.ref.loc10: type = name_ref D, file.%D [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %a.loc10_15.1: %C = bind_symbolic_name a, 0, %a.param.loc10 [symbolic = %a.loc10_15.2 (constants.%a)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Bar.decl.loc11: %Bar.type.982 = interface_decl @Bar [template = constants.%Bar.generic] {
|
||||
// CHECK:STDOUT: %Bar.decl.loc11: %Bar.type.982 = interface_decl @Bar [concrete = constants.%Bar.generic] {
|
||||
// CHECK:STDOUT: %a.patt.loc10_15.1: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc10_15.2 (constants.%a.patt)]
|
||||
// CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt.loc10_15.1, runtime_param<none> [symbolic = %a.patt.loc10_15.2 (constants.%a.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param.loc11: %C = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %D.ref.loc11: type = name_ref D, file.%D [template = constants.%C]
|
||||
// CHECK:STDOUT: %D.ref.loc11: type = name_ref D, file.%D [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %a.loc11: %C = bind_symbolic_name a, 0, %a.param.loc11 [symbolic = constants.%a]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -283,7 +283,7 @@ interface Foo(a:! const (const 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:
|
||||
@@ -307,37 +307,37 @@ interface Foo(a:! const (const C)) {}
|
||||
// CHECK:STDOUT: --- spacing.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: %a: %C = bind_symbolic_name a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %a.patt: %C = symbolic_binding_pattern a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Foo.type.538: type = generic_interface_type @Foo [template]
|
||||
// CHECK:STDOUT: %Foo.generic: %Foo.type.538 = struct_value () [template]
|
||||
// CHECK:STDOUT: %Foo.type.538: type = generic_interface_type @Foo [concrete]
|
||||
// CHECK:STDOUT: %Foo.generic: %Foo.type.538 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Foo.type.7d0: type = facet_type <@Foo, @Foo(%a)> [symbolic]
|
||||
// CHECK:STDOUT: %Self: %Foo.type.7d0 = bind_symbolic_name Self, 1 [symbolic]
|
||||
// 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: .Foo = %Foo.decl.loc6
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %Foo.decl.loc6: %Foo.type.538 = interface_decl @Foo [template = constants.%Foo.generic] {
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %Foo.decl.loc6: %Foo.type.538 = interface_decl @Foo [concrete = constants.%Foo.generic] {
|
||||
// CHECK:STDOUT: %a.patt.loc6_21.1: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc6_21.2 (constants.%a.patt)]
|
||||
// CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt.loc6_21.1, runtime_param<none> [symbolic = %a.patt.loc6_21.2 (constants.%a.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param.loc6: %C = value_param runtime_param<none>
|
||||
// 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.loc6_21.1: %C = bind_symbolic_name a, 0, %a.param.loc6 [symbolic = %a.loc6_21.2 (constants.%a)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Foo.decl.loc7: %Foo.type.538 = interface_decl @Foo [template = constants.%Foo.generic] {
|
||||
// CHECK:STDOUT: %Foo.decl.loc7: %Foo.type.538 = interface_decl @Foo [concrete = constants.%Foo.generic] {
|
||||
// CHECK:STDOUT: %a.patt.loc6_21.1: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc6_21.2 (constants.%a.patt)]
|
||||
// CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt.loc6_21.1, runtime_param<none> [symbolic = %a.patt.loc6_21.2 (constants.%a.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param.loc7: %C = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %C.ref.loc7: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %C.ref.loc7: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %a.loc7: %C = bind_symbolic_name a, 0, %a.param.loc7 [symbolic = constants.%a]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -360,7 +360,7 @@ interface Foo(a:! const (const 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:
|
||||
@@ -377,39 +377,39 @@ interface Foo(a:! const (const C)) {}
|
||||
// CHECK:STDOUT: --- fail_parens.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: %a: %C = bind_symbolic_name a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %a.patt: %C = symbolic_binding_pattern a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Foo.type: type = generic_interface_type @Foo [template]
|
||||
// CHECK:STDOUT: %Foo.generic: %Foo.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.type.abf: type = generic_interface_type @.1 [template]
|
||||
// CHECK:STDOUT: %.generic: %.type.abf = struct_value () [template]
|
||||
// CHECK:STDOUT: %Foo.type: type = generic_interface_type @Foo [concrete]
|
||||
// CHECK:STDOUT: %Foo.generic: %Foo.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %.type.abf: type = generic_interface_type @.1 [concrete]
|
||||
// CHECK:STDOUT: %.generic: %.type.abf = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %.type.0dd: type = facet_type <@.1, @.1(%a)> [symbolic]
|
||||
// CHECK:STDOUT: %Self: %.type.0dd = bind_symbolic_name Self, 1 [symbolic]
|
||||
// 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: .Foo = %Foo.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %Foo.decl: %Foo.type = interface_decl @Foo [template = constants.%Foo.generic] {
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %Foo.decl: %Foo.type = interface_decl @Foo [concrete = constants.%Foo.generic] {
|
||||
// CHECK:STDOUT: %a.patt.loc6_15.1: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc6_15.2 (constants.%a.patt)]
|
||||
// CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt.loc6_15.1, runtime_param<none> [symbolic = %a.patt.loc6_15.2 (constants.%a.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param: %C = value_param runtime_param<none>
|
||||
// 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: %a.loc6_15.1: %C = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc6_15.2 (constants.%a)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.decl: %.type.abf = interface_decl @.1 [template = constants.%.generic] {
|
||||
// CHECK:STDOUT: %.decl: %.type.abf = interface_decl @.1 [concrete = constants.%.generic] {
|
||||
// CHECK:STDOUT: %a.patt.loc14_15.1: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc14_15.2 (constants.%a.patt)]
|
||||
// CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt.loc14_15.1, runtime_param<none> [symbolic = %a.patt.loc14_15.2 (constants.%a.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param: %C = value_param runtime_param<none>
|
||||
// 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: %a.loc14_15.1: %C = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc14_15.2 (constants.%a)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -439,7 +439,7 @@ interface Foo(a:! const (const 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:
|
||||
@@ -461,37 +461,37 @@ interface Foo(a:! const (const C)) {}
|
||||
// CHECK:STDOUT: --- todo_fail_raw_identifier.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: %a: %C = bind_symbolic_name a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %a.patt: %C = symbolic_binding_pattern a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Foo.type.538: type = generic_interface_type @Foo [template]
|
||||
// CHECK:STDOUT: %Foo.generic: %Foo.type.538 = struct_value () [template]
|
||||
// CHECK:STDOUT: %Foo.type.538: type = generic_interface_type @Foo [concrete]
|
||||
// CHECK:STDOUT: %Foo.generic: %Foo.type.538 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Foo.type.7d0: type = facet_type <@Foo, @Foo(%a)> [symbolic]
|
||||
// CHECK:STDOUT: %Self: %Foo.type.7d0 = bind_symbolic_name Self, 1 [symbolic]
|
||||
// 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: .Foo = %Foo.decl.loc6
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %Foo.decl.loc6: %Foo.type.538 = interface_decl @Foo [template = constants.%Foo.generic] {
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %Foo.decl.loc6: %Foo.type.538 = interface_decl @Foo [concrete = constants.%Foo.generic] {
|
||||
// CHECK:STDOUT: %a.patt.loc6_15.1: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc6_15.2 (constants.%a.patt)]
|
||||
// CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt.loc6_15.1, runtime_param<none> [symbolic = %a.patt.loc6_15.2 (constants.%a.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param.loc6: %C = value_param runtime_param<none>
|
||||
// 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.loc6_15.1: %C = bind_symbolic_name a, 0, %a.param.loc6 [symbolic = %a.loc6_15.2 (constants.%a)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Foo.decl.loc7: %Foo.type.538 = interface_decl @Foo [template = constants.%Foo.generic] {
|
||||
// CHECK:STDOUT: %Foo.decl.loc7: %Foo.type.538 = interface_decl @Foo [concrete = constants.%Foo.generic] {
|
||||
// CHECK:STDOUT: %a.patt.loc6_15.1: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc6_15.2 (constants.%a.patt)]
|
||||
// CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt.loc6_15.1, runtime_param<none> [symbolic = %a.patt.loc6_15.2 (constants.%a.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param.loc7: %C = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %C.ref.loc7: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %C.ref.loc7: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %a.loc7: %C = bind_symbolic_name a, 0, %a.param.loc7 [symbolic = constants.%a]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -514,7 +514,7 @@ interface Foo(a:! const (const 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:
|
||||
@@ -531,41 +531,41 @@ interface Foo(a:! const (const C)) {}
|
||||
// CHECK:STDOUT: --- two_file.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: %a: %C = bind_symbolic_name a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %a.patt: %C = symbolic_binding_pattern a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Foo.type: type = generic_interface_type @Foo [template]
|
||||
// CHECK:STDOUT: %Foo.generic: %Foo.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %Bar.type: type = generic_interface_type @Bar [template]
|
||||
// CHECK:STDOUT: %Bar.generic: %Bar.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %Foo.type: type = generic_interface_type @Foo [concrete]
|
||||
// CHECK:STDOUT: %Foo.generic: %Foo.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Bar.type: type = generic_interface_type @Bar [concrete]
|
||||
// CHECK:STDOUT: %Bar.generic: %Bar.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: .C = %C.decl
|
||||
// CHECK:STDOUT: .D = %D
|
||||
// CHECK:STDOUT: .Foo = %Foo.decl
|
||||
// CHECK:STDOUT: .Bar = %Bar.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, %C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %D: type = bind_alias D, %C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %Foo.decl: %Foo.type = interface_decl @Foo [template = constants.%Foo.generic] {
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, %C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %D: type = bind_alias D, %C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %Foo.decl: %Foo.type = interface_decl @Foo [concrete = constants.%Foo.generic] {
|
||||
// CHECK:STDOUT: %a.patt.loc7_15.1: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc7_15.2 (constants.%a.patt)]
|
||||
// CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt.loc7_15.1, runtime_param<none> [symbolic = %a.patt.loc7_15.2 (constants.%a.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param: %C = value_param runtime_param<none>
|
||||
// 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: %a.loc7_15.1: %C = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc7_15.2 (constants.%a)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Bar.decl: %Bar.type = interface_decl @Bar [template = constants.%Bar.generic] {
|
||||
// CHECK:STDOUT: %Bar.decl: %Bar.type = interface_decl @Bar [concrete = constants.%Bar.generic] {
|
||||
// CHECK:STDOUT: %a.patt.loc8_15.1: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc8_15.2 (constants.%a.patt)]
|
||||
// CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt.loc8_15.1, runtime_param<none> [symbolic = %a.patt.loc8_15.2 (constants.%a.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param: %C = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, file.%D [template = constants.%C]
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, file.%D [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %a.loc8_15.1: %C = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc8_15.2 (constants.%a)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -585,7 +585,7 @@ interface Foo(a:! const (const 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:
|
||||
@@ -605,38 +605,38 @@ interface Foo(a:! const (const C)) {}
|
||||
// CHECK:STDOUT: --- fail_todo_two_file.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: %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: %C = bind_symbolic_name a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %a.patt: %C = symbolic_binding_pattern a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Foo.type: type = generic_interface_type @Foo [template]
|
||||
// CHECK:STDOUT: %Foo.generic: %Foo.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.type.abf52e.1: type = generic_interface_type @.1 [template]
|
||||
// CHECK:STDOUT: %.generic.0a9e18.1: %.type.abf52e.1 = struct_value () [template]
|
||||
// CHECK:STDOUT: %Foo.type: type = generic_interface_type @Foo [concrete]
|
||||
// CHECK:STDOUT: %Foo.generic: %Foo.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %.type.abf52e.1: type = generic_interface_type @.1 [concrete]
|
||||
// CHECK:STDOUT: %.generic.0a9e18.1: %.type.abf52e.1 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %.type.0ddd66.1: type = facet_type <@.1, @.1(%a)> [symbolic]
|
||||
// CHECK:STDOUT: %Self.1b0707.1: %.type.0ddd66.1 = bind_symbolic_name Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: %Bar.type: type = generic_interface_type @Bar [template]
|
||||
// CHECK:STDOUT: %Bar.generic: %Bar.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.type.abf52e.2: type = generic_interface_type @.2 [template]
|
||||
// CHECK:STDOUT: %.generic.0a9e18.2: %.type.abf52e.2 = struct_value () [template]
|
||||
// CHECK:STDOUT: %Bar.type: type = generic_interface_type @Bar [concrete]
|
||||
// CHECK:STDOUT: %Bar.generic: %Bar.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %.type.abf52e.2: type = generic_interface_type @.2 [concrete]
|
||||
// CHECK:STDOUT: %.generic.0a9e18.2: %.type.abf52e.2 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %.type.0ddd66.2: type = facet_type <@.2, @.2(%a)> [symbolic]
|
||||
// CHECK:STDOUT: %Self.1b0707.2: %.type.0ddd66.2 = bind_symbolic_name Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Main.C: type = import_ref Main//two_file, C, loaded [template = constants.%C]
|
||||
// CHECK:STDOUT: %Main.D: type = import_ref Main//two_file, D, loaded [template = constants.%C]
|
||||
// CHECK:STDOUT: %Main.Foo: %Foo.type = import_ref Main//two_file, Foo, loaded [template = constants.%Foo.generic]
|
||||
// CHECK:STDOUT: %Main.Bar: %Bar.type = import_ref Main//two_file, Bar, loaded [template = constants.%Bar.generic]
|
||||
// CHECK:STDOUT: %Main.import_ref.8f2: <witness> = import_ref Main//two_file, loc4_10, loaded [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Main.C: type = import_ref Main//two_file, C, loaded [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %Main.D: type = import_ref Main//two_file, D, loaded [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %Main.Foo: %Foo.type = import_ref Main//two_file, Foo, loaded [concrete = constants.%Foo.generic]
|
||||
// CHECK:STDOUT: %Main.Bar: %Bar.type = import_ref Main//two_file, Bar, loaded [concrete = constants.%Bar.generic]
|
||||
// CHECK:STDOUT: %Main.import_ref.8f2: <witness> = import_ref Main//two_file, loc4_10, loaded [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//two_file, inst14 [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.11fba2.1: %C = import_ref Main//two_file, loc7_15, loaded [symbolic = @Foo.%a (constants.%a)]
|
||||
// CHECK:STDOUT: %Main.import_ref.11fba2.2: %C = import_ref Main//two_file, loc8_15, loaded [symbolic = @Bar.%a (constants.%a)]
|
||||
// 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: .D = imports.%Main.D
|
||||
// CHECK:STDOUT: .Foo = imports.%Main.Foo
|
||||
@@ -644,20 +644,20 @@ interface Foo(a:! const (const C)) {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %default.import.loc2_6.1 = import <none>
|
||||
// CHECK:STDOUT: %default.import.loc2_6.2 = import <none>
|
||||
// CHECK:STDOUT: %.decl.loc12: %.type.abf52e.1 = interface_decl @.1 [template = constants.%.generic.0a9e18.1] {
|
||||
// CHECK:STDOUT: %.decl.loc12: %.type.abf52e.1 = interface_decl @.1 [concrete = constants.%.generic.0a9e18.1] {
|
||||
// CHECK:STDOUT: %a.patt.loc12_15.1: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc12_15.2 (constants.%a.patt)]
|
||||
// CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt.loc12_15.1, runtime_param<none> [symbolic = %a.patt.loc12_15.2 (constants.%a.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param: %C = value_param runtime_param<none>
|
||||
// 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: %a.loc12_15.1: %C = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc12_15.2 (constants.%a)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.decl.loc21: %.type.abf52e.2 = interface_decl @.2 [template = constants.%.generic.0a9e18.2] {
|
||||
// CHECK:STDOUT: %.decl.loc21: %.type.abf52e.2 = interface_decl @.2 [concrete = constants.%.generic.0a9e18.2] {
|
||||
// CHECK:STDOUT: %a.patt.loc21_15.1: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc21_15.2 (constants.%a.patt)]
|
||||
// CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt.loc21_15.1, runtime_param<none> [symbolic = %a.patt.loc21_15.2 (constants.%a.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param: %C = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, imports.%Main.D [template = constants.%C]
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, imports.%Main.D [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %a.loc21_15.1: %C = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc21_15.2 (constants.%a)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -744,44 +744,44 @@ interface Foo(a:! const (const C)) {}
|
||||
// CHECK:STDOUT: --- fail_name_mismatch.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: %a: %C = bind_symbolic_name a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %a.patt: %C = symbolic_binding_pattern a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Foo.type: type = generic_interface_type @Foo [template]
|
||||
// CHECK:STDOUT: %Foo.generic: %Foo.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %Foo.type: type = generic_interface_type @Foo [concrete]
|
||||
// CHECK:STDOUT: %Foo.generic: %Foo.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %b: %C = bind_symbolic_name b, 0 [symbolic]
|
||||
// CHECK:STDOUT: %b.patt: %C = symbolic_binding_pattern b, 0 [symbolic]
|
||||
// CHECK:STDOUT: %.type.abf: type = generic_interface_type @.1 [template]
|
||||
// CHECK:STDOUT: %.generic: %.type.abf = struct_value () [template]
|
||||
// CHECK:STDOUT: %.type.abf: type = generic_interface_type @.1 [concrete]
|
||||
// CHECK:STDOUT: %.generic: %.type.abf = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %.type.0dd: type = facet_type <@.1, @.1(%b)> [symbolic]
|
||||
// CHECK:STDOUT: %Self: %.type.0dd = bind_symbolic_name Self, 1 [symbolic]
|
||||
// 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: .D = %D
|
||||
// CHECK:STDOUT: .Foo = %Foo.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, %C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %D: type = bind_alias D, %C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %Foo.decl: %Foo.type = interface_decl @Foo [template = constants.%Foo.generic] {
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, %C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %D: type = bind_alias D, %C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %Foo.decl: %Foo.type = interface_decl @Foo [concrete = constants.%Foo.generic] {
|
||||
// CHECK:STDOUT: %a.patt.loc7_15.1: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc7_15.2 (constants.%a.patt)]
|
||||
// CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt.loc7_15.1, runtime_param<none> [symbolic = %a.patt.loc7_15.2 (constants.%a.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param: %C = value_param runtime_param<none>
|
||||
// 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: %a.loc7_15.1: %C = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc7_15.2 (constants.%a)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.decl: %.type.abf = interface_decl @.1 [template = constants.%.generic] {
|
||||
// CHECK:STDOUT: %.decl: %.type.abf = interface_decl @.1 [concrete = constants.%.generic] {
|
||||
// CHECK:STDOUT: %b.patt.loc15_15.1: %C = symbolic_binding_pattern b, 0 [symbolic = %b.patt.loc15_15.2 (constants.%b.patt)]
|
||||
// CHECK:STDOUT: %b.param_patt: %C = value_param_pattern %b.patt.loc15_15.1, runtime_param<none> [symbolic = %b.patt.loc15_15.2 (constants.%b.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %b.param: %C = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, file.%D [template = constants.%C]
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, file.%D [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %b.loc15_15.1: %C = bind_symbolic_name b, 0, %b.param [symbolic = %b.loc15_15.2 (constants.%b)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -811,7 +811,7 @@ interface Foo(a:! const (const 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:
|
||||
@@ -833,42 +833,42 @@ interface Foo(a:! const (const C)) {}
|
||||
// CHECK:STDOUT: --- fail_alias.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: %a: %C = bind_symbolic_name a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %a.patt: %C = symbolic_binding_pattern a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Foo.type: type = generic_interface_type @Foo [template]
|
||||
// CHECK:STDOUT: %Foo.generic: %Foo.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.type.abf: type = generic_interface_type @.1 [template]
|
||||
// CHECK:STDOUT: %.generic: %.type.abf = struct_value () [template]
|
||||
// CHECK:STDOUT: %Foo.type: type = generic_interface_type @Foo [concrete]
|
||||
// CHECK:STDOUT: %Foo.generic: %Foo.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %.type.abf: type = generic_interface_type @.1 [concrete]
|
||||
// CHECK:STDOUT: %.generic: %.type.abf = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %.type.0dd: type = facet_type <@.1, @.1(%a)> [symbolic]
|
||||
// CHECK:STDOUT: %Self: %.type.0dd = bind_symbolic_name Self, 1 [symbolic]
|
||||
// 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: .D = %D
|
||||
// CHECK:STDOUT: .Foo = %Foo.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, %C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %D: type = bind_alias D, %C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %Foo.decl: %Foo.type = interface_decl @Foo [template = constants.%Foo.generic] {
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, %C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %D: type = bind_alias D, %C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %Foo.decl: %Foo.type = interface_decl @Foo [concrete = constants.%Foo.generic] {
|
||||
// CHECK:STDOUT: %a.patt.loc7_15.1: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc7_15.2 (constants.%a.patt)]
|
||||
// CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt.loc7_15.1, runtime_param<none> [symbolic = %a.patt.loc7_15.2 (constants.%a.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param: %C = value_param runtime_param<none>
|
||||
// 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: %a.loc7_15.1: %C = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc7_15.2 (constants.%a)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.decl: %.type.abf = interface_decl @.1 [template = constants.%.generic] {
|
||||
// CHECK:STDOUT: %.decl: %.type.abf = interface_decl @.1 [concrete = constants.%.generic] {
|
||||
// CHECK:STDOUT: %a.patt.loc15_15.1: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc15_15.2 (constants.%a.patt)]
|
||||
// CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt.loc15_15.1, runtime_param<none> [symbolic = %a.patt.loc15_15.2 (constants.%a.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param: %C = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, file.%D [template = constants.%C]
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, file.%D [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %a.loc15_15.1: %C = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc15_15.2 (constants.%a)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -898,7 +898,7 @@ interface Foo(a:! const (const 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:
|
||||
@@ -920,42 +920,42 @@ interface Foo(a:! const (const C)) {}
|
||||
// CHECK:STDOUT: --- fail_deduced_alias.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: %a: %C = bind_symbolic_name a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %a.patt: %C = symbolic_binding_pattern a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Foo.type: type = generic_interface_type @Foo [template]
|
||||
// CHECK:STDOUT: %Foo.generic: %Foo.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.type.abf: type = generic_interface_type @.1 [template]
|
||||
// CHECK:STDOUT: %.generic: %.type.abf = struct_value () [template]
|
||||
// CHECK:STDOUT: %Foo.type: type = generic_interface_type @Foo [concrete]
|
||||
// CHECK:STDOUT: %Foo.generic: %Foo.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %.type.abf: type = generic_interface_type @.1 [concrete]
|
||||
// CHECK:STDOUT: %.generic: %.type.abf = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %.type.0dd: type = facet_type <@.1, @.1(%a)> [symbolic]
|
||||
// CHECK:STDOUT: %Self: %.type.0dd = bind_symbolic_name Self, 1 [symbolic]
|
||||
// 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: .D = %D
|
||||
// CHECK:STDOUT: .Foo = %Foo.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, %C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %D: type = bind_alias D, %C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %Foo.decl: %Foo.type = interface_decl @Foo [template = constants.%Foo.generic] {
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, %C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %D: type = bind_alias D, %C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %Foo.decl: %Foo.type = interface_decl @Foo [concrete = constants.%Foo.generic] {
|
||||
// CHECK:STDOUT: %a.patt.loc7_15.1: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc7_15.2 (constants.%a.patt)]
|
||||
// CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt.loc7_15.1, runtime_param<none> [symbolic = %a.patt.loc7_15.2 (constants.%a.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param: %C = value_param runtime_param<none>
|
||||
// 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: %a.loc7_15.1: %C = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc7_15.2 (constants.%a)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.decl: %.type.abf = interface_decl @.1 [template = constants.%.generic] {
|
||||
// CHECK:STDOUT: %.decl: %.type.abf = interface_decl @.1 [concrete = constants.%.generic] {
|
||||
// CHECK:STDOUT: %a.patt.loc15_15.1: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc15_15.2 (constants.%a.patt)]
|
||||
// CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt.loc15_15.1, runtime_param<none> [symbolic = %a.patt.loc15_15.2 (constants.%a.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param: %C = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, file.%D [template = constants.%C]
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, file.%D [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %a.loc15_15.1: %C = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc15_15.2 (constants.%a)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -985,7 +985,7 @@ interface Foo(a:! const (const 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:
|
||||
@@ -1007,27 +1007,27 @@ interface Foo(a:! const (const C)) {}
|
||||
// CHECK:STDOUT: --- alias_two_file.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: %a: %C = bind_symbolic_name a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %a.patt: %C = symbolic_binding_pattern a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Foo.type: type = generic_interface_type @Foo [template]
|
||||
// CHECK:STDOUT: %Foo.generic: %Foo.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %Foo.type: type = generic_interface_type @Foo [concrete]
|
||||
// CHECK:STDOUT: %Foo.generic: %Foo.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: .C = %C.decl
|
||||
// CHECK:STDOUT: .Foo = %Foo.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %Foo.decl: %Foo.type = interface_decl @Foo [template = constants.%Foo.generic] {
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %Foo.decl: %Foo.type = interface_decl @Foo [concrete = constants.%Foo.generic] {
|
||||
// CHECK:STDOUT: %a.patt.loc6_15.1: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc6_15.2 (constants.%a.patt)]
|
||||
// CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt.loc6_15.1, runtime_param<none> [symbolic = %a.patt.loc6_15.2 (constants.%a.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param: %C = value_param runtime_param<none>
|
||||
// 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: %a.loc6_15.1: %C = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc6_15.2 (constants.%a)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -1040,7 +1040,7 @@ interface Foo(a:! const (const 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:
|
||||
@@ -1055,43 +1055,43 @@ interface Foo(a:! const (const C)) {}
|
||||
// CHECK:STDOUT: --- fail_alias_two_file.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: %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: %C = bind_symbolic_name a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %a.patt: %C = symbolic_binding_pattern a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Foo.type: type = generic_interface_type @Foo [template]
|
||||
// CHECK:STDOUT: %Foo.generic: %Foo.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.type.abf: type = generic_interface_type @.1 [template]
|
||||
// CHECK:STDOUT: %.generic: %.type.abf = struct_value () [template]
|
||||
// CHECK:STDOUT: %Foo.type: type = generic_interface_type @Foo [concrete]
|
||||
// CHECK:STDOUT: %Foo.generic: %Foo.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %.type.abf: type = generic_interface_type @.1 [concrete]
|
||||
// CHECK:STDOUT: %.generic: %.type.abf = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %.type.0dd: type = facet_type <@.1, @.1(%a)> [symbolic]
|
||||
// CHECK:STDOUT: %Self: %.type.0dd = bind_symbolic_name Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Main.C: type = import_ref Main//alias_two_file, C, loaded [template = constants.%C]
|
||||
// CHECK:STDOUT: %Main.Foo: %Foo.type = import_ref Main//alias_two_file, Foo, loaded [template = constants.%Foo.generic]
|
||||
// CHECK:STDOUT: %Main.import_ref.8f2: <witness> = import_ref Main//alias_two_file, loc4_10, loaded [template = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Main.C: type = import_ref Main//alias_two_file, C, loaded [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %Main.Foo: %Foo.type = import_ref Main//alias_two_file, Foo, loaded [concrete = constants.%Foo.generic]
|
||||
// CHECK:STDOUT: %Main.import_ref.8f2: <witness> = import_ref Main//alias_two_file, loc4_10, loaded [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: %Main.import_ref.2c4 = import_ref Main//alias_two_file, inst14 [no loc], unloaded
|
||||
// CHECK:STDOUT: %Main.import_ref.11f: %C = import_ref Main//alias_two_file, loc6_15, loaded [symbolic = @Foo.%a (constants.%a)]
|
||||
// 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: .Foo = imports.%Main.Foo
|
||||
// CHECK:STDOUT: .D = %D
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %default.import.loc2_6.1 = import <none>
|
||||
// CHECK:STDOUT: %default.import.loc2_6.2 = import <none>
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.C [template = constants.%C]
|
||||
// CHECK:STDOUT: %D: type = bind_alias D, imports.%Main.C [template = constants.%C]
|
||||
// CHECK:STDOUT: %.decl: %.type.abf = interface_decl @.1 [template = constants.%.generic] {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, imports.%Main.C [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %D: type = bind_alias D, imports.%Main.C [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %.decl: %.type.abf = interface_decl @.1 [concrete = constants.%.generic] {
|
||||
// CHECK:STDOUT: %a.patt.loc17_15.1: %C = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc17_15.2 (constants.%a.patt)]
|
||||
// CHECK:STDOUT: %a.param_patt: %C = value_param_pattern %a.patt.loc17_15.1, runtime_param<none> [symbolic = %a.patt.loc17_15.2 (constants.%a.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param: %C = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, file.%D [template = constants.%C]
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, file.%D [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %a.loc17_15.1: %C = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc17_15.2 (constants.%a)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
@@ -1142,46 +1142,46 @@ interface Foo(a:! const (const C)) {}
|
||||
// CHECK:STDOUT: --- fail_repeat_const.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: %const: type = const_type %C [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: %const: type = const_type %C [concrete]
|
||||
// CHECK:STDOUT: %a: %const = bind_symbolic_name a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %a.patt: %const = symbolic_binding_pattern a, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Foo.type: type = generic_interface_type @Foo [template]
|
||||
// CHECK:STDOUT: %Foo.generic: %Foo.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %.type.abf: type = generic_interface_type @.1 [template]
|
||||
// CHECK:STDOUT: %.generic: %.type.abf = struct_value () [template]
|
||||
// CHECK:STDOUT: %Foo.type: type = generic_interface_type @Foo [concrete]
|
||||
// CHECK:STDOUT: %Foo.generic: %Foo.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %.type.abf: type = generic_interface_type @.1 [concrete]
|
||||
// CHECK:STDOUT: %.generic: %.type.abf = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %.type.963: type = facet_type <@.1, @.1(%a)> [symbolic]
|
||||
// CHECK:STDOUT: %Self: %.type.963 = bind_symbolic_name Self, 1 [symbolic]
|
||||
// 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: .Foo = %Foo.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %Foo.decl: %Foo.type = interface_decl @Foo [template = constants.%Foo.generic] {
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %Foo.decl: %Foo.type = interface_decl @Foo [concrete = constants.%Foo.generic] {
|
||||
// CHECK:STDOUT: %a.patt.loc6_15.1: %const = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc6_15.2 (constants.%a.patt)]
|
||||
// CHECK:STDOUT: %a.param_patt: %const = value_param_pattern %a.patt.loc6_15.1, runtime_param<none> [symbolic = %a.patt.loc6_15.2 (constants.%a.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param: %const = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %.loc6: type = splice_block %const [template = constants.%const] {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %const: type = const_type %C [template = constants.%const]
|
||||
// CHECK:STDOUT: %.loc6: type = splice_block %const [concrete = constants.%const] {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %const: type = const_type %C [concrete = constants.%const]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %a.loc6_15.1: %const = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc6_15.2 (constants.%a)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.decl: %.type.abf = interface_decl @.1 [template = constants.%.generic] {
|
||||
// CHECK:STDOUT: %.decl: %.type.abf = interface_decl @.1 [concrete = constants.%.generic] {
|
||||
// CHECK:STDOUT: %a.patt.loc18_15.1: %const = symbolic_binding_pattern a, 0 [symbolic = %a.patt.loc18_15.2 (constants.%a.patt)]
|
||||
// CHECK:STDOUT: %a.param_patt: %const = value_param_pattern %a.patt.loc18_15.1, runtime_param<none> [symbolic = %a.patt.loc18_15.2 (constants.%a.patt)]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param: %const = value_param runtime_param<none>
|
||||
// CHECK:STDOUT: %.loc18: type = splice_block %const.loc18_19 [template = constants.%const] {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %const.loc18_26: type = const_type %C [template = constants.%const]
|
||||
// CHECK:STDOUT: %const.loc18_19: type = const_type %const [template = constants.%const]
|
||||
// CHECK:STDOUT: %.loc18: type = splice_block %const.loc18_19 [concrete = constants.%const] {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %const.loc18_26: type = const_type %C [concrete = constants.%const]
|
||||
// CHECK:STDOUT: %const.loc18_19: type = const_type %const [concrete = constants.%const]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %a.loc18_15.1: %const = bind_symbolic_name a, 0, %a.param [symbolic = %a.loc18_15.2 (constants.%a)]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -1212,7 +1212,7 @@ interface Foo(a:! const (const 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:
|
||||
|
||||
@@ -22,36 +22,36 @@ interface I {
|
||||
// CHECK:STDOUT: --- todo_define_not_default.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: 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.a5e: %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: %G.type: type = fn_type @G [template]
|
||||
// CHECK:STDOUT: %G: %G.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %assoc1: %I.assoc_type = assoc_entity element1, @I.%G.decl [template]
|
||||
// CHECK:STDOUT: %assoc2: %I.assoc_type = assoc_entity element2, @I.%T [template]
|
||||
// CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [template]
|
||||
// CHECK:STDOUT: %tuple.type.d07: type = tuple_type (%i32, %i32) [template]
|
||||
// CHECK:STDOUT: %assoc3: %I.assoc_type = assoc_entity element3, @I.%N [template]
|
||||
// CHECK:STDOUT: %int_42.20e: Core.IntLiteral = int_value 42 [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_42.20e, %Convert.956 [template]
|
||||
// CHECK:STDOUT: %Convert.specific_fn: <specific function> = specific_function %Convert.bound, @Convert.2(%int_32) [template]
|
||||
// CHECK:STDOUT: %int_42.c68: %i32 = int_value 42 [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.a5e: %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: %G.type: type = fn_type @G [concrete]
|
||||
// CHECK:STDOUT: %G: %G.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %assoc1: %I.assoc_type = assoc_entity element1, @I.%G.decl [concrete]
|
||||
// CHECK:STDOUT: %assoc2: %I.assoc_type = assoc_entity element2, @I.%T [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.24b: type = tuple_type (type, type) [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.d07: type = tuple_type (%i32, %i32) [concrete]
|
||||
// CHECK:STDOUT: %assoc3: %I.assoc_type = assoc_entity element3, @I.%N [concrete]
|
||||
// CHECK:STDOUT: %int_42.20e: Core.IntLiteral = int_value 42 [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_42.20e, %Convert.956 [concrete]
|
||||
// CHECK:STDOUT: %Convert.specific_fn: <specific function> = specific_function %Convert.bound, @Convert.2(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %int_42.c68: %i32 = int_value 42 [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
|
||||
@@ -60,19 +60,19 @@ interface 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: %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.826]
|
||||
// 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.a5e]
|
||||
// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [template = constants.%G] {
|
||||
// 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.a5e]
|
||||
// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] {
|
||||
// CHECK:STDOUT: %a.patt: %i32 = binding_pattern a
|
||||
// CHECK:STDOUT: %a.param_patt: %i32 = value_param_pattern %a.patt, runtime_param0
|
||||
// CHECK:STDOUT: %b.patt: %i32 = binding_pattern b
|
||||
@@ -80,42 +80,42 @@ interface I {
|
||||
// CHECK:STDOUT: %return.patt: %i32 = return_slot_pattern
|
||||
// CHECK:STDOUT: %return.param_patt: %i32 = out_param_pattern %return.patt, runtime_param2
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %int_32.loc14_27: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc14_27: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: %int_32.loc14_27: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc14_27: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %a.param: %i32 = value_param runtime_param0
|
||||
// CHECK:STDOUT: %.loc14_11: type = splice_block %i32.loc14_11 [template = constants.%i32] {
|
||||
// CHECK:STDOUT: %int_32.loc14_11: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc14_11: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: %.loc14_11: type = splice_block %i32.loc14_11 [concrete = constants.%i32] {
|
||||
// CHECK:STDOUT: %int_32.loc14_11: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc14_11: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %a: %i32 = bind_name a, %a.param
|
||||
// CHECK:STDOUT: %b.param: %i32 = value_param runtime_param1
|
||||
// CHECK:STDOUT: %.loc14_19: type = splice_block %i32.loc14_19 [template = constants.%i32] {
|
||||
// CHECK:STDOUT: %int_32.loc14_19: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc14_19: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: %.loc14_19: type = splice_block %i32.loc14_19 [concrete = constants.%i32] {
|
||||
// CHECK:STDOUT: %int_32.loc14_19: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc14_19: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %b: %i32 = bind_name b, %b.param
|
||||
// CHECK:STDOUT: %return.param: ref %i32 = out_param runtime_param2
|
||||
// CHECK:STDOUT: %return: ref %i32 = return_slot %return.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %assoc1: %I.assoc_type = assoc_entity element1, %G.decl [template = constants.%assoc1]
|
||||
// CHECK:STDOUT: %T: type = assoc_const_decl @T [template] {
|
||||
// CHECK:STDOUT: %assoc2: %I.assoc_type = assoc_entity element2, @I.%T [template = constants.%assoc2]
|
||||
// CHECK:STDOUT: %int_32.loc18_19: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc18_19: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: %int_32.loc18_24: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc18_24: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: %assoc1: %I.assoc_type = assoc_entity element1, %G.decl [concrete = constants.%assoc1]
|
||||
// CHECK:STDOUT: %T: type = assoc_const_decl @T [concrete] {
|
||||
// CHECK:STDOUT: %assoc2: %I.assoc_type = assoc_entity element2, @I.%T [concrete = constants.%assoc2]
|
||||
// CHECK:STDOUT: %int_32.loc18_19: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc18_19: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %int_32.loc18_24: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc18_24: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %.loc18_27: %tuple.type.24b = tuple_literal (%i32.loc18_19, %i32.loc18_24)
|
||||
// CHECK:STDOUT: %.loc18_28: type = converted %.loc18_27, constants.%tuple.type.d07 [template = constants.%tuple.type.d07]
|
||||
// CHECK:STDOUT: %.loc18_28: type = converted %.loc18_27, constants.%tuple.type.d07 [concrete = constants.%tuple.type.d07]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %N: %i32 = assoc_const_decl @N [template] {
|
||||
// CHECK:STDOUT: %assoc3: %I.assoc_type = assoc_entity element3, @I.%N [template = constants.%assoc3]
|
||||
// CHECK:STDOUT: %int_42: Core.IntLiteral = int_value 42 [template = constants.%int_42.20e]
|
||||
// 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_42, %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_42) [template = constants.%int_42.c68]
|
||||
// CHECK:STDOUT: %.loc19_19.1: %i32 = value_of_initializer %int.convert_checked [template = constants.%int_42.c68]
|
||||
// CHECK:STDOUT: %.loc19_19.2: %i32 = converted %int_42, %.loc19_19.1 [template = constants.%int_42.c68]
|
||||
// CHECK:STDOUT: %N: %i32 = assoc_const_decl @N [concrete] {
|
||||
// CHECK:STDOUT: %assoc3: %I.assoc_type = assoc_entity element3, @I.%N [concrete = constants.%assoc3]
|
||||
// CHECK:STDOUT: %int_42: Core.IntLiteral = int_value 42 [concrete = constants.%int_42.20e]
|
||||
// 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_42, %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_42) [concrete = constants.%int_42.c68]
|
||||
// CHECK:STDOUT: %.loc19_19.1: %i32 = value_of_initializer %int.convert_checked [concrete = constants.%int_42.c68]
|
||||
// CHECK:STDOUT: %.loc19_19.2: %i32 = converted %int_42, %.loc19_19.1 [concrete = constants.%int_42.c68]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
|
||||
Reference in New Issue
Block a user