mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-05 22:02:55 +01:00
Add builtin functions for destroy, with special requirements in facet types (#6035)
This is in support of a goal of changing the blanket `destroy` impl to
use (roughly):
```
private fn CanAggregateDestroy() -> type = "type.can_aggregate_destroy";
// Handles aggregate type destruction.
impl forall [AggregateDestroyT:! CanAggregateDestroy()] AggregateDestroyT as Destroy {
fn Op[addr self: Self*]() = "type.aggregate_destroy";
}
```
That isn't done here because there's still other issues that migrating
raises. What this *does* do is add the builtin functions, and in
particular, support to `FacetTypeInfo` to make `CanAggregateDestroy`
work.
The "special requirement" approach in `FacetTypeInfo` allows us to
support restricting a blanket impl under the current approach of impls.
Maybe we'll find a cleaner approach that can work in the future, but
this fits into the current model by propagating similar to other
requirements. I'm using an enum mask because we have a number of similar
things to add (e.g. copy, move) but I'm not sure we need a full vector.
A few alternatives considered were:
- Supporting syntax more like `where .Self impls
TypeCanAggregateDestroy(.Self, SupportedInterface,
UnsupportedInterface)`. I think it'd be a little cleaner, but requires
better compile-time evaluation in order to assess the type of the call.
Right now it's expected to be a `FacetType` too early to make this work,
and I was concerned about pouring too much more time down this route.
- Providing an actual interface, in particular doing name lookup back
into `Core.` for an interface. This would've added name lookup overhead,
and the question of whether an `impl` exists.
- Generating an interface. This avoids the name lookup, but would still
raise the question of whether an `impl` should also be generated. Work
I've previously done generating interfaces for class destruction also
feels complex to both write and understand (an unfortunate issue).
- Still modeling as an `ImplsConstraint`, for example by defining a
special `InterfaceId::CanAggregateDestroy = -2` similar to what we do on
other ids. I was hesitant because of how this expands the number of
modes of `InterfaceId`, and things for consuming code to watch out for,
for what feels like a relatively niche set of use-cases that are only
interface-like.
---------
Co-authored-by: Dana Jansens <danakj@orodu.net>
This commit is contained in:
co-authored by
Dana Jansens
parent
3ec0bcb4fd
commit
5e3bb523f8
+175
-175
@@ -74,44 +74,44 @@ fn CallSpecific(x: C*) -> C* {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete]
|
||||
// CHECK:STDOUT: %T.578: %Copy.type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.ce2: type = pattern_type %Copy.type [concrete]
|
||||
// CHECK:STDOUT: %T.as_type: type = facet_access_type %T.578 [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.f8cebc.1: type = pattern_type %T.as_type [symbolic]
|
||||
// CHECK:STDOUT: %T.be8: %Copy.type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.322: type = pattern_type %Copy.type [concrete]
|
||||
// CHECK:STDOUT: %T.as_type: type = facet_access_type %T.be8 [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.965801.1: type = pattern_type %T.as_type [symbolic]
|
||||
// CHECK:STDOUT: %Function.type: type = fn_type @Function [concrete]
|
||||
// CHECK:STDOUT: %Function: %Function.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %require_complete.ecc: <witness> = require_complete_type %T.as_type [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.07c: <witness> = require_complete_type %T.as_type [symbolic]
|
||||
// CHECK:STDOUT: %Copy.Op.type: type = fn_type @Copy.Op [concrete]
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness.3ba: <witness> = lookup_impl_witness %T.578, @Copy [symbolic]
|
||||
// CHECK:STDOUT: %Copy.facet.72e: %Copy.type = facet_value %T.as_type, (%Copy.lookup_impl_witness.3ba) [symbolic]
|
||||
// CHECK:STDOUT: %.671: type = fn_type_with_self_type %Copy.Op.type, %Copy.facet.72e [symbolic]
|
||||
// CHECK:STDOUT: %impl.elem0.56e: %.671 = impl_witness_access %Copy.lookup_impl_witness.3ba, element0 [symbolic]
|
||||
// CHECK:STDOUT: %specific_impl_fn.fb7: <specific function> = specific_impl_function %impl.elem0.56e, @Copy.Op(%Copy.facet.72e) [symbolic]
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness.e15: <witness> = lookup_impl_witness %T.be8, @Copy [symbolic]
|
||||
// CHECK:STDOUT: %Copy.facet.021: %Copy.type = facet_value %T.as_type, (%Copy.lookup_impl_witness.e15) [symbolic]
|
||||
// CHECK:STDOUT: %.c50: type = fn_type_with_self_type %Copy.Op.type, %Copy.facet.021 [symbolic]
|
||||
// CHECK:STDOUT: %impl.elem0.792: %.c50 = impl_witness_access %Copy.lookup_impl_witness.e15, element0 [symbolic]
|
||||
// CHECK:STDOUT: %specific_impl_fn.547: <specific function> = specific_impl_function %impl.elem0.792, @Copy.Op(%Copy.facet.021) [symbolic]
|
||||
// CHECK:STDOUT: %T.8b3: type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %ptr.79f: type = ptr_type %T.8b3 [symbolic]
|
||||
// CHECK:STDOUT: %ptr.as.Copy.impl.Op.type.f23: type = fn_type @ptr.as.Copy.impl.Op, @ptr.as.Copy.impl(%T.8b3) [symbolic]
|
||||
// CHECK:STDOUT: %ptr.as.Copy.impl.Op.abf: %ptr.as.Copy.impl.Op.type.f23 = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %ptr.as.Copy.impl.Op.type.31f: type = fn_type @ptr.as.Copy.impl.Op, @ptr.as.Copy.impl(%T.8b3) [symbolic]
|
||||
// CHECK:STDOUT: %ptr.as.Copy.impl.Op.8a8: %ptr.as.Copy.impl.Op.type.31f = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.afe: type = pattern_type %ptr.79f [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.6e5: <witness> = require_complete_type %ptr.79f [symbolic]
|
||||
// CHECK:STDOUT: %Function.specific_fn.e31: <specific function> = specific_function %Function, @Function(%T.578) [symbolic]
|
||||
// CHECK:STDOUT: %Function.specific_fn.8cd: <specific function> = specific_function %Function, @Function(%T.be8) [symbolic]
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness.cb2: <witness> = lookup_impl_witness %ptr.79f, @Copy [symbolic]
|
||||
// CHECK:STDOUT: %Copy.facet.def: %Copy.type = facet_value %ptr.79f, (%Copy.lookup_impl_witness.cb2) [symbolic]
|
||||
// CHECK:STDOUT: %Function.specific_fn.329: <specific function> = specific_function %Function, @Function(%Copy.facet.def) [symbolic]
|
||||
// CHECK:STDOUT: %Copy.facet.2d1: %Copy.type = facet_value %ptr.79f, (%Copy.lookup_impl_witness.cb2) [symbolic]
|
||||
// CHECK:STDOUT: %Function.specific_fn.d32: <specific function> = specific_function %Function, @Function(%Copy.facet.2d1) [symbolic]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [concrete]
|
||||
// CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete]
|
||||
// CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.44a: type = pattern_type %ptr.019 [concrete]
|
||||
// CHECK:STDOUT: %Copy.impl_witness.a94: <witness> = impl_witness imports.%Copy.impl_witness_table.a71, @ptr.as.Copy.impl(%C) [concrete]
|
||||
// CHECK:STDOUT: %ptr.as.Copy.impl.Op.type.0f5: type = fn_type @ptr.as.Copy.impl.Op, @ptr.as.Copy.impl(%C) [concrete]
|
||||
// CHECK:STDOUT: %ptr.as.Copy.impl.Op.fd1: %ptr.as.Copy.impl.Op.type.0f5 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Copy.impl_witness.999: <witness> = impl_witness imports.%Copy.impl_witness_table.53c, @ptr.as.Copy.impl(%C) [concrete]
|
||||
// CHECK:STDOUT: %ptr.as.Copy.impl.Op.type.c3f: type = fn_type @ptr.as.Copy.impl.Op, @ptr.as.Copy.impl(%C) [concrete]
|
||||
// CHECK:STDOUT: %ptr.as.Copy.impl.Op.fb8: %ptr.as.Copy.impl.Op.type.c3f = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %complete_type.d05: <witness> = complete_type_witness %ptr.019 [concrete]
|
||||
// CHECK:STDOUT: %Copy.facet.9a6: %Copy.type = facet_value %ptr.019, (%Copy.impl_witness.a94) [concrete]
|
||||
// CHECK:STDOUT: %Function.specific_fn.527: <specific function> = specific_function %Function, @Function(%Copy.facet.9a6) [concrete]
|
||||
// CHECK:STDOUT: %.fe5: type = fn_type_with_self_type %Copy.Op.type, %Copy.facet.def [symbolic]
|
||||
// CHECK:STDOUT: %impl.elem0.429: %.fe5 = impl_witness_access %Copy.lookup_impl_witness.cb2, element0 [symbolic]
|
||||
// CHECK:STDOUT: %specific_impl_fn.d8a: <specific function> = specific_impl_function %impl.elem0.429, @Copy.Op(%Copy.facet.def) [symbolic]
|
||||
// CHECK:STDOUT: %.a98: type = fn_type_with_self_type %Copy.Op.type, %Copy.facet.9a6 [concrete]
|
||||
// CHECK:STDOUT: %ptr.as.Copy.impl.Op.specific_fn: <specific function> = specific_function %ptr.as.Copy.impl.Op.fd1, @ptr.as.Copy.impl.Op(%C) [concrete]
|
||||
// CHECK:STDOUT: %Copy.facet.9e3: %Copy.type = facet_value %ptr.019, (%Copy.impl_witness.999) [concrete]
|
||||
// CHECK:STDOUT: %Function.specific_fn.d9e: <specific function> = specific_function %Function, @Function(%Copy.facet.9e3) [concrete]
|
||||
// CHECK:STDOUT: %.1cc: type = fn_type_with_self_type %Copy.Op.type, %Copy.facet.2d1 [symbolic]
|
||||
// CHECK:STDOUT: %impl.elem0.751: %.1cc = impl_witness_access %Copy.lookup_impl_witness.cb2, element0 [symbolic]
|
||||
// CHECK:STDOUT: %specific_impl_fn.f44: <specific function> = specific_impl_function %impl.elem0.751, @Copy.Op(%Copy.facet.2d1) [symbolic]
|
||||
// CHECK:STDOUT: %.7e9: type = fn_type_with_self_type %Copy.Op.type, %Copy.facet.9e3 [concrete]
|
||||
// CHECK:STDOUT: %ptr.as.Copy.impl.Op.specific_fn: <specific function> = specific_function %ptr.as.Copy.impl.Op.fb8, @ptr.as.Copy.impl.Op(%C) [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
@@ -122,20 +122,20 @@ fn CallSpecific(x: C*) -> C* {
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.Copy: type = import_ref Core//prelude/parts/copy, Copy, loaded [concrete = constants.%Copy.type]
|
||||
// CHECK:STDOUT: %Core.import_ref.de9: @ptr.as.Copy.impl.%ptr.as.Copy.impl.Op.type (%ptr.as.Copy.impl.Op.type.f23) = import_ref Core//prelude/parts/copy, loc36_31, loaded [symbolic = @ptr.as.Copy.impl.%ptr.as.Copy.impl.Op (constants.%ptr.as.Copy.impl.Op.abf)]
|
||||
// CHECK:STDOUT: %Copy.impl_witness_table.a71 = impl_witness_table (%Core.import_ref.de9), @ptr.as.Copy.impl [concrete]
|
||||
// CHECK:STDOUT: %Core.import_ref.0e4: @ptr.as.Copy.impl.%ptr.as.Copy.impl.Op.type (%ptr.as.Copy.impl.Op.type.31f) = import_ref Core//prelude/parts/copy, loc36_31, loaded [symbolic = @ptr.as.Copy.impl.%ptr.as.Copy.impl.Op (constants.%ptr.as.Copy.impl.Op.8a8)]
|
||||
// CHECK:STDOUT: %Copy.impl_witness_table.53c = impl_witness_table (%Core.import_ref.0e4), @ptr.as.Copy.impl [concrete]
|
||||
// CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: %Function.decl: %Function.type = fn_decl @Function [concrete = constants.%Function] {
|
||||
// CHECK:STDOUT: %T.patt: %pattern_type.ce2 = symbolic_binding_pattern T, 0 [concrete]
|
||||
// CHECK:STDOUT: %x.patt: @Function.%pattern_type (%pattern_type.f8cebc.1) = binding_pattern x [concrete]
|
||||
// CHECK:STDOUT: %x.param_patt: @Function.%pattern_type (%pattern_type.f8cebc.1) = value_param_pattern %x.patt, call_param0 [concrete]
|
||||
// CHECK:STDOUT: %return.patt: @Function.%pattern_type (%pattern_type.f8cebc.1) = return_slot_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: @Function.%pattern_type (%pattern_type.f8cebc.1) = out_param_pattern %return.patt, call_param1 [concrete]
|
||||
// CHECK:STDOUT: %T.patt: %pattern_type.322 = symbolic_binding_pattern T, 0 [concrete]
|
||||
// CHECK:STDOUT: %x.patt: @Function.%pattern_type (%pattern_type.965801.1) = binding_pattern x [concrete]
|
||||
// CHECK:STDOUT: %x.param_patt: @Function.%pattern_type (%pattern_type.965801.1) = value_param_pattern %x.patt, call_param0 [concrete]
|
||||
// CHECK:STDOUT: %return.patt: @Function.%pattern_type (%pattern_type.965801.1) = return_slot_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: @Function.%pattern_type (%pattern_type.965801.1) = out_param_pattern %return.patt, call_param1 [concrete]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc5_37: %Copy.type = name_ref T, %T.loc5_13.2 [symbolic = %T.loc5_13.1 (constants.%T.578)]
|
||||
// CHECK:STDOUT: %T.ref.loc5_37: %Copy.type = name_ref T, %T.loc5_13.2 [symbolic = %T.loc5_13.1 (constants.%T.be8)]
|
||||
// CHECK:STDOUT: %T.as_type.loc5_37: type = facet_access_type %T.ref.loc5_37 [symbolic = %T.as_type.loc5_31.1 (constants.%T.as_type)]
|
||||
// CHECK:STDOUT: %.loc5_37: type = converted %T.ref.loc5_37, %T.as_type.loc5_37 [symbolic = %T.as_type.loc5_31.1 (constants.%T.as_type)]
|
||||
// CHECK:STDOUT: %.loc5_21: type = splice_block %Copy.ref [concrete = constants.%Copy.type] {
|
||||
@@ -143,10 +143,10 @@ fn CallSpecific(x: C*) -> C* {
|
||||
// CHECK:STDOUT: %Core.ref: <namespace> = name_ref Core, imports.%Core [concrete = imports.%Core]
|
||||
// CHECK:STDOUT: %Copy.ref: type = name_ref Copy, imports.%Core.Copy [concrete = constants.%Copy.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %T.loc5_13.2: %Copy.type = bind_symbolic_name T, 0 [symbolic = %T.loc5_13.1 (constants.%T.578)]
|
||||
// CHECK:STDOUT: %T.loc5_13.2: %Copy.type = bind_symbolic_name T, 0 [symbolic = %T.loc5_13.1 (constants.%T.be8)]
|
||||
// CHECK:STDOUT: %x.param: @Function.%T.as_type.loc5_31.1 (%T.as_type) = value_param call_param0
|
||||
// CHECK:STDOUT: %.loc5_31.1: type = splice_block %.loc5_31.2 [symbolic = %T.as_type.loc5_31.1 (constants.%T.as_type)] {
|
||||
// CHECK:STDOUT: %T.ref.loc5_31: %Copy.type = name_ref T, %T.loc5_13.2 [symbolic = %T.loc5_13.1 (constants.%T.578)]
|
||||
// CHECK:STDOUT: %T.ref.loc5_31: %Copy.type = name_ref T, %T.loc5_13.2 [symbolic = %T.loc5_13.1 (constants.%T.be8)]
|
||||
// CHECK:STDOUT: %T.as_type.loc5_31.2: type = facet_access_type %T.ref.loc5_31 [symbolic = %T.as_type.loc5_31.1 (constants.%T.as_type)]
|
||||
// CHECK:STDOUT: %.loc5_31.2: type = converted %T.ref.loc5_31, %T.as_type.loc5_31.2 [symbolic = %T.as_type.loc5_31.1 (constants.%T.as_type)]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -157,24 +157,24 @@ fn CallSpecific(x: C*) -> C* {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic fn @Function(%T.loc5_13.2: %Copy.type) {
|
||||
// CHECK:STDOUT: %T.loc5_13.1: %Copy.type = bind_symbolic_name T, 0 [symbolic = %T.loc5_13.1 (constants.%T.578)]
|
||||
// CHECK:STDOUT: %T.loc5_13.1: %Copy.type = bind_symbolic_name T, 0 [symbolic = %T.loc5_13.1 (constants.%T.be8)]
|
||||
// CHECK:STDOUT: %T.as_type.loc5_31.1: type = facet_access_type %T.loc5_13.1 [symbolic = %T.as_type.loc5_31.1 (constants.%T.as_type)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %T.as_type.loc5_31.1 [symbolic = %pattern_type (constants.%pattern_type.f8cebc.1)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %T.as_type.loc5_31.1 [symbolic = %pattern_type (constants.%pattern_type.965801.1)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %T.as_type.loc5_31.1 [symbolic = %require_complete (constants.%require_complete.ecc)]
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness: <witness> = lookup_impl_witness %T.loc5_13.1, @Copy [symbolic = %Copy.lookup_impl_witness (constants.%Copy.lookup_impl_witness.3ba)]
|
||||
// CHECK:STDOUT: %Copy.facet: %Copy.type = facet_value %T.as_type.loc5_31.1, (%Copy.lookup_impl_witness) [symbolic = %Copy.facet (constants.%Copy.facet.72e)]
|
||||
// CHECK:STDOUT: %.loc6_10.2: type = fn_type_with_self_type constants.%Copy.Op.type, %Copy.facet [symbolic = %.loc6_10.2 (constants.%.671)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_10.2: @Function.%.loc6_10.2 (%.671) = impl_witness_access %Copy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc6_10.2 (constants.%impl.elem0.56e)]
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc6_10.2: <specific function> = specific_impl_function %impl.elem0.loc6_10.2, @Copy.Op(%Copy.facet) [symbolic = %specific_impl_fn.loc6_10.2 (constants.%specific_impl_fn.fb7)]
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %T.as_type.loc5_31.1 [symbolic = %require_complete (constants.%require_complete.07c)]
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness: <witness> = lookup_impl_witness %T.loc5_13.1, @Copy [symbolic = %Copy.lookup_impl_witness (constants.%Copy.lookup_impl_witness.e15)]
|
||||
// CHECK:STDOUT: %Copy.facet: %Copy.type = facet_value %T.as_type.loc5_31.1, (%Copy.lookup_impl_witness) [symbolic = %Copy.facet (constants.%Copy.facet.021)]
|
||||
// CHECK:STDOUT: %.loc6_10.2: type = fn_type_with_self_type constants.%Copy.Op.type, %Copy.facet [symbolic = %.loc6_10.2 (constants.%.c50)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_10.2: @Function.%.loc6_10.2 (%.c50) = impl_witness_access %Copy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc6_10.2 (constants.%impl.elem0.792)]
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc6_10.2: <specific function> = specific_impl_function %impl.elem0.loc6_10.2, @Copy.Op(%Copy.facet) [symbolic = %specific_impl_fn.loc6_10.2 (constants.%specific_impl_fn.547)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn(%x.param: @Function.%T.as_type.loc5_31.1 (%T.as_type)) -> @Function.%T.as_type.loc5_31.1 (%T.as_type) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %x.ref: @Function.%T.as_type.loc5_31.1 (%T.as_type) = name_ref x, %x
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_10.1: @Function.%.loc6_10.2 (%.671) = impl_witness_access constants.%Copy.lookup_impl_witness.3ba, element0 [symbolic = %impl.elem0.loc6_10.2 (constants.%impl.elem0.56e)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_10.1: @Function.%.loc6_10.2 (%.c50) = impl_witness_access constants.%Copy.lookup_impl_witness.e15, element0 [symbolic = %impl.elem0.loc6_10.2 (constants.%impl.elem0.792)]
|
||||
// CHECK:STDOUT: %bound_method.loc6_10.1: <bound method> = bound_method %x.ref, %impl.elem0.loc6_10.1
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc6_10.1: <specific function> = specific_impl_function %impl.elem0.loc6_10.1, @Copy.Op(constants.%Copy.facet.72e) [symbolic = %specific_impl_fn.loc6_10.2 (constants.%specific_impl_fn.fb7)]
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc6_10.1: <specific function> = specific_impl_function %impl.elem0.loc6_10.1, @Copy.Op(constants.%Copy.facet.021) [symbolic = %specific_impl_fn.loc6_10.2 (constants.%specific_impl_fn.547)]
|
||||
// CHECK:STDOUT: %bound_method.loc6_10.2: <bound method> = bound_method %x.ref, %specific_impl_fn.loc6_10.1
|
||||
// CHECK:STDOUT: %.loc6_10.1: init @Function.%T.as_type.loc5_31.1 (%T.as_type) = call %bound_method.loc6_10.2(%x.ref)
|
||||
// CHECK:STDOUT: return %.loc6_10.1 to %return
|
||||
@@ -186,16 +186,16 @@ fn CallSpecific(x: C*) -> C* {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: %Function.specific_fn.loc12_10.2: <specific function> = specific_function constants.%Function, @Function(%T.loc10_16.1) [symbolic = %Function.specific_fn.loc12_10.2 (constants.%Function.specific_fn.e31)]
|
||||
// CHECK:STDOUT: %Function.specific_fn.loc12_10.2: <specific function> = specific_function constants.%Function, @Function(%T.loc10_16.1) [symbolic = %Function.specific_fn.loc12_10.2 (constants.%Function.specific_fn.8cd)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn(%x.param: @CallGeneric.%T.as_type.loc10_34.1 (%T.as_type)) -> @CallGeneric.%T.as_type.loc10_34.1 (%T.as_type) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %Function.ref: %Function.type = name_ref Function, file.%Function.decl [concrete = constants.%Function]
|
||||
// CHECK:STDOUT: %T.ref.loc12: %Copy.type = name_ref T, %T.loc10_16.2 [symbolic = %T.loc10_16.1 (constants.%T.578)]
|
||||
// CHECK:STDOUT: %T.ref.loc12: %Copy.type = name_ref T, %T.loc10_16.2 [symbolic = %T.loc10_16.1 (constants.%T.be8)]
|
||||
// CHECK:STDOUT: %x.ref: @CallGeneric.%T.as_type.loc10_34.1 (%T.as_type) = name_ref x, %x
|
||||
// CHECK:STDOUT: %.loc12_23.1: %Copy.type = converted constants.%T.as_type, constants.%T.578 [symbolic = %T.loc10_16.1 (constants.%T.578)]
|
||||
// CHECK:STDOUT: %.loc12_23.2: %Copy.type = converted constants.%T.as_type, constants.%T.578 [symbolic = %T.loc10_16.1 (constants.%T.578)]
|
||||
// CHECK:STDOUT: %Function.specific_fn.loc12_10.1: <specific function> = specific_function %Function.ref, @Function(constants.%T.578) [symbolic = %Function.specific_fn.loc12_10.2 (constants.%Function.specific_fn.e31)]
|
||||
// CHECK:STDOUT: %.loc12_23.1: %Copy.type = converted constants.%T.as_type, constants.%T.be8 [symbolic = %T.loc10_16.1 (constants.%T.be8)]
|
||||
// CHECK:STDOUT: %.loc12_23.2: %Copy.type = converted constants.%T.as_type, constants.%T.be8 [symbolic = %T.loc10_16.1 (constants.%T.be8)]
|
||||
// CHECK:STDOUT: %Function.specific_fn.loc12_10.1: <specific function> = specific_function %Function.ref, @Function(constants.%T.be8) [symbolic = %Function.specific_fn.loc12_10.2 (constants.%Function.specific_fn.8cd)]
|
||||
// CHECK:STDOUT: %Function.call: init @CallGeneric.%T.as_type.loc10_34.1 (%T.as_type) = call %Function.specific_fn.loc12_10.1(%x.ref)
|
||||
// CHECK:STDOUT: return %Function.call to %return
|
||||
// CHECK:STDOUT: }
|
||||
@@ -207,8 +207,8 @@ fn CallSpecific(x: C*) -> C* {
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness: <witness> = lookup_impl_witness %ptr.loc16_33.1, @Copy [symbolic = %Copy.lookup_impl_witness (constants.%Copy.lookup_impl_witness.cb2)]
|
||||
// CHECK:STDOUT: %Copy.facet.loc18_24.4: %Copy.type = facet_value %ptr.loc16_33.1, (%Copy.lookup_impl_witness) [symbolic = %Copy.facet.loc18_24.4 (constants.%Copy.facet.def)]
|
||||
// CHECK:STDOUT: %Function.specific_fn.loc18_10.2: <specific function> = specific_function constants.%Function, @Function(%Copy.facet.loc18_24.4) [symbolic = %Function.specific_fn.loc18_10.2 (constants.%Function.specific_fn.329)]
|
||||
// CHECK:STDOUT: %Copy.facet.loc18_24.4: %Copy.type = facet_value %ptr.loc16_33.1, (%Copy.lookup_impl_witness) [symbolic = %Copy.facet.loc18_24.4 (constants.%Copy.facet.2d1)]
|
||||
// CHECK:STDOUT: %Function.specific_fn.loc18_10.2: <specific function> = specific_function constants.%Function, @Function(%Copy.facet.loc18_24.4) [symbolic = %Function.specific_fn.loc18_10.2 (constants.%Function.specific_fn.d32)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn(%x.param: @CallGenericPtr.%ptr.loc16_33.1 (%ptr.79f)) -> @CallGenericPtr.%ptr.loc16_33.1 (%ptr.79f) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
@@ -216,13 +216,13 @@ fn CallSpecific(x: C*) -> C* {
|
||||
// CHECK:STDOUT: %T.ref.loc18: type = name_ref T, %T.loc16_19.2 [symbolic = %T.loc16_19.1 (constants.%T.8b3)]
|
||||
// CHECK:STDOUT: %ptr.loc18: type = ptr_type %T.ref.loc18 [symbolic = %ptr.loc16_33.1 (constants.%ptr.79f)]
|
||||
// CHECK:STDOUT: %x.ref: @CallGenericPtr.%ptr.loc16_33.1 (%ptr.79f) = name_ref x, %x
|
||||
// CHECK:STDOUT: %Copy.facet.loc18_24.1: %Copy.type = facet_value constants.%ptr.79f, (constants.%Copy.lookup_impl_witness.cb2) [symbolic = %Copy.facet.loc18_24.4 (constants.%Copy.facet.def)]
|
||||
// CHECK:STDOUT: %.loc18_24.1: %Copy.type = converted %ptr.loc18, %Copy.facet.loc18_24.1 [symbolic = %Copy.facet.loc18_24.4 (constants.%Copy.facet.def)]
|
||||
// CHECK:STDOUT: %Copy.facet.loc18_24.2: %Copy.type = facet_value constants.%ptr.79f, (constants.%Copy.lookup_impl_witness.cb2) [symbolic = %Copy.facet.loc18_24.4 (constants.%Copy.facet.def)]
|
||||
// CHECK:STDOUT: %.loc18_24.2: %Copy.type = converted constants.%ptr.79f, %Copy.facet.loc18_24.2 [symbolic = %Copy.facet.loc18_24.4 (constants.%Copy.facet.def)]
|
||||
// CHECK:STDOUT: %Copy.facet.loc18_24.3: %Copy.type = facet_value constants.%ptr.79f, (constants.%Copy.lookup_impl_witness.cb2) [symbolic = %Copy.facet.loc18_24.4 (constants.%Copy.facet.def)]
|
||||
// CHECK:STDOUT: %.loc18_24.3: %Copy.type = converted constants.%ptr.79f, %Copy.facet.loc18_24.3 [symbolic = %Copy.facet.loc18_24.4 (constants.%Copy.facet.def)]
|
||||
// CHECK:STDOUT: %Function.specific_fn.loc18_10.1: <specific function> = specific_function %Function.ref, @Function(constants.%Copy.facet.def) [symbolic = %Function.specific_fn.loc18_10.2 (constants.%Function.specific_fn.329)]
|
||||
// CHECK:STDOUT: %Copy.facet.loc18_24.1: %Copy.type = facet_value constants.%ptr.79f, (constants.%Copy.lookup_impl_witness.cb2) [symbolic = %Copy.facet.loc18_24.4 (constants.%Copy.facet.2d1)]
|
||||
// CHECK:STDOUT: %.loc18_24.1: %Copy.type = converted %ptr.loc18, %Copy.facet.loc18_24.1 [symbolic = %Copy.facet.loc18_24.4 (constants.%Copy.facet.2d1)]
|
||||
// CHECK:STDOUT: %Copy.facet.loc18_24.2: %Copy.type = facet_value constants.%ptr.79f, (constants.%Copy.lookup_impl_witness.cb2) [symbolic = %Copy.facet.loc18_24.4 (constants.%Copy.facet.2d1)]
|
||||
// CHECK:STDOUT: %.loc18_24.2: %Copy.type = converted constants.%ptr.79f, %Copy.facet.loc18_24.2 [symbolic = %Copy.facet.loc18_24.4 (constants.%Copy.facet.2d1)]
|
||||
// CHECK:STDOUT: %Copy.facet.loc18_24.3: %Copy.type = facet_value constants.%ptr.79f, (constants.%Copy.lookup_impl_witness.cb2) [symbolic = %Copy.facet.loc18_24.4 (constants.%Copy.facet.2d1)]
|
||||
// CHECK:STDOUT: %.loc18_24.3: %Copy.type = converted constants.%ptr.79f, %Copy.facet.loc18_24.3 [symbolic = %Copy.facet.loc18_24.4 (constants.%Copy.facet.2d1)]
|
||||
// CHECK:STDOUT: %Function.specific_fn.loc18_10.1: <specific function> = specific_function %Function.ref, @Function(constants.%Copy.facet.2d1) [symbolic = %Function.specific_fn.loc18_10.2 (constants.%Function.specific_fn.d32)]
|
||||
// CHECK:STDOUT: %Function.call: init @CallGenericPtr.%ptr.loc16_33.1 (%ptr.79f) = call %Function.specific_fn.loc18_10.1(%x.ref)
|
||||
// CHECK:STDOUT: return %Function.call to %return
|
||||
// CHECK:STDOUT: }
|
||||
@@ -234,35 +234,35 @@ fn CallSpecific(x: C*) -> C* {
|
||||
// CHECK:STDOUT: %C.ref.loc26: type = name_ref C, file.%C.decl [concrete = constants.%C]
|
||||
// CHECK:STDOUT: %ptr.loc26: type = ptr_type %C.ref.loc26 [concrete = constants.%ptr.019]
|
||||
// CHECK:STDOUT: %x.ref: %ptr.019 = name_ref x, %x
|
||||
// CHECK:STDOUT: %Copy.facet.loc26_24.1: %Copy.type = facet_value constants.%ptr.019, (constants.%Copy.impl_witness.a94) [concrete = constants.%Copy.facet.9a6]
|
||||
// CHECK:STDOUT: %.loc26_24.1: %Copy.type = converted %ptr.loc26, %Copy.facet.loc26_24.1 [concrete = constants.%Copy.facet.9a6]
|
||||
// CHECK:STDOUT: %Copy.facet.loc26_24.2: %Copy.type = facet_value constants.%ptr.019, (constants.%Copy.impl_witness.a94) [concrete = constants.%Copy.facet.9a6]
|
||||
// CHECK:STDOUT: %.loc26_24.2: %Copy.type = converted constants.%ptr.019, %Copy.facet.loc26_24.2 [concrete = constants.%Copy.facet.9a6]
|
||||
// CHECK:STDOUT: %Copy.facet.loc26_24.3: %Copy.type = facet_value constants.%ptr.019, (constants.%Copy.impl_witness.a94) [concrete = constants.%Copy.facet.9a6]
|
||||
// CHECK:STDOUT: %.loc26_24.3: %Copy.type = converted constants.%ptr.019, %Copy.facet.loc26_24.3 [concrete = constants.%Copy.facet.9a6]
|
||||
// CHECK:STDOUT: %Function.specific_fn: <specific function> = specific_function %Function.ref, @Function(constants.%Copy.facet.9a6) [concrete = constants.%Function.specific_fn.527]
|
||||
// CHECK:STDOUT: %Copy.facet.loc26_24.1: %Copy.type = facet_value constants.%ptr.019, (constants.%Copy.impl_witness.999) [concrete = constants.%Copy.facet.9e3]
|
||||
// CHECK:STDOUT: %.loc26_24.1: %Copy.type = converted %ptr.loc26, %Copy.facet.loc26_24.1 [concrete = constants.%Copy.facet.9e3]
|
||||
// CHECK:STDOUT: %Copy.facet.loc26_24.2: %Copy.type = facet_value constants.%ptr.019, (constants.%Copy.impl_witness.999) [concrete = constants.%Copy.facet.9e3]
|
||||
// CHECK:STDOUT: %.loc26_24.2: %Copy.type = converted constants.%ptr.019, %Copy.facet.loc26_24.2 [concrete = constants.%Copy.facet.9e3]
|
||||
// CHECK:STDOUT: %Copy.facet.loc26_24.3: %Copy.type = facet_value constants.%ptr.019, (constants.%Copy.impl_witness.999) [concrete = constants.%Copy.facet.9e3]
|
||||
// CHECK:STDOUT: %.loc26_24.3: %Copy.type = converted constants.%ptr.019, %Copy.facet.loc26_24.3 [concrete = constants.%Copy.facet.9e3]
|
||||
// CHECK:STDOUT: %Function.specific_fn: <specific function> = specific_function %Function.ref, @Function(constants.%Copy.facet.9e3) [concrete = constants.%Function.specific_fn.d9e]
|
||||
// CHECK:STDOUT: %Function.call: init %ptr.019 = call %Function.specific_fn(%x.ref)
|
||||
// CHECK:STDOUT: return %Function.call to %return
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @Function(constants.%T.578) {
|
||||
// CHECK:STDOUT: %T.loc5_13.1 => constants.%T.578
|
||||
// CHECK:STDOUT: specific @Function(constants.%T.be8) {
|
||||
// CHECK:STDOUT: %T.loc5_13.1 => constants.%T.be8
|
||||
// CHECK:STDOUT: %T.as_type.loc5_31.1 => constants.%T.as_type
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.f8cebc.1
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.965801.1
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete => constants.%require_complete.ecc
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness => constants.%Copy.lookup_impl_witness.3ba
|
||||
// CHECK:STDOUT: %Copy.facet => constants.%Copy.facet.72e
|
||||
// CHECK:STDOUT: %.loc6_10.2 => constants.%.671
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_10.2 => constants.%impl.elem0.56e
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc6_10.2 => constants.%specific_impl_fn.fb7
|
||||
// CHECK:STDOUT: %require_complete => constants.%require_complete.07c
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness => constants.%Copy.lookup_impl_witness.e15
|
||||
// CHECK:STDOUT: %Copy.facet => constants.%Copy.facet.021
|
||||
// CHECK:STDOUT: %.loc6_10.2 => constants.%.c50
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_10.2 => constants.%impl.elem0.792
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc6_10.2 => constants.%specific_impl_fn.547
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @CallGeneric(constants.%T.578) {
|
||||
// CHECK:STDOUT: %T.loc10_16.1 => constants.%T.578
|
||||
// CHECK:STDOUT: specific @CallGeneric(constants.%T.be8) {
|
||||
// CHECK:STDOUT: %T.loc10_16.1 => constants.%T.be8
|
||||
// CHECK:STDOUT: %T.as_type.loc10_34.1 => constants.%T.as_type
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.f8cebc.1
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.965801.1
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @CallGenericPtr(constants.%T.8b3) {
|
||||
@@ -271,31 +271,31 @@ fn CallSpecific(x: C*) -> C* {
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.afe
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @Function(constants.%Copy.facet.def) {
|
||||
// CHECK:STDOUT: %T.loc5_13.1 => constants.%Copy.facet.def
|
||||
// CHECK:STDOUT: specific @Function(constants.%Copy.facet.2d1) {
|
||||
// CHECK:STDOUT: %T.loc5_13.1 => constants.%Copy.facet.2d1
|
||||
// CHECK:STDOUT: %T.as_type.loc5_31.1 => constants.%ptr.79f
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.afe
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete => constants.%require_complete.6e5
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness => constants.%Copy.lookup_impl_witness.cb2
|
||||
// CHECK:STDOUT: %Copy.facet => constants.%Copy.facet.def
|
||||
// CHECK:STDOUT: %.loc6_10.2 => constants.%.fe5
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_10.2 => constants.%impl.elem0.429
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc6_10.2 => constants.%specific_impl_fn.d8a
|
||||
// CHECK:STDOUT: %Copy.facet => constants.%Copy.facet.2d1
|
||||
// CHECK:STDOUT: %.loc6_10.2 => constants.%.1cc
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_10.2 => constants.%impl.elem0.751
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc6_10.2 => constants.%specific_impl_fn.f44
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @Function(constants.%Copy.facet.9a6) {
|
||||
// CHECK:STDOUT: %T.loc5_13.1 => constants.%Copy.facet.9a6
|
||||
// CHECK:STDOUT: specific @Function(constants.%Copy.facet.9e3) {
|
||||
// CHECK:STDOUT: %T.loc5_13.1 => constants.%Copy.facet.9e3
|
||||
// CHECK:STDOUT: %T.as_type.loc5_31.1 => constants.%ptr.019
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.44a
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete => constants.%complete_type.d05
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness => constants.%Copy.impl_witness.a94
|
||||
// CHECK:STDOUT: %Copy.facet => constants.%Copy.facet.9a6
|
||||
// CHECK:STDOUT: %.loc6_10.2 => constants.%.a98
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_10.2 => constants.%ptr.as.Copy.impl.Op.fd1
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness => constants.%Copy.impl_witness.999
|
||||
// CHECK:STDOUT: %Copy.facet => constants.%Copy.facet.9e3
|
||||
// CHECK:STDOUT: %.loc6_10.2 => constants.%.7e9
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_10.2 => constants.%ptr.as.Copy.impl.Op.fb8
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc6_10.2 => constants.%ptr.as.Copy.impl.Op.specific_fn
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -303,44 +303,44 @@ fn CallSpecific(x: C*) -> C* {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete]
|
||||
// CHECK:STDOUT: %T.578: %Copy.type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.ce2: type = pattern_type %Copy.type [concrete]
|
||||
// CHECK:STDOUT: %T.as_type: type = facet_access_type %T.578 [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.f8cebc.1: type = pattern_type %T.as_type [symbolic]
|
||||
// CHECK:STDOUT: %T.be8: %Copy.type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.322: type = pattern_type %Copy.type [concrete]
|
||||
// CHECK:STDOUT: %T.as_type: type = facet_access_type %T.be8 [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.965801.1: type = pattern_type %T.as_type [symbolic]
|
||||
// CHECK:STDOUT: %Function.type: type = fn_type @Function [concrete]
|
||||
// CHECK:STDOUT: %Function: %Function.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %require_complete.ecc: <witness> = require_complete_type %T.as_type [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.07c: <witness> = require_complete_type %T.as_type [symbolic]
|
||||
// CHECK:STDOUT: %Copy.Op.type: type = fn_type @Copy.Op [concrete]
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness.3ba: <witness> = lookup_impl_witness %T.578, @Copy [symbolic]
|
||||
// CHECK:STDOUT: %Copy.facet.72e: %Copy.type = facet_value %T.as_type, (%Copy.lookup_impl_witness.3ba) [symbolic]
|
||||
// CHECK:STDOUT: %.671: type = fn_type_with_self_type %Copy.Op.type, %Copy.facet.72e [symbolic]
|
||||
// CHECK:STDOUT: %impl.elem0.56e: %.671 = impl_witness_access %Copy.lookup_impl_witness.3ba, element0 [symbolic]
|
||||
// CHECK:STDOUT: %specific_impl_fn.fb7: <specific function> = specific_impl_function %impl.elem0.56e, @Copy.Op(%Copy.facet.72e) [symbolic]
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness.e15: <witness> = lookup_impl_witness %T.be8, @Copy [symbolic]
|
||||
// CHECK:STDOUT: %Copy.facet.021: %Copy.type = facet_value %T.as_type, (%Copy.lookup_impl_witness.e15) [symbolic]
|
||||
// CHECK:STDOUT: %.c50: type = fn_type_with_self_type %Copy.Op.type, %Copy.facet.021 [symbolic]
|
||||
// CHECK:STDOUT: %impl.elem0.792: %.c50 = impl_witness_access %Copy.lookup_impl_witness.e15, element0 [symbolic]
|
||||
// CHECK:STDOUT: %specific_impl_fn.547: <specific function> = specific_impl_function %impl.elem0.792, @Copy.Op(%Copy.facet.021) [symbolic]
|
||||
// CHECK:STDOUT: %T.8b3: type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %ptr.79f: type = ptr_type %T.8b3 [symbolic]
|
||||
// CHECK:STDOUT: %ptr.as.Copy.impl.Op.type.f23: type = fn_type @ptr.as.Copy.impl.Op, @ptr.as.Copy.impl(%T.8b3) [symbolic]
|
||||
// CHECK:STDOUT: %ptr.as.Copy.impl.Op.abf: %ptr.as.Copy.impl.Op.type.f23 = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %ptr.as.Copy.impl.Op.type.31f: type = fn_type @ptr.as.Copy.impl.Op, @ptr.as.Copy.impl(%T.8b3) [symbolic]
|
||||
// CHECK:STDOUT: %ptr.as.Copy.impl.Op.8a8: %ptr.as.Copy.impl.Op.type.31f = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.afe: type = pattern_type %ptr.79f [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.6e5: <witness> = require_complete_type %ptr.79f [symbolic]
|
||||
// CHECK:STDOUT: %Function.specific_fn.e31: <specific function> = specific_function %Function, @Function(%T.578) [symbolic]
|
||||
// CHECK:STDOUT: %Function.specific_fn.8cd: <specific function> = specific_function %Function, @Function(%T.be8) [symbolic]
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness.cb2: <witness> = lookup_impl_witness %ptr.79f, @Copy [symbolic]
|
||||
// CHECK:STDOUT: %Copy.facet.def: %Copy.type = facet_value %ptr.79f, (%Copy.lookup_impl_witness.cb2) [symbolic]
|
||||
// CHECK:STDOUT: %Function.specific_fn.329: <specific function> = specific_function %Function, @Function(%Copy.facet.def) [symbolic]
|
||||
// CHECK:STDOUT: %Copy.facet.2d1: %Copy.type = facet_value %ptr.79f, (%Copy.lookup_impl_witness.cb2) [symbolic]
|
||||
// CHECK:STDOUT: %Function.specific_fn.d32: <specific function> = specific_function %Function, @Function(%Copy.facet.2d1) [symbolic]
|
||||
// CHECK:STDOUT: %C: type = class_type @C [concrete]
|
||||
// CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete]
|
||||
// CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.44a: type = pattern_type %ptr.019 [concrete]
|
||||
// CHECK:STDOUT: %Copy.impl_witness.a94: <witness> = impl_witness imports.%Copy.impl_witness_table.a71, @ptr.as.Copy.impl(%C) [concrete]
|
||||
// CHECK:STDOUT: %ptr.as.Copy.impl.Op.type.0f5: type = fn_type @ptr.as.Copy.impl.Op, @ptr.as.Copy.impl(%C) [concrete]
|
||||
// CHECK:STDOUT: %ptr.as.Copy.impl.Op.fd1: %ptr.as.Copy.impl.Op.type.0f5 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Copy.impl_witness.999: <witness> = impl_witness imports.%Copy.impl_witness_table.53c, @ptr.as.Copy.impl(%C) [concrete]
|
||||
// CHECK:STDOUT: %ptr.as.Copy.impl.Op.type.c3f: type = fn_type @ptr.as.Copy.impl.Op, @ptr.as.Copy.impl(%C) [concrete]
|
||||
// CHECK:STDOUT: %ptr.as.Copy.impl.Op.fb8: %ptr.as.Copy.impl.Op.type.c3f = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %complete_type.d05: <witness> = complete_type_witness %ptr.019 [concrete]
|
||||
// CHECK:STDOUT: %Copy.facet.9a6: %Copy.type = facet_value %ptr.019, (%Copy.impl_witness.a94) [concrete]
|
||||
// CHECK:STDOUT: %Function.specific_fn.527: <specific function> = specific_function %Function, @Function(%Copy.facet.9a6) [concrete]
|
||||
// CHECK:STDOUT: %.fe5: type = fn_type_with_self_type %Copy.Op.type, %Copy.facet.def [symbolic]
|
||||
// CHECK:STDOUT: %impl.elem0.429: %.fe5 = impl_witness_access %Copy.lookup_impl_witness.cb2, element0 [symbolic]
|
||||
// CHECK:STDOUT: %specific_impl_fn.d8a: <specific function> = specific_impl_function %impl.elem0.429, @Copy.Op(%Copy.facet.def) [symbolic]
|
||||
// CHECK:STDOUT: %.a98: type = fn_type_with_self_type %Copy.Op.type, %Copy.facet.9a6 [concrete]
|
||||
// CHECK:STDOUT: %ptr.as.Copy.impl.Op.specific_fn: <specific function> = specific_function %ptr.as.Copy.impl.Op.fd1, @ptr.as.Copy.impl.Op(%C) [concrete]
|
||||
// CHECK:STDOUT: %Copy.facet.9e3: %Copy.type = facet_value %ptr.019, (%Copy.impl_witness.999) [concrete]
|
||||
// CHECK:STDOUT: %Function.specific_fn.d9e: <specific function> = specific_function %Function, @Function(%Copy.facet.9e3) [concrete]
|
||||
// CHECK:STDOUT: %.1cc: type = fn_type_with_self_type %Copy.Op.type, %Copy.facet.2d1 [symbolic]
|
||||
// CHECK:STDOUT: %impl.elem0.751: %.1cc = impl_witness_access %Copy.lookup_impl_witness.cb2, element0 [symbolic]
|
||||
// CHECK:STDOUT: %specific_impl_fn.f44: <specific function> = specific_impl_function %impl.elem0.751, @Copy.Op(%Copy.facet.2d1) [symbolic]
|
||||
// CHECK:STDOUT: %.7e9: type = fn_type_with_self_type %Copy.Op.type, %Copy.facet.9e3 [concrete]
|
||||
// CHECK:STDOUT: %ptr.as.Copy.impl.Op.specific_fn: <specific function> = specific_function %ptr.as.Copy.impl.Op.fb8, @ptr.as.Copy.impl.Op(%C) [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
@@ -351,20 +351,20 @@ fn CallSpecific(x: C*) -> C* {
|
||||
// CHECK:STDOUT: import Core//prelude/...
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.Copy: type = import_ref Core//prelude/parts/copy, Copy, loaded [concrete = constants.%Copy.type]
|
||||
// CHECK:STDOUT: %Core.import_ref.de9: @ptr.as.Copy.impl.%ptr.as.Copy.impl.Op.type (%ptr.as.Copy.impl.Op.type.f23) = import_ref Core//prelude/parts/copy, loc36_31, loaded [symbolic = @ptr.as.Copy.impl.%ptr.as.Copy.impl.Op (constants.%ptr.as.Copy.impl.Op.abf)]
|
||||
// CHECK:STDOUT: %Copy.impl_witness_table.a71 = impl_witness_table (%Core.import_ref.de9), @ptr.as.Copy.impl [concrete]
|
||||
// CHECK:STDOUT: %Core.import_ref.0e4: @ptr.as.Copy.impl.%ptr.as.Copy.impl.Op.type (%ptr.as.Copy.impl.Op.type.31f) = import_ref Core//prelude/parts/copy, loc36_31, loaded [symbolic = @ptr.as.Copy.impl.%ptr.as.Copy.impl.Op (constants.%ptr.as.Copy.impl.Op.8a8)]
|
||||
// CHECK:STDOUT: %Copy.impl_witness_table.53c = impl_witness_table (%Core.import_ref.0e4), @ptr.as.Copy.impl [concrete]
|
||||
// CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
// CHECK:STDOUT: %Function.decl: %Function.type = fn_decl @Function [concrete = constants.%Function] {
|
||||
// CHECK:STDOUT: %T.patt: %pattern_type.ce2 = symbolic_binding_pattern T, 0 [concrete]
|
||||
// CHECK:STDOUT: %x.patt: @Function.%pattern_type (%pattern_type.f8cebc.1) = binding_pattern x [concrete]
|
||||
// CHECK:STDOUT: %x.param_patt: @Function.%pattern_type (%pattern_type.f8cebc.1) = value_param_pattern %x.patt, call_param0 [concrete]
|
||||
// CHECK:STDOUT: %return.patt: @Function.%pattern_type (%pattern_type.f8cebc.1) = return_slot_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: @Function.%pattern_type (%pattern_type.f8cebc.1) = out_param_pattern %return.patt, call_param1 [concrete]
|
||||
// CHECK:STDOUT: %T.patt: %pattern_type.322 = symbolic_binding_pattern T, 0 [concrete]
|
||||
// CHECK:STDOUT: %x.patt: @Function.%pattern_type (%pattern_type.965801.1) = binding_pattern x [concrete]
|
||||
// CHECK:STDOUT: %x.param_patt: @Function.%pattern_type (%pattern_type.965801.1) = value_param_pattern %x.patt, call_param0 [concrete]
|
||||
// CHECK:STDOUT: %return.patt: @Function.%pattern_type (%pattern_type.965801.1) = return_slot_pattern [concrete]
|
||||
// CHECK:STDOUT: %return.param_patt: @Function.%pattern_type (%pattern_type.965801.1) = out_param_pattern %return.patt, call_param1 [concrete]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %T.ref.loc5_37: %Copy.type = name_ref T, %T.loc5_13.2 [symbolic = %T.loc5_13.1 (constants.%T.578)]
|
||||
// CHECK:STDOUT: %T.ref.loc5_37: %Copy.type = name_ref T, %T.loc5_13.2 [symbolic = %T.loc5_13.1 (constants.%T.be8)]
|
||||
// CHECK:STDOUT: %T.as_type.loc5_37: type = facet_access_type %T.ref.loc5_37 [symbolic = %T.as_type.loc5_31.1 (constants.%T.as_type)]
|
||||
// CHECK:STDOUT: %.loc5_37: type = converted %T.ref.loc5_37, %T.as_type.loc5_37 [symbolic = %T.as_type.loc5_31.1 (constants.%T.as_type)]
|
||||
// CHECK:STDOUT: %.loc5_21: type = splice_block %Copy.ref [concrete = constants.%Copy.type] {
|
||||
@@ -372,10 +372,10 @@ fn CallSpecific(x: C*) -> C* {
|
||||
// CHECK:STDOUT: %Core.ref: <namespace> = name_ref Core, imports.%Core [concrete = imports.%Core]
|
||||
// CHECK:STDOUT: %Copy.ref: type = name_ref Copy, imports.%Core.Copy [concrete = constants.%Copy.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %T.loc5_13.2: %Copy.type = bind_symbolic_name T, 0 [symbolic = %T.loc5_13.1 (constants.%T.578)]
|
||||
// CHECK:STDOUT: %T.loc5_13.2: %Copy.type = bind_symbolic_name T, 0 [symbolic = %T.loc5_13.1 (constants.%T.be8)]
|
||||
// CHECK:STDOUT: %x.param: @Function.%T.as_type.loc5_31.1 (%T.as_type) = value_param call_param0
|
||||
// CHECK:STDOUT: %.loc5_31.1: type = splice_block %.loc5_31.2 [symbolic = %T.as_type.loc5_31.1 (constants.%T.as_type)] {
|
||||
// CHECK:STDOUT: %T.ref.loc5_31: %Copy.type = name_ref T, %T.loc5_13.2 [symbolic = %T.loc5_13.1 (constants.%T.578)]
|
||||
// CHECK:STDOUT: %T.ref.loc5_31: %Copy.type = name_ref T, %T.loc5_13.2 [symbolic = %T.loc5_13.1 (constants.%T.be8)]
|
||||
// CHECK:STDOUT: %T.as_type.loc5_31.2: type = facet_access_type %T.ref.loc5_31 [symbolic = %T.as_type.loc5_31.1 (constants.%T.as_type)]
|
||||
// CHECK:STDOUT: %.loc5_31.2: type = converted %T.ref.loc5_31, %T.as_type.loc5_31.2 [symbolic = %T.as_type.loc5_31.1 (constants.%T.as_type)]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -386,24 +386,24 @@ fn CallSpecific(x: C*) -> C* {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic fn @Function(%T.loc5_13.2: %Copy.type) {
|
||||
// CHECK:STDOUT: %T.loc5_13.1: %Copy.type = bind_symbolic_name T, 0 [symbolic = %T.loc5_13.1 (constants.%T.578)]
|
||||
// CHECK:STDOUT: %T.loc5_13.1: %Copy.type = bind_symbolic_name T, 0 [symbolic = %T.loc5_13.1 (constants.%T.be8)]
|
||||
// CHECK:STDOUT: %T.as_type.loc5_31.1: type = facet_access_type %T.loc5_13.1 [symbolic = %T.as_type.loc5_31.1 (constants.%T.as_type)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %T.as_type.loc5_31.1 [symbolic = %pattern_type (constants.%pattern_type.f8cebc.1)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %T.as_type.loc5_31.1 [symbolic = %pattern_type (constants.%pattern_type.965801.1)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %T.as_type.loc5_31.1 [symbolic = %require_complete (constants.%require_complete.ecc)]
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness: <witness> = lookup_impl_witness %T.loc5_13.1, @Copy [symbolic = %Copy.lookup_impl_witness (constants.%Copy.lookup_impl_witness.3ba)]
|
||||
// CHECK:STDOUT: %Copy.facet: %Copy.type = facet_value %T.as_type.loc5_31.1, (%Copy.lookup_impl_witness) [symbolic = %Copy.facet (constants.%Copy.facet.72e)]
|
||||
// CHECK:STDOUT: %.loc6_10.2: type = fn_type_with_self_type constants.%Copy.Op.type, %Copy.facet [symbolic = %.loc6_10.2 (constants.%.671)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_10.2: @Function.%.loc6_10.2 (%.671) = impl_witness_access %Copy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc6_10.2 (constants.%impl.elem0.56e)]
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc6_10.2: <specific function> = specific_impl_function %impl.elem0.loc6_10.2, @Copy.Op(%Copy.facet) [symbolic = %specific_impl_fn.loc6_10.2 (constants.%specific_impl_fn.fb7)]
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %T.as_type.loc5_31.1 [symbolic = %require_complete (constants.%require_complete.07c)]
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness: <witness> = lookup_impl_witness %T.loc5_13.1, @Copy [symbolic = %Copy.lookup_impl_witness (constants.%Copy.lookup_impl_witness.e15)]
|
||||
// CHECK:STDOUT: %Copy.facet: %Copy.type = facet_value %T.as_type.loc5_31.1, (%Copy.lookup_impl_witness) [symbolic = %Copy.facet (constants.%Copy.facet.021)]
|
||||
// CHECK:STDOUT: %.loc6_10.2: type = fn_type_with_self_type constants.%Copy.Op.type, %Copy.facet [symbolic = %.loc6_10.2 (constants.%.c50)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_10.2: @Function.%.loc6_10.2 (%.c50) = impl_witness_access %Copy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc6_10.2 (constants.%impl.elem0.792)]
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc6_10.2: <specific function> = specific_impl_function %impl.elem0.loc6_10.2, @Copy.Op(%Copy.facet) [symbolic = %specific_impl_fn.loc6_10.2 (constants.%specific_impl_fn.547)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn(%x.param: @Function.%T.as_type.loc5_31.1 (%T.as_type)) -> @Function.%T.as_type.loc5_31.1 (%T.as_type) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %x.ref: @Function.%T.as_type.loc5_31.1 (%T.as_type) = name_ref x, %x
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_10.1: @Function.%.loc6_10.2 (%.671) = impl_witness_access constants.%Copy.lookup_impl_witness.3ba, element0 [symbolic = %impl.elem0.loc6_10.2 (constants.%impl.elem0.56e)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_10.1: @Function.%.loc6_10.2 (%.c50) = impl_witness_access constants.%Copy.lookup_impl_witness.e15, element0 [symbolic = %impl.elem0.loc6_10.2 (constants.%impl.elem0.792)]
|
||||
// CHECK:STDOUT: %bound_method.loc6_10.1: <bound method> = bound_method %x.ref, %impl.elem0.loc6_10.1
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc6_10.1: <specific function> = specific_impl_function %impl.elem0.loc6_10.1, @Copy.Op(constants.%Copy.facet.72e) [symbolic = %specific_impl_fn.loc6_10.2 (constants.%specific_impl_fn.fb7)]
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc6_10.1: <specific function> = specific_impl_function %impl.elem0.loc6_10.1, @Copy.Op(constants.%Copy.facet.021) [symbolic = %specific_impl_fn.loc6_10.2 (constants.%specific_impl_fn.547)]
|
||||
// CHECK:STDOUT: %bound_method.loc6_10.2: <bound method> = bound_method %x.ref, %specific_impl_fn.loc6_10.1
|
||||
// CHECK:STDOUT: %.loc6_10.1: init @Function.%T.as_type.loc5_31.1 (%T.as_type) = call %bound_method.loc6_10.2(%x.ref)
|
||||
// CHECK:STDOUT: return %.loc6_10.1 to %return
|
||||
@@ -415,15 +415,15 @@ fn CallSpecific(x: C*) -> C* {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: %Function.specific_fn.loc12_10.2: <specific function> = specific_function constants.%Function, @Function(%T.loc10_16.1) [symbolic = %Function.specific_fn.loc12_10.2 (constants.%Function.specific_fn.e31)]
|
||||
// CHECK:STDOUT: %Function.specific_fn.loc12_10.2: <specific function> = specific_function constants.%Function, @Function(%T.loc10_16.1) [symbolic = %Function.specific_fn.loc12_10.2 (constants.%Function.specific_fn.8cd)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn(%x.param: @CallGeneric.%T.as_type.loc10_34.1 (%T.as_type)) -> @CallGeneric.%T.as_type.loc10_34.1 (%T.as_type) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %Function.ref: %Function.type = name_ref Function, file.%Function.decl [concrete = constants.%Function]
|
||||
// CHECK:STDOUT: %x.ref: @CallGeneric.%T.as_type.loc10_34.1 (%T.as_type) = name_ref x, %x
|
||||
// CHECK:STDOUT: %.loc12_20.1: %Copy.type = converted constants.%T.as_type, constants.%T.578 [symbolic = %T.loc10_16.1 (constants.%T.578)]
|
||||
// CHECK:STDOUT: %.loc12_20.2: %Copy.type = converted constants.%T.as_type, constants.%T.578 [symbolic = %T.loc10_16.1 (constants.%T.578)]
|
||||
// CHECK:STDOUT: %Function.specific_fn.loc12_10.1: <specific function> = specific_function %Function.ref, @Function(constants.%T.578) [symbolic = %Function.specific_fn.loc12_10.2 (constants.%Function.specific_fn.e31)]
|
||||
// CHECK:STDOUT: %.loc12_20.1: %Copy.type = converted constants.%T.as_type, constants.%T.be8 [symbolic = %T.loc10_16.1 (constants.%T.be8)]
|
||||
// CHECK:STDOUT: %.loc12_20.2: %Copy.type = converted constants.%T.as_type, constants.%T.be8 [symbolic = %T.loc10_16.1 (constants.%T.be8)]
|
||||
// CHECK:STDOUT: %Function.specific_fn.loc12_10.1: <specific function> = specific_function %Function.ref, @Function(constants.%T.be8) [symbolic = %Function.specific_fn.loc12_10.2 (constants.%Function.specific_fn.8cd)]
|
||||
// CHECK:STDOUT: %Function.call: init @CallGeneric.%T.as_type.loc10_34.1 (%T.as_type) = call %Function.specific_fn.loc12_10.1(%x.ref)
|
||||
// CHECK:STDOUT: return %Function.call to %return
|
||||
// CHECK:STDOUT: }
|
||||
@@ -435,18 +435,18 @@ fn CallSpecific(x: C*) -> C* {
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness: <witness> = lookup_impl_witness %ptr.loc16_33.1, @Copy [symbolic = %Copy.lookup_impl_witness (constants.%Copy.lookup_impl_witness.cb2)]
|
||||
// CHECK:STDOUT: %Copy.facet.loc18_20.3: %Copy.type = facet_value %ptr.loc16_33.1, (%Copy.lookup_impl_witness) [symbolic = %Copy.facet.loc18_20.3 (constants.%Copy.facet.def)]
|
||||
// CHECK:STDOUT: %Function.specific_fn.loc18_10.2: <specific function> = specific_function constants.%Function, @Function(%Copy.facet.loc18_20.3) [symbolic = %Function.specific_fn.loc18_10.2 (constants.%Function.specific_fn.329)]
|
||||
// CHECK:STDOUT: %Copy.facet.loc18_20.3: %Copy.type = facet_value %ptr.loc16_33.1, (%Copy.lookup_impl_witness) [symbolic = %Copy.facet.loc18_20.3 (constants.%Copy.facet.2d1)]
|
||||
// CHECK:STDOUT: %Function.specific_fn.loc18_10.2: <specific function> = specific_function constants.%Function, @Function(%Copy.facet.loc18_20.3) [symbolic = %Function.specific_fn.loc18_10.2 (constants.%Function.specific_fn.d32)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn(%x.param: @CallGenericPtr.%ptr.loc16_33.1 (%ptr.79f)) -> @CallGenericPtr.%ptr.loc16_33.1 (%ptr.79f) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %Function.ref: %Function.type = name_ref Function, file.%Function.decl [concrete = constants.%Function]
|
||||
// CHECK:STDOUT: %x.ref: @CallGenericPtr.%ptr.loc16_33.1 (%ptr.79f) = name_ref x, %x
|
||||
// CHECK:STDOUT: %Copy.facet.loc18_20.1: %Copy.type = facet_value constants.%ptr.79f, (constants.%Copy.lookup_impl_witness.cb2) [symbolic = %Copy.facet.loc18_20.3 (constants.%Copy.facet.def)]
|
||||
// CHECK:STDOUT: %.loc18_20.1: %Copy.type = converted constants.%ptr.79f, %Copy.facet.loc18_20.1 [symbolic = %Copy.facet.loc18_20.3 (constants.%Copy.facet.def)]
|
||||
// CHECK:STDOUT: %Copy.facet.loc18_20.2: %Copy.type = facet_value constants.%ptr.79f, (constants.%Copy.lookup_impl_witness.cb2) [symbolic = %Copy.facet.loc18_20.3 (constants.%Copy.facet.def)]
|
||||
// CHECK:STDOUT: %.loc18_20.2: %Copy.type = converted constants.%ptr.79f, %Copy.facet.loc18_20.2 [symbolic = %Copy.facet.loc18_20.3 (constants.%Copy.facet.def)]
|
||||
// CHECK:STDOUT: %Function.specific_fn.loc18_10.1: <specific function> = specific_function %Function.ref, @Function(constants.%Copy.facet.def) [symbolic = %Function.specific_fn.loc18_10.2 (constants.%Function.specific_fn.329)]
|
||||
// CHECK:STDOUT: %Copy.facet.loc18_20.1: %Copy.type = facet_value constants.%ptr.79f, (constants.%Copy.lookup_impl_witness.cb2) [symbolic = %Copy.facet.loc18_20.3 (constants.%Copy.facet.2d1)]
|
||||
// CHECK:STDOUT: %.loc18_20.1: %Copy.type = converted constants.%ptr.79f, %Copy.facet.loc18_20.1 [symbolic = %Copy.facet.loc18_20.3 (constants.%Copy.facet.2d1)]
|
||||
// CHECK:STDOUT: %Copy.facet.loc18_20.2: %Copy.type = facet_value constants.%ptr.79f, (constants.%Copy.lookup_impl_witness.cb2) [symbolic = %Copy.facet.loc18_20.3 (constants.%Copy.facet.2d1)]
|
||||
// CHECK:STDOUT: %.loc18_20.2: %Copy.type = converted constants.%ptr.79f, %Copy.facet.loc18_20.2 [symbolic = %Copy.facet.loc18_20.3 (constants.%Copy.facet.2d1)]
|
||||
// CHECK:STDOUT: %Function.specific_fn.loc18_10.1: <specific function> = specific_function %Function.ref, @Function(constants.%Copy.facet.2d1) [symbolic = %Function.specific_fn.loc18_10.2 (constants.%Function.specific_fn.d32)]
|
||||
// CHECK:STDOUT: %Function.call: init @CallGenericPtr.%ptr.loc16_33.1 (%ptr.79f) = call %Function.specific_fn.loc18_10.1(%x.ref)
|
||||
// CHECK:STDOUT: return %Function.call to %return
|
||||
// CHECK:STDOUT: }
|
||||
@@ -456,33 +456,33 @@ fn CallSpecific(x: C*) -> C* {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %Function.ref: %Function.type = name_ref Function, file.%Function.decl [concrete = constants.%Function]
|
||||
// CHECK:STDOUT: %x.ref: %ptr.019 = name_ref x, %x
|
||||
// CHECK:STDOUT: %Copy.facet.loc26_20.1: %Copy.type = facet_value constants.%ptr.019, (constants.%Copy.impl_witness.a94) [concrete = constants.%Copy.facet.9a6]
|
||||
// CHECK:STDOUT: %.loc26_20.1: %Copy.type = converted constants.%ptr.019, %Copy.facet.loc26_20.1 [concrete = constants.%Copy.facet.9a6]
|
||||
// CHECK:STDOUT: %Copy.facet.loc26_20.2: %Copy.type = facet_value constants.%ptr.019, (constants.%Copy.impl_witness.a94) [concrete = constants.%Copy.facet.9a6]
|
||||
// CHECK:STDOUT: %.loc26_20.2: %Copy.type = converted constants.%ptr.019, %Copy.facet.loc26_20.2 [concrete = constants.%Copy.facet.9a6]
|
||||
// CHECK:STDOUT: %Function.specific_fn: <specific function> = specific_function %Function.ref, @Function(constants.%Copy.facet.9a6) [concrete = constants.%Function.specific_fn.527]
|
||||
// CHECK:STDOUT: %Copy.facet.loc26_20.1: %Copy.type = facet_value constants.%ptr.019, (constants.%Copy.impl_witness.999) [concrete = constants.%Copy.facet.9e3]
|
||||
// CHECK:STDOUT: %.loc26_20.1: %Copy.type = converted constants.%ptr.019, %Copy.facet.loc26_20.1 [concrete = constants.%Copy.facet.9e3]
|
||||
// CHECK:STDOUT: %Copy.facet.loc26_20.2: %Copy.type = facet_value constants.%ptr.019, (constants.%Copy.impl_witness.999) [concrete = constants.%Copy.facet.9e3]
|
||||
// CHECK:STDOUT: %.loc26_20.2: %Copy.type = converted constants.%ptr.019, %Copy.facet.loc26_20.2 [concrete = constants.%Copy.facet.9e3]
|
||||
// CHECK:STDOUT: %Function.specific_fn: <specific function> = specific_function %Function.ref, @Function(constants.%Copy.facet.9e3) [concrete = constants.%Function.specific_fn.d9e]
|
||||
// CHECK:STDOUT: %Function.call: init %ptr.019 = call %Function.specific_fn(%x.ref)
|
||||
// CHECK:STDOUT: return %Function.call to %return
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @Function(constants.%T.578) {
|
||||
// CHECK:STDOUT: %T.loc5_13.1 => constants.%T.578
|
||||
// CHECK:STDOUT: specific @Function(constants.%T.be8) {
|
||||
// CHECK:STDOUT: %T.loc5_13.1 => constants.%T.be8
|
||||
// CHECK:STDOUT: %T.as_type.loc5_31.1 => constants.%T.as_type
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.f8cebc.1
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.965801.1
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete => constants.%require_complete.ecc
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness => constants.%Copy.lookup_impl_witness.3ba
|
||||
// CHECK:STDOUT: %Copy.facet => constants.%Copy.facet.72e
|
||||
// CHECK:STDOUT: %.loc6_10.2 => constants.%.671
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_10.2 => constants.%impl.elem0.56e
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc6_10.2 => constants.%specific_impl_fn.fb7
|
||||
// CHECK:STDOUT: %require_complete => constants.%require_complete.07c
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness => constants.%Copy.lookup_impl_witness.e15
|
||||
// CHECK:STDOUT: %Copy.facet => constants.%Copy.facet.021
|
||||
// CHECK:STDOUT: %.loc6_10.2 => constants.%.c50
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_10.2 => constants.%impl.elem0.792
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc6_10.2 => constants.%specific_impl_fn.547
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @CallGeneric(constants.%T.578) {
|
||||
// CHECK:STDOUT: %T.loc10_16.1 => constants.%T.578
|
||||
// CHECK:STDOUT: specific @CallGeneric(constants.%T.be8) {
|
||||
// CHECK:STDOUT: %T.loc10_16.1 => constants.%T.be8
|
||||
// CHECK:STDOUT: %T.as_type.loc10_34.1 => constants.%T.as_type
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.f8cebc.1
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.965801.1
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @CallGenericPtr(constants.%T.8b3) {
|
||||
@@ -491,31 +491,31 @@ fn CallSpecific(x: C*) -> C* {
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.afe
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @Function(constants.%Copy.facet.def) {
|
||||
// CHECK:STDOUT: %T.loc5_13.1 => constants.%Copy.facet.def
|
||||
// CHECK:STDOUT: specific @Function(constants.%Copy.facet.2d1) {
|
||||
// CHECK:STDOUT: %T.loc5_13.1 => constants.%Copy.facet.2d1
|
||||
// CHECK:STDOUT: %T.as_type.loc5_31.1 => constants.%ptr.79f
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.afe
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete => constants.%require_complete.6e5
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness => constants.%Copy.lookup_impl_witness.cb2
|
||||
// CHECK:STDOUT: %Copy.facet => constants.%Copy.facet.def
|
||||
// CHECK:STDOUT: %.loc6_10.2 => constants.%.fe5
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_10.2 => constants.%impl.elem0.429
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc6_10.2 => constants.%specific_impl_fn.d8a
|
||||
// CHECK:STDOUT: %Copy.facet => constants.%Copy.facet.2d1
|
||||
// CHECK:STDOUT: %.loc6_10.2 => constants.%.1cc
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_10.2 => constants.%impl.elem0.751
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc6_10.2 => constants.%specific_impl_fn.f44
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @Function(constants.%Copy.facet.9a6) {
|
||||
// CHECK:STDOUT: %T.loc5_13.1 => constants.%Copy.facet.9a6
|
||||
// CHECK:STDOUT: specific @Function(constants.%Copy.facet.9e3) {
|
||||
// CHECK:STDOUT: %T.loc5_13.1 => constants.%Copy.facet.9e3
|
||||
// CHECK:STDOUT: %T.as_type.loc5_31.1 => constants.%ptr.019
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.44a
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete => constants.%complete_type.d05
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness => constants.%Copy.impl_witness.a94
|
||||
// CHECK:STDOUT: %Copy.facet => constants.%Copy.facet.9a6
|
||||
// CHECK:STDOUT: %.loc6_10.2 => constants.%.a98
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_10.2 => constants.%ptr.as.Copy.impl.Op.fd1
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness => constants.%Copy.impl_witness.999
|
||||
// CHECK:STDOUT: %Copy.facet => constants.%Copy.facet.9e3
|
||||
// CHECK:STDOUT: %.loc6_10.2 => constants.%.7e9
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_10.2 => constants.%ptr.as.Copy.impl.Op.fb8
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc6_10.2 => constants.%ptr.as.Copy.impl.Op.specific_fn
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+63
-63
@@ -48,8 +48,8 @@ fn G() {
|
||||
// CHECK:STDOUT: %Generic.type.c21: type = generic_interface_type @Generic [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %Generic.generic: %Generic.type.c21 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Generic.type.4045f4.1: type = facet_type <@Generic, @Generic(%Scalar)> [symbolic]
|
||||
// CHECK:STDOUT: %Self.f48852.1: %Generic.type.4045f4.1 = bind_symbolic_name Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: %Generic.type.2db63e.1: type = facet_type <@Generic, @Generic(%Scalar)> [symbolic]
|
||||
// CHECK:STDOUT: %Self.8997e7.1: %Generic.type.2db63e.1 = bind_symbolic_name Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: %Generic.F.type.f439a9.1: type = fn_type @Generic.F, @Generic(%Scalar) [symbolic]
|
||||
// CHECK:STDOUT: %Generic.F.8a2d67.1: %Generic.F.type.f439a9.1 = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %Generic.assoc_type.0fd877.1: type = assoc_entity_type @Generic, @Generic(%Scalar) [symbolic]
|
||||
@@ -57,7 +57,7 @@ fn G() {
|
||||
// CHECK:STDOUT: %GenericParam: type = class_type @GenericParam [concrete]
|
||||
// CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.f6d: type = pattern_type auto [concrete]
|
||||
// CHECK:STDOUT: %Destroy.impl_witness.7e7: <witness> = impl_witness @GenericParam.%Destroy.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %Destroy.impl_witness.0fd: <witness> = impl_witness @GenericParam.%Destroy.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %ptr.f73: type = ptr_type %GenericParam [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.7c3: type = pattern_type %ptr.f73 [concrete]
|
||||
// CHECK:STDOUT: %GenericParam.as.Destroy.impl.Op.type: type = fn_type @GenericParam.as.Destroy.impl.Op [concrete]
|
||||
@@ -65,13 +65,13 @@ fn G() {
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type.357: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %ImplsGeneric: type = class_type @ImplsGeneric [concrete]
|
||||
// CHECK:STDOUT: %Destroy.impl_witness.813: <witness> = impl_witness @ImplsGeneric.%Destroy.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %Destroy.impl_witness.c8c: <witness> = impl_witness @ImplsGeneric.%Destroy.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %ptr.011: type = ptr_type %ImplsGeneric [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.2db: type = pattern_type %ptr.011 [concrete]
|
||||
// CHECK:STDOUT: %ImplsGeneric.as.Destroy.impl.Op.type: type = fn_type @ImplsGeneric.as.Destroy.impl.Op [concrete]
|
||||
// CHECK:STDOUT: %ImplsGeneric.as.Destroy.impl.Op: %ImplsGeneric.as.Destroy.impl.Op.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Generic.type.cfe: type = facet_type <@Generic, @Generic(%GenericParam)> [concrete]
|
||||
// CHECK:STDOUT: %Self.b8f: %Generic.type.cfe = bind_symbolic_name Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: %Generic.type.621: type = facet_type <@Generic, @Generic(%GenericParam)> [concrete]
|
||||
// CHECK:STDOUT: %Self.93d: %Generic.type.621 = bind_symbolic_name Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: %Generic.F.type.4cf: type = fn_type @Generic.F, @Generic(%GenericParam) [concrete]
|
||||
// CHECK:STDOUT: %Generic.F.118: %Generic.F.type.4cf = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Generic.assoc_type.713: type = assoc_entity_type @Generic, @Generic(%GenericParam) [concrete]
|
||||
@@ -79,9 +79,9 @@ fn G() {
|
||||
// CHECK:STDOUT: %Generic.impl_witness: <witness> = impl_witness file.%Generic.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %ImplsGeneric.as.Generic.impl.F.type: type = fn_type @ImplsGeneric.as.Generic.impl.F [concrete]
|
||||
// CHECK:STDOUT: %ImplsGeneric.as.Generic.impl.F: %ImplsGeneric.as.Generic.impl.F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Generic.facet.924: %Generic.type.cfe = facet_value %ImplsGeneric, (%Generic.impl_witness) [concrete]
|
||||
// CHECK:STDOUT: %Generic.facet.fcf: %Generic.type.621 = facet_value %ImplsGeneric, (%Generic.impl_witness) [concrete]
|
||||
// CHECK:STDOUT: %Other.type: type = facet_type <@Other> [concrete]
|
||||
// CHECK:STDOUT: %Self.939: %Other.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Self.e77: %Other.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Other.G.type: type = fn_type @Other.G [concrete]
|
||||
// CHECK:STDOUT: %Other.G: %Other.G.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Other.assoc_type: type = assoc_entity_type @Other [concrete]
|
||||
@@ -91,29 +91,29 @@ fn G() {
|
||||
// CHECK:STDOUT: %ImplsGeneric.as.Other.impl.G: %ImplsGeneric.as.Other.impl.G.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Other.facet: %Other.type = facet_value %ImplsGeneric, (%Other.impl_witness) [concrete]
|
||||
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Generic.type.4045f4.2: type = facet_type <@Generic, @Generic(%T)> [symbolic]
|
||||
// CHECK:STDOUT: %U: %Generic.type.4045f4.2 = bind_symbolic_name U, 1 [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.3c6: type = pattern_type %Generic.type.4045f4.2 [symbolic]
|
||||
// CHECK:STDOUT: %Generic.type.2db63e.2: type = facet_type <@Generic, @Generic(%T)> [symbolic]
|
||||
// CHECK:STDOUT: %U: %Generic.type.2db63e.2 = bind_symbolic_name U, 1 [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.e93: type = pattern_type %Generic.type.2db63e.2 [symbolic]
|
||||
// CHECK:STDOUT: %CallGenericMethod.type: type = fn_type @CallGenericMethod [concrete]
|
||||
// CHECK:STDOUT: %CallGenericMethod: %CallGenericMethod.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Self.f48852.2: %Generic.type.4045f4.2 = bind_symbolic_name Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: %Self.8997e7.2: %Generic.type.2db63e.2 = bind_symbolic_name Self, 1 [symbolic]
|
||||
// CHECK:STDOUT: %Generic.F.type.f439a9.2: type = fn_type @Generic.F, @Generic(%T) [symbolic]
|
||||
// CHECK:STDOUT: %Generic.F.8a2d67.2: %Generic.F.type.f439a9.2 = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %Generic.assoc_type.0fd877.2: type = assoc_entity_type @Generic, @Generic(%T) [symbolic]
|
||||
// CHECK:STDOUT: %assoc0.2966cb.2: %Generic.assoc_type.0fd877.2 = assoc_entity element0, @Generic.%Generic.F.decl [symbolic]
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %Generic.type.4045f4.2 [symbolic]
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %Generic.type.2db63e.2 [symbolic]
|
||||
// CHECK:STDOUT: %U.as_type: type = facet_access_type %U [symbolic]
|
||||
// CHECK:STDOUT: %Generic.lookup_impl_witness: <witness> = lookup_impl_witness %U, @Generic, @Generic(%T) [symbolic]
|
||||
// CHECK:STDOUT: %Generic.facet.049: %Generic.type.4045f4.2 = facet_value %U.as_type, (%Generic.lookup_impl_witness) [symbolic]
|
||||
// CHECK:STDOUT: %.1bd: type = fn_type_with_self_type %Generic.F.type.f439a9.2, %Generic.facet.049 [symbolic]
|
||||
// CHECK:STDOUT: %impl.elem0: %.1bd = impl_witness_access %Generic.lookup_impl_witness, element0 [symbolic]
|
||||
// CHECK:STDOUT: %specific_impl_fn: <specific function> = specific_impl_function %impl.elem0, @Generic.F(%T, %Generic.facet.049) [symbolic]
|
||||
// CHECK:STDOUT: %Generic.facet.57d: %Generic.type.2db63e.2 = facet_value %U.as_type, (%Generic.lookup_impl_witness) [symbolic]
|
||||
// CHECK:STDOUT: %.e73: type = fn_type_with_self_type %Generic.F.type.f439a9.2, %Generic.facet.57d [symbolic]
|
||||
// CHECK:STDOUT: %impl.elem0: %.e73 = impl_witness_access %Generic.lookup_impl_witness, element0 [symbolic]
|
||||
// CHECK:STDOUT: %specific_impl_fn: <specific function> = specific_impl_function %impl.elem0, @Generic.F(%T, %Generic.facet.57d) [symbolic]
|
||||
// CHECK:STDOUT: %G.type: type = fn_type @G [concrete]
|
||||
// CHECK:STDOUT: %G: %G.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.bd9: type = pattern_type %Generic.type.cfe [concrete]
|
||||
// CHECK:STDOUT: %CallGenericMethod.specific_fn: <specific function> = specific_function %CallGenericMethod, @CallGenericMethod(%GenericParam, %Generic.facet.924) [concrete]
|
||||
// CHECK:STDOUT: %complete_type.10d: <witness> = complete_type_witness %Generic.type.cfe [concrete]
|
||||
// CHECK:STDOUT: %.e21: type = fn_type_with_self_type %Generic.F.type.4cf, %Generic.facet.924 [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.c4b: type = pattern_type %Generic.type.621 [concrete]
|
||||
// CHECK:STDOUT: %CallGenericMethod.specific_fn: <specific function> = specific_function %CallGenericMethod, @CallGenericMethod(%GenericParam, %Generic.facet.fcf) [concrete]
|
||||
// CHECK:STDOUT: %complete_type.ca2: <witness> = complete_type_witness %Generic.type.621 [concrete]
|
||||
// CHECK:STDOUT: %.573: type = fn_type_with_self_type %Generic.F.type.4cf, %Generic.facet.fcf [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
@@ -148,7 +148,7 @@ fn G() {
|
||||
// CHECK:STDOUT: %ImplsGeneric.ref: type = name_ref ImplsGeneric, file.%ImplsGeneric.decl [concrete = constants.%ImplsGeneric]
|
||||
// CHECK:STDOUT: %Generic.ref: %Generic.type.c21 = name_ref Generic, file.%Generic.decl [concrete = constants.%Generic.generic]
|
||||
// CHECK:STDOUT: %GenericParam.ref: type = name_ref GenericParam, file.%GenericParam.decl [concrete = constants.%GenericParam]
|
||||
// CHECK:STDOUT: %Generic.type: type = facet_type <@Generic, @Generic(constants.%GenericParam)> [concrete = constants.%Generic.type.cfe]
|
||||
// CHECK:STDOUT: %Generic.type: type = facet_type <@Generic, @Generic(constants.%GenericParam)> [concrete = constants.%Generic.type.621]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Generic.impl_witness_table = impl_witness_table (@ImplsGeneric.as.Generic.impl.%ImplsGeneric.as.Generic.impl.F.decl), @ImplsGeneric.as.Generic.impl [concrete]
|
||||
// CHECK:STDOUT: %Generic.impl_witness: <witness> = impl_witness %Generic.impl_witness_table [concrete = constants.%Generic.impl_witness]
|
||||
@@ -161,17 +161,17 @@ fn G() {
|
||||
// CHECK:STDOUT: %Other.impl_witness: <witness> = impl_witness %Other.impl_witness_table [concrete = constants.%Other.impl_witness]
|
||||
// CHECK:STDOUT: %CallGenericMethod.decl: %CallGenericMethod.type = fn_decl @CallGenericMethod [concrete = constants.%CallGenericMethod] {
|
||||
// CHECK:STDOUT: %T.patt: %pattern_type.98f = symbolic_binding_pattern T, 0 [concrete]
|
||||
// CHECK:STDOUT: %U.patt: @CallGenericMethod.%pattern_type (%pattern_type.3c6) = symbolic_binding_pattern U, 1 [concrete]
|
||||
// CHECK:STDOUT: %U.patt: @CallGenericMethod.%pattern_type (%pattern_type.e93) = symbolic_binding_pattern U, 1 [concrete]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.Self.1: %type = bind_symbolic_name .Self [symbolic_self = constants.%.Self]
|
||||
// CHECK:STDOUT: %T.loc33_22.2: type = bind_symbolic_name T, 0 [symbolic = %T.loc33_22.1 (constants.%T)]
|
||||
// CHECK:STDOUT: %.loc33: type = splice_block %Generic.type.loc33_45.2 [symbolic = %Generic.type.loc33_45.1 (constants.%Generic.type.4045f4.2)] {
|
||||
// CHECK:STDOUT: %.loc33: type = splice_block %Generic.type.loc33_45.2 [symbolic = %Generic.type.loc33_45.1 (constants.%Generic.type.2db63e.2)] {
|
||||
// CHECK:STDOUT: %.Self.2: %type = bind_symbolic_name .Self [symbolic_self = constants.%.Self]
|
||||
// CHECK:STDOUT: %Generic.ref: %Generic.type.c21 = name_ref Generic, file.%Generic.decl [concrete = constants.%Generic.generic]
|
||||
// CHECK:STDOUT: %T.ref: type = name_ref T, %T.loc33_22.2 [symbolic = %T.loc33_22.1 (constants.%T)]
|
||||
// CHECK:STDOUT: %Generic.type.loc33_45.2: type = facet_type <@Generic, @Generic(constants.%T)> [symbolic = %Generic.type.loc33_45.1 (constants.%Generic.type.4045f4.2)]
|
||||
// CHECK:STDOUT: %Generic.type.loc33_45.2: type = facet_type <@Generic, @Generic(constants.%T)> [symbolic = %Generic.type.loc33_45.1 (constants.%Generic.type.2db63e.2)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %U.loc33_32.2: @CallGenericMethod.%Generic.type.loc33_45.1 (%Generic.type.4045f4.2) = bind_symbolic_name U, 1 [symbolic = %U.loc33_32.1 (constants.%U)]
|
||||
// CHECK:STDOUT: %U.loc33_32.2: @CallGenericMethod.%Generic.type.loc33_45.1 (%Generic.type.2db63e.2) = bind_symbolic_name U, 1 [symbolic = %U.loc33_32.1 (constants.%U)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %G.decl: %G.type = fn_decl @G [concrete = constants.%G] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
@@ -180,15 +180,15 @@ fn G() {
|
||||
// CHECK:STDOUT: %Scalar.loc15_19.1: type = bind_symbolic_name Scalar, 0 [symbolic = %Scalar.loc15_19.1 (constants.%Scalar)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %Generic.type: type = facet_type <@Generic, @Generic(%Scalar.loc15_19.1)> [symbolic = %Generic.type (constants.%Generic.type.4045f4.1)]
|
||||
// CHECK:STDOUT: %Self.2: @Generic.%Generic.type (%Generic.type.4045f4.1) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.f48852.1)]
|
||||
// CHECK:STDOUT: %Generic.type: type = facet_type <@Generic, @Generic(%Scalar.loc15_19.1)> [symbolic = %Generic.type (constants.%Generic.type.2db63e.1)]
|
||||
// CHECK:STDOUT: %Self.2: @Generic.%Generic.type (%Generic.type.2db63e.1) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.8997e7.1)]
|
||||
// CHECK:STDOUT: %Generic.F.type: type = fn_type @Generic.F, @Generic(%Scalar.loc15_19.1) [symbolic = %Generic.F.type (constants.%Generic.F.type.f439a9.1)]
|
||||
// CHECK:STDOUT: %Generic.F: @Generic.%Generic.F.type (%Generic.F.type.f439a9.1) = struct_value () [symbolic = %Generic.F (constants.%Generic.F.8a2d67.1)]
|
||||
// CHECK:STDOUT: %Generic.assoc_type: type = assoc_entity_type @Generic, @Generic(%Scalar.loc15_19.1) [symbolic = %Generic.assoc_type (constants.%Generic.assoc_type.0fd877.1)]
|
||||
// CHECK:STDOUT: %assoc0.loc16_9.2: @Generic.%Generic.assoc_type (%Generic.assoc_type.0fd877.1) = assoc_entity element0, %Generic.F.decl [symbolic = %assoc0.loc16_9.2 (constants.%assoc0.2966cb.1)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface {
|
||||
// CHECK:STDOUT: %Self.1: @Generic.%Generic.type (%Generic.type.4045f4.1) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.f48852.1)]
|
||||
// CHECK:STDOUT: %Self.1: @Generic.%Generic.type (%Generic.type.2db63e.1) = bind_symbolic_name Self, 1 [symbolic = %Self.2 (constants.%Self.8997e7.1)]
|
||||
// CHECK:STDOUT: %Generic.F.decl: @Generic.%Generic.F.type (%Generic.F.type.f439a9.1) = fn_decl @Generic.F [symbolic = @Generic.%Generic.F (constants.%Generic.F.8a2d67.1)] {} {}
|
||||
// CHECK:STDOUT: %assoc0.loc16_9.1: @Generic.%Generic.assoc_type (%Generic.assoc_type.0fd877.1) = assoc_entity element0, %Generic.F.decl [symbolic = %assoc0.loc16_9.2 (constants.%assoc0.2966cb.1)]
|
||||
// CHECK:STDOUT:
|
||||
@@ -200,7 +200,7 @@ fn G() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @Other {
|
||||
// CHECK:STDOUT: %Self: %Other.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.939]
|
||||
// CHECK:STDOUT: %Self: %Other.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.e77]
|
||||
// CHECK:STDOUT: %Other.G.decl: %Other.G.type = fn_decl @Other.G [concrete = constants.%Other.G] {} {}
|
||||
// CHECK:STDOUT: %assoc0: %Other.assoc_type = assoc_entity element0, %Other.G.decl [concrete = constants.%assoc0.25d]
|
||||
// CHECK:STDOUT:
|
||||
@@ -262,7 +262,7 @@ fn G() {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%GenericParam [concrete = constants.%GenericParam]
|
||||
// CHECK:STDOUT: impl_decl @GenericParam.as.Destroy.impl [concrete] {} {}
|
||||
// CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (@GenericParam.as.Destroy.impl.%GenericParam.as.Destroy.impl.Op.decl), @GenericParam.as.Destroy.impl [concrete]
|
||||
// CHECK:STDOUT: %Destroy.impl_witness: <witness> = impl_witness %Destroy.impl_witness_table [concrete = constants.%Destroy.impl_witness.7e7]
|
||||
// CHECK:STDOUT: %Destroy.impl_witness: <witness> = impl_witness %Destroy.impl_witness_table [concrete = constants.%Destroy.impl_witness.0fd]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
@@ -274,7 +274,7 @@ fn G() {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%ImplsGeneric [concrete = constants.%ImplsGeneric]
|
||||
// CHECK:STDOUT: impl_decl @ImplsGeneric.as.Destroy.impl [concrete] {} {}
|
||||
// CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (@ImplsGeneric.as.Destroy.impl.%ImplsGeneric.as.Destroy.impl.Op.decl), @ImplsGeneric.as.Destroy.impl [concrete]
|
||||
// CHECK:STDOUT: %Destroy.impl_witness: <witness> = impl_witness %Destroy.impl_witness_table [concrete = constants.%Destroy.impl_witness.813]
|
||||
// CHECK:STDOUT: %Destroy.impl_witness: <witness> = impl_witness %Destroy.impl_witness_table [concrete = constants.%Destroy.impl_witness.c8c]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
@@ -282,7 +282,7 @@ fn G() {
|
||||
// CHECK:STDOUT: .Self = constants.%ImplsGeneric
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic fn @Generic.F(@Generic.%Scalar.loc15_19.2: type, @Generic.%Self.1: @Generic.%Generic.type (%Generic.type.4045f4.1)) {
|
||||
// CHECK:STDOUT: generic fn @Generic.F(@Generic.%Scalar.loc15_19.2: type, @Generic.%Self.1: @Generic.%Generic.type (%Generic.type.2db63e.1)) {
|
||||
// CHECK:STDOUT: fn();
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -301,11 +301,11 @@ fn G() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @ImplsGeneric.as.Other.impl.G();
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic fn @CallGenericMethod(%T.loc33_22.2: type, %U.loc33_32.2: @CallGenericMethod.%Generic.type.loc33_45.1 (%Generic.type.4045f4.2)) {
|
||||
// CHECK:STDOUT: generic fn @CallGenericMethod(%T.loc33_22.2: type, %U.loc33_32.2: @CallGenericMethod.%Generic.type.loc33_45.1 (%Generic.type.2db63e.2)) {
|
||||
// CHECK:STDOUT: %T.loc33_22.1: type = bind_symbolic_name T, 0 [symbolic = %T.loc33_22.1 (constants.%T)]
|
||||
// CHECK:STDOUT: %Generic.type.loc33_45.1: type = facet_type <@Generic, @Generic(%T.loc33_22.1)> [symbolic = %Generic.type.loc33_45.1 (constants.%Generic.type.4045f4.2)]
|
||||
// CHECK:STDOUT: %U.loc33_32.1: @CallGenericMethod.%Generic.type.loc33_45.1 (%Generic.type.4045f4.2) = bind_symbolic_name U, 1 [symbolic = %U.loc33_32.1 (constants.%U)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %Generic.type.loc33_45.1 [symbolic = %pattern_type (constants.%pattern_type.3c6)]
|
||||
// CHECK:STDOUT: %Generic.type.loc33_45.1: type = facet_type <@Generic, @Generic(%T.loc33_22.1)> [symbolic = %Generic.type.loc33_45.1 (constants.%Generic.type.2db63e.2)]
|
||||
// CHECK:STDOUT: %U.loc33_32.1: @CallGenericMethod.%Generic.type.loc33_45.1 (%Generic.type.2db63e.2) = bind_symbolic_name U, 1 [symbolic = %U.loc33_32.1 (constants.%U)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %Generic.type.loc33_45.1 [symbolic = %pattern_type (constants.%pattern_type.e93)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %Generic.type.loc33_45.1 [symbolic = %require_complete (constants.%require_complete)]
|
||||
@@ -314,20 +314,20 @@ fn G() {
|
||||
// CHECK:STDOUT: %U.as_type.loc34_4.2: type = facet_access_type %U.loc33_32.1 [symbolic = %U.as_type.loc34_4.2 (constants.%U.as_type)]
|
||||
// CHECK:STDOUT: %Generic.lookup_impl_witness: <witness> = lookup_impl_witness %U.loc33_32.1, @Generic, @Generic(%T.loc33_22.1) [symbolic = %Generic.lookup_impl_witness (constants.%Generic.lookup_impl_witness)]
|
||||
// CHECK:STDOUT: %Generic.F.type: type = fn_type @Generic.F, @Generic(%T.loc33_22.1) [symbolic = %Generic.F.type (constants.%Generic.F.type.f439a9.2)]
|
||||
// CHECK:STDOUT: %Generic.facet: @CallGenericMethod.%Generic.type.loc33_45.1 (%Generic.type.4045f4.2) = facet_value %U.as_type.loc34_4.2, (%Generic.lookup_impl_witness) [symbolic = %Generic.facet (constants.%Generic.facet.049)]
|
||||
// CHECK:STDOUT: %.loc34_4.3: type = fn_type_with_self_type %Generic.F.type, %Generic.facet [symbolic = %.loc34_4.3 (constants.%.1bd)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc34_4.2: @CallGenericMethod.%.loc34_4.3 (%.1bd) = impl_witness_access %Generic.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc34_4.2 (constants.%impl.elem0)]
|
||||
// CHECK:STDOUT: %Generic.facet: @CallGenericMethod.%Generic.type.loc33_45.1 (%Generic.type.2db63e.2) = facet_value %U.as_type.loc34_4.2, (%Generic.lookup_impl_witness) [symbolic = %Generic.facet (constants.%Generic.facet.57d)]
|
||||
// CHECK:STDOUT: %.loc34_4.3: type = fn_type_with_self_type %Generic.F.type, %Generic.facet [symbolic = %.loc34_4.3 (constants.%.e73)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc34_4.2: @CallGenericMethod.%.loc34_4.3 (%.e73) = impl_witness_access %Generic.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc34_4.2 (constants.%impl.elem0)]
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc34_4.2: <specific function> = specific_impl_function %impl.elem0.loc34_4.2, @Generic.F(%T.loc33_22.1, %Generic.facet) [symbolic = %specific_impl_fn.loc34_4.2 (constants.%specific_impl_fn)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %U.ref: @CallGenericMethod.%Generic.type.loc33_45.1 (%Generic.type.4045f4.2) = name_ref U, %U.loc33_32.2 [symbolic = %U.loc33_32.1 (constants.%U)]
|
||||
// CHECK:STDOUT: %U.ref: @CallGenericMethod.%Generic.type.loc33_45.1 (%Generic.type.2db63e.2) = name_ref U, %U.loc33_32.2 [symbolic = %U.loc33_32.1 (constants.%U)]
|
||||
// CHECK:STDOUT: %.loc34_4.1: @CallGenericMethod.%Generic.assoc_type (%Generic.assoc_type.0fd877.2) = specific_constant @Generic.%assoc0.loc16_9.1, @Generic(constants.%T) [symbolic = %assoc0 (constants.%assoc0.2966cb.2)]
|
||||
// CHECK:STDOUT: %F.ref: @CallGenericMethod.%Generic.assoc_type (%Generic.assoc_type.0fd877.2) = name_ref F, %.loc34_4.1 [symbolic = %assoc0 (constants.%assoc0.2966cb.2)]
|
||||
// CHECK:STDOUT: %U.as_type.loc34_4.1: type = facet_access_type %U.ref [symbolic = %U.as_type.loc34_4.2 (constants.%U.as_type)]
|
||||
// CHECK:STDOUT: %.loc34_4.2: type = converted %U.ref, %U.as_type.loc34_4.1 [symbolic = %U.as_type.loc34_4.2 (constants.%U.as_type)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc34_4.1: @CallGenericMethod.%.loc34_4.3 (%.1bd) = impl_witness_access constants.%Generic.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc34_4.2 (constants.%impl.elem0)]
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc34_4.1: <specific function> = specific_impl_function %impl.elem0.loc34_4.1, @Generic.F(constants.%T, constants.%Generic.facet.049) [symbolic = %specific_impl_fn.loc34_4.2 (constants.%specific_impl_fn)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc34_4.1: @CallGenericMethod.%.loc34_4.3 (%.e73) = impl_witness_access constants.%Generic.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc34_4.2 (constants.%impl.elem0)]
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc34_4.1: <specific function> = specific_impl_function %impl.elem0.loc34_4.1, @Generic.F(constants.%T, constants.%Generic.facet.57d) [symbolic = %specific_impl_fn.loc34_4.2 (constants.%specific_impl_fn)]
|
||||
// CHECK:STDOUT: %.loc34_7: init %empty_tuple.type = call %specific_impl_fn.loc34_4.1()
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
@@ -338,9 +338,9 @@ fn G() {
|
||||
// CHECK:STDOUT: %CallGenericMethod.ref: %CallGenericMethod.type = name_ref CallGenericMethod, file.%CallGenericMethod.decl [concrete = constants.%CallGenericMethod]
|
||||
// CHECK:STDOUT: %GenericParam.ref: type = name_ref GenericParam, file.%GenericParam.decl [concrete = constants.%GenericParam]
|
||||
// CHECK:STDOUT: %ImplsGeneric.ref: type = name_ref ImplsGeneric, file.%ImplsGeneric.decl [concrete = constants.%ImplsGeneric]
|
||||
// CHECK:STDOUT: %Generic.facet: %Generic.type.cfe = facet_value constants.%ImplsGeneric, (constants.%Generic.impl_witness) [concrete = constants.%Generic.facet.924]
|
||||
// CHECK:STDOUT: %.loc38: %Generic.type.cfe = converted constants.%ImplsGeneric, %Generic.facet [concrete = constants.%Generic.facet.924]
|
||||
// CHECK:STDOUT: %CallGenericMethod.specific_fn: <specific function> = specific_function %CallGenericMethod.ref, @CallGenericMethod(constants.%GenericParam, constants.%Generic.facet.924) [concrete = constants.%CallGenericMethod.specific_fn]
|
||||
// CHECK:STDOUT: %Generic.facet: %Generic.type.621 = facet_value constants.%ImplsGeneric, (constants.%Generic.impl_witness) [concrete = constants.%Generic.facet.fcf]
|
||||
// CHECK:STDOUT: %.loc38: %Generic.type.621 = converted constants.%ImplsGeneric, %Generic.facet [concrete = constants.%Generic.facet.fcf]
|
||||
// CHECK:STDOUT: %CallGenericMethod.specific_fn: <specific function> = specific_function %CallGenericMethod.ref, @CallGenericMethod(constants.%GenericParam, constants.%Generic.facet.fcf) [concrete = constants.%CallGenericMethod.specific_fn]
|
||||
// CHECK:STDOUT: %CallGenericMethod.call: init %empty_tuple.type = call %CallGenericMethod.specific_fn()
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
@@ -349,23 +349,23 @@ fn G() {
|
||||
// CHECK:STDOUT: %Scalar.loc15_19.1 => constants.%Scalar
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @Generic.F(constants.%Scalar, constants.%Self.f48852.1) {}
|
||||
// CHECK:STDOUT: specific @Generic.F(constants.%Scalar, constants.%Self.8997e7.1) {}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @Generic(constants.%GenericParam) {
|
||||
// CHECK:STDOUT: %Scalar.loc15_19.1 => constants.%GenericParam
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %Generic.type => constants.%Generic.type.cfe
|
||||
// CHECK:STDOUT: %Self.2 => constants.%Self.b8f
|
||||
// CHECK:STDOUT: %Generic.type => constants.%Generic.type.621
|
||||
// CHECK:STDOUT: %Self.2 => constants.%Self.93d
|
||||
// CHECK:STDOUT: %Generic.F.type => constants.%Generic.F.type.4cf
|
||||
// CHECK:STDOUT: %Generic.F => constants.%Generic.F.118
|
||||
// CHECK:STDOUT: %Generic.assoc_type => constants.%Generic.assoc_type.713
|
||||
// CHECK:STDOUT: %assoc0.loc16_9.2 => constants.%assoc0.9b7
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @Generic.F(constants.%GenericParam, constants.%Generic.facet.924) {}
|
||||
// CHECK:STDOUT: specific @Generic.F(constants.%GenericParam, constants.%Generic.facet.fcf) {}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @Other.G(constants.%Self.939) {}
|
||||
// CHECK:STDOUT: specific @Other.G(constants.%Self.e77) {}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @Other.G(constants.%Other.facet) {}
|
||||
// CHECK:STDOUT:
|
||||
@@ -373,8 +373,8 @@ fn G() {
|
||||
// CHECK:STDOUT: %Scalar.loc15_19.1 => constants.%T
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %Generic.type => constants.%Generic.type.4045f4.2
|
||||
// CHECK:STDOUT: %Self.2 => constants.%Self.f48852.2
|
||||
// CHECK:STDOUT: %Generic.type => constants.%Generic.type.2db63e.2
|
||||
// CHECK:STDOUT: %Self.2 => constants.%Self.8997e7.2
|
||||
// CHECK:STDOUT: %Generic.F.type => constants.%Generic.F.type.f439a9.2
|
||||
// CHECK:STDOUT: %Generic.F => constants.%Generic.F.8a2d67.2
|
||||
// CHECK:STDOUT: %Generic.assoc_type => constants.%Generic.assoc_type.0fd877.2
|
||||
@@ -383,28 +383,28 @@ fn G() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @CallGenericMethod(constants.%T, constants.%U) {
|
||||
// CHECK:STDOUT: %T.loc33_22.1 => constants.%T
|
||||
// CHECK:STDOUT: %Generic.type.loc33_45.1 => constants.%Generic.type.4045f4.2
|
||||
// CHECK:STDOUT: %Generic.type.loc33_45.1 => constants.%Generic.type.2db63e.2
|
||||
// CHECK:STDOUT: %U.loc33_32.1 => constants.%U
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.3c6
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.e93
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @Generic.F(constants.%T, constants.%Generic.facet.049) {}
|
||||
// CHECK:STDOUT: specific @Generic.F(constants.%T, constants.%Generic.facet.57d) {}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @CallGenericMethod(constants.%GenericParam, constants.%Generic.facet.924) {
|
||||
// CHECK:STDOUT: specific @CallGenericMethod(constants.%GenericParam, constants.%Generic.facet.fcf) {
|
||||
// CHECK:STDOUT: %T.loc33_22.1 => constants.%GenericParam
|
||||
// CHECK:STDOUT: %Generic.type.loc33_45.1 => constants.%Generic.type.cfe
|
||||
// CHECK:STDOUT: %U.loc33_32.1 => constants.%Generic.facet.924
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.bd9
|
||||
// CHECK:STDOUT: %Generic.type.loc33_45.1 => constants.%Generic.type.621
|
||||
// CHECK:STDOUT: %U.loc33_32.1 => constants.%Generic.facet.fcf
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.c4b
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete => constants.%complete_type.10d
|
||||
// CHECK:STDOUT: %require_complete => constants.%complete_type.ca2
|
||||
// CHECK:STDOUT: %Generic.assoc_type => constants.%Generic.assoc_type.713
|
||||
// CHECK:STDOUT: %assoc0 => constants.%assoc0.9b7
|
||||
// CHECK:STDOUT: %U.as_type.loc34_4.2 => constants.%ImplsGeneric
|
||||
// CHECK:STDOUT: %Generic.lookup_impl_witness => constants.%Generic.impl_witness
|
||||
// CHECK:STDOUT: %Generic.F.type => constants.%Generic.F.type.4cf
|
||||
// CHECK:STDOUT: %Generic.facet => constants.%Generic.facet.924
|
||||
// CHECK:STDOUT: %.loc34_4.3 => constants.%.e21
|
||||
// CHECK:STDOUT: %Generic.facet => constants.%Generic.facet.fcf
|
||||
// CHECK:STDOUT: %.loc34_4.3 => constants.%.573
|
||||
// CHECK:STDOUT: %impl.elem0.loc34_4.2 => constants.%ImplsGeneric.as.Generic.impl.F
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc34_4.2 => constants.%ImplsGeneric.as.Generic.impl.F
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
+101
-101
@@ -511,7 +511,7 @@ fn F() {
|
||||
// CHECK:STDOUT: %A: type = class_type @A [concrete]
|
||||
// CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.f6d: type = pattern_type auto [concrete]
|
||||
// CHECK:STDOUT: %Destroy.impl_witness.cbd: <witness> = impl_witness @A.%Destroy.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %Destroy.impl_witness.ca8: <witness> = impl_witness @A.%Destroy.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %ptr.6db: type = ptr_type %A [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.5f8: type = pattern_type %ptr.6db [concrete]
|
||||
// CHECK:STDOUT: %A.as.Destroy.impl.Op.type: type = fn_type @A.as.Destroy.impl.Op [concrete]
|
||||
@@ -605,7 +605,7 @@ fn F() {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%A [concrete = constants.%A]
|
||||
// CHECK:STDOUT: impl_decl @A.as.Destroy.impl [concrete] {} {}
|
||||
// CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (@A.as.Destroy.impl.%A.as.Destroy.impl.Op.decl), @A.as.Destroy.impl [concrete]
|
||||
// CHECK:STDOUT: %Destroy.impl_witness: <witness> = impl_witness %Destroy.impl_witness_table [concrete = constants.%Destroy.impl_witness.cbd]
|
||||
// CHECK:STDOUT: %Destroy.impl_witness: <witness> = impl_witness %Destroy.impl_witness_table [concrete = constants.%Destroy.impl_witness.ca8]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
@@ -844,18 +844,18 @@ fn F() {
|
||||
// CHECK:STDOUT: %TupleParam.specific_fn: <specific function> = specific_function %TupleParam, @TupleParam(Core.IntLiteral) [concrete]
|
||||
// CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete]
|
||||
// CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %ImplicitAs.type.e8c: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete]
|
||||
// CHECK:STDOUT: %ImplicitAs.type.d14: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete]
|
||||
// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete]
|
||||
// CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.49e: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic]
|
||||
// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f01: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.49e = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %ImplicitAs.impl_witness.acc: <witness> = impl_witness imports.%ImplicitAs.impl_witness_table.b6b, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.9ec: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.592: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.9ec = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.e8c = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.acc) [concrete]
|
||||
// CHECK:STDOUT: %.7ea: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete]
|
||||
// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: <bound method> = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.592 [concrete]
|
||||
// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: <specific function> = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.592, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.340: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic]
|
||||
// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.1c0: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.340 = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %ImplicitAs.impl_witness.204: <witness> = impl_witness imports.%ImplicitAs.impl_witness_table.9e9, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.584: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.0f0: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.584 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.d14 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.204) [concrete]
|
||||
// CHECK:STDOUT: %.1df: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete]
|
||||
// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: <bound method> = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.0f0 [concrete]
|
||||
// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: <specific function> = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.0f0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %bound_method: <bound method> = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete]
|
||||
// CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete]
|
||||
// CHECK:STDOUT: %tuple: %tuple.type.4c8 = tuple_value (%int_1, %int_2.ef8) [concrete]
|
||||
@@ -871,8 +871,8 @@ fn F() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic]
|
||||
// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic]
|
||||
// CHECK:STDOUT: %Core.import_ref.428: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.49e) = import_ref Core//prelude/parts/int, loc23_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f01)]
|
||||
// CHECK:STDOUT: %ImplicitAs.impl_witness_table.b6b = impl_witness_table (%Core.import_ref.428), @Core.IntLiteral.as.ImplicitAs.impl [concrete]
|
||||
// CHECK:STDOUT: %Core.import_ref.ee7: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.340) = import_ref Core//prelude/parts/int, loc23_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.1c0)]
|
||||
// CHECK:STDOUT: %ImplicitAs.impl_witness_table.9e9 = impl_witness_table (%Core.import_ref.ee7), @Core.IntLiteral.as.ImplicitAs.impl [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -923,7 +923,7 @@ fn F() {
|
||||
// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc]
|
||||
// CHECK:STDOUT: %.loc7_19.1: %tuple.type.f94 = tuple_literal (%int_1, %int_2)
|
||||
// CHECK:STDOUT: %TupleParam.specific_fn: <specific function> = specific_function %TupleParam.ref, @TupleParam(Core.IntLiteral) [concrete = constants.%TupleParam.specific_fn]
|
||||
// CHECK:STDOUT: %impl.elem0: %.7ea = impl_witness_access constants.%ImplicitAs.impl_witness.acc, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.592]
|
||||
// CHECK:STDOUT: %impl.elem0: %.1df = impl_witness_access constants.%ImplicitAs.impl_witness.204, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.0f0]
|
||||
// CHECK:STDOUT: %bound_method.loc7_19.1: <bound method> = bound_method %int_2, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound]
|
||||
// CHECK:STDOUT: %specific_fn: <specific function> = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn]
|
||||
// CHECK:STDOUT: %bound_method.loc7_19.2: <bound method> = bound_method %int_2, %specific_fn [concrete = constants.%bound_method]
|
||||
@@ -978,18 +978,18 @@ fn F() {
|
||||
// CHECK:STDOUT: %StructParam.specific_fn: <specific function> = specific_function %StructParam, @StructParam(Core.IntLiteral) [concrete]
|
||||
// CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete]
|
||||
// CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %ImplicitAs.type.e8c: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete]
|
||||
// CHECK:STDOUT: %ImplicitAs.type.d14: type = facet_type <@ImplicitAs, @ImplicitAs(%i32)> [concrete]
|
||||
// CHECK:STDOUT: %ImplicitAs.Convert.type.1b6: type = fn_type @ImplicitAs.Convert, @ImplicitAs(%i32) [concrete]
|
||||
// CHECK:STDOUT: %To: Core.IntLiteral = bind_symbolic_name To, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.49e: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic]
|
||||
// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.f01: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.49e = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %ImplicitAs.impl_witness.acc: <witness> = impl_witness imports.%ImplicitAs.impl_witness_table.b6b, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.9ec: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.592: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.9ec = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.e8c = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.acc) [concrete]
|
||||
// CHECK:STDOUT: %.7ea: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete]
|
||||
// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: <bound method> = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.592 [concrete]
|
||||
// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: <specific function> = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.592, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.340: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%To) [symbolic]
|
||||
// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.1c0: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.340 = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %ImplicitAs.impl_witness.204: <witness> = impl_witness imports.%ImplicitAs.impl_witness_table.9e9, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.584: type = fn_type @Core.IntLiteral.as.ImplicitAs.impl.Convert, @Core.IntLiteral.as.ImplicitAs.impl(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.0f0: %Core.IntLiteral.as.ImplicitAs.impl.Convert.type.584 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.d14 = facet_value Core.IntLiteral, (%ImplicitAs.impl_witness.204) [concrete]
|
||||
// CHECK:STDOUT: %.1df: type = fn_type_with_self_type %ImplicitAs.Convert.type.1b6, %ImplicitAs.facet [concrete]
|
||||
// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.bound: <bound method> = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.0f0 [concrete]
|
||||
// CHECK:STDOUT: %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn: <specific function> = specific_function %Core.IntLiteral.as.ImplicitAs.impl.Convert.0f0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %bound_method: <bound method> = bound_method %int_2.ecc, %Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn [concrete]
|
||||
// CHECK:STDOUT: %int_2.ef8: %i32 = int_value 2 [concrete]
|
||||
// CHECK:STDOUT: %struct: %struct_type.a.b.a13 = struct_value (%int_1, %int_2.ef8) [concrete]
|
||||
@@ -1005,8 +1005,8 @@ fn F() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic]
|
||||
// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic]
|
||||
// CHECK:STDOUT: %Core.import_ref.428: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.49e) = import_ref Core//prelude/parts/int, loc23_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.f01)]
|
||||
// CHECK:STDOUT: %ImplicitAs.impl_witness_table.b6b = impl_witness_table (%Core.import_ref.428), @Core.IntLiteral.as.ImplicitAs.impl [concrete]
|
||||
// CHECK:STDOUT: %Core.import_ref.ee7: @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert.type (%Core.IntLiteral.as.ImplicitAs.impl.Convert.type.340) = import_ref Core//prelude/parts/int, loc23_39, loaded [symbolic = @Core.IntLiteral.as.ImplicitAs.impl.%Core.IntLiteral.as.ImplicitAs.impl.Convert (constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.1c0)]
|
||||
// CHECK:STDOUT: %ImplicitAs.impl_witness_table.9e9 = impl_witness_table (%Core.import_ref.ee7), @Core.IntLiteral.as.ImplicitAs.impl [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -1056,7 +1056,7 @@ fn F() {
|
||||
// CHECK:STDOUT: %int_2: Core.IntLiteral = int_value 2 [concrete = constants.%int_2.ecc]
|
||||
// CHECK:STDOUT: %.loc7_30.1: %struct_type.a.b.cfd = struct_literal (%int_1, %int_2)
|
||||
// CHECK:STDOUT: %StructParam.specific_fn: <specific function> = specific_function %StructParam.ref, @StructParam(Core.IntLiteral) [concrete = constants.%StructParam.specific_fn]
|
||||
// CHECK:STDOUT: %impl.elem0: %.7ea = impl_witness_access constants.%ImplicitAs.impl_witness.acc, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.592]
|
||||
// CHECK:STDOUT: %impl.elem0: %.1df = impl_witness_access constants.%ImplicitAs.impl_witness.204, element0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.0f0]
|
||||
// CHECK:STDOUT: %bound_method.loc7_30.1: <bound method> = bound_method %int_2, %impl.elem0 [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.bound]
|
||||
// CHECK:STDOUT: %specific_fn: <specific function> = specific_function %impl.elem0, @Core.IntLiteral.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Core.IntLiteral.as.ImplicitAs.impl.Convert.specific_fn]
|
||||
// CHECK:STDOUT: %bound_method.loc7_30.2: <bound method> = bound_method %int_2, %specific_fn [concrete = constants.%bound_method]
|
||||
@@ -1592,18 +1592,18 @@ fn F() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %Z.type: type = facet_type <@Z> [concrete]
|
||||
// CHECK:STDOUT: %Self.9ba: %Z.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Self.1d7: %Z.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %EE: type = class_type @EE [concrete]
|
||||
// CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.f6d: type = pattern_type auto [concrete]
|
||||
// CHECK:STDOUT: %Destroy.impl_witness.490: <witness> = impl_witness @EE.%Destroy.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %Destroy.impl_witness.9db: <witness> = impl_witness @EE.%Destroy.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %ptr.7d7: type = ptr_type %EE [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.04a: type = pattern_type %ptr.7d7 [concrete]
|
||||
// CHECK:STDOUT: %EE.as.Destroy.impl.Op.type: type = fn_type @EE.as.Destroy.impl.Op [concrete]
|
||||
// CHECK:STDOUT: %EE.as.Destroy.impl.Op: %EE.as.Destroy.impl.Op.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %Z.impl_witness.dc8: <witness> = impl_witness file.%Z.impl_witness_table.loc6 [concrete]
|
||||
// CHECK:STDOUT: %Z.impl_witness.8f7: <witness> = impl_witness file.%Z.impl_witness_table.loc6 [concrete]
|
||||
// CHECK:STDOUT: %type: type = facet_type <type> [concrete]
|
||||
// CHECK:STDOUT: %.Self: %type = bind_symbolic_name .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %E: type = bind_symbolic_name E, 0 [symbolic]
|
||||
@@ -1611,34 +1611,34 @@ fn F() {
|
||||
// CHECK:STDOUT: %DD.type: type = generic_class_type @DD [concrete]
|
||||
// CHECK:STDOUT: %DD.generic: %DD.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %DD.296: type = class_type @DD, @DD(%E) [symbolic]
|
||||
// CHECK:STDOUT: %Destroy.impl_witness.308: <witness> = impl_witness @DD.%Destroy.impl_witness_table, @DD.as.Destroy.impl(%E) [symbolic]
|
||||
// CHECK:STDOUT: %Destroy.impl_witness.9c0: <witness> = impl_witness @DD.%Destroy.impl_witness_table, @DD.as.Destroy.impl(%E) [symbolic]
|
||||
// CHECK:STDOUT: %ptr.964: type = ptr_type %DD.296 [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.75a: type = pattern_type %ptr.964 [symbolic]
|
||||
// CHECK:STDOUT: %DD.as.Destroy.impl.Op.type: type = fn_type @DD.as.Destroy.impl.Op, @DD.as.Destroy.impl(%E) [symbolic]
|
||||
// CHECK:STDOUT: %DD.as.Destroy.impl.Op: %DD.as.Destroy.impl.Op.type = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %Z.impl_witness.de9: <witness> = impl_witness file.%Z.impl_witness_table.loc9, @DD.as.Z.impl(%E) [symbolic]
|
||||
// CHECK:STDOUT: %Z.impl_witness.cac: <witness> = impl_witness file.%Z.impl_witness_table.loc9, @DD.as.Z.impl(%E) [symbolic]
|
||||
// CHECK:STDOUT: %D: %Z.type = bind_symbolic_name D, 0 [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.6ea: type = pattern_type %Z.type [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.4a0: type = pattern_type %Z.type [concrete]
|
||||
// CHECK:STDOUT: %CC.type: type = generic_class_type @CC [concrete]
|
||||
// CHECK:STDOUT: %CC.generic: %CC.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %CC.88b: type = class_type @CC, @CC(%D) [symbolic]
|
||||
// CHECK:STDOUT: %Destroy.impl_witness.044: <witness> = impl_witness @CC.%Destroy.impl_witness_table, @CC.as.Destroy.impl(%D) [symbolic]
|
||||
// CHECK:STDOUT: %ptr.26f: type = ptr_type %CC.88b [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.453: type = pattern_type %ptr.26f [symbolic]
|
||||
// CHECK:STDOUT: %CC.7e3: type = class_type @CC, @CC(%D) [symbolic]
|
||||
// CHECK:STDOUT: %Destroy.impl_witness.064: <witness> = impl_witness @CC.%Destroy.impl_witness_table, @CC.as.Destroy.impl(%D) [symbolic]
|
||||
// CHECK:STDOUT: %ptr.545: type = ptr_type %CC.7e3 [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.331: type = pattern_type %ptr.545 [symbolic]
|
||||
// CHECK:STDOUT: %CC.as.Destroy.impl.Op.type: type = fn_type @CC.as.Destroy.impl.Op, @CC.as.Destroy.impl(%D) [symbolic]
|
||||
// CHECK:STDOUT: %CC.as.Destroy.impl.Op: %CC.as.Destroy.impl.Op.type = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %Z.lookup_impl_witness: <witness> = lookup_impl_witness %DD.296, @Z [symbolic]
|
||||
// CHECK:STDOUT: %Z.facet.e18: %Z.type = facet_value %DD.296, (%Z.lookup_impl_witness) [symbolic]
|
||||
// CHECK:STDOUT: %CC.5d4: type = class_type @CC, @CC(%Z.facet.e18) [symbolic]
|
||||
// CHECK:STDOUT: %Z.impl_witness.0da: <witness> = impl_witness file.%Z.impl_witness_table.loc12, @CC.as.Z.impl(%E) [symbolic]
|
||||
// CHECK:STDOUT: %Z.facet.bf0: %Z.type = facet_value %DD.296, (%Z.lookup_impl_witness) [symbolic]
|
||||
// CHECK:STDOUT: %CC.8ff: type = class_type @CC, @CC(%Z.facet.bf0) [symbolic]
|
||||
// CHECK:STDOUT: %Z.impl_witness.eb1: <witness> = impl_witness file.%Z.impl_witness_table.loc12, @CC.as.Z.impl(%E) [symbolic]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %DD.689: type = class_type @DD, @DD(%EE) [concrete]
|
||||
// CHECK:STDOUT: %Z.impl_witness.1f4: <witness> = impl_witness file.%Z.impl_witness_table.loc9, @DD.as.Z.impl(%EE) [concrete]
|
||||
// CHECK:STDOUT: %Z.facet.487: %Z.type = facet_value %DD.689, (%Z.impl_witness.1f4) [concrete]
|
||||
// CHECK:STDOUT: %CC.a7d: type = class_type @CC, @CC(%Z.facet.487) [concrete]
|
||||
// CHECK:STDOUT: %Z.impl_witness.90c: <witness> = impl_witness file.%Z.impl_witness_table.loc12, @CC.as.Z.impl(%EE) [concrete]
|
||||
// CHECK:STDOUT: %Z.facet.1b7: %Z.type = facet_value %CC.a7d, (%Z.impl_witness.90c) [concrete]
|
||||
// CHECK:STDOUT: %Z.impl_witness.fbd: <witness> = impl_witness file.%Z.impl_witness_table.loc9, @DD.as.Z.impl(%EE) [concrete]
|
||||
// CHECK:STDOUT: %Z.facet.8b7: %Z.type = facet_value %DD.689, (%Z.impl_witness.fbd) [concrete]
|
||||
// CHECK:STDOUT: %CC.3fd: type = class_type @CC, @CC(%Z.facet.8b7) [concrete]
|
||||
// CHECK:STDOUT: %Z.impl_witness.94c: <witness> = impl_witness file.%Z.impl_witness_table.loc12, @CC.as.Z.impl(%EE) [concrete]
|
||||
// CHECK:STDOUT: %Z.facet.327: %Z.type = facet_value %CC.3fd, (%Z.impl_witness.94c) [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
@@ -1667,7 +1667,7 @@ fn F() {
|
||||
// CHECK:STDOUT: %Z.ref: type = name_ref Z, file.%Z.decl [concrete = constants.%Z.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Z.impl_witness_table.loc6 = impl_witness_table (), @EE.as.Z.impl [concrete]
|
||||
// CHECK:STDOUT: %Z.impl_witness.loc6: <witness> = impl_witness %Z.impl_witness_table.loc6 [concrete = constants.%Z.impl_witness.dc8]
|
||||
// CHECK:STDOUT: %Z.impl_witness.loc6: <witness> = impl_witness %Z.impl_witness_table.loc6 [concrete = constants.%Z.impl_witness.8f7]
|
||||
// CHECK:STDOUT: %DD.decl: %DD.type = class_decl @DD [concrete = constants.%DD.generic] {
|
||||
// CHECK:STDOUT: %E.patt: %pattern_type.98f = symbolic_binding_pattern E, 0 [concrete]
|
||||
// CHECK:STDOUT: } {
|
||||
@@ -1685,9 +1685,9 @@ fn F() {
|
||||
// CHECK:STDOUT: %E.loc9_14.1: type = bind_symbolic_name E, 0 [symbolic = %E.loc9_14.2 (constants.%E)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Z.impl_witness_table.loc9 = impl_witness_table (), @DD.as.Z.impl [concrete]
|
||||
// CHECK:STDOUT: %Z.impl_witness.loc9: <witness> = impl_witness %Z.impl_witness_table.loc9, @DD.as.Z.impl(constants.%E) [symbolic = @DD.as.Z.impl.%Z.impl_witness (constants.%Z.impl_witness.de9)]
|
||||
// CHECK:STDOUT: %Z.impl_witness.loc9: <witness> = impl_witness %Z.impl_witness_table.loc9, @DD.as.Z.impl(constants.%E) [symbolic = @DD.as.Z.impl.%Z.impl_witness (constants.%Z.impl_witness.cac)]
|
||||
// CHECK:STDOUT: %CC.decl: %CC.type = class_decl @CC [concrete = constants.%CC.generic] {
|
||||
// CHECK:STDOUT: %D.patt: %pattern_type.6ea = symbolic_binding_pattern D, 0 [concrete]
|
||||
// CHECK:STDOUT: %D.patt: %pattern_type.4a0 = symbolic_binding_pattern D, 0 [concrete]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc11: type = splice_block %Z.ref [concrete = constants.%Z.type] {
|
||||
// CHECK:STDOUT: %.Self: %type = bind_symbolic_name .Self [symbolic_self = constants.%.Self]
|
||||
@@ -1702,20 +1702,20 @@ fn F() {
|
||||
// CHECK:STDOUT: %DD.ref: %DD.type = name_ref DD, file.%DD.decl [concrete = constants.%DD.generic]
|
||||
// CHECK:STDOUT: %E.ref: type = name_ref E, %E.loc12_14.1 [symbolic = %E.loc12_14.2 (constants.%E)]
|
||||
// CHECK:STDOUT: %DD.loc12_31.1: type = class_type @DD, @DD(constants.%E) [symbolic = %DD.loc12_31.2 (constants.%DD.296)]
|
||||
// CHECK:STDOUT: %Z.facet.loc12_32.1: %Z.type = facet_value constants.%DD.296, (constants.%Z.lookup_impl_witness) [symbolic = %Z.facet.loc12_32.2 (constants.%Z.facet.e18)]
|
||||
// CHECK:STDOUT: %.loc12: %Z.type = converted %DD.loc12_31.1, %Z.facet.loc12_32.1 [symbolic = %Z.facet.loc12_32.2 (constants.%Z.facet.e18)]
|
||||
// CHECK:STDOUT: %CC.loc12_32.1: type = class_type @CC, @CC(constants.%Z.facet.e18) [symbolic = %CC.loc12_32.2 (constants.%CC.5d4)]
|
||||
// CHECK:STDOUT: %Z.facet.loc12_32.1: %Z.type = facet_value constants.%DD.296, (constants.%Z.lookup_impl_witness) [symbolic = %Z.facet.loc12_32.2 (constants.%Z.facet.bf0)]
|
||||
// CHECK:STDOUT: %.loc12: %Z.type = converted %DD.loc12_31.1, %Z.facet.loc12_32.1 [symbolic = %Z.facet.loc12_32.2 (constants.%Z.facet.bf0)]
|
||||
// CHECK:STDOUT: %CC.loc12_32.1: type = class_type @CC, @CC(constants.%Z.facet.bf0) [symbolic = %CC.loc12_32.2 (constants.%CC.8ff)]
|
||||
// CHECK:STDOUT: %Z.ref: type = name_ref Z, file.%Z.decl [concrete = constants.%Z.type]
|
||||
// CHECK:STDOUT: %.Self: %type = bind_symbolic_name .Self [symbolic_self = constants.%.Self]
|
||||
// CHECK:STDOUT: %E.loc12_14.1: type = bind_symbolic_name E, 0 [symbolic = %E.loc12_14.2 (constants.%E)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Z.impl_witness_table.loc12 = impl_witness_table (), @CC.as.Z.impl [concrete]
|
||||
// CHECK:STDOUT: %Z.impl_witness.loc12: <witness> = impl_witness %Z.impl_witness_table.loc12, @CC.as.Z.impl(constants.%E) [symbolic = @CC.as.Z.impl.%Z.impl_witness (constants.%Z.impl_witness.0da)]
|
||||
// CHECK:STDOUT: %Z.impl_witness.loc12: <witness> = impl_witness %Z.impl_witness_table.loc12, @CC.as.Z.impl(constants.%E) [symbolic = @CC.as.Z.impl.%Z.impl_witness (constants.%Z.impl_witness.eb1)]
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @Z {
|
||||
// CHECK:STDOUT: %Self: %Z.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.9ba]
|
||||
// CHECK:STDOUT: %Self: %Z.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.1d7]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -1746,7 +1746,7 @@ fn F() {
|
||||
// CHECK:STDOUT: generic impl @DD.as.Destroy.impl(@DD.%E.loc8_10.2: type) {
|
||||
// CHECK:STDOUT: %E: type = bind_symbolic_name E, 0 [symbolic = %E (constants.%E)]
|
||||
// CHECK:STDOUT: %DD: type = class_type @DD, @DD(%E) [symbolic = %DD (constants.%DD.296)]
|
||||
// CHECK:STDOUT: %Destroy.impl_witness: <witness> = impl_witness @DD.%Destroy.impl_witness_table, @DD.as.Destroy.impl(%E) [symbolic = %Destroy.impl_witness (constants.%Destroy.impl_witness.308)]
|
||||
// CHECK:STDOUT: %Destroy.impl_witness: <witness> = impl_witness @DD.%Destroy.impl_witness_table, @DD.as.Destroy.impl(%E) [symbolic = %Destroy.impl_witness (constants.%Destroy.impl_witness.9c0)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %DD.as.Destroy.impl.Op.type: type = fn_type @DD.as.Destroy.impl.Op, @DD.as.Destroy.impl(%E) [symbolic = %DD.as.Destroy.impl.Op.type (constants.%DD.as.Destroy.impl.Op.type)]
|
||||
@@ -1775,7 +1775,7 @@ fn F() {
|
||||
// CHECK:STDOUT: generic impl @DD.as.Z.impl(%E.loc9_14.1: type) {
|
||||
// CHECK:STDOUT: %E.loc9_14.2: type = bind_symbolic_name E, 0 [symbolic = %E.loc9_14.2 (constants.%E)]
|
||||
// CHECK:STDOUT: %DD.loc9_28.2: type = class_type @DD, @DD(%E.loc9_14.2) [symbolic = %DD.loc9_28.2 (constants.%DD.296)]
|
||||
// CHECK:STDOUT: %Z.impl_witness: <witness> = impl_witness file.%Z.impl_witness_table.loc9, @DD.as.Z.impl(%E.loc9_14.2) [symbolic = %Z.impl_witness (constants.%Z.impl_witness.de9)]
|
||||
// CHECK:STDOUT: %Z.impl_witness: <witness> = impl_witness file.%Z.impl_witness_table.loc9, @DD.as.Z.impl(%E.loc9_14.2) [symbolic = %Z.impl_witness (constants.%Z.impl_witness.cac)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT:
|
||||
@@ -1787,8 +1787,8 @@ fn F() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic impl @CC.as.Destroy.impl(@CC.%D.loc11_10.2: %Z.type) {
|
||||
// CHECK:STDOUT: %D: %Z.type = bind_symbolic_name D, 0 [symbolic = %D (constants.%D)]
|
||||
// CHECK:STDOUT: %CC: type = class_type @CC, @CC(%D) [symbolic = %CC (constants.%CC.88b)]
|
||||
// CHECK:STDOUT: %Destroy.impl_witness: <witness> = impl_witness @CC.%Destroy.impl_witness_table, @CC.as.Destroy.impl(%D) [symbolic = %Destroy.impl_witness (constants.%Destroy.impl_witness.044)]
|
||||
// CHECK:STDOUT: %CC: type = class_type @CC, @CC(%D) [symbolic = %CC (constants.%CC.7e3)]
|
||||
// CHECK:STDOUT: %Destroy.impl_witness: <witness> = impl_witness @CC.%Destroy.impl_witness_table, @CC.as.Destroy.impl(%D) [symbolic = %Destroy.impl_witness (constants.%Destroy.impl_witness.064)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %CC.as.Destroy.impl.Op.type: type = fn_type @CC.as.Destroy.impl.Op, @CC.as.Destroy.impl(%D) [symbolic = %CC.as.Destroy.impl.Op.type (constants.%CC.as.Destroy.impl.Op.type)]
|
||||
@@ -1796,16 +1796,16 @@ fn F() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl: @CC.%Self.ref as constants.%Destroy.type {
|
||||
// CHECK:STDOUT: %CC.as.Destroy.impl.Op.decl: @CC.as.Destroy.impl.%CC.as.Destroy.impl.Op.type (%CC.as.Destroy.impl.Op.type) = fn_decl @CC.as.Destroy.impl.Op [symbolic = @CC.as.Destroy.impl.%CC.as.Destroy.impl.Op (constants.%CC.as.Destroy.impl.Op)] {
|
||||
// CHECK:STDOUT: %self.patt: @CC.as.Destroy.impl.Op.%pattern_type (%pattern_type.453) = binding_pattern self [concrete]
|
||||
// CHECK:STDOUT: %self.param_patt: @CC.as.Destroy.impl.Op.%pattern_type (%pattern_type.453) = value_param_pattern %self.patt, call_param0 [concrete]
|
||||
// CHECK:STDOUT: %self.patt: @CC.as.Destroy.impl.Op.%pattern_type (%pattern_type.331) = binding_pattern self [concrete]
|
||||
// CHECK:STDOUT: %self.param_patt: @CC.as.Destroy.impl.Op.%pattern_type (%pattern_type.331) = value_param_pattern %self.patt, call_param0 [concrete]
|
||||
// CHECK:STDOUT: %.loc11_17.1: %pattern_type.f6d = addr_pattern %self.param_patt [concrete]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %self.param: @CC.as.Destroy.impl.Op.%ptr (%ptr.26f) = value_param call_param0
|
||||
// CHECK:STDOUT: %.loc11_17.2: type = splice_block %Self.ref [symbolic = %CC (constants.%CC.88b)] {
|
||||
// CHECK:STDOUT: %.loc11_17.3: type = specific_constant constants.%CC.88b, @CC(constants.%D) [symbolic = %CC (constants.%CC.88b)]
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, %.loc11_17.3 [symbolic = %CC (constants.%CC.88b)]
|
||||
// CHECK:STDOUT: %self.param: @CC.as.Destroy.impl.Op.%ptr (%ptr.545) = value_param call_param0
|
||||
// CHECK:STDOUT: %.loc11_17.2: type = splice_block %Self.ref [symbolic = %CC (constants.%CC.7e3)] {
|
||||
// CHECK:STDOUT: %.loc11_17.3: type = specific_constant constants.%CC.7e3, @CC(constants.%D) [symbolic = %CC (constants.%CC.7e3)]
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, %.loc11_17.3 [symbolic = %CC (constants.%CC.7e3)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %self: @CC.as.Destroy.impl.Op.%ptr (%ptr.26f) = bind_name self, %self.param
|
||||
// CHECK:STDOUT: %self: @CC.as.Destroy.impl.Op.%ptr (%ptr.545) = bind_name self, %self.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -1818,9 +1818,9 @@ fn F() {
|
||||
// CHECK:STDOUT: %E.loc12_14.2: type = bind_symbolic_name E, 0 [symbolic = %E.loc12_14.2 (constants.%E)]
|
||||
// CHECK:STDOUT: %DD.loc12_31.2: type = class_type @DD, @DD(%E.loc12_14.2) [symbolic = %DD.loc12_31.2 (constants.%DD.296)]
|
||||
// CHECK:STDOUT: %Z.lookup_impl_witness: <witness> = lookup_impl_witness %DD.loc12_31.2, @Z [symbolic = %Z.lookup_impl_witness (constants.%Z.lookup_impl_witness)]
|
||||
// CHECK:STDOUT: %Z.facet.loc12_32.2: %Z.type = facet_value %DD.loc12_31.2, (%Z.lookup_impl_witness) [symbolic = %Z.facet.loc12_32.2 (constants.%Z.facet.e18)]
|
||||
// CHECK:STDOUT: %CC.loc12_32.2: type = class_type @CC, @CC(%Z.facet.loc12_32.2) [symbolic = %CC.loc12_32.2 (constants.%CC.5d4)]
|
||||
// CHECK:STDOUT: %Z.impl_witness: <witness> = impl_witness file.%Z.impl_witness_table.loc12, @CC.as.Z.impl(%E.loc12_14.2) [symbolic = %Z.impl_witness (constants.%Z.impl_witness.0da)]
|
||||
// CHECK:STDOUT: %Z.facet.loc12_32.2: %Z.type = facet_value %DD.loc12_31.2, (%Z.lookup_impl_witness) [symbolic = %Z.facet.loc12_32.2 (constants.%Z.facet.bf0)]
|
||||
// CHECK:STDOUT: %CC.loc12_32.2: type = class_type @CC, @CC(%Z.facet.loc12_32.2) [symbolic = %CC.loc12_32.2 (constants.%CC.8ff)]
|
||||
// CHECK:STDOUT: %Z.impl_witness: <witness> = impl_witness file.%Z.impl_witness_table.loc12, @CC.as.Z.impl(%E.loc12_14.2) [symbolic = %Z.impl_witness (constants.%Z.impl_witness.eb1)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT:
|
||||
@@ -1834,7 +1834,7 @@ fn F() {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%EE [concrete = constants.%EE]
|
||||
// CHECK:STDOUT: impl_decl @EE.as.Destroy.impl [concrete] {} {}
|
||||
// CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (@EE.as.Destroy.impl.%EE.as.Destroy.impl.Op.decl), @EE.as.Destroy.impl [concrete]
|
||||
// CHECK:STDOUT: %Destroy.impl_witness: <witness> = impl_witness %Destroy.impl_witness_table [concrete = constants.%Destroy.impl_witness.490]
|
||||
// CHECK:STDOUT: %Destroy.impl_witness: <witness> = impl_witness %Destroy.impl_witness_table [concrete = constants.%Destroy.impl_witness.9db]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
@@ -1851,7 +1851,7 @@ fn F() {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%DD.296 [symbolic = @DD.as.Destroy.impl.%DD (constants.%DD.296)]
|
||||
// CHECK:STDOUT: impl_decl @DD.as.Destroy.impl [concrete] {} {}
|
||||
// CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (@DD.as.Destroy.impl.%DD.as.Destroy.impl.Op.decl), @DD.as.Destroy.impl [concrete]
|
||||
// CHECK:STDOUT: %Destroy.impl_witness: <witness> = impl_witness %Destroy.impl_witness_table, @DD.as.Destroy.impl(constants.%E) [symbolic = @DD.as.Destroy.impl.%Destroy.impl_witness (constants.%Destroy.impl_witness.308)]
|
||||
// CHECK:STDOUT: %Destroy.impl_witness: <witness> = impl_witness %Destroy.impl_witness_table, @DD.as.Destroy.impl(constants.%E) [symbolic = @DD.as.Destroy.impl.%Destroy.impl_witness (constants.%Destroy.impl_witness.9c0)]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
@@ -1866,15 +1866,15 @@ fn F() {
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%CC.88b [symbolic = @CC.as.Destroy.impl.%CC (constants.%CC.88b)]
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%CC.7e3 [symbolic = @CC.as.Destroy.impl.%CC (constants.%CC.7e3)]
|
||||
// CHECK:STDOUT: impl_decl @CC.as.Destroy.impl [concrete] {} {}
|
||||
// CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (@CC.as.Destroy.impl.%CC.as.Destroy.impl.Op.decl), @CC.as.Destroy.impl [concrete]
|
||||
// CHECK:STDOUT: %Destroy.impl_witness: <witness> = impl_witness %Destroy.impl_witness_table, @CC.as.Destroy.impl(constants.%D) [symbolic = @CC.as.Destroy.impl.%Destroy.impl_witness (constants.%Destroy.impl_witness.044)]
|
||||
// CHECK:STDOUT: %Destroy.impl_witness: <witness> = impl_witness %Destroy.impl_witness_table, @CC.as.Destroy.impl(constants.%D) [symbolic = @CC.as.Destroy.impl.%Destroy.impl_witness (constants.%Destroy.impl_witness.064)]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%CC.88b
|
||||
// CHECK:STDOUT: .Self = constants.%CC.7e3
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -1893,13 +1893,13 @@ fn F() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic fn @CC.as.Destroy.impl.Op(@CC.%D.loc11_10.2: %Z.type) {
|
||||
// CHECK:STDOUT: %D: %Z.type = bind_symbolic_name D, 0 [symbolic = %D (constants.%D)]
|
||||
// CHECK:STDOUT: %CC: type = class_type @CC, @CC(%D) [symbolic = %CC (constants.%CC.88b)]
|
||||
// CHECK:STDOUT: %ptr: type = ptr_type %CC [symbolic = %ptr (constants.%ptr.26f)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %ptr [symbolic = %pattern_type (constants.%pattern_type.453)]
|
||||
// CHECK:STDOUT: %CC: type = class_type @CC, @CC(%D) [symbolic = %CC (constants.%CC.7e3)]
|
||||
// CHECK:STDOUT: %ptr: type = ptr_type %CC [symbolic = %ptr (constants.%ptr.545)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %ptr [symbolic = %pattern_type (constants.%pattern_type.331)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn(%self.param: @CC.as.Destroy.impl.Op.%ptr (%ptr.26f)) = "no_op";
|
||||
// CHECK:STDOUT: fn(%self.param: @CC.as.Destroy.impl.Op.%ptr (%ptr.545)) = "no_op";
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @F() {
|
||||
@@ -1908,12 +1908,12 @@ fn F() {
|
||||
// CHECK:STDOUT: %DD.ref: %DD.type = name_ref DD, file.%DD.decl [concrete = constants.%DD.generic]
|
||||
// CHECK:STDOUT: %EE.ref: type = name_ref EE, file.%EE.decl [concrete = constants.%EE]
|
||||
// CHECK:STDOUT: %DD: type = class_type @DD, @DD(constants.%EE) [concrete = constants.%DD.689]
|
||||
// CHECK:STDOUT: %Z.facet.loc15_12: %Z.type = facet_value constants.%DD.689, (constants.%Z.impl_witness.1f4) [concrete = constants.%Z.facet.487]
|
||||
// CHECK:STDOUT: %.loc15_12: %Z.type = converted %DD, %Z.facet.loc15_12 [concrete = constants.%Z.facet.487]
|
||||
// CHECK:STDOUT: %CC: type = class_type @CC, @CC(constants.%Z.facet.487) [concrete = constants.%CC.a7d]
|
||||
// CHECK:STDOUT: %Z.facet.loc15_12: %Z.type = facet_value constants.%DD.689, (constants.%Z.impl_witness.fbd) [concrete = constants.%Z.facet.8b7]
|
||||
// CHECK:STDOUT: %.loc15_12: %Z.type = converted %DD, %Z.facet.loc15_12 [concrete = constants.%Z.facet.8b7]
|
||||
// CHECK:STDOUT: %CC: type = class_type @CC, @CC(constants.%Z.facet.8b7) [concrete = constants.%CC.3fd]
|
||||
// CHECK:STDOUT: %Z.ref: type = name_ref Z, file.%Z.decl [concrete = constants.%Z.type]
|
||||
// CHECK:STDOUT: %Z.facet.loc15_14: %Z.type = facet_value constants.%CC.a7d, (constants.%Z.impl_witness.90c) [concrete = constants.%Z.facet.1b7]
|
||||
// CHECK:STDOUT: %.loc15_14: %Z.type = converted %CC, %Z.facet.loc15_14 [concrete = constants.%Z.facet.1b7]
|
||||
// CHECK:STDOUT: %Z.facet.loc15_14: %Z.type = facet_value constants.%CC.3fd, (constants.%Z.impl_witness.94c) [concrete = constants.%Z.facet.327]
|
||||
// CHECK:STDOUT: %.loc15_14: %Z.type = converted %CC, %Z.facet.loc15_14 [concrete = constants.%Z.facet.327]
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -1924,7 +1924,7 @@ fn F() {
|
||||
// CHECK:STDOUT: specific @DD.as.Destroy.impl(constants.%E) {
|
||||
// CHECK:STDOUT: %E => constants.%E
|
||||
// CHECK:STDOUT: %DD => constants.%DD.296
|
||||
// CHECK:STDOUT: %Destroy.impl_witness => constants.%Destroy.impl_witness.308
|
||||
// CHECK:STDOUT: %Destroy.impl_witness => constants.%Destroy.impl_witness.9c0
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @DD.as.Destroy.impl.Op(constants.%E) {
|
||||
@@ -1937,7 +1937,7 @@ fn F() {
|
||||
// CHECK:STDOUT: specific @DD.as.Z.impl(constants.%E) {
|
||||
// CHECK:STDOUT: %E.loc9_14.2 => constants.%E
|
||||
// CHECK:STDOUT: %DD.loc9_28.2 => constants.%DD.296
|
||||
// CHECK:STDOUT: %Z.impl_witness => constants.%Z.impl_witness.de9
|
||||
// CHECK:STDOUT: %Z.impl_witness => constants.%Z.impl_witness.cac
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: }
|
||||
@@ -1948,28 +1948,28 @@ fn F() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @CC.as.Destroy.impl(constants.%D) {
|
||||
// CHECK:STDOUT: %D => constants.%D
|
||||
// CHECK:STDOUT: %CC => constants.%CC.88b
|
||||
// CHECK:STDOUT: %Destroy.impl_witness => constants.%Destroy.impl_witness.044
|
||||
// CHECK:STDOUT: %CC => constants.%CC.7e3
|
||||
// CHECK:STDOUT: %Destroy.impl_witness => constants.%Destroy.impl_witness.064
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @CC.as.Destroy.impl.Op(constants.%D) {
|
||||
// CHECK:STDOUT: %D => constants.%D
|
||||
// CHECK:STDOUT: %CC => constants.%CC.88b
|
||||
// CHECK:STDOUT: %ptr => constants.%ptr.26f
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.453
|
||||
// CHECK:STDOUT: %CC => constants.%CC.7e3
|
||||
// CHECK:STDOUT: %ptr => constants.%ptr.545
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.331
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @CC(constants.%Z.facet.e18) {
|
||||
// CHECK:STDOUT: %D.loc11_10.1 => constants.%Z.facet.e18
|
||||
// CHECK:STDOUT: specific @CC(constants.%Z.facet.bf0) {
|
||||
// CHECK:STDOUT: %D.loc11_10.1 => constants.%Z.facet.bf0
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @CC.as.Z.impl(constants.%E) {
|
||||
// CHECK:STDOUT: %E.loc12_14.2 => constants.%E
|
||||
// CHECK:STDOUT: %DD.loc12_31.2 => constants.%DD.296
|
||||
// CHECK:STDOUT: %Z.lookup_impl_witness => constants.%Z.lookup_impl_witness
|
||||
// CHECK:STDOUT: %Z.facet.loc12_32.2 => constants.%Z.facet.e18
|
||||
// CHECK:STDOUT: %CC.loc12_32.2 => constants.%CC.5d4
|
||||
// CHECK:STDOUT: %Z.impl_witness => constants.%Z.impl_witness.0da
|
||||
// CHECK:STDOUT: %Z.facet.loc12_32.2 => constants.%Z.facet.bf0
|
||||
// CHECK:STDOUT: %CC.loc12_32.2 => constants.%CC.8ff
|
||||
// CHECK:STDOUT: %Z.impl_witness => constants.%Z.impl_witness.eb1
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @DD(constants.%EE) {
|
||||
@@ -1979,22 +1979,22 @@ fn F() {
|
||||
// CHECK:STDOUT: specific @DD.as.Z.impl(constants.%EE) {
|
||||
// CHECK:STDOUT: %E.loc9_14.2 => constants.%EE
|
||||
// CHECK:STDOUT: %DD.loc9_28.2 => constants.%DD.689
|
||||
// CHECK:STDOUT: %Z.impl_witness => constants.%Z.impl_witness.1f4
|
||||
// CHECK:STDOUT: %Z.impl_witness => constants.%Z.impl_witness.fbd
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @CC(constants.%Z.facet.487) {
|
||||
// CHECK:STDOUT: %D.loc11_10.1 => constants.%Z.facet.487
|
||||
// CHECK:STDOUT: specific @CC(constants.%Z.facet.8b7) {
|
||||
// CHECK:STDOUT: %D.loc11_10.1 => constants.%Z.facet.8b7
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @CC.as.Z.impl(constants.%EE) {
|
||||
// CHECK:STDOUT: %E.loc12_14.2 => constants.%EE
|
||||
// CHECK:STDOUT: %DD.loc12_31.2 => constants.%DD.689
|
||||
// CHECK:STDOUT: %Z.lookup_impl_witness => constants.%Z.impl_witness.1f4
|
||||
// CHECK:STDOUT: %Z.facet.loc12_32.2 => constants.%Z.facet.487
|
||||
// CHECK:STDOUT: %CC.loc12_32.2 => constants.%CC.a7d
|
||||
// CHECK:STDOUT: %Z.impl_witness => constants.%Z.impl_witness.90c
|
||||
// CHECK:STDOUT: %Z.lookup_impl_witness => constants.%Z.impl_witness.fbd
|
||||
// CHECK:STDOUT: %Z.facet.loc12_32.2 => constants.%Z.facet.8b7
|
||||
// CHECK:STDOUT: %CC.loc12_32.2 => constants.%CC.3fd
|
||||
// CHECK:STDOUT: %Z.impl_witness => constants.%Z.impl_witness.94c
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
+71
-71
@@ -41,13 +41,13 @@ fn F() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %Y.type: type = facet_type <@Y> [concrete]
|
||||
// CHECK:STDOUT: %Self.33b: %Y.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Self.045: %Y.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %W.type: type = facet_type <@W> [concrete]
|
||||
// CHECK:STDOUT: %Self.9bf: %W.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Self.7b5: %W.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %DD: type = class_type @DD [concrete]
|
||||
// CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.f6d: type = pattern_type auto [concrete]
|
||||
// CHECK:STDOUT: %Destroy.impl_witness.0ec: <witness> = impl_witness @DD.%Destroy.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %Destroy.impl_witness.31d: <witness> = impl_witness @DD.%Destroy.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %ptr.3d1: type = ptr_type %DD [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.3fc: type = pattern_type %ptr.3d1 [concrete]
|
||||
// CHECK:STDOUT: %DD.as.Destroy.impl.Op.type: type = fn_type @DD.as.Destroy.impl.Op [concrete]
|
||||
@@ -59,42 +59,42 @@ fn F() {
|
||||
// CHECK:STDOUT: %type: type = facet_type <type> [concrete]
|
||||
// CHECK:STDOUT: %.Self: %type = bind_symbolic_name .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %D: %Y.type = bind_symbolic_name D, 0 [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.f7e: type = pattern_type %Y.type [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.6e5: type = pattern_type %Y.type [concrete]
|
||||
// CHECK:STDOUT: %CC.type: type = generic_class_type @CC [concrete]
|
||||
// CHECK:STDOUT: %CC.generic: %CC.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %CC.6c6: type = class_type @CC, @CC(%D) [symbolic]
|
||||
// CHECK:STDOUT: %Destroy.impl_witness.195: <witness> = impl_witness @CC.%Destroy.impl_witness_table, @CC.as.Destroy.impl(%D) [symbolic]
|
||||
// CHECK:STDOUT: %ptr.f53: type = ptr_type %CC.6c6 [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.6d4: type = pattern_type %ptr.f53 [symbolic]
|
||||
// CHECK:STDOUT: %CC.ef8: type = class_type @CC, @CC(%D) [symbolic]
|
||||
// CHECK:STDOUT: %Destroy.impl_witness.520: <witness> = impl_witness @CC.%Destroy.impl_witness_table, @CC.as.Destroy.impl(%D) [symbolic]
|
||||
// CHECK:STDOUT: %ptr.791: type = ptr_type %CC.ef8 [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.931: type = pattern_type %ptr.791 [symbolic]
|
||||
// CHECK:STDOUT: %CC.as.Destroy.impl.Op.type: type = fn_type @CC.as.Destroy.impl.Op, @CC.as.Destroy.impl(%D) [symbolic]
|
||||
// CHECK:STDOUT: %CC.as.Destroy.impl.Op: %CC.as.Destroy.impl.Op.type = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %Z.type: type = facet_type <@Z> [concrete]
|
||||
// CHECK:STDOUT: %Self.9ba: %Z.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Self.1d7: %Z.type = bind_symbolic_name Self, 0 [symbolic]
|
||||
// CHECK:STDOUT: %BitAndWith.type.f2e: type = generic_interface_type @BitAndWith [concrete]
|
||||
// CHECK:STDOUT: %BitAndWith.generic: %BitAndWith.type.f2e = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %BitAndWith.type.b10: type = facet_type <@BitAndWith, @BitAndWith(type)> [concrete]
|
||||
// CHECK:STDOUT: %BitAndWith.type.8a6: type = facet_type <@BitAndWith, @BitAndWith(type)> [concrete]
|
||||
// CHECK:STDOUT: %BitAndWith.Op.type.9a3: type = fn_type @BitAndWith.Op, @BitAndWith(type) [concrete]
|
||||
// CHECK:STDOUT: %BitAndWith.impl_witness: <witness> = impl_witness imports.%BitAndWith.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %BitAndWith.facet: %BitAndWith.type.b10 = facet_value type, (%BitAndWith.impl_witness) [concrete]
|
||||
// CHECK:STDOUT: %.b22: type = fn_type_with_self_type %BitAndWith.Op.type.9a3, %BitAndWith.facet [concrete]
|
||||
// CHECK:STDOUT: %BitAndWith.facet: %BitAndWith.type.8a6 = facet_value type, (%BitAndWith.impl_witness) [concrete]
|
||||
// CHECK:STDOUT: %.fa7: type = fn_type_with_self_type %BitAndWith.Op.type.9a3, %BitAndWith.facet [concrete]
|
||||
// CHECK:STDOUT: %type.as.BitAndWith.impl.Op.type: type = fn_type @type.as.BitAndWith.impl.Op [concrete]
|
||||
// CHECK:STDOUT: %type.as.BitAndWith.impl.Op: %type.as.BitAndWith.impl.Op.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %type.as.BitAndWith.impl.Op.bound: <bound method> = bound_method %Y.type, %type.as.BitAndWith.impl.Op [concrete]
|
||||
// CHECK:STDOUT: %facet_type: type = facet_type <@Y & @W> [concrete]
|
||||
// CHECK:STDOUT: %E: %facet_type = bind_symbolic_name E, 0 [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.29c: type = pattern_type %facet_type [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.50c: type = pattern_type %facet_type [concrete]
|
||||
// CHECK:STDOUT: %Y.lookup_impl_witness: <witness> = lookup_impl_witness %E, @Y [symbolic]
|
||||
// CHECK:STDOUT: %E.as_type: type = facet_access_type %E [symbolic]
|
||||
// CHECK:STDOUT: %Y.facet.ecf: %Y.type = facet_value %E.as_type, (%Y.lookup_impl_witness) [symbolic]
|
||||
// CHECK:STDOUT: %CC.6eb: type = class_type @CC, @CC(%Y.facet.ecf) [symbolic]
|
||||
// CHECK:STDOUT: %Z.impl_witness.481: <witness> = impl_witness file.%Z.impl_witness_table, @CC.as.Z.impl(%E) [symbolic]
|
||||
// CHECK:STDOUT: %Y.facet.682: %Y.type = facet_value %E.as_type, (%Y.lookup_impl_witness) [symbolic]
|
||||
// CHECK:STDOUT: %CC.6f9: type = class_type @CC, @CC(%Y.facet.682) [symbolic]
|
||||
// CHECK:STDOUT: %Z.impl_witness.3fa: <witness> = impl_witness file.%Z.impl_witness_table, @CC.as.Z.impl(%E) [symbolic]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Y.facet.b41: %Y.type = facet_value %DD, (%Y.impl_witness) [concrete]
|
||||
// CHECK:STDOUT: %CC.017: type = class_type @CC, @CC(%Y.facet.b41) [concrete]
|
||||
// CHECK:STDOUT: %Y.facet.4e8: %Y.type = facet_value %DD, (%Y.impl_witness) [concrete]
|
||||
// CHECK:STDOUT: %CC.3b3: type = class_type @CC, @CC(%Y.facet.4e8) [concrete]
|
||||
// CHECK:STDOUT: %facet_value: %facet_type = facet_value %DD, (%Y.impl_witness, %W.impl_witness) [concrete]
|
||||
// CHECK:STDOUT: %Z.impl_witness.9cd: <witness> = impl_witness file.%Z.impl_witness_table, @CC.as.Z.impl(%facet_value) [concrete]
|
||||
// CHECK:STDOUT: %Z.facet: %Z.type = facet_value %CC.017, (%Z.impl_witness.9cd) [concrete]
|
||||
// CHECK:STDOUT: %Z.impl_witness.8f8: <witness> = impl_witness file.%Z.impl_witness_table, @CC.as.Z.impl(%facet_value) [concrete]
|
||||
// CHECK:STDOUT: %Z.facet: %Z.type = facet_value %CC.3b3, (%Z.impl_witness.8f8) [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
@@ -106,8 +106,8 @@ fn F() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type]
|
||||
// CHECK:STDOUT: %Core.BitAndWith: %BitAndWith.type.f2e = import_ref Core//prelude, BitAndWith, loaded [concrete = constants.%BitAndWith.generic]
|
||||
// CHECK:STDOUT: %Core.import_ref.a4f: %type.as.BitAndWith.impl.Op.type = import_ref Core//prelude, loc14_42, loaded [concrete = constants.%type.as.BitAndWith.impl.Op]
|
||||
// CHECK:STDOUT: %BitAndWith.impl_witness_table = impl_witness_table (%Core.import_ref.a4f), @type.as.BitAndWith.impl [concrete]
|
||||
// CHECK:STDOUT: %Core.import_ref.636: %type.as.BitAndWith.impl.Op.type = import_ref Core//prelude, loc14_42, loaded [concrete = constants.%type.as.BitAndWith.impl.Op]
|
||||
// CHECK:STDOUT: %BitAndWith.impl_witness_table = impl_witness_table (%Core.import_ref.636), @type.as.BitAndWith.impl [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -137,7 +137,7 @@ fn F() {
|
||||
// CHECK:STDOUT: %W.impl_witness_table = impl_witness_table (), @DD.as.W.impl [concrete]
|
||||
// CHECK:STDOUT: %W.impl_witness: <witness> = impl_witness %W.impl_witness_table [concrete = constants.%W.impl_witness]
|
||||
// CHECK:STDOUT: %CC.decl: %CC.type = class_decl @CC [concrete = constants.%CC.generic] {
|
||||
// CHECK:STDOUT: %D.patt: %pattern_type.f7e = symbolic_binding_pattern D, 0 [concrete]
|
||||
// CHECK:STDOUT: %D.patt: %pattern_type.6e5 = symbolic_binding_pattern D, 0 [concrete]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc12: type = splice_block %Y.ref [concrete = constants.%Y.type] {
|
||||
// CHECK:STDOUT: %.Self: %type = bind_symbolic_name .Self [symbolic_self = constants.%.Self]
|
||||
@@ -147,20 +147,20 @@ fn F() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Z.decl: type = interface_decl @Z [concrete = constants.%Z.type] {} {}
|
||||
// CHECK:STDOUT: impl_decl @CC.as.Z.impl [concrete] {
|
||||
// CHECK:STDOUT: %E.patt: %pattern_type.29c = symbolic_binding_pattern E, 0 [concrete]
|
||||
// CHECK:STDOUT: %E.patt: %pattern_type.50c = symbolic_binding_pattern E, 0 [concrete]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %CC.ref: %CC.type = name_ref CC, file.%CC.decl [concrete = constants.%CC.generic]
|
||||
// CHECK:STDOUT: %E.ref: %facet_type = name_ref E, %E.loc19_14.1 [symbolic = %E.loc19_14.2 (constants.%E)]
|
||||
// CHECK:STDOUT: %E.as_type.loc19_29.1: type = facet_access_type constants.%E [symbolic = %E.as_type.loc19_29.2 (constants.%E.as_type)]
|
||||
// CHECK:STDOUT: %Y.facet.loc19_29.1: %Y.type = facet_value %E.as_type.loc19_29.1, (constants.%Y.lookup_impl_witness) [symbolic = %Y.facet.loc19_29.2 (constants.%Y.facet.ecf)]
|
||||
// CHECK:STDOUT: %.loc19_29: %Y.type = converted %E.ref, %Y.facet.loc19_29.1 [symbolic = %Y.facet.loc19_29.2 (constants.%Y.facet.ecf)]
|
||||
// CHECK:STDOUT: %CC.loc19_29.1: type = class_type @CC, @CC(constants.%Y.facet.ecf) [symbolic = %CC.loc19_29.2 (constants.%CC.6eb)]
|
||||
// CHECK:STDOUT: %Y.facet.loc19_29.1: %Y.type = facet_value %E.as_type.loc19_29.1, (constants.%Y.lookup_impl_witness) [symbolic = %Y.facet.loc19_29.2 (constants.%Y.facet.682)]
|
||||
// CHECK:STDOUT: %.loc19_29: %Y.type = converted %E.ref, %Y.facet.loc19_29.1 [symbolic = %Y.facet.loc19_29.2 (constants.%Y.facet.682)]
|
||||
// CHECK:STDOUT: %CC.loc19_29.1: type = class_type @CC, @CC(constants.%Y.facet.682) [symbolic = %CC.loc19_29.2 (constants.%CC.6f9)]
|
||||
// CHECK:STDOUT: %Z.ref: type = name_ref Z, file.%Z.decl [concrete = constants.%Z.type]
|
||||
// CHECK:STDOUT: %.loc19_20.1: type = splice_block %.loc19_20.3 [concrete = constants.%facet_type] {
|
||||
// CHECK:STDOUT: %.Self: %type = bind_symbolic_name .Self [symbolic_self = constants.%.Self]
|
||||
// CHECK:STDOUT: %Y.ref: type = name_ref Y, file.%Y.decl [concrete = constants.%Y.type]
|
||||
// CHECK:STDOUT: %W.ref: type = name_ref W, file.%W.decl [concrete = constants.%W.type]
|
||||
// CHECK:STDOUT: %impl.elem0: %.b22 = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%type.as.BitAndWith.impl.Op]
|
||||
// CHECK:STDOUT: %impl.elem0: %.fa7 = impl_witness_access constants.%BitAndWith.impl_witness, element0 [concrete = constants.%type.as.BitAndWith.impl.Op]
|
||||
// CHECK:STDOUT: %bound_method: <bound method> = bound_method %Y.ref, %impl.elem0 [concrete = constants.%type.as.BitAndWith.impl.Op.bound]
|
||||
// CHECK:STDOUT: %type.as.BitAndWith.impl.Op.call: init type = call %bound_method(%Y.ref, %W.ref) [concrete = constants.%facet_type]
|
||||
// CHECK:STDOUT: %.loc19_20.2: type = value_of_initializer %type.as.BitAndWith.impl.Op.call [concrete = constants.%facet_type]
|
||||
@@ -169,12 +169,12 @@ fn F() {
|
||||
// CHECK:STDOUT: %E.loc19_14.1: %facet_type = bind_symbolic_name E, 0 [symbolic = %E.loc19_14.2 (constants.%E)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Z.impl_witness_table = impl_witness_table (), @CC.as.Z.impl [concrete]
|
||||
// CHECK:STDOUT: %Z.impl_witness: <witness> = impl_witness %Z.impl_witness_table, @CC.as.Z.impl(constants.%E) [symbolic = @CC.as.Z.impl.%Z.impl_witness (constants.%Z.impl_witness.481)]
|
||||
// CHECK:STDOUT: %Z.impl_witness: <witness> = impl_witness %Z.impl_witness_table, @CC.as.Z.impl(constants.%E) [symbolic = @CC.as.Z.impl.%Z.impl_witness (constants.%Z.impl_witness.3fa)]
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @Y {
|
||||
// CHECK:STDOUT: %Self: %Y.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.33b]
|
||||
// CHECK:STDOUT: %Self: %Y.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.045]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -182,7 +182,7 @@ fn F() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @W {
|
||||
// CHECK:STDOUT: %Self: %W.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.9bf]
|
||||
// CHECK:STDOUT: %Self: %W.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.7b5]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -190,7 +190,7 @@ fn F() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @Z {
|
||||
// CHECK:STDOUT: %Self: %Z.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.9ba]
|
||||
// CHECK:STDOUT: %Self: %Z.type = bind_symbolic_name Self, 0 [symbolic = constants.%Self.1d7]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = %Self
|
||||
@@ -225,8 +225,8 @@ fn F() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic impl @CC.as.Destroy.impl(@CC.%D.loc12_10.2: %Y.type) {
|
||||
// CHECK:STDOUT: %D: %Y.type = bind_symbolic_name D, 0 [symbolic = %D (constants.%D)]
|
||||
// CHECK:STDOUT: %CC: type = class_type @CC, @CC(%D) [symbolic = %CC (constants.%CC.6c6)]
|
||||
// CHECK:STDOUT: %Destroy.impl_witness: <witness> = impl_witness @CC.%Destroy.impl_witness_table, @CC.as.Destroy.impl(%D) [symbolic = %Destroy.impl_witness (constants.%Destroy.impl_witness.195)]
|
||||
// CHECK:STDOUT: %CC: type = class_type @CC, @CC(%D) [symbolic = %CC (constants.%CC.ef8)]
|
||||
// CHECK:STDOUT: %Destroy.impl_witness: <witness> = impl_witness @CC.%Destroy.impl_witness_table, @CC.as.Destroy.impl(%D) [symbolic = %Destroy.impl_witness (constants.%Destroy.impl_witness.520)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %CC.as.Destroy.impl.Op.type: type = fn_type @CC.as.Destroy.impl.Op, @CC.as.Destroy.impl(%D) [symbolic = %CC.as.Destroy.impl.Op.type (constants.%CC.as.Destroy.impl.Op.type)]
|
||||
@@ -234,16 +234,16 @@ fn F() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: impl: @CC.%Self.ref as constants.%Destroy.type {
|
||||
// CHECK:STDOUT: %CC.as.Destroy.impl.Op.decl: @CC.as.Destroy.impl.%CC.as.Destroy.impl.Op.type (%CC.as.Destroy.impl.Op.type) = fn_decl @CC.as.Destroy.impl.Op [symbolic = @CC.as.Destroy.impl.%CC.as.Destroy.impl.Op (constants.%CC.as.Destroy.impl.Op)] {
|
||||
// CHECK:STDOUT: %self.patt: @CC.as.Destroy.impl.Op.%pattern_type (%pattern_type.6d4) = binding_pattern self [concrete]
|
||||
// CHECK:STDOUT: %self.param_patt: @CC.as.Destroy.impl.Op.%pattern_type (%pattern_type.6d4) = value_param_pattern %self.patt, call_param0 [concrete]
|
||||
// CHECK:STDOUT: %self.patt: @CC.as.Destroy.impl.Op.%pattern_type (%pattern_type.931) = binding_pattern self [concrete]
|
||||
// CHECK:STDOUT: %self.param_patt: @CC.as.Destroy.impl.Op.%pattern_type (%pattern_type.931) = value_param_pattern %self.patt, call_param0 [concrete]
|
||||
// CHECK:STDOUT: %.loc12_17.1: %pattern_type.f6d = addr_pattern %self.param_patt [concrete]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %self.param: @CC.as.Destroy.impl.Op.%ptr (%ptr.f53) = value_param call_param0
|
||||
// CHECK:STDOUT: %.loc12_17.2: type = splice_block %Self.ref [symbolic = %CC (constants.%CC.6c6)] {
|
||||
// CHECK:STDOUT: %.loc12_17.3: type = specific_constant constants.%CC.6c6, @CC(constants.%D) [symbolic = %CC (constants.%CC.6c6)]
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, %.loc12_17.3 [symbolic = %CC (constants.%CC.6c6)]
|
||||
// CHECK:STDOUT: %self.param: @CC.as.Destroy.impl.Op.%ptr (%ptr.791) = value_param call_param0
|
||||
// CHECK:STDOUT: %.loc12_17.2: type = splice_block %Self.ref [symbolic = %CC (constants.%CC.ef8)] {
|
||||
// CHECK:STDOUT: %.loc12_17.3: type = specific_constant constants.%CC.ef8, @CC(constants.%D) [symbolic = %CC (constants.%CC.ef8)]
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, %.loc12_17.3 [symbolic = %CC (constants.%CC.ef8)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %self: @CC.as.Destroy.impl.Op.%ptr (%ptr.f53) = bind_name self, %self.param
|
||||
// CHECK:STDOUT: %self: @CC.as.Destroy.impl.Op.%ptr (%ptr.791) = bind_name self, %self.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
@@ -256,9 +256,9 @@ fn F() {
|
||||
// CHECK:STDOUT: %E.loc19_14.2: %facet_type = bind_symbolic_name E, 0 [symbolic = %E.loc19_14.2 (constants.%E)]
|
||||
// CHECK:STDOUT: %Y.lookup_impl_witness: <witness> = lookup_impl_witness %E.loc19_14.2, @Y [symbolic = %Y.lookup_impl_witness (constants.%Y.lookup_impl_witness)]
|
||||
// CHECK:STDOUT: %E.as_type.loc19_29.2: type = facet_access_type %E.loc19_14.2 [symbolic = %E.as_type.loc19_29.2 (constants.%E.as_type)]
|
||||
// CHECK:STDOUT: %Y.facet.loc19_29.2: %Y.type = facet_value %E.as_type.loc19_29.2, (%Y.lookup_impl_witness) [symbolic = %Y.facet.loc19_29.2 (constants.%Y.facet.ecf)]
|
||||
// CHECK:STDOUT: %CC.loc19_29.2: type = class_type @CC, @CC(%Y.facet.loc19_29.2) [symbolic = %CC.loc19_29.2 (constants.%CC.6eb)]
|
||||
// CHECK:STDOUT: %Z.impl_witness: <witness> = impl_witness file.%Z.impl_witness_table, @CC.as.Z.impl(%E.loc19_14.2) [symbolic = %Z.impl_witness (constants.%Z.impl_witness.481)]
|
||||
// CHECK:STDOUT: %Y.facet.loc19_29.2: %Y.type = facet_value %E.as_type.loc19_29.2, (%Y.lookup_impl_witness) [symbolic = %Y.facet.loc19_29.2 (constants.%Y.facet.682)]
|
||||
// CHECK:STDOUT: %CC.loc19_29.2: type = class_type @CC, @CC(%Y.facet.loc19_29.2) [symbolic = %CC.loc19_29.2 (constants.%CC.6f9)]
|
||||
// CHECK:STDOUT: %Z.impl_witness: <witness> = impl_witness file.%Z.impl_witness_table, @CC.as.Z.impl(%E.loc19_14.2) [symbolic = %Z.impl_witness (constants.%Z.impl_witness.3fa)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT:
|
||||
@@ -272,7 +272,7 @@ fn F() {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%DD [concrete = constants.%DD]
|
||||
// CHECK:STDOUT: impl_decl @DD.as.Destroy.impl [concrete] {} {}
|
||||
// CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (@DD.as.Destroy.impl.%DD.as.Destroy.impl.Op.decl), @DD.as.Destroy.impl [concrete]
|
||||
// CHECK:STDOUT: %Destroy.impl_witness: <witness> = impl_witness %Destroy.impl_witness_table [concrete = constants.%Destroy.impl_witness.0ec]
|
||||
// CHECK:STDOUT: %Destroy.impl_witness: <witness> = impl_witness %Destroy.impl_witness_table [concrete = constants.%Destroy.impl_witness.31d]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
@@ -286,15 +286,15 @@ fn F() {
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%CC.6c6 [symbolic = @CC.as.Destroy.impl.%CC (constants.%CC.6c6)]
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%CC.ef8 [symbolic = @CC.as.Destroy.impl.%CC (constants.%CC.ef8)]
|
||||
// CHECK:STDOUT: impl_decl @CC.as.Destroy.impl [concrete] {} {}
|
||||
// CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (@CC.as.Destroy.impl.%CC.as.Destroy.impl.Op.decl), @CC.as.Destroy.impl [concrete]
|
||||
// CHECK:STDOUT: %Destroy.impl_witness: <witness> = impl_witness %Destroy.impl_witness_table, @CC.as.Destroy.impl(constants.%D) [symbolic = @CC.as.Destroy.impl.%Destroy.impl_witness (constants.%Destroy.impl_witness.195)]
|
||||
// CHECK:STDOUT: %Destroy.impl_witness: <witness> = impl_witness %Destroy.impl_witness_table, @CC.as.Destroy.impl(constants.%D) [symbolic = @CC.as.Destroy.impl.%Destroy.impl_witness (constants.%Destroy.impl_witness.520)]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = constants.%CC.6c6
|
||||
// CHECK:STDOUT: .Self = constants.%CC.ef8
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -302,26 +302,26 @@ fn F() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic fn @CC.as.Destroy.impl.Op(@CC.%D.loc12_10.2: %Y.type) {
|
||||
// CHECK:STDOUT: %D: %Y.type = bind_symbolic_name D, 0 [symbolic = %D (constants.%D)]
|
||||
// CHECK:STDOUT: %CC: type = class_type @CC, @CC(%D) [symbolic = %CC (constants.%CC.6c6)]
|
||||
// CHECK:STDOUT: %ptr: type = ptr_type %CC [symbolic = %ptr (constants.%ptr.f53)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %ptr [symbolic = %pattern_type (constants.%pattern_type.6d4)]
|
||||
// CHECK:STDOUT: %CC: type = class_type @CC, @CC(%D) [symbolic = %CC (constants.%CC.ef8)]
|
||||
// CHECK:STDOUT: %ptr: type = ptr_type %CC [symbolic = %ptr (constants.%ptr.791)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %ptr [symbolic = %pattern_type (constants.%pattern_type.931)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn(%self.param: @CC.as.Destroy.impl.Op.%ptr (%ptr.f53)) = "no_op";
|
||||
// CHECK:STDOUT: fn(%self.param: @CC.as.Destroy.impl.Op.%ptr (%ptr.791)) = "no_op";
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @F() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %CC.ref: %CC.type = name_ref CC, file.%CC.decl [concrete = constants.%CC.generic]
|
||||
// CHECK:STDOUT: %DD.ref: type = name_ref DD, file.%DD.decl [concrete = constants.%DD]
|
||||
// CHECK:STDOUT: %Y.facet: %Y.type = facet_value constants.%DD, (constants.%Y.impl_witness) [concrete = constants.%Y.facet.b41]
|
||||
// CHECK:STDOUT: %.loc22_9: %Y.type = converted %DD.ref, %Y.facet [concrete = constants.%Y.facet.b41]
|
||||
// CHECK:STDOUT: %CC: type = class_type @CC, @CC(constants.%Y.facet.b41) [concrete = constants.%CC.017]
|
||||
// CHECK:STDOUT: %Y.facet: %Y.type = facet_value constants.%DD, (constants.%Y.impl_witness) [concrete = constants.%Y.facet.4e8]
|
||||
// CHECK:STDOUT: %.loc22_9: %Y.type = converted %DD.ref, %Y.facet [concrete = constants.%Y.facet.4e8]
|
||||
// CHECK:STDOUT: %CC: type = class_type @CC, @CC(constants.%Y.facet.4e8) [concrete = constants.%CC.3b3]
|
||||
// CHECK:STDOUT: %Z.ref: type = name_ref Z, file.%Z.decl [concrete = constants.%Z.type]
|
||||
// CHECK:STDOUT: %facet_value: %facet_type = facet_value constants.%DD, (constants.%Y.impl_witness, constants.%W.impl_witness) [concrete = constants.%facet_value]
|
||||
// CHECK:STDOUT: %.loc22_12.1: %facet_type = converted constants.%DD, %facet_value [concrete = constants.%facet_value]
|
||||
// CHECK:STDOUT: %Z.facet: %Z.type = facet_value constants.%CC.017, (constants.%Z.impl_witness.9cd) [concrete = constants.%Z.facet]
|
||||
// CHECK:STDOUT: %Z.facet: %Z.type = facet_value constants.%CC.3b3, (constants.%Z.impl_witness.8f8) [concrete = constants.%Z.facet]
|
||||
// CHECK:STDOUT: %.loc22_12.2: %Z.type = converted %CC, %Z.facet [concrete = constants.%Z.facet]
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
@@ -332,41 +332,41 @@ fn F() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @CC.as.Destroy.impl(constants.%D) {
|
||||
// CHECK:STDOUT: %D => constants.%D
|
||||
// CHECK:STDOUT: %CC => constants.%CC.6c6
|
||||
// CHECK:STDOUT: %Destroy.impl_witness => constants.%Destroy.impl_witness.195
|
||||
// CHECK:STDOUT: %CC => constants.%CC.ef8
|
||||
// CHECK:STDOUT: %Destroy.impl_witness => constants.%Destroy.impl_witness.520
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @CC.as.Destroy.impl.Op(constants.%D) {
|
||||
// CHECK:STDOUT: %D => constants.%D
|
||||
// CHECK:STDOUT: %CC => constants.%CC.6c6
|
||||
// CHECK:STDOUT: %ptr => constants.%ptr.f53
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.6d4
|
||||
// CHECK:STDOUT: %CC => constants.%CC.ef8
|
||||
// CHECK:STDOUT: %ptr => constants.%ptr.791
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.931
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @CC(constants.%Y.facet.ecf) {
|
||||
// CHECK:STDOUT: %D.loc12_10.1 => constants.%Y.facet.ecf
|
||||
// CHECK:STDOUT: specific @CC(constants.%Y.facet.682) {
|
||||
// CHECK:STDOUT: %D.loc12_10.1 => constants.%Y.facet.682
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @CC.as.Z.impl(constants.%E) {
|
||||
// CHECK:STDOUT: %E.loc19_14.2 => constants.%E
|
||||
// CHECK:STDOUT: %Y.lookup_impl_witness => constants.%Y.lookup_impl_witness
|
||||
// CHECK:STDOUT: %E.as_type.loc19_29.2 => constants.%E.as_type
|
||||
// CHECK:STDOUT: %Y.facet.loc19_29.2 => constants.%Y.facet.ecf
|
||||
// CHECK:STDOUT: %CC.loc19_29.2 => constants.%CC.6eb
|
||||
// CHECK:STDOUT: %Z.impl_witness => constants.%Z.impl_witness.481
|
||||
// CHECK:STDOUT: %Y.facet.loc19_29.2 => constants.%Y.facet.682
|
||||
// CHECK:STDOUT: %CC.loc19_29.2 => constants.%CC.6f9
|
||||
// CHECK:STDOUT: %Z.impl_witness => constants.%Z.impl_witness.3fa
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @CC(constants.%Y.facet.b41) {
|
||||
// CHECK:STDOUT: %D.loc12_10.1 => constants.%Y.facet.b41
|
||||
// CHECK:STDOUT: specific @CC(constants.%Y.facet.4e8) {
|
||||
// CHECK:STDOUT: %D.loc12_10.1 => constants.%Y.facet.4e8
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @CC.as.Z.impl(constants.%facet_value) {
|
||||
// CHECK:STDOUT: %E.loc19_14.2 => constants.%facet_value
|
||||
// CHECK:STDOUT: %Y.lookup_impl_witness => constants.%Y.impl_witness
|
||||
// CHECK:STDOUT: %E.as_type.loc19_29.2 => constants.%DD
|
||||
// CHECK:STDOUT: %Y.facet.loc19_29.2 => constants.%Y.facet.b41
|
||||
// CHECK:STDOUT: %CC.loc19_29.2 => constants.%CC.017
|
||||
// CHECK:STDOUT: %Z.impl_witness => constants.%Z.impl_witness.9cd
|
||||
// CHECK:STDOUT: %Y.facet.loc19_29.2 => constants.%Y.facet.4e8
|
||||
// CHECK:STDOUT: %CC.loc19_29.2 => constants.%CC.3b3
|
||||
// CHECK:STDOUT: %Z.impl_witness => constants.%Z.impl_witness.8f8
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
+20
-20
@@ -53,10 +53,10 @@ fn B() {
|
||||
// CHECK:STDOUT: %type: type = facet_type <type> [concrete]
|
||||
// CHECK:STDOUT: %.Self: %type = bind_symbolic_name .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %T: %Z.type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.6ea: type = pattern_type %Z.type [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.4a0: type = pattern_type %Z.type [concrete]
|
||||
// CHECK:STDOUT: %T.as_type: type = facet_access_type %T [symbolic]
|
||||
// CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %T.as_type} [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.559: type = pattern_type %struct_type.a [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.ba1: type = pattern_type %struct_type.a [symbolic]
|
||||
// CHECK:STDOUT: %A.type: type = fn_type @A [concrete]
|
||||
// CHECK:STDOUT: %A: %A.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %struct_type.a [symbolic]
|
||||
@@ -69,9 +69,9 @@ fn B() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Z.decl: type = interface_decl @Z [concrete = constants.%Z.type] {} {}
|
||||
// CHECK:STDOUT: %A.decl: %A.type = fn_decl @A [concrete = constants.%A] {
|
||||
// CHECK:STDOUT: %T.patt: %pattern_type.6ea = symbolic_binding_pattern T, 0 [concrete]
|
||||
// CHECK:STDOUT: %x.patt: @A.%pattern_type (%pattern_type.559) = binding_pattern x [concrete]
|
||||
// CHECK:STDOUT: %x.param_patt: @A.%pattern_type (%pattern_type.559) = value_param_pattern %x.patt, call_param0 [concrete]
|
||||
// CHECK:STDOUT: %T.patt: %pattern_type.4a0 = symbolic_binding_pattern T, 0 [concrete]
|
||||
// CHECK:STDOUT: %x.patt: @A.%pattern_type (%pattern_type.ba1) = binding_pattern x [concrete]
|
||||
// CHECK:STDOUT: %x.param_patt: @A.%pattern_type (%pattern_type.ba1) = value_param_pattern %x.patt, call_param0 [concrete]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc4_10: type = splice_block %Z.ref [concrete = constants.%Z.type] {
|
||||
// CHECK:STDOUT: %.Self: %type = bind_symbolic_name .Self [symbolic_self = constants.%.Self]
|
||||
@@ -101,7 +101,7 @@ fn B() {
|
||||
// CHECK:STDOUT: %T.loc4_6.1: %Z.type = bind_symbolic_name T, 0 [symbolic = %T.loc4_6.1 (constants.%T)]
|
||||
// CHECK:STDOUT: %T.as_type.loc4_21.1: type = facet_access_type %T.loc4_6.1 [symbolic = %T.as_type.loc4_21.1 (constants.%T.as_type)]
|
||||
// CHECK:STDOUT: %struct_type.a.loc4_22.1: type = struct_type {.a: @A.%T.as_type.loc4_21.1 (%T.as_type)} [symbolic = %struct_type.a.loc4_22.1 (constants.%struct_type.a)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %struct_type.a.loc4_22.1 [symbolic = %pattern_type (constants.%pattern_type.559)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %struct_type.a.loc4_22.1 [symbolic = %pattern_type (constants.%pattern_type.ba1)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %struct_type.a.loc4_22.1 [symbolic = %require_complete (constants.%require_complete)]
|
||||
@@ -116,7 +116,7 @@ fn B() {
|
||||
// CHECK:STDOUT: %T.loc4_6.1 => constants.%T
|
||||
// CHECK:STDOUT: %T.as_type.loc4_21.1 => constants.%T.as_type
|
||||
// CHECK:STDOUT: %struct_type.a.loc4_22.1 => constants.%struct_type.a
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.559
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.ba1
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: --- fail_deduce_imported_function.carbon
|
||||
@@ -126,10 +126,10 @@ fn B() {
|
||||
// CHECK:STDOUT: %.Self: %type = bind_symbolic_name .Self [symbolic_self]
|
||||
// CHECK:STDOUT: %Z.type: type = facet_type <@Z> [concrete]
|
||||
// CHECK:STDOUT: %T: %Z.type = bind_symbolic_name T, 0 [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.e5e: type = pattern_type %Z.type [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.819: type = pattern_type %Z.type [concrete]
|
||||
// CHECK:STDOUT: %T.as_type: type = facet_access_type %T [symbolic]
|
||||
// CHECK:STDOUT: %struct_type.a: type = struct_type {.a: %T.as_type} [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.a66: type = pattern_type %struct_type.a [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.143: type = pattern_type %struct_type.a [symbolic]
|
||||
// CHECK:STDOUT: %A.type.00d: type = fn_type @A.loc4 [concrete]
|
||||
// CHECK:STDOUT: %A.1db: %A.type.00d = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %struct_type.a [symbolic]
|
||||
@@ -148,9 +148,9 @@ fn B() {
|
||||
// CHECK:STDOUT: import Lib//default
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Lib.Z: type = import_ref Lib//default, Z, loaded [concrete = constants.%Z.type]
|
||||
// CHECK:STDOUT: %Lib.import_ref.9e6 = import_ref Lib//default, inst17 [no loc], unloaded
|
||||
// CHECK:STDOUT: %Lib.import_ref.362 = import_ref Lib//default, inst17 [no loc], unloaded
|
||||
// CHECK:STDOUT: %Lib.A: %A.type.fad = import_ref Lib//default, A, loaded [concrete = constants.%A.7a0]
|
||||
// CHECK:STDOUT: %Lib.import_ref.1b2: %Z.type = import_ref Lib//default, loc4_6, loaded [symbolic = @A.1.%T (constants.%T)]
|
||||
// CHECK:STDOUT: %Lib.import_ref.c90: %Z.type = import_ref Lib//default, loc4_6, loaded [symbolic = @A.1.%T (constants.%T)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -161,9 +161,9 @@ fn B() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Lib.import = import Lib
|
||||
// CHECK:STDOUT: %A.decl: %A.type.00d = fn_decl @A.loc4 [concrete = constants.%A.1db] {
|
||||
// CHECK:STDOUT: %T.patt: %pattern_type.e5e = symbolic_binding_pattern T, 0 [concrete]
|
||||
// CHECK:STDOUT: %x.patt: @A.loc4.%pattern_type (%pattern_type.a66) = binding_pattern x [concrete]
|
||||
// CHECK:STDOUT: %x.param_patt: @A.loc4.%pattern_type (%pattern_type.a66) = value_param_pattern %x.patt, call_param0 [concrete]
|
||||
// CHECK:STDOUT: %T.patt: %pattern_type.819 = symbolic_binding_pattern T, 0 [concrete]
|
||||
// CHECK:STDOUT: %x.patt: @A.loc4.%pattern_type (%pattern_type.143) = binding_pattern x [concrete]
|
||||
// CHECK:STDOUT: %x.param_patt: @A.loc4.%pattern_type (%pattern_type.143) = value_param_pattern %x.patt, call_param0 [concrete]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc4_13: type = splice_block %Z.ref [concrete = constants.%Z.type] {
|
||||
// CHECK:STDOUT: %.Self: %type = bind_symbolic_name .Self [symbolic_self = constants.%.Self]
|
||||
@@ -185,7 +185,7 @@ fn B() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: interface @Z [from "lib.carbon"] {
|
||||
// CHECK:STDOUT: !members:
|
||||
// CHECK:STDOUT: .Self = imports.%Lib.import_ref.9e6
|
||||
// CHECK:STDOUT: .Self = imports.%Lib.import_ref.362
|
||||
// CHECK:STDOUT: witness = ()
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -193,7 +193,7 @@ fn B() {
|
||||
// CHECK:STDOUT: %T.loc4_6.1: %Z.type = bind_symbolic_name T, 0 [symbolic = %T.loc4_6.1 (constants.%T)]
|
||||
// CHECK:STDOUT: %T.as_type.loc4_25.1: type = facet_access_type %T.loc4_6.1 [symbolic = %T.as_type.loc4_25.1 (constants.%T.as_type)]
|
||||
// CHECK:STDOUT: %struct_type.a.loc4_26.1: type = struct_type {.a: @A.loc4.%T.as_type.loc4_25.1 (%T.as_type)} [symbolic = %struct_type.a.loc4_26.1 (constants.%struct_type.a)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %struct_type.a.loc4_26.1 [symbolic = %pattern_type (constants.%pattern_type.a66)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %struct_type.a.loc4_26.1 [symbolic = %pattern_type (constants.%pattern_type.143)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %struct_type.a.loc4_26.1 [symbolic = %require_complete (constants.%require_complete)]
|
||||
@@ -216,11 +216,11 @@ fn B() {
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic fn @A.1(imports.%Lib.import_ref.1b2: %Z.type) [from "lib.carbon"] {
|
||||
// CHECK:STDOUT: generic fn @A.1(imports.%Lib.import_ref.c90: %Z.type) [from "lib.carbon"] {
|
||||
// CHECK:STDOUT: %T: %Z.type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)]
|
||||
// CHECK:STDOUT: %T.as_type: type = facet_access_type %T [symbolic = %T.as_type (constants.%T.as_type)]
|
||||
// CHECK:STDOUT: %struct_type.a: type = struct_type {.a: @A.1.%T.as_type (%T.as_type)} [symbolic = %struct_type.a (constants.%struct_type.a)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %struct_type.a [symbolic = %pattern_type (constants.%pattern_type.a66)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %struct_type.a [symbolic = %pattern_type (constants.%pattern_type.143)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %struct_type.a [symbolic = %require_complete (constants.%require_complete)]
|
||||
@@ -232,13 +232,13 @@ fn B() {
|
||||
// CHECK:STDOUT: %T.loc4_6.1 => constants.%T
|
||||
// CHECK:STDOUT: %T.as_type.loc4_25.1 => constants.%T.as_type
|
||||
// CHECK:STDOUT: %struct_type.a.loc4_26.1 => constants.%struct_type.a
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.a66
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.143
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @A.1(constants.%T) {
|
||||
// CHECK:STDOUT: %T => constants.%T
|
||||
// CHECK:STDOUT: %T.as_type => constants.%T.as_type
|
||||
// CHECK:STDOUT: %struct_type.a => constants.%struct_type.a
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.a66
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.143
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
@@ -31,10 +31,10 @@ fn F(T:! type, p: T**) -> T* {
|
||||
// CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete]
|
||||
// CHECK:STDOUT: %Copy.Op.type: type = fn_type @Copy.Op [concrete]
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness.cb2: <witness> = lookup_impl_witness %ptr.79f, @Copy [symbolic]
|
||||
// CHECK:STDOUT: %Copy.facet.def: %Copy.type = facet_value %ptr.79f, (%Copy.lookup_impl_witness.cb2) [symbolic]
|
||||
// CHECK:STDOUT: %.fe5: type = fn_type_with_self_type %Copy.Op.type, %Copy.facet.def [symbolic]
|
||||
// CHECK:STDOUT: %impl.elem0.429: %.fe5 = impl_witness_access %Copy.lookup_impl_witness.cb2, element0 [symbolic]
|
||||
// CHECK:STDOUT: %specific_impl_fn.d8a: <specific function> = specific_impl_function %impl.elem0.429, @Copy.Op(%Copy.facet.def) [symbolic]
|
||||
// CHECK:STDOUT: %Copy.facet.2d1: %Copy.type = facet_value %ptr.79f, (%Copy.lookup_impl_witness.cb2) [symbolic]
|
||||
// CHECK:STDOUT: %.1cc: type = fn_type_with_self_type %Copy.Op.type, %Copy.facet.2d1 [symbolic]
|
||||
// CHECK:STDOUT: %impl.elem0.751: %.1cc = impl_witness_access %Copy.lookup_impl_witness.cb2, element0 [symbolic]
|
||||
// CHECK:STDOUT: %specific_impl_fn.f44: <specific function> = specific_impl_function %impl.elem0.751, @Copy.Op(%Copy.facet.2d1) [symbolic]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
@@ -46,19 +46,19 @@ fn F(T:! type, p: T**) -> T* {
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness: <witness> = lookup_impl_witness %ptr.loc4_20.1, @Copy [symbolic = %Copy.lookup_impl_witness (constants.%Copy.lookup_impl_witness.cb2)]
|
||||
// CHECK:STDOUT: %Copy.facet: %Copy.type = facet_value %ptr.loc4_20.1, (%Copy.lookup_impl_witness) [symbolic = %Copy.facet (constants.%Copy.facet.def)]
|
||||
// CHECK:STDOUT: %.loc6_10.4: type = fn_type_with_self_type constants.%Copy.Op.type, %Copy.facet [symbolic = %.loc6_10.4 (constants.%.fe5)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_10.2: @F.%.loc6_10.4 (%.fe5) = impl_witness_access %Copy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc6_10.2 (constants.%impl.elem0.429)]
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc6_10.2: <specific function> = specific_impl_function %impl.elem0.loc6_10.2, @Copy.Op(%Copy.facet) [symbolic = %specific_impl_fn.loc6_10.2 (constants.%specific_impl_fn.d8a)]
|
||||
// CHECK:STDOUT: %Copy.facet: %Copy.type = facet_value %ptr.loc4_20.1, (%Copy.lookup_impl_witness) [symbolic = %Copy.facet (constants.%Copy.facet.2d1)]
|
||||
// CHECK:STDOUT: %.loc6_10.4: type = fn_type_with_self_type constants.%Copy.Op.type, %Copy.facet [symbolic = %.loc6_10.4 (constants.%.1cc)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_10.2: @F.%.loc6_10.4 (%.1cc) = impl_witness_access %Copy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc6_10.2 (constants.%impl.elem0.751)]
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc6_10.2: <specific function> = specific_impl_function %impl.elem0.loc6_10.2, @Copy.Op(%Copy.facet) [symbolic = %specific_impl_fn.loc6_10.2 (constants.%specific_impl_fn.f44)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn(%p.param: @F.%ptr.loc4_21.1 (%ptr.a13)) -> @F.%ptr.loc4_20.1 (%ptr.79f) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %p.ref: @F.%ptr.loc4_21.1 (%ptr.a13) = name_ref p, %p
|
||||
// CHECK:STDOUT: %.loc6_10.1: ref @F.%ptr.loc4_20.1 (%ptr.79f) = deref %p.ref
|
||||
// CHECK:STDOUT: %.loc6_10.2: @F.%ptr.loc4_20.1 (%ptr.79f) = bind_value %.loc6_10.1
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_10.1: @F.%.loc6_10.4 (%.fe5) = impl_witness_access constants.%Copy.lookup_impl_witness.cb2, element0 [symbolic = %impl.elem0.loc6_10.2 (constants.%impl.elem0.429)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc6_10.1: @F.%.loc6_10.4 (%.1cc) = impl_witness_access constants.%Copy.lookup_impl_witness.cb2, element0 [symbolic = %impl.elem0.loc6_10.2 (constants.%impl.elem0.751)]
|
||||
// CHECK:STDOUT: %bound_method.loc6_10.1: <bound method> = bound_method %.loc6_10.2, %impl.elem0.loc6_10.1
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc6_10.1: <specific function> = specific_impl_function %impl.elem0.loc6_10.1, @Copy.Op(constants.%Copy.facet.def) [symbolic = %specific_impl_fn.loc6_10.2 (constants.%specific_impl_fn.d8a)]
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc6_10.1: <specific function> = specific_impl_function %impl.elem0.loc6_10.1, @Copy.Op(constants.%Copy.facet.2d1) [symbolic = %specific_impl_fn.loc6_10.2 (constants.%specific_impl_fn.f44)]
|
||||
// CHECK:STDOUT: %bound_method.loc6_10.2: <bound method> = bound_method %.loc6_10.2, %specific_impl_fn.loc6_10.1
|
||||
// CHECK:STDOUT: %.loc6_10.3: init @F.%ptr.loc4_20.1 (%ptr.79f) = call %bound_method.loc6_10.2(%.loc6_10.2)
|
||||
// CHECK:STDOUT: return %.loc6_10.3 to %return
|
||||
|
||||
+19
-19
@@ -27,23 +27,23 @@ fn F(N:! i32, a: array(i32, N)*);
|
||||
// CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete]
|
||||
// CHECK:STDOUT: %ImplicitAs.type.cc7: type = generic_interface_type @ImplicitAs [concrete]
|
||||
// CHECK:STDOUT: %ImplicitAs.generic: %ImplicitAs.type.cc7 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %ImplicitAs.type.139: type = facet_type <@ImplicitAs, @ImplicitAs(Core.IntLiteral)> [concrete]
|
||||
// CHECK:STDOUT: %ImplicitAs.type.7a9: type = facet_type <@ImplicitAs, @ImplicitAs(Core.IntLiteral)> [concrete]
|
||||
// CHECK:STDOUT: %ImplicitAs.Convert.type.71e: type = fn_type @ImplicitAs.Convert, @ImplicitAs(Core.IntLiteral) [concrete]
|
||||
// CHECK:STDOUT: %From: Core.IntLiteral = bind_symbolic_name From, 0 [symbolic]
|
||||
// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.type.eb9: type = fn_type @Int.as.ImplicitAs.impl.Convert, @Int.as.ImplicitAs.impl(%From) [symbolic]
|
||||
// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.958: %Int.as.ImplicitAs.impl.Convert.type.eb9 = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %ImplicitAs.impl_witness.6fb: <witness> = impl_witness imports.%ImplicitAs.impl_witness_table.13c, @Int.as.ImplicitAs.impl(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.type.d5d: type = fn_type @Int.as.ImplicitAs.impl.Convert, @Int.as.ImplicitAs.impl(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.87c: %Int.as.ImplicitAs.impl.Convert.type.d5d = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.139 = facet_value %i32, (%ImplicitAs.impl_witness.6fb) [concrete]
|
||||
// CHECK:STDOUT: %.2d1: type = fn_type_with_self_type %ImplicitAs.Convert.type.71e, %ImplicitAs.facet [concrete]
|
||||
// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.bound: <bound method> = bound_method %N.51e, %Int.as.ImplicitAs.impl.Convert.87c [symbolic]
|
||||
// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.specific_fn: <specific function> = specific_function %Int.as.ImplicitAs.impl.Convert.87c, @Int.as.ImplicitAs.impl.Convert(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.type.543: type = fn_type @Int.as.ImplicitAs.impl.Convert, @Int.as.ImplicitAs.impl(%From) [symbolic]
|
||||
// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.c08: %Int.as.ImplicitAs.impl.Convert.type.543 = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %ImplicitAs.impl_witness.6bf: <witness> = impl_witness imports.%ImplicitAs.impl_witness_table.e99, @Int.as.ImplicitAs.impl(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.type.516: type = fn_type @Int.as.ImplicitAs.impl.Convert, @Int.as.ImplicitAs.impl(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.b09: %Int.as.ImplicitAs.impl.Convert.type.516 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %ImplicitAs.facet: %ImplicitAs.type.7a9 = facet_value %i32, (%ImplicitAs.impl_witness.6bf) [concrete]
|
||||
// CHECK:STDOUT: %.81e: type = fn_type_with_self_type %ImplicitAs.Convert.type.71e, %ImplicitAs.facet [concrete]
|
||||
// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.bound: <bound method> = bound_method %N.51e, %Int.as.ImplicitAs.impl.Convert.b09 [symbolic]
|
||||
// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.specific_fn: <specific function> = specific_function %Int.as.ImplicitAs.impl.Convert.b09, @Int.as.ImplicitAs.impl.Convert(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %bound_method: <bound method> = bound_method %N.51e, %Int.as.ImplicitAs.impl.Convert.specific_fn [symbolic]
|
||||
// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.call: init Core.IntLiteral = call %bound_method(%N.51e) [symbolic]
|
||||
// CHECK:STDOUT: %array_type: type = array_type %Int.as.ImplicitAs.impl.Convert.call, %i32 [symbolic]
|
||||
// CHECK:STDOUT: %ptr: type = ptr_type %array_type [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.82b: type = pattern_type %ptr [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.a64: type = pattern_type %ptr [symbolic]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -57,8 +57,8 @@ fn F(N:! i32, a: array(i32, N)*);
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic]
|
||||
// CHECK:STDOUT: %Core.ImplicitAs: %ImplicitAs.type.cc7 = import_ref Core//prelude/parts/as, ImplicitAs, loaded [concrete = constants.%ImplicitAs.generic]
|
||||
// CHECK:STDOUT: %Core.import_ref.02e: @Int.as.ImplicitAs.impl.%Int.as.ImplicitAs.impl.Convert.type (%Int.as.ImplicitAs.impl.Convert.type.eb9) = import_ref Core//prelude/parts/int, loc27_44, loaded [symbolic = @Int.as.ImplicitAs.impl.%Int.as.ImplicitAs.impl.Convert (constants.%Int.as.ImplicitAs.impl.Convert.958)]
|
||||
// CHECK:STDOUT: %ImplicitAs.impl_witness_table.13c = impl_witness_table (%Core.import_ref.02e), @Int.as.ImplicitAs.impl [concrete]
|
||||
// CHECK:STDOUT: %Core.import_ref.25c: @Int.as.ImplicitAs.impl.%Int.as.ImplicitAs.impl.Convert.type (%Int.as.ImplicitAs.impl.Convert.type.543) = import_ref Core//prelude/parts/int, loc27_44, loaded [symbolic = @Int.as.ImplicitAs.impl.%Int.as.ImplicitAs.impl.Convert (constants.%Int.as.ImplicitAs.impl.Convert.c08)]
|
||||
// CHECK:STDOUT: %ImplicitAs.impl_witness_table.e99 = impl_witness_table (%Core.import_ref.25c), @Int.as.ImplicitAs.impl [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -69,8 +69,8 @@ fn F(N:! i32, a: array(i32, N)*);
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %F.decl: %F.type = fn_decl @F [concrete = constants.%F] {
|
||||
// CHECK:STDOUT: %N.patt: %pattern_type.7ce = symbolic_binding_pattern N, 0 [concrete]
|
||||
// CHECK:STDOUT: %a.patt: @F.%pattern_type (%pattern_type.82b) = binding_pattern a [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: @F.%pattern_type (%pattern_type.82b) = value_param_pattern %a.patt, call_param0 [concrete]
|
||||
// CHECK:STDOUT: %a.patt: @F.%pattern_type (%pattern_type.a64) = binding_pattern a [concrete]
|
||||
// CHECK:STDOUT: %a.param_patt: @F.%pattern_type (%pattern_type.a64) = value_param_pattern %a.patt, call_param0 [concrete]
|
||||
// CHECK:STDOUT: } {
|
||||
// CHECK:STDOUT: %.loc15_10: type = splice_block %i32.loc15_10 [concrete = constants.%i32] {
|
||||
// CHECK:STDOUT: %.Self: %type = bind_symbolic_name .Self [symbolic_self = constants.%.Self]
|
||||
@@ -83,7 +83,7 @@ fn F(N:! i32, a: array(i32, N)*);
|
||||
// CHECK:STDOUT: %int_32.loc15_24: Core.IntLiteral = int_value 32 [concrete = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc15_24: type = class_type @Int, @Int(constants.%int_32) [concrete = constants.%i32]
|
||||
// CHECK:STDOUT: %N.ref: %i32 = name_ref N, %N.loc15_6.2 [symbolic = %N.loc15_6.1 (constants.%N.51e)]
|
||||
// CHECK:STDOUT: %impl.elem0: %.2d1 = impl_witness_access constants.%ImplicitAs.impl_witness.6fb, element0 [concrete = constants.%Int.as.ImplicitAs.impl.Convert.87c]
|
||||
// CHECK:STDOUT: %impl.elem0: %.81e = impl_witness_access constants.%ImplicitAs.impl_witness.6bf, element0 [concrete = constants.%Int.as.ImplicitAs.impl.Convert.b09]
|
||||
// CHECK:STDOUT: %bound_method.loc15_29.2: <bound method> = bound_method %N.ref, %impl.elem0 [symbolic = %Int.as.ImplicitAs.impl.Convert.bound (constants.%Int.as.ImplicitAs.impl.Convert.bound)]
|
||||
// CHECK:STDOUT: %specific_fn: <specific function> = specific_function %impl.elem0, @Int.as.ImplicitAs.impl.Convert(constants.%int_32) [concrete = constants.%Int.as.ImplicitAs.impl.Convert.specific_fn]
|
||||
// CHECK:STDOUT: %bound_method.loc15_29.3: <bound method> = bound_method %N.ref, %specific_fn [symbolic = %bound_method.loc15_29.1 (constants.%bound_method)]
|
||||
@@ -99,12 +99,12 @@ fn F(N:! i32, a: array(i32, N)*);
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: generic fn @F(%N.loc15_6.2: %i32) {
|
||||
// CHECK:STDOUT: %N.loc15_6.1: %i32 = bind_symbolic_name N, 0 [symbolic = %N.loc15_6.1 (constants.%N.51e)]
|
||||
// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.bound: <bound method> = bound_method %N.loc15_6.1, constants.%Int.as.ImplicitAs.impl.Convert.87c [symbolic = %Int.as.ImplicitAs.impl.Convert.bound (constants.%Int.as.ImplicitAs.impl.Convert.bound)]
|
||||
// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.bound: <bound method> = bound_method %N.loc15_6.1, constants.%Int.as.ImplicitAs.impl.Convert.b09 [symbolic = %Int.as.ImplicitAs.impl.Convert.bound (constants.%Int.as.ImplicitAs.impl.Convert.bound)]
|
||||
// CHECK:STDOUT: %bound_method.loc15_29.1: <bound method> = bound_method %N.loc15_6.1, constants.%Int.as.ImplicitAs.impl.Convert.specific_fn [symbolic = %bound_method.loc15_29.1 (constants.%bound_method)]
|
||||
// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.call.loc15_29.1: init Core.IntLiteral = call %bound_method.loc15_29.1(%N.loc15_6.1) [symbolic = %Int.as.ImplicitAs.impl.Convert.call.loc15_29.1 (constants.%Int.as.ImplicitAs.impl.Convert.call)]
|
||||
// CHECK:STDOUT: %array_type.loc15_30.1: type = array_type %Int.as.ImplicitAs.impl.Convert.call.loc15_29.1, constants.%i32 [symbolic = %array_type.loc15_30.1 (constants.%array_type)]
|
||||
// CHECK:STDOUT: %ptr.loc15_31.1: type = ptr_type %array_type.loc15_30.1 [symbolic = %ptr.loc15_31.1 (constants.%ptr)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %ptr.loc15_31.1 [symbolic = %pattern_type (constants.%pattern_type.82b)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %ptr.loc15_31.1 [symbolic = %pattern_type (constants.%pattern_type.a64)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn(%a.param: @F.%ptr.loc15_31.1 (%ptr));
|
||||
// CHECK:STDOUT: }
|
||||
@@ -116,6 +116,6 @@ fn F(N:! i32, a: array(i32, N)*);
|
||||
// CHECK:STDOUT: %Int.as.ImplicitAs.impl.Convert.call.loc15_29.1 => constants.%Int.as.ImplicitAs.impl.Convert.call
|
||||
// CHECK:STDOUT: %array_type.loc15_30.1 => constants.%array_type
|
||||
// CHECK:STDOUT: %ptr.loc15_31.1 => constants.%ptr
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.82b
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.a64
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+28
-28
@@ -57,13 +57,13 @@ fn CallNegative() {
|
||||
// CHECK:STDOUT: %pattern_type.896: type = pattern_type %Int [symbolic]
|
||||
// CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete]
|
||||
// CHECK:STDOUT: %Destroy.Op.type: type = fn_type @Destroy.Op [concrete]
|
||||
// CHECK:STDOUT: %Destroy.impl_witness.b15: <witness> = impl_witness imports.%Destroy.impl_witness_table.fea, @Int.as.Destroy.impl(%N) [symbolic]
|
||||
// CHECK:STDOUT: %Int.as.Destroy.impl.Op.type.a60: type = fn_type @Int.as.Destroy.impl.Op, @Int.as.Destroy.impl(%N) [symbolic]
|
||||
// CHECK:STDOUT: %Int.as.Destroy.impl.Op.340: %Int.as.Destroy.impl.Op.type.a60 = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %Destroy.impl_witness.44e: <witness> = impl_witness imports.%Destroy.impl_witness_table.ad0, @Int.as.Destroy.impl(%N) [symbolic]
|
||||
// CHECK:STDOUT: %Int.as.Destroy.impl.Op.type.0eb: type = fn_type @Int.as.Destroy.impl.Op, @Int.as.Destroy.impl(%N) [symbolic]
|
||||
// CHECK:STDOUT: %Int.as.Destroy.impl.Op.cb4: %Int.as.Destroy.impl.Op.type.0eb = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %ptr.784: type = ptr_type %Int [symbolic]
|
||||
// CHECK:STDOUT: %Destroy.facet.80c: %Destroy.type = facet_value %Int, (%Destroy.impl_witness.b15) [symbolic]
|
||||
// CHECK:STDOUT: %.11a: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet.80c [symbolic]
|
||||
// CHECK:STDOUT: %Int.as.Destroy.impl.Op.specific_fn.f79: <specific function> = specific_function %Int.as.Destroy.impl.Op.340, @Int.as.Destroy.impl.Op(%N) [symbolic]
|
||||
// CHECK:STDOUT: %Destroy.facet.17e: %Destroy.type = facet_value %Int, (%Destroy.impl_witness.44e) [symbolic]
|
||||
// CHECK:STDOUT: %.819: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet.17e [symbolic]
|
||||
// CHECK:STDOUT: %Int.as.Destroy.impl.Op.specific_fn.98d: <specific function> = specific_function %Int.as.Destroy.impl.Op.cb4, @Int.as.Destroy.impl.Op(%N) [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.0f5: <witness> = require_complete_type %ptr.784 [symbolic]
|
||||
// CHECK:STDOUT: %CallNegative.type: type = fn_type @CallNegative [concrete]
|
||||
// CHECK:STDOUT: %CallNegative: %CallNegative.type = struct_value () [concrete]
|
||||
@@ -72,13 +72,13 @@ fn CallNegative() {
|
||||
// CHECK:STDOUT: %i0: type = class_type @Int, @Int(%int_0) [concrete]
|
||||
// CHECK:STDOUT: %complete_type.d94: <witness> = complete_type_witness <error> [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.47b: type = pattern_type %i0 [concrete]
|
||||
// CHECK:STDOUT: %Destroy.impl_witness.e65: <witness> = impl_witness imports.%Destroy.impl_witness_table.fea, @Int.as.Destroy.impl(%int_0) [concrete]
|
||||
// CHECK:STDOUT: %Destroy.facet.0e5: %Destroy.type = facet_value %i0, (%Destroy.impl_witness.e65) [concrete]
|
||||
// CHECK:STDOUT: %.8fe: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet.0e5 [concrete]
|
||||
// CHECK:STDOUT: %Int.as.Destroy.impl.Op.type.742: type = fn_type @Int.as.Destroy.impl.Op, @Int.as.Destroy.impl(%int_0) [concrete]
|
||||
// CHECK:STDOUT: %Int.as.Destroy.impl.Op.2da: %Int.as.Destroy.impl.Op.type.742 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Destroy.impl_witness.9a0: <witness> = impl_witness imports.%Destroy.impl_witness_table.ad0, @Int.as.Destroy.impl(%int_0) [concrete]
|
||||
// CHECK:STDOUT: %Destroy.facet.f73: %Destroy.type = facet_value %i0, (%Destroy.impl_witness.9a0) [concrete]
|
||||
// CHECK:STDOUT: %.6dc: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet.f73 [concrete]
|
||||
// CHECK:STDOUT: %Int.as.Destroy.impl.Op.type.562: type = fn_type @Int.as.Destroy.impl.Op, @Int.as.Destroy.impl(%int_0) [concrete]
|
||||
// CHECK:STDOUT: %Int.as.Destroy.impl.Op.f56: %Int.as.Destroy.impl.Op.type.562 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %ptr.3f1: type = ptr_type %i0 [concrete]
|
||||
// CHECK:STDOUT: %Int.as.Destroy.impl.Op.specific_fn.8a7: <specific function> = specific_function %Int.as.Destroy.impl.Op.2da, @Int.as.Destroy.impl.Op(%int_0) [concrete]
|
||||
// CHECK:STDOUT: %Int.as.Destroy.impl.Op.specific_fn.b58: <specific function> = specific_function %Int.as.Destroy.impl.Op.f56, @Int.as.Destroy.impl.Op(%int_0) [concrete]
|
||||
// CHECK:STDOUT: %complete_type.588: <witness> = complete_type_witness %ptr.3f1 [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -93,8 +93,8 @@ fn CallNegative() {
|
||||
// CHECK:STDOUT: %Core.IntLiteral: %IntLiteral.type = import_ref Core//prelude/parts/int_literal, IntLiteral, loaded [concrete = constants.%IntLiteral]
|
||||
// CHECK:STDOUT: %Core.Int: %Int.type = import_ref Core//prelude/parts/int, Int, loaded [concrete = constants.%Int.generic]
|
||||
// CHECK:STDOUT: %Core.Destroy: type = import_ref Core//prelude/parts/destroy, Destroy, loaded [concrete = constants.%Destroy.type]
|
||||
// CHECK:STDOUT: %Core.import_ref.16a: @Int.as.Destroy.impl.%Int.as.Destroy.impl.Op.type (%Int.as.Destroy.impl.Op.type.a60) = import_ref Core//prelude/parts/int, loc10_29, loaded [symbolic = @Int.as.Destroy.impl.%Int.as.Destroy.impl.Op (constants.%Int.as.Destroy.impl.Op.340)]
|
||||
// CHECK:STDOUT: %Destroy.impl_witness_table.fea = impl_witness_table (%Core.import_ref.16a), @Int.as.Destroy.impl [concrete]
|
||||
// CHECK:STDOUT: %Core.import_ref.183: @Int.as.Destroy.impl.%Int.as.Destroy.impl.Op.type (%Int.as.Destroy.impl.Op.type.0eb) = import_ref Core//prelude/parts/int, loc10_29, loaded [symbolic = @Int.as.Destroy.impl.%Int.as.Destroy.impl.Op (constants.%Int.as.Destroy.impl.Op.cb4)]
|
||||
// CHECK:STDOUT: %Destroy.impl_witness_table.ad0 = impl_witness_table (%Core.import_ref.183), @Int.as.Destroy.impl [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: file {
|
||||
@@ -127,12 +127,12 @@ fn CallNegative() {
|
||||
// CHECK:STDOUT: %Int.loc15_20.2: type = class_type @Int, @Int(%N.loc4_19.1) [symbolic = %Int.loc15_20.2 (constants.%Int)]
|
||||
// CHECK:STDOUT: %require_complete.loc15_20: <witness> = require_complete_type %Int.loc15_20.2 [symbolic = %require_complete.loc15_20 (constants.%require_complete.b4f)]
|
||||
// CHECK:STDOUT: %pattern_type: type = pattern_type %Int.loc15_20.2 [symbolic = %pattern_type (constants.%pattern_type.896)]
|
||||
// CHECK:STDOUT: %Destroy.impl_witness: <witness> = impl_witness imports.%Destroy.impl_witness_table.fea, @Int.as.Destroy.impl(%N.loc4_19.1) [symbolic = %Destroy.impl_witness (constants.%Destroy.impl_witness.b15)]
|
||||
// CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %Int.loc15_20.2, (%Destroy.impl_witness) [symbolic = %Destroy.facet (constants.%Destroy.facet.80c)]
|
||||
// CHECK:STDOUT: %.loc15_3: type = fn_type_with_self_type constants.%Destroy.Op.type, %Destroy.facet [symbolic = %.loc15_3 (constants.%.11a)]
|
||||
// CHECK:STDOUT: %Int.as.Destroy.impl.Op.type: type = fn_type @Int.as.Destroy.impl.Op, @Int.as.Destroy.impl(%N.loc4_19.1) [symbolic = %Int.as.Destroy.impl.Op.type (constants.%Int.as.Destroy.impl.Op.type.a60)]
|
||||
// CHECK:STDOUT: %Int.as.Destroy.impl.Op: @ErrorIfNIsZero.%Int.as.Destroy.impl.Op.type (%Int.as.Destroy.impl.Op.type.a60) = struct_value () [symbolic = %Int.as.Destroy.impl.Op (constants.%Int.as.Destroy.impl.Op.340)]
|
||||
// CHECK:STDOUT: %Int.as.Destroy.impl.Op.specific_fn: <specific function> = specific_function %Int.as.Destroy.impl.Op, @Int.as.Destroy.impl.Op(%N.loc4_19.1) [symbolic = %Int.as.Destroy.impl.Op.specific_fn (constants.%Int.as.Destroy.impl.Op.specific_fn.f79)]
|
||||
// CHECK:STDOUT: %Destroy.impl_witness: <witness> = impl_witness imports.%Destroy.impl_witness_table.ad0, @Int.as.Destroy.impl(%N.loc4_19.1) [symbolic = %Destroy.impl_witness (constants.%Destroy.impl_witness.44e)]
|
||||
// CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %Int.loc15_20.2, (%Destroy.impl_witness) [symbolic = %Destroy.facet (constants.%Destroy.facet.17e)]
|
||||
// CHECK:STDOUT: %.loc15_3: type = fn_type_with_self_type constants.%Destroy.Op.type, %Destroy.facet [symbolic = %.loc15_3 (constants.%.819)]
|
||||
// CHECK:STDOUT: %Int.as.Destroy.impl.Op.type: type = fn_type @Int.as.Destroy.impl.Op, @Int.as.Destroy.impl(%N.loc4_19.1) [symbolic = %Int.as.Destroy.impl.Op.type (constants.%Int.as.Destroy.impl.Op.type.0eb)]
|
||||
// CHECK:STDOUT: %Int.as.Destroy.impl.Op: @ErrorIfNIsZero.%Int.as.Destroy.impl.Op.type (%Int.as.Destroy.impl.Op.type.0eb) = struct_value () [symbolic = %Int.as.Destroy.impl.Op (constants.%Int.as.Destroy.impl.Op.cb4)]
|
||||
// CHECK:STDOUT: %Int.as.Destroy.impl.Op.specific_fn: <specific function> = specific_function %Int.as.Destroy.impl.Op, @Int.as.Destroy.impl.Op(%N.loc4_19.1) [symbolic = %Int.as.Destroy.impl.Op.specific_fn (constants.%Int.as.Destroy.impl.Op.specific_fn.98d)]
|
||||
// CHECK:STDOUT: %ptr: type = ptr_type %Int.loc15_20.2 [symbolic = %ptr (constants.%ptr.784)]
|
||||
// CHECK:STDOUT: %require_complete.loc15_3: <witness> = require_complete_type %ptr [symbolic = %require_complete.loc15_3 (constants.%require_complete.0f5)]
|
||||
// CHECK:STDOUT:
|
||||
@@ -150,9 +150,9 @@ fn CallNegative() {
|
||||
// CHECK:STDOUT: %Int.loc15_20.1: type = class_type @Int, @Int(constants.%N) [symbolic = %Int.loc15_20.2 (constants.%Int)]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %v: ref @ErrorIfNIsZero.%Int.loc15_20.2 (%Int) = bind_name v, %v.var
|
||||
// CHECK:STDOUT: %impl.elem0: @ErrorIfNIsZero.%.loc15_3 (%.11a) = impl_witness_access constants.%Destroy.impl_witness.b15, element0 [symbolic = %Int.as.Destroy.impl.Op (constants.%Int.as.Destroy.impl.Op.340)]
|
||||
// CHECK:STDOUT: %impl.elem0: @ErrorIfNIsZero.%.loc15_3 (%.819) = impl_witness_access constants.%Destroy.impl_witness.44e, element0 [symbolic = %Int.as.Destroy.impl.Op (constants.%Int.as.Destroy.impl.Op.cb4)]
|
||||
// CHECK:STDOUT: %bound_method.loc15_3.1: <bound method> = bound_method %v.var, %impl.elem0
|
||||
// CHECK:STDOUT: %specific_fn: <specific function> = specific_function %impl.elem0, @Int.as.Destroy.impl.Op(constants.%N) [symbolic = %Int.as.Destroy.impl.Op.specific_fn (constants.%Int.as.Destroy.impl.Op.specific_fn.f79)]
|
||||
// CHECK:STDOUT: %specific_fn: <specific function> = specific_function %impl.elem0, @Int.as.Destroy.impl.Op(constants.%N) [symbolic = %Int.as.Destroy.impl.Op.specific_fn (constants.%Int.as.Destroy.impl.Op.specific_fn.98d)]
|
||||
// CHECK:STDOUT: %bound_method.loc15_3.2: <bound method> = bound_method %v.var, %specific_fn
|
||||
// CHECK:STDOUT: %addr: @ErrorIfNIsZero.%ptr (%ptr.784) = addr_of %v.var
|
||||
// CHECK:STDOUT: %Int.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc15_3.2(%addr)
|
||||
@@ -180,12 +180,12 @@ fn CallNegative() {
|
||||
// CHECK:STDOUT: %Int.loc15_20.2 => constants.%i0
|
||||
// CHECK:STDOUT: %require_complete.loc15_20 => constants.%complete_type.d94
|
||||
// CHECK:STDOUT: %pattern_type => constants.%pattern_type.47b
|
||||
// CHECK:STDOUT: %Destroy.impl_witness => constants.%Destroy.impl_witness.e65
|
||||
// CHECK:STDOUT: %Destroy.facet => constants.%Destroy.facet.0e5
|
||||
// CHECK:STDOUT: %.loc15_3 => constants.%.8fe
|
||||
// CHECK:STDOUT: %Int.as.Destroy.impl.Op.type => constants.%Int.as.Destroy.impl.Op.type.742
|
||||
// CHECK:STDOUT: %Int.as.Destroy.impl.Op => constants.%Int.as.Destroy.impl.Op.2da
|
||||
// CHECK:STDOUT: %Int.as.Destroy.impl.Op.specific_fn => constants.%Int.as.Destroy.impl.Op.specific_fn.8a7
|
||||
// CHECK:STDOUT: %Destroy.impl_witness => constants.%Destroy.impl_witness.9a0
|
||||
// CHECK:STDOUT: %Destroy.facet => constants.%Destroy.facet.f73
|
||||
// CHECK:STDOUT: %.loc15_3 => constants.%.6dc
|
||||
// CHECK:STDOUT: %Int.as.Destroy.impl.Op.type => constants.%Int.as.Destroy.impl.Op.type.562
|
||||
// CHECK:STDOUT: %Int.as.Destroy.impl.Op => constants.%Int.as.Destroy.impl.Op.f56
|
||||
// CHECK:STDOUT: %Int.as.Destroy.impl.Op.specific_fn => constants.%Int.as.Destroy.impl.Op.specific_fn.b58
|
||||
// CHECK:STDOUT: %ptr => constants.%ptr.3f1
|
||||
// CHECK:STDOUT: %require_complete.loc15_3 => constants.%complete_type.588
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
+16
-16
@@ -40,7 +40,7 @@ fn G() {
|
||||
// CHECK:STDOUT: %Wrap.Make.eb2: %Wrap.Make.type.652 = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %Destroy.type: type = facet_type <@Destroy> [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.f6d: type = pattern_type auto [concrete]
|
||||
// CHECK:STDOUT: %Destroy.impl_witness.931: <witness> = impl_witness @Wrap.%Destroy.impl_witness_table, @Wrap.as.Destroy.impl(%T) [symbolic]
|
||||
// CHECK:STDOUT: %Destroy.impl_witness.a83: <witness> = impl_witness @Wrap.%Destroy.impl_witness_table, @Wrap.as.Destroy.impl(%T) [symbolic]
|
||||
// CHECK:STDOUT: %ptr.b45: type = ptr_type %Wrap.af6 [symbolic]
|
||||
// CHECK:STDOUT: %pattern_type.3b2: type = pattern_type %ptr.b45 [symbolic]
|
||||
// CHECK:STDOUT: %Wrap.as.Destroy.impl.Op.type: type = fn_type @Wrap.as.Destroy.impl.Op, @Wrap.as.Destroy.impl(%T) [symbolic]
|
||||
@@ -59,7 +59,7 @@ fn G() {
|
||||
// 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: %C.elem: type = unbound_element_type %C, %array_type [concrete]
|
||||
// CHECK:STDOUT: %Destroy.impl_witness.9d0: <witness> = impl_witness @C.%Destroy.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %Destroy.impl_witness.071: <witness> = impl_witness @C.%Destroy.impl_witness_table [concrete]
|
||||
// CHECK:STDOUT: %ptr.019: type = ptr_type %C [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.44a: type = pattern_type %ptr.019 [concrete]
|
||||
// CHECK:STDOUT: %C.as.Destroy.impl.Op.type: type = fn_type @C.as.Destroy.impl.Op [concrete]
|
||||
@@ -83,14 +83,14 @@ fn G() {
|
||||
// CHECK:STDOUT: %Wrap.Make.type.708: type = fn_type @Wrap.Make, @Wrap(%C) [concrete]
|
||||
// CHECK:STDOUT: %Wrap.Make.e4b: %Wrap.Make.type.708 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Wrap.Make.specific_fn.834: <specific function> = specific_function %Wrap.Make.e4b, @Wrap.Make(%C) [concrete]
|
||||
// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.abd: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%empty_tuple.type) [concrete]
|
||||
// CHECK:STDOUT: %T.as.Destroy.impl.Op.bae: %T.as.Destroy.impl.Op.type.abd = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %T.as.Destroy.impl.Op.type.08a: type = fn_type @T.as.Destroy.impl.Op, @T.as.Destroy.impl(%empty_tuple.type) [concrete]
|
||||
// CHECK:STDOUT: %T.as.Destroy.impl.Op.daf: %T.as.Destroy.impl.Op.type.08a = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %ptr.843: type = ptr_type %empty_tuple.type [concrete]
|
||||
// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: <specific function> = specific_function %T.as.Destroy.impl.Op.bae, @T.as.Destroy.impl.Op(%empty_tuple.type) [concrete]
|
||||
// CHECK:STDOUT: %Int.as.Destroy.impl.Op.type.11b: type = fn_type @Int.as.Destroy.impl.Op, @Int.as.Destroy.impl(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %Int.as.Destroy.impl.Op.054: %Int.as.Destroy.impl.Op.type.11b = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: <specific function> = specific_function %T.as.Destroy.impl.Op.daf, @T.as.Destroy.impl.Op(%empty_tuple.type) [concrete]
|
||||
// CHECK:STDOUT: %Int.as.Destroy.impl.Op.type.4f9: type = fn_type @Int.as.Destroy.impl.Op, @Int.as.Destroy.impl(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %Int.as.Destroy.impl.Op.796: %Int.as.Destroy.impl.Op.type.4f9 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %ptr.235: type = ptr_type %i32 [concrete]
|
||||
// CHECK:STDOUT: %Int.as.Destroy.impl.Op.specific_fn: <specific function> = specific_function %Int.as.Destroy.impl.Op.054, @Int.as.Destroy.impl.Op(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %Int.as.Destroy.impl.Op.specific_fn: <specific function> = specific_function %Int.as.Destroy.impl.Op.796, @Int.as.Destroy.impl.Op(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %complete_type.782: <witness> = complete_type_witness %empty_tuple.type [concrete]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -126,7 +126,7 @@ fn G() {
|
||||
// CHECK:STDOUT: generic impl @Wrap.as.Destroy.impl(@Wrap.%T.loc15_12.2: type) {
|
||||
// CHECK:STDOUT: %T: type = bind_symbolic_name T, 0 [symbolic = %T (constants.%T)]
|
||||
// CHECK:STDOUT: %Wrap: type = class_type @Wrap, @Wrap(%T) [symbolic = %Wrap (constants.%Wrap.af6)]
|
||||
// CHECK:STDOUT: %Destroy.impl_witness: <witness> = impl_witness @Wrap.%Destroy.impl_witness_table, @Wrap.as.Destroy.impl(%T) [symbolic = %Destroy.impl_witness (constants.%Destroy.impl_witness.931)]
|
||||
// CHECK:STDOUT: %Destroy.impl_witness: <witness> = impl_witness @Wrap.%Destroy.impl_witness_table, @Wrap.as.Destroy.impl(%T) [symbolic = %Destroy.impl_witness (constants.%Destroy.impl_witness.a83)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %Wrap.as.Destroy.impl.Op.type: type = fn_type @Wrap.as.Destroy.impl.Op, @Wrap.as.Destroy.impl(%T) [symbolic = %Wrap.as.Destroy.impl.Op.type (constants.%Wrap.as.Destroy.impl.Op.type)]
|
||||
@@ -187,7 +187,7 @@ fn G() {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%Wrap.af6 [symbolic = @Wrap.as.Destroy.impl.%Wrap (constants.%Wrap.af6)]
|
||||
// CHECK:STDOUT: impl_decl @Wrap.as.Destroy.impl [concrete] {} {}
|
||||
// CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (@Wrap.as.Destroy.impl.%Wrap.as.Destroy.impl.Op.decl), @Wrap.as.Destroy.impl [concrete]
|
||||
// CHECK:STDOUT: %Destroy.impl_witness: <witness> = impl_witness %Destroy.impl_witness_table, @Wrap.as.Destroy.impl(constants.%T) [symbolic = @Wrap.as.Destroy.impl.%Destroy.impl_witness (constants.%Destroy.impl_witness.931)]
|
||||
// CHECK:STDOUT: %Destroy.impl_witness: <witness> = impl_witness %Destroy.impl_witness_table, @Wrap.as.Destroy.impl(constants.%T) [symbolic = @Wrap.as.Destroy.impl.%Destroy.impl_witness (constants.%Destroy.impl_witness.a83)]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%empty_struct_type [concrete = constants.%complete_type.357]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
@@ -207,7 +207,7 @@ fn G() {
|
||||
// CHECK:STDOUT: %Self.ref: type = name_ref Self, constants.%C [concrete = constants.%C]
|
||||
// CHECK:STDOUT: impl_decl @C.as.Destroy.impl [concrete] {} {}
|
||||
// CHECK:STDOUT: %Destroy.impl_witness_table = impl_witness_table (@C.as.Destroy.impl.%C.as.Destroy.impl.Op.decl), @C.as.Destroy.impl [concrete]
|
||||
// CHECK:STDOUT: %Destroy.impl_witness: <witness> = impl_witness %Destroy.impl_witness_table [concrete = constants.%Destroy.impl_witness.9d0]
|
||||
// CHECK:STDOUT: %Destroy.impl_witness: <witness> = impl_witness %Destroy.impl_witness_table [concrete = constants.%Destroy.impl_witness.071]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness constants.%struct_type.arr.5f2 [concrete = constants.%complete_type.22a]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT:
|
||||
@@ -308,13 +308,13 @@ fn G() {
|
||||
// CHECK:STDOUT: %C.as.Destroy.impl.Op.bound: <bound method> = bound_method %c.var, constants.%C.as.Destroy.impl.Op
|
||||
// CHECK:STDOUT: %addr.loc24: %ptr.019 = addr_of %c.var
|
||||
// CHECK:STDOUT: %C.as.Destroy.impl.Op.call: init %empty_tuple.type = call %C.as.Destroy.impl.Op.bound(%addr.loc24)
|
||||
// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: <bound method> = bound_method %b.var, constants.%T.as.Destroy.impl.Op.bae
|
||||
// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: <specific function> = specific_function constants.%T.as.Destroy.impl.Op.bae, @T.as.Destroy.impl.Op(constants.%empty_tuple.type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn]
|
||||
// CHECK:STDOUT: %T.as.Destroy.impl.Op.bound: <bound method> = bound_method %b.var, constants.%T.as.Destroy.impl.Op.daf
|
||||
// CHECK:STDOUT: %T.as.Destroy.impl.Op.specific_fn: <specific function> = specific_function constants.%T.as.Destroy.impl.Op.daf, @T.as.Destroy.impl.Op(constants.%empty_tuple.type) [concrete = constants.%T.as.Destroy.impl.Op.specific_fn]
|
||||
// CHECK:STDOUT: %bound_method.loc23: <bound method> = bound_method %b.var, %T.as.Destroy.impl.Op.specific_fn
|
||||
// CHECK:STDOUT: %addr.loc23: %ptr.843 = addr_of %b.var
|
||||
// CHECK:STDOUT: %T.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc23(%addr.loc23)
|
||||
// CHECK:STDOUT: %Int.as.Destroy.impl.Op.bound: <bound method> = bound_method %a.var, constants.%Int.as.Destroy.impl.Op.054
|
||||
// CHECK:STDOUT: %Int.as.Destroy.impl.Op.specific_fn: <specific function> = specific_function constants.%Int.as.Destroy.impl.Op.054, @Int.as.Destroy.impl.Op(constants.%int_32) [concrete = constants.%Int.as.Destroy.impl.Op.specific_fn]
|
||||
// CHECK:STDOUT: %Int.as.Destroy.impl.Op.bound: <bound method> = bound_method %a.var, constants.%Int.as.Destroy.impl.Op.796
|
||||
// CHECK:STDOUT: %Int.as.Destroy.impl.Op.specific_fn: <specific function> = specific_function constants.%Int.as.Destroy.impl.Op.796, @Int.as.Destroy.impl.Op(constants.%int_32) [concrete = constants.%Int.as.Destroy.impl.Op.specific_fn]
|
||||
// CHECK:STDOUT: %bound_method.loc22: <bound method> = bound_method %a.var, %Int.as.Destroy.impl.Op.specific_fn
|
||||
// CHECK:STDOUT: %addr.loc22: %ptr.235 = addr_of %a.var
|
||||
// CHECK:STDOUT: %Int.as.Destroy.impl.Op.call: init %empty_tuple.type = call %bound_method.loc22(%addr.loc22)
|
||||
@@ -343,7 +343,7 @@ fn G() {
|
||||
// CHECK:STDOUT: specific @Wrap.as.Destroy.impl(constants.%T) {
|
||||
// CHECK:STDOUT: %T => constants.%T
|
||||
// CHECK:STDOUT: %Wrap => constants.%Wrap.af6
|
||||
// CHECK:STDOUT: %Destroy.impl_witness => constants.%Destroy.impl_witness.931
|
||||
// CHECK:STDOUT: %Destroy.impl_witness => constants.%Destroy.impl_witness.a83
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @Wrap.as.Destroy.impl.Op(constants.%T) {
|
||||
|
||||
@@ -38,8 +38,8 @@ fn F(T:! type) {
|
||||
// CHECK:STDOUT: %require_complete.132: <witness> = require_complete_type %ptr.a13 [symbolic]
|
||||
// CHECK:STDOUT: %Destroy.lookup_impl_witness: <witness> = lookup_impl_witness %ptr.79f, @Destroy [symbolic]
|
||||
// CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %ptr.79f, (%Destroy.lookup_impl_witness) [symbolic]
|
||||
// CHECK:STDOUT: %.dc4: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet [symbolic]
|
||||
// CHECK:STDOUT: %impl.elem0: %.dc4 = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic]
|
||||
// CHECK:STDOUT: %.fc8: type = fn_type_with_self_type %Destroy.Op.type, %Destroy.facet [symbolic]
|
||||
// CHECK:STDOUT: %impl.elem0: %.fc8 = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic]
|
||||
// CHECK:STDOUT: %specific_impl_fn: <specific function> = specific_impl_function %impl.elem0, @Destroy.Op(%Destroy.facet) [symbolic]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -77,8 +77,8 @@ fn F(T:! type) {
|
||||
// CHECK:STDOUT: %pattern_type.loc17: type = pattern_type %T.loc15_6.1 [symbolic = %pattern_type.loc17 (constants.%pattern_type.7dc)]
|
||||
// CHECK:STDOUT: %Destroy.lookup_impl_witness: <witness> = lookup_impl_witness %ptr.loc16_11.2, @Destroy [symbolic = %Destroy.lookup_impl_witness (constants.%Destroy.lookup_impl_witness)]
|
||||
// CHECK:STDOUT: %Destroy.facet: %Destroy.type = facet_value %ptr.loc16_11.2, (%Destroy.lookup_impl_witness) [symbolic = %Destroy.facet (constants.%Destroy.facet)]
|
||||
// CHECK:STDOUT: %.loc16_3.2: type = fn_type_with_self_type constants.%Destroy.Op.type, %Destroy.facet [symbolic = %.loc16_3.2 (constants.%.dc4)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc16_3.2: @F.%.loc16_3.2 (%.dc4) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc16_3.2 (constants.%impl.elem0)]
|
||||
// CHECK:STDOUT: %.loc16_3.2: type = fn_type_with_self_type constants.%Destroy.Op.type, %Destroy.facet [symbolic = %.loc16_3.2 (constants.%.fc8)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc16_3.2: @F.%.loc16_3.2 (%.fc8) = impl_witness_access %Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc16_3.2 (constants.%impl.elem0)]
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc16_3.2: <specific function> = specific_impl_function %impl.elem0.loc16_3.2, @Destroy.Op(%Destroy.facet) [symbolic = %specific_impl_fn.loc16_3.2 (constants.%specific_impl_fn)]
|
||||
// CHECK:STDOUT: %ptr.loc16_3: type = ptr_type %ptr.loc16_11.2 [symbolic = %ptr.loc16_3 (constants.%ptr.a13)]
|
||||
// CHECK:STDOUT: %require_complete.loc16_3: <witness> = require_complete_type %ptr.loc16_3 [symbolic = %require_complete.loc16_3 (constants.%require_complete.132)]
|
||||
@@ -104,7 +104,7 @@ fn F(T:! type) {
|
||||
// CHECK:STDOUT: %T.ref.loc17: type = name_ref T, %T.loc15_6.2 [symbolic = %T.loc15_6.1 (constants.%T)]
|
||||
// CHECK:STDOUT: %.loc17_14.2: @F.%T.loc15_6.1 (%T) = bind_value %.loc17_14.1
|
||||
// CHECK:STDOUT: %n: @F.%T.loc15_6.1 (%T) = bind_name n, %.loc17_14.2
|
||||
// CHECK:STDOUT: %impl.elem0.loc16_3.1: @F.%.loc16_3.2 (%.dc4) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc16_3.2 (constants.%impl.elem0)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc16_3.1: @F.%.loc16_3.2 (%.fc8) = impl_witness_access constants.%Destroy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc16_3.2 (constants.%impl.elem0)]
|
||||
// CHECK:STDOUT: %bound_method.loc16_3.1: <bound method> = bound_method %p.var, %impl.elem0.loc16_3.1
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc16_3.1: <specific function> = specific_impl_function %impl.elem0.loc16_3.1, @Destroy.Op(constants.%Destroy.facet) [symbolic = %specific_impl_fn.loc16_3.2 (constants.%specific_impl_fn)]
|
||||
// CHECK:STDOUT: %bound_method.loc16_3.2: <bound method> = bound_method %p.var, %specific_impl_fn.loc16_3.1
|
||||
|
||||
@@ -30,10 +30,10 @@ fn F(T:! type, n: T*) -> T* {
|
||||
// CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete]
|
||||
// CHECK:STDOUT: %Copy.Op.type: type = fn_type @Copy.Op [concrete]
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness.cb2: <witness> = lookup_impl_witness %ptr, @Copy [symbolic]
|
||||
// CHECK:STDOUT: %Copy.facet.def: %Copy.type = facet_value %ptr, (%Copy.lookup_impl_witness.cb2) [symbolic]
|
||||
// CHECK:STDOUT: %.fe5: type = fn_type_with_self_type %Copy.Op.type, %Copy.facet.def [symbolic]
|
||||
// CHECK:STDOUT: %impl.elem0.429: %.fe5 = impl_witness_access %Copy.lookup_impl_witness.cb2, element0 [symbolic]
|
||||
// CHECK:STDOUT: %specific_impl_fn.d8a: <specific function> = specific_impl_function %impl.elem0.429, @Copy.Op(%Copy.facet.def) [symbolic]
|
||||
// CHECK:STDOUT: %Copy.facet.2d1: %Copy.type = facet_value %ptr, (%Copy.lookup_impl_witness.cb2) [symbolic]
|
||||
// CHECK:STDOUT: %.1cc: type = fn_type_with_self_type %Copy.Op.type, %Copy.facet.2d1 [symbolic]
|
||||
// CHECK:STDOUT: %impl.elem0.751: %.1cc = impl_witness_access %Copy.lookup_impl_witness.cb2, element0 [symbolic]
|
||||
// CHECK:STDOUT: %specific_impl_fn.f44: <specific function> = specific_impl_function %impl.elem0.751, @Copy.Op(%Copy.facet.2d1) [symbolic]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: imports {
|
||||
@@ -45,10 +45,10 @@ fn F(T:! type, n: T*) -> T* {
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness: <witness> = lookup_impl_witness %ptr.loc4_20.1, @Copy [symbolic = %Copy.lookup_impl_witness (constants.%Copy.lookup_impl_witness.cb2)]
|
||||
// CHECK:STDOUT: %Copy.facet: %Copy.type = facet_value %ptr.loc4_20.1, (%Copy.lookup_impl_witness) [symbolic = %Copy.facet (constants.%Copy.facet.def)]
|
||||
// CHECK:STDOUT: %.loc7_10.2: type = fn_type_with_self_type constants.%Copy.Op.type, %Copy.facet [symbolic = %.loc7_10.2 (constants.%.fe5)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc7_10.2: @F.%.loc7_10.2 (%.fe5) = impl_witness_access %Copy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc7_10.2 (constants.%impl.elem0.429)]
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc7_10.2: <specific function> = specific_impl_function %impl.elem0.loc7_10.2, @Copy.Op(%Copy.facet) [symbolic = %specific_impl_fn.loc7_10.2 (constants.%specific_impl_fn.d8a)]
|
||||
// CHECK:STDOUT: %Copy.facet: %Copy.type = facet_value %ptr.loc4_20.1, (%Copy.lookup_impl_witness) [symbolic = %Copy.facet (constants.%Copy.facet.2d1)]
|
||||
// CHECK:STDOUT: %.loc7_10.2: type = fn_type_with_self_type constants.%Copy.Op.type, %Copy.facet [symbolic = %.loc7_10.2 (constants.%.1cc)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc7_10.2: @F.%.loc7_10.2 (%.1cc) = impl_witness_access %Copy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc7_10.2 (constants.%impl.elem0.751)]
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc7_10.2: <specific function> = specific_impl_function %impl.elem0.loc7_10.2, @Copy.Op(%Copy.facet) [symbolic = %specific_impl_fn.loc7_10.2 (constants.%specific_impl_fn.f44)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn(%n.param: @F.%ptr.loc4_20.1 (%ptr)) -> @F.%ptr.loc4_20.1 (%ptr) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
@@ -62,9 +62,9 @@ fn F(T:! type, n: T*) -> T* {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %m: @F.%ptr.loc4_20.1 (%ptr) = bind_name m, %n.ref
|
||||
// CHECK:STDOUT: %m.ref: @F.%ptr.loc4_20.1 (%ptr) = name_ref m, %m
|
||||
// CHECK:STDOUT: %impl.elem0.loc7_10.1: @F.%.loc7_10.2 (%.fe5) = impl_witness_access constants.%Copy.lookup_impl_witness.cb2, element0 [symbolic = %impl.elem0.loc7_10.2 (constants.%impl.elem0.429)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc7_10.1: @F.%.loc7_10.2 (%.1cc) = impl_witness_access constants.%Copy.lookup_impl_witness.cb2, element0 [symbolic = %impl.elem0.loc7_10.2 (constants.%impl.elem0.751)]
|
||||
// CHECK:STDOUT: %bound_method.loc7_10.1: <bound method> = bound_method %m.ref, %impl.elem0.loc7_10.1
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc7_10.1: <specific function> = specific_impl_function %impl.elem0.loc7_10.1, @Copy.Op(constants.%Copy.facet.def) [symbolic = %specific_impl_fn.loc7_10.2 (constants.%specific_impl_fn.d8a)]
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc7_10.1: <specific function> = specific_impl_function %impl.elem0.loc7_10.1, @Copy.Op(constants.%Copy.facet.2d1) [symbolic = %specific_impl_fn.loc7_10.2 (constants.%specific_impl_fn.f44)]
|
||||
// CHECK:STDOUT: %bound_method.loc7_10.2: <bound method> = bound_method %m.ref, %specific_impl_fn.loc7_10.1
|
||||
// CHECK:STDOUT: %.loc7_10.1: init @F.%ptr.loc4_20.1 (%ptr) = call %bound_method.loc7_10.2(%m.ref)
|
||||
// CHECK:STDOUT: return %.loc7_10.1 to %return
|
||||
|
||||
Reference in New Issue
Block a user