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:
+71
-71
@@ -36,43 +36,43 @@ fn Call(a: A*, b: B*, c: C*, d: D*) {
|
||||
// CHECK:STDOUT: --- base_method_shadow.carbon
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %A: type = class_type @A [template]
|
||||
// CHECK:STDOUT: %ptr.6db: type = ptr_type %A [template]
|
||||
// CHECK:STDOUT: %F.type.649: type = fn_type @F.1 [template]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %F.485: %F.type.649 = struct_value () [template]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [template]
|
||||
// CHECK:STDOUT: %complete_type.357: <witness> = complete_type_witness %empty_struct_type [template]
|
||||
// CHECK:STDOUT: %B: type = class_type @B [template]
|
||||
// CHECK:STDOUT: %B.elem: type = unbound_element_type %B, %A [template]
|
||||
// CHECK:STDOUT: %ptr.e79: type = ptr_type %B [template]
|
||||
// CHECK:STDOUT: %F.type.8c6: type = fn_type @F.2 [template]
|
||||
// CHECK:STDOUT: %F.92a: %F.type.8c6 = struct_value () [template]
|
||||
// CHECK:STDOUT: %struct_type.base.953: type = struct_type {.base: %A} [template]
|
||||
// CHECK:STDOUT: %complete_type.020: <witness> = complete_type_witness %struct_type.base.953 [template]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [template]
|
||||
// CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %B [template]
|
||||
// CHECK:STDOUT: %ptr.019: type = ptr_type %C [template]
|
||||
// CHECK:STDOUT: %F.type.c29: type = fn_type @F.3 [template]
|
||||
// CHECK:STDOUT: %F.437: %F.type.c29 = struct_value () [template]
|
||||
// CHECK:STDOUT: %struct_type.base.0ff: type = struct_type {.base: %B} [template]
|
||||
// CHECK:STDOUT: %complete_type.98e: <witness> = complete_type_witness %struct_type.base.0ff [template]
|
||||
// CHECK:STDOUT: %D: type = class_type @D [template]
|
||||
// CHECK:STDOUT: %D.elem: type = unbound_element_type %D, %B [template]
|
||||
// CHECK:STDOUT: %ptr.19c: type = ptr_type %D [template]
|
||||
// CHECK:STDOUT: %Call.type: type = fn_type @Call [template]
|
||||
// CHECK:STDOUT: %Call: %Call.type = struct_value () [template]
|
||||
// CHECK:STDOUT: %A: type = class_type @A [concrete]
|
||||
// CHECK:STDOUT: %ptr.6db: type = ptr_type %A [concrete]
|
||||
// CHECK:STDOUT: %F.type.649: type = fn_type @F.1 [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %F.485: %F.type.649 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type.357: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %B: type = class_type @B [concrete]
|
||||
// CHECK:STDOUT: %B.elem: type = unbound_element_type %B, %A [concrete]
|
||||
// CHECK:STDOUT: %ptr.e79: type = ptr_type %B [concrete]
|
||||
// CHECK:STDOUT: %F.type.8c6: type = fn_type @F.2 [concrete]
|
||||
// CHECK:STDOUT: %F.92a: %F.type.8c6 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %struct_type.base.953: type = struct_type {.base: %A} [concrete]
|
||||
// CHECK:STDOUT: %complete_type.020: <witness> = complete_type_witness %struct_type.base.953 [concrete]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [concrete]
|
||||
// CHECK:STDOUT: %C.elem: type = unbound_element_type %C, %B [concrete]
|
||||
// CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete]
|
||||
// CHECK:STDOUT: %F.type.c29: type = fn_type @F.3 [concrete]
|
||||
// CHECK:STDOUT: %F.437: %F.type.c29 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %struct_type.base.0ff: type = struct_type {.base: %B} [concrete]
|
||||
// CHECK:STDOUT: %complete_type.98e: <witness> = complete_type_witness %struct_type.base.0ff [concrete]
|
||||
// CHECK:STDOUT: %D: type = class_type @D [concrete]
|
||||
// CHECK:STDOUT: %D.elem: type = unbound_element_type %D, %B [concrete]
|
||||
// CHECK:STDOUT: %ptr.19c: type = ptr_type %D [concrete]
|
||||
// CHECK:STDOUT: %Call.type: type = fn_type @Call [concrete]
|
||||
// CHECK:STDOUT: %Call: %Call.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [template] {
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace file.%Core.import, [concrete] {
|
||||
// CHECK:STDOUT: import Core//prelude
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [template] {
|
||||
// CHECK:STDOUT: package: <namespace> = namespace [concrete] {
|
||||
// CHECK:STDOUT: .Core = imports.%Core
|
||||
// CHECK:STDOUT: .A = %A.decl
|
||||
// CHECK:STDOUT: .B = %B.decl
|
||||
@@ -81,11 +81,11 @@ fn Call(a: A*, b: B*, c: C*, d: D*) {
|
||||
// CHECK:STDOUT: .Call = %Call.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %A.decl: type = class_decl @A [template = constants.%A] {} {}
|
||||
// CHECK:STDOUT: %B.decl: type = class_decl @B [template = constants.%B] {} {}
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %D.decl: type = class_decl @D [template = constants.%D] {} {}
|
||||
// CHECK:STDOUT: %Call.decl: %Call.type = fn_decl @Call [template = constants.%Call] {
|
||||
// CHECK:STDOUT: %A.decl: type = class_decl @A [concrete = constants.%A] {} {}
|
||||
// CHECK:STDOUT: %B.decl: type = class_decl @B [concrete = constants.%B] {} {}
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [concrete = constants.%C] {} {}
|
||||
// CHECK:STDOUT: %D.decl: type = class_decl @D [concrete = constants.%D] {} {}
|
||||
// CHECK:STDOUT: %Call.decl: %Call.type = fn_decl @Call [concrete = constants.%Call] {
|
||||
// CHECK:STDOUT: %a.patt: %ptr.6db = binding_pattern a
|
||||
// CHECK:STDOUT: %a.param_patt: %ptr.6db = value_param_pattern %a.patt, runtime_param0
|
||||
// CHECK:STDOUT: %b.patt: %ptr.e79 = binding_pattern b
|
||||
@@ -96,46 +96,46 @@ fn Call(a: A*, b: B*, c: C*, d: D*) {
|
||||
// CHECK:STDOUT: %d.param_patt: %ptr.19c = value_param_pattern %d.patt, runtime_param3
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %a.param: %ptr.6db = value_param runtime_param0
|
||||
// CHECK:STDOUT: %.loc29_13: type = splice_block %ptr.loc29_13 [template = constants.%ptr.6db] {
|
||||
// CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [template = constants.%A]
|
||||
// CHECK:STDOUT: %ptr.loc29_13: type = ptr_type %A [template = constants.%ptr.6db]
|
||||
// CHECK:STDOUT: %.loc29_13: type = splice_block %ptr.loc29_13 [concrete = constants.%ptr.6db] {
|
||||
// CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A]
|
||||
// CHECK:STDOUT: %ptr.loc29_13: type = ptr_type %A [concrete = constants.%ptr.6db]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %a: %ptr.6db = bind_name a, %a.param
|
||||
// CHECK:STDOUT: %b.param: %ptr.e79 = value_param runtime_param1
|
||||
// CHECK:STDOUT: %.loc29_20: type = splice_block %ptr.loc29_20 [template = constants.%ptr.e79] {
|
||||
// CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [template = constants.%B]
|
||||
// CHECK:STDOUT: %ptr.loc29_20: type = ptr_type %B [template = constants.%ptr.e79]
|
||||
// CHECK:STDOUT: %.loc29_20: type = splice_block %ptr.loc29_20 [concrete = constants.%ptr.e79] {
|
||||
// CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [concrete = constants.%B]
|
||||
// CHECK:STDOUT: %ptr.loc29_20: type = ptr_type %B [concrete = constants.%ptr.e79]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %b: %ptr.e79 = bind_name b, %b.param
|
||||
// CHECK:STDOUT: %c.param: %ptr.019 = value_param runtime_param2
|
||||
// CHECK:STDOUT: %.loc29_27: type = splice_block %ptr.loc29_27 [template = constants.%ptr.019] {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %ptr.loc29_27: type = ptr_type %C [template = constants.%ptr.019]
|
||||
// CHECK:STDOUT: %.loc29_27: type = splice_block %ptr.loc29_27 [concrete = constants.%ptr.019] {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %ptr.loc29_27: type = ptr_type %C [concrete = constants.%ptr.019]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %c: %ptr.019 = bind_name c, %c.param
|
||||
// CHECK:STDOUT: %d.param: %ptr.19c = value_param runtime_param3
|
||||
// CHECK:STDOUT: %.loc29_34: type = splice_block %ptr.loc29_34 [template = constants.%ptr.19c] {
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [template = constants.%D]
|
||||
// CHECK:STDOUT: %ptr.loc29_34: type = ptr_type %D [template = constants.%ptr.19c]
|
||||
// CHECK:STDOUT: %.loc29_34: type = splice_block %ptr.loc29_34 [concrete = constants.%ptr.19c] {
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, file.%D.decl [concrete = constants.%D]
|
||||
// CHECK:STDOUT: %ptr.loc29_34: type = ptr_type %D [concrete = constants.%ptr.19c]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %d: %ptr.19c = bind_name d, %d.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @A {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.649 = fn_decl @F.1 [template = constants.%F.485] {
|
||||
// CHECK:STDOUT: %F.decl: %F.type.649 = fn_decl @F.1 [concrete = constants.%F.485] {
|
||||
// CHECK:STDOUT: %self.patt: %ptr.6db = binding_pattern self
|
||||
// CHECK:STDOUT: %self.param_patt: %ptr.6db = value_param_pattern %self.patt, runtime_param0
|
||||
// CHECK:STDOUT: %.loc12_8: auto = addr_pattern %self.param_patt
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %self.param: %ptr.6db = value_param runtime_param0
|
||||
// CHECK:STDOUT: %.loc12_23: type = splice_block %ptr [template = constants.%ptr.6db] {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%A [template = constants.%A]
|
||||
// CHECK:STDOUT: %ptr: type = ptr_type %A [template = constants.%ptr.6db]
|
||||
// CHECK:STDOUT: %.loc12_23: type = splice_block %ptr [concrete = constants.%ptr.6db] {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%A [concrete = constants.%A]
|
||||
// CHECK:STDOUT: %ptr: type = ptr_type %A [concrete = constants.%ptr.6db]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %self: %ptr.6db = bind_name self, %self.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [template = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -144,21 +144,21 @@ fn Call(a: A*, b: B*, c: C*, d: D*) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @B {
|
||||
// CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [template = constants.%A]
|
||||
// CHECK:STDOUT: %.loc16: %B.elem = base_decl %A.ref, element0 [template]
|
||||
// CHECK:STDOUT: %F.decl: %F.type.8c6 = fn_decl @F.2 [template = constants.%F.92a] {
|
||||
// CHECK:STDOUT: %A.ref: type = name_ref A, file.%A.decl [concrete = constants.%A]
|
||||
// CHECK:STDOUT: %.loc16: %B.elem = base_decl %A.ref, element0 [concrete]
|
||||
// CHECK:STDOUT: %F.decl: %F.type.8c6 = fn_decl @F.2 [concrete = constants.%F.92a] {
|
||||
// CHECK:STDOUT: %self.patt: %ptr.e79 = binding_pattern self
|
||||
// CHECK:STDOUT: %self.param_patt: %ptr.e79 = value_param_pattern %self.patt, runtime_param0
|
||||
// CHECK:STDOUT: %.loc17_8: auto = addr_pattern %self.param_patt
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %self.param: %ptr.e79 = value_param runtime_param0
|
||||
// CHECK:STDOUT: %.loc17_23: type = splice_block %ptr [template = constants.%ptr.e79] {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%B [template = constants.%B]
|
||||
// CHECK:STDOUT: %ptr: type = ptr_type %B [template = constants.%ptr.e79]
|
||||
// CHECK:STDOUT: %.loc17_23: type = splice_block %ptr [concrete = constants.%ptr.e79] {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%B [concrete = constants.%B]
|
||||
// CHECK:STDOUT: %ptr: type = ptr_type %B [concrete = constants.%ptr.e79]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %self: %ptr.e79 = bind_name self, %self.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %struct_type.base.953 [template = constants.%complete_type.020]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %struct_type.base.953 [concrete = constants.%complete_type.020]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -169,21 +169,21 @@ fn Call(a: A*, b: B*, c: C*, d: D*) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @C {
|
||||
// CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [template = constants.%B]
|
||||
// CHECK:STDOUT: %.loc21: %C.elem = base_decl %B.ref, element0 [template]
|
||||
// CHECK:STDOUT: %F.decl: %F.type.c29 = fn_decl @F.3 [template = constants.%F.437] {
|
||||
// CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [concrete = constants.%B]
|
||||
// CHECK:STDOUT: %.loc21: %C.elem = base_decl %B.ref, element0 [concrete]
|
||||
// CHECK:STDOUT: %F.decl: %F.type.c29 = fn_decl @F.3 [concrete = constants.%F.437] {
|
||||
// CHECK:STDOUT: %self.patt: %ptr.019 = binding_pattern self
|
||||
// CHECK:STDOUT: %self.param_patt: %ptr.019 = value_param_pattern %self.patt, runtime_param0
|
||||
// CHECK:STDOUT: %.loc22_8: auto = addr_pattern %self.param_patt
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %self.param: %ptr.019 = value_param runtime_param0
|
||||
// CHECK:STDOUT: %.loc22_23: type = splice_block %ptr [template = constants.%ptr.019] {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [template = constants.%C]
|
||||
// CHECK:STDOUT: %ptr: type = ptr_type %C [template = constants.%ptr.019]
|
||||
// CHECK:STDOUT: %.loc22_23: type = splice_block %ptr [concrete = constants.%ptr.019] {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %ptr: type = ptr_type %C [concrete = constants.%ptr.019]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %self: %ptr.019 = bind_name self, %self.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %struct_type.base.0ff [template = constants.%complete_type.98e]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %struct_type.base.0ff [concrete = constants.%complete_type.98e]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -194,9 +194,9 @@ fn Call(a: A*, b: B*, c: C*, d: D*) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @D {
|
||||
// CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [template = constants.%B]
|
||||
// CHECK:STDOUT: %.loc26: %D.elem = base_decl %B.ref, element0 [template]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %struct_type.base.0ff [template = constants.%complete_type.98e]
|
||||
// CHECK:STDOUT: %B.ref: type = name_ref B, file.%B.decl [concrete = constants.%B]
|
||||
// CHECK:STDOUT: %.loc26: %D.elem = base_decl %B.ref, element0 [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %struct_type.base.0ff [concrete = constants.%complete_type.98e]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -215,25 +215,25 @@ fn Call(a: A*, b: B*, c: C*, d: D*) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %a.ref: %ptr.6db = name_ref a, %a
|
||||
// CHECK:STDOUT: %.loc30: ref %A = deref %a.ref
|
||||
// CHECK:STDOUT: %F.ref.loc30: %F.type.649 = name_ref F, @A.%F.decl [template = constants.%F.485]
|
||||
// CHECK:STDOUT: %F.ref.loc30: %F.type.649 = name_ref F, @A.%F.decl [concrete = constants.%F.485]
|
||||
// CHECK:STDOUT: %F.bound.loc30: <bound method> = bound_method %.loc30, %F.ref.loc30
|
||||
// CHECK:STDOUT: %addr.loc30: %ptr.6db = addr_of %.loc30
|
||||
// CHECK:STDOUT: %F.call.loc30: init %empty_tuple.type = call %F.bound.loc30(%addr.loc30)
|
||||
// CHECK:STDOUT: %b.ref: %ptr.e79 = name_ref b, %b
|
||||
// CHECK:STDOUT: %.loc31: ref %B = deref %b.ref
|
||||
// CHECK:STDOUT: %F.ref.loc31: %F.type.8c6 = name_ref F, @B.%F.decl [template = constants.%F.92a]
|
||||
// CHECK:STDOUT: %F.ref.loc31: %F.type.8c6 = name_ref F, @B.%F.decl [concrete = constants.%F.92a]
|
||||
// CHECK:STDOUT: %F.bound.loc31: <bound method> = bound_method %.loc31, %F.ref.loc31
|
||||
// CHECK:STDOUT: %addr.loc31: %ptr.e79 = addr_of %.loc31
|
||||
// CHECK:STDOUT: %F.call.loc31: init %empty_tuple.type = call %F.bound.loc31(%addr.loc31)
|
||||
// CHECK:STDOUT: %c.ref: %ptr.019 = name_ref c, %c
|
||||
// CHECK:STDOUT: %.loc32: ref %C = deref %c.ref
|
||||
// CHECK:STDOUT: %F.ref.loc32: %F.type.c29 = name_ref F, @C.%F.decl [template = constants.%F.437]
|
||||
// CHECK:STDOUT: %F.ref.loc32: %F.type.c29 = name_ref F, @C.%F.decl [concrete = constants.%F.437]
|
||||
// CHECK:STDOUT: %F.bound.loc32: <bound method> = bound_method %.loc32, %F.ref.loc32
|
||||
// CHECK:STDOUT: %addr.loc32: %ptr.019 = addr_of %.loc32
|
||||
// CHECK:STDOUT: %F.call.loc32: init %empty_tuple.type = call %F.bound.loc32(%addr.loc32)
|
||||
// CHECK:STDOUT: %d.ref: %ptr.19c = name_ref d, %d
|
||||
// CHECK:STDOUT: %.loc33_4.1: ref %D = deref %d.ref
|
||||
// CHECK:STDOUT: %F.ref.loc33: %F.type.8c6 = name_ref F, @B.%F.decl [template = constants.%F.92a]
|
||||
// CHECK:STDOUT: %F.ref.loc33: %F.type.8c6 = name_ref F, @B.%F.decl [concrete = constants.%F.92a]
|
||||
// CHECK:STDOUT: %F.bound.loc33: <bound method> = bound_method %.loc33_4.1, %F.ref.loc33
|
||||
// CHECK:STDOUT: %addr.loc33_4.1: %ptr.19c = addr_of %.loc33_4.1
|
||||
// CHECK:STDOUT: %.loc33_4.2: ref %D = deref %addr.loc33_4.1
|
||||
|
||||
Reference in New Issue
Block a user