mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-09-24 19:50:14 +01:00
Fix a duplicate diagnostic on incomplete return types. (#6684)
For example, see toolchain/check/testdata/class/fail_incomplete.carbon for the diagnostic changes. `IncompleteTypeInFunctionReturnType` should remain, while the redundant `IncompleteTypeInFunctionParam` is removed. Note I'm deliberately trying to validate the return type after other parameters, because I think that's the better user experience. This does also incrementally change IR.
This commit is contained in:
@@ -310,11 +310,11 @@ auto CheckFunctionDefinitionSignature(Context& context,
|
||||
auto params_to_complete =
|
||||
context.inst_blocks().GetOrEmpty(function.call_params_id);
|
||||
|
||||
// Check the return type is complete.
|
||||
for (auto return_pattern_id :
|
||||
context.inst_blocks().GetOrEmpty(function.return_patterns_id)) {
|
||||
CheckFunctionReturnPatternType(context, SemIR::LocId(return_pattern_id),
|
||||
return_pattern_id, SemIR::SpecificId::None);
|
||||
// The return parameter will be diagnosed after and differently from other
|
||||
// parameters.
|
||||
auto return_call_param = SemIR::InstId::None;
|
||||
if (!params_to_complete.empty() && function.return_patterns_id.has_value()) {
|
||||
return_call_param = params_to_complete.consume_back();
|
||||
}
|
||||
|
||||
// Check the parameter types are complete.
|
||||
@@ -335,6 +335,25 @@ auto CheckFunctionDefinitionSignature(Context& context,
|
||||
param_ref_id, IncompleteTypeInFunctionParam, param_ref_id);
|
||||
});
|
||||
}
|
||||
|
||||
// Check the return type is complete.
|
||||
if (function.return_patterns_id.has_value()) {
|
||||
for (auto return_pattern_id :
|
||||
context.inst_blocks().Get(function.return_patterns_id)) {
|
||||
CheckFunctionReturnPatternType(context, SemIR::LocId(return_pattern_id),
|
||||
return_pattern_id,
|
||||
SemIR::SpecificId::None);
|
||||
}
|
||||
|
||||
// `CheckFunctionReturnPatternType` should have diagnosed incomplete types,
|
||||
// so don't `RequireCompleteType` on the return type.
|
||||
if (return_call_param.has_value()) {
|
||||
TryToCompleteType(
|
||||
context,
|
||||
context.insts().GetAs<SemIR::AnyParam>(return_call_param).type_id,
|
||||
SemIR::LocId(return_call_param));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace Carbon::Check
|
||||
|
||||
+1501
-1503
File diff suppressed because it is too large
Load Diff
@@ -58,20 +58,13 @@ library "[[@TEST_NAME]]";
|
||||
|
||||
class FailIncomplete;
|
||||
|
||||
// CHECK:STDERR: fail_incomplete.carbon:[[@LINE+18]]:20: error: function returns incomplete type `FailIncomplete` [IncompleteTypeInFunctionReturnType]
|
||||
// CHECK:STDERR: fail_incomplete.carbon:[[@LINE+11]]:20: error: function returns incomplete type `FailIncomplete` [IncompleteTypeInFunctionReturnType]
|
||||
// CHECK:STDERR: fn Make(n: i32) -> FailIncomplete = "cpp.std.initializer_list.make";
|
||||
// CHECK:STDERR: ^~~~~~~~~~~~~~
|
||||
// CHECK:STDERR: fail_incomplete.carbon:[[@LINE-5]]:1: note: class was forward declared here [ClassForwardDeclaredHere]
|
||||
// CHECK:STDERR: class FailIncomplete;
|
||||
// CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~
|
||||
// CHECK:STDERR:
|
||||
// CHECK:STDERR: fail_incomplete.carbon:[[@LINE+11]]:20: error: parameter has incomplete type `FailIncomplete` in function definition [IncompleteTypeInFunctionParam]
|
||||
// CHECK:STDERR: fn Make(n: i32) -> FailIncomplete = "cpp.std.initializer_list.make";
|
||||
// CHECK:STDERR: ^~~~~~~~~~~~~~
|
||||
// CHECK:STDERR: fail_incomplete.carbon:[[@LINE-12]]:1: note: class was forward declared here [ClassForwardDeclaredHere]
|
||||
// CHECK:STDERR: class FailIncomplete;
|
||||
// CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~
|
||||
// CHECK:STDERR:
|
||||
// CHECK:STDERR: fail_incomplete.carbon:[[@LINE+4]]:1: error: invalid signature for builtin function "cpp.std.initializer_list.make" [InvalidBuiltinSignature]
|
||||
// CHECK:STDERR: fn Make(n: i32) -> FailIncomplete = "cpp.std.initializer_list.make";
|
||||
// CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
+10
-24
@@ -45,27 +45,20 @@ fn CallClassFunction() {
|
||||
// CHECK:STDERR:
|
||||
var global_var: Class;
|
||||
|
||||
// CHECK:STDERR: fail_forward_decl.carbon:[[@LINE+14]]:27: error: function returns incomplete type `Class` [IncompleteTypeInFunctionReturnType]
|
||||
// CHECK:STDERR: fail_forward_decl.carbon:[[@LINE+7]]:27: error: function returns incomplete type `Class` [IncompleteTypeInFunctionReturnType]
|
||||
// CHECK:STDERR: fn ConvertFromStruct() -> Class { return {}; }
|
||||
// CHECK:STDERR: ^~~~~
|
||||
// CHECK:STDERR: fail_forward_decl.carbon:[[@LINE-34]]:1: note: class was forward declared here [ClassForwardDeclaredHere]
|
||||
// CHECK:STDERR: class Class;
|
||||
// CHECK:STDERR: ^~~~~~~~~~~~
|
||||
// CHECK:STDERR:
|
||||
// CHECK:STDERR: fail_forward_decl.carbon:[[@LINE+7]]:27: error: parameter has incomplete type `Class` in function definition [IncompleteTypeInFunctionParam]
|
||||
// CHECK:STDERR: fn ConvertFromStruct() -> Class { return {}; }
|
||||
// CHECK:STDERR: ^~~~~
|
||||
// CHECK:STDERR: fail_forward_decl.carbon:[[@LINE-41]]:1: note: class was forward declared here [ClassForwardDeclaredHere]
|
||||
// CHECK:STDERR: class Class;
|
||||
// CHECK:STDERR: ^~~~~~~~~~~~
|
||||
// CHECK:STDERR:
|
||||
fn ConvertFromStruct() -> Class { return {}; }
|
||||
|
||||
fn G(p: Class*) -> () {
|
||||
// CHECK:STDERR: fail_forward_decl.carbon:[[@LINE+7]]:10: error: member access into object of incomplete type `Class` [IncompleteTypeInMemberAccess]
|
||||
// CHECK:STDERR: return p->n;
|
||||
// CHECK:STDERR: ^~~~
|
||||
// CHECK:STDERR: fail_forward_decl.carbon:[[@LINE-51]]:1: note: class was forward declared here [ClassForwardDeclaredHere]
|
||||
// CHECK:STDERR: fail_forward_decl.carbon:[[@LINE-44]]:1: note: class was forward declared here [ClassForwardDeclaredHere]
|
||||
// CHECK:STDERR: class Class;
|
||||
// CHECK:STDERR: ^~~~~~~~~~~~
|
||||
// CHECK:STDERR:
|
||||
@@ -76,24 +69,17 @@ fn MemberAccess(p: Class*) -> () {
|
||||
// CHECK:STDERR: fail_forward_decl.carbon:[[@LINE+7]]:11: error: member access into object of incomplete type `Class` [IncompleteTypeInMemberAccess]
|
||||
// CHECK:STDERR: return (*p).n;
|
||||
// CHECK:STDERR: ^~
|
||||
// CHECK:STDERR: fail_forward_decl.carbon:[[@LINE-62]]:1: note: class was forward declared here [ClassForwardDeclaredHere]
|
||||
// CHECK:STDERR: fail_forward_decl.carbon:[[@LINE-55]]:1: note: class was forward declared here [ClassForwardDeclaredHere]
|
||||
// CHECK:STDERR: class Class;
|
||||
// CHECK:STDERR: ^~~~~~~~~~~~
|
||||
// CHECK:STDERR:
|
||||
return (*p).n;
|
||||
}
|
||||
|
||||
// CHECK:STDERR: fail_forward_decl.carbon:[[@LINE+14]]:23: error: function returns incomplete type `Class` [IncompleteTypeInFunctionReturnType]
|
||||
// CHECK:STDERR: fail_forward_decl.carbon:[[@LINE+7]]:23: error: function returns incomplete type `Class` [IncompleteTypeInFunctionReturnType]
|
||||
// CHECK:STDERR: fn Copy(p: Class*) -> Class {
|
||||
// CHECK:STDERR: ^~~~~
|
||||
// CHECK:STDERR: fail_forward_decl.carbon:[[@LINE-72]]:1: note: class was forward declared here [ClassForwardDeclaredHere]
|
||||
// CHECK:STDERR: class Class;
|
||||
// CHECK:STDERR: ^~~~~~~~~~~~
|
||||
// CHECK:STDERR:
|
||||
// CHECK:STDERR: fail_forward_decl.carbon:[[@LINE+7]]:23: error: parameter has incomplete type `Class` in function definition [IncompleteTypeInFunctionParam]
|
||||
// CHECK:STDERR: fn Copy(p: Class*) -> Class {
|
||||
// CHECK:STDERR: ^~~~~
|
||||
// CHECK:STDERR: fail_forward_decl.carbon:[[@LINE-79]]:1: note: class was forward declared here [ClassForwardDeclaredHere]
|
||||
// CHECK:STDERR: fail_forward_decl.carbon:[[@LINE-65]]:1: note: class was forward declared here [ClassForwardDeclaredHere]
|
||||
// CHECK:STDERR: class Class;
|
||||
// CHECK:STDERR: ^~~~~~~~~~~~
|
||||
// CHECK:STDERR:
|
||||
@@ -105,7 +91,7 @@ fn Let(p: Class*) {
|
||||
// CHECK:STDERR: fail_forward_decl.carbon:[[@LINE+7]]:10: error: binding pattern has incomplete type `Class` in name binding declaration [IncompleteTypeInBindingDecl]
|
||||
// CHECK:STDERR: let c: Class = *p;
|
||||
// CHECK:STDERR: ^~~~~
|
||||
// CHECK:STDERR: fail_forward_decl.carbon:[[@LINE-91]]:1: note: class was forward declared here [ClassForwardDeclaredHere]
|
||||
// CHECK:STDERR: fail_forward_decl.carbon:[[@LINE-77]]:1: note: class was forward declared here [ClassForwardDeclaredHere]
|
||||
// CHECK:STDERR: class Class;
|
||||
// CHECK:STDERR: ^~~~~~~~~~~~
|
||||
// CHECK:STDERR:
|
||||
@@ -120,7 +106,7 @@ fn CallTakeIncomplete(p: Class*) {
|
||||
// CHECK:STDERR: fail_forward_decl.carbon:[[@LINE+10]]:18: error: forming value of incomplete type `Class` [IncompleteTypeInValueConversion]
|
||||
// CHECK:STDERR: TakeIncomplete(*p);
|
||||
// CHECK:STDERR: ^~
|
||||
// CHECK:STDERR: fail_forward_decl.carbon:[[@LINE-106]]:1: note: class was forward declared here [ClassForwardDeclaredHere]
|
||||
// CHECK:STDERR: fail_forward_decl.carbon:[[@LINE-92]]:1: note: class was forward declared here [ClassForwardDeclaredHere]
|
||||
// CHECK:STDERR: class Class;
|
||||
// CHECK:STDERR: ^~~~~~~~~~~~
|
||||
// CHECK:STDERR: fail_forward_decl.carbon:[[@LINE-11]]:19: note: initializing function parameter [InCallToFunctionParam]
|
||||
@@ -132,7 +118,7 @@ fn CallTakeIncomplete(p: Class*) {
|
||||
// CHECK:STDERR: fail_forward_decl.carbon:[[@LINE+10]]:18: error: forming value of incomplete type `Class` [IncompleteTypeInValueConversion]
|
||||
// CHECK:STDERR: TakeIncomplete({});
|
||||
// CHECK:STDERR: ^~
|
||||
// CHECK:STDERR: fail_forward_decl.carbon:[[@LINE-118]]:1: note: class was forward declared here [ClassForwardDeclaredHere]
|
||||
// CHECK:STDERR: fail_forward_decl.carbon:[[@LINE-104]]:1: note: class was forward declared here [ClassForwardDeclaredHere]
|
||||
// CHECK:STDERR: class Class;
|
||||
// CHECK:STDERR: ^~~~~~~~~~~~
|
||||
// CHECK:STDERR: fail_forward_decl.carbon:[[@LINE-23]]:19: note: initializing function parameter [InCallToFunctionParam]
|
||||
@@ -146,7 +132,7 @@ fn CallReturnIncomplete() {
|
||||
// CHECK:STDERR: fail_forward_decl.carbon:[[@LINE+10]]:3: error: function returns incomplete type `Class` [IncompleteTypeInFunctionReturnType]
|
||||
// CHECK:STDERR: ReturnIncomplete();
|
||||
// CHECK:STDERR: ^~~~~~~~~~~~~~~~~~
|
||||
// CHECK:STDERR: fail_forward_decl.carbon:[[@LINE-132]]:1: note: class was forward declared here [ClassForwardDeclaredHere]
|
||||
// CHECK:STDERR: fail_forward_decl.carbon:[[@LINE-118]]:1: note: class was forward declared here [ClassForwardDeclaredHere]
|
||||
// CHECK:STDERR: class Class;
|
||||
// CHECK:STDERR: ^~~~~~~~~~~~
|
||||
// CHECK:STDERR: fail_forward_decl.carbon:[[@LINE-35]]:26: note: return type declared here [IncompleteReturnTypeHere]
|
||||
@@ -165,7 +151,7 @@ fn CallIncompleteAddrSelf(p: Class*) {
|
||||
// CHECK:STDERR: fail_forward_decl.carbon:[[@LINE+10]]:3: error: invalid use of incomplete type `Class` [IncompleteTypeInConversion]
|
||||
// CHECK:STDERR: p->(IncompleteRefSelf.F)();
|
||||
// CHECK:STDERR: ^~~~~~~~~~~~~~~~~~~~~~~~
|
||||
// CHECK:STDERR: fail_forward_decl.carbon:[[@LINE-151]]:1: note: class was forward declared here [ClassForwardDeclaredHere]
|
||||
// CHECK:STDERR: fail_forward_decl.carbon:[[@LINE-137]]:1: note: class was forward declared here [ClassForwardDeclaredHere]
|
||||
// CHECK:STDERR: class Class;
|
||||
// CHECK:STDERR: ^~~~~~~~~~~~
|
||||
// CHECK:STDERR: fail_forward_decl.carbon:[[@LINE-11]]:8: note: initializing function parameter [InCallToFunctionParam]
|
||||
|
||||
+4
-4
@@ -54,8 +54,8 @@ class Declaration(T:! type);
|
||||
// CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T.binding.as_type [symbolic]
|
||||
// CHECK:STDOUT: %struct_type.k: type = struct_type {.k: %T.binding.as_type} [symbolic]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %struct_type.k [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.9dc: <witness> = require_complete_type %ptr.e7d [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.904: <witness> = require_complete_type %Class [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.9dc: <witness> = require_complete_type %ptr.e7d [symbolic]
|
||||
// CHECK:STDOUT: %Copy.Op.type: type = fn_type @Copy.Op [concrete]
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness.58d: <witness> = lookup_impl_witness %T.035, @Copy [symbolic]
|
||||
// CHECK:STDOUT: %.72e: type = fn_type_with_self_type %Copy.Op.type, %T.035 [symbolic]
|
||||
@@ -188,8 +188,8 @@ class Declaration(T:! type);
|
||||
// CHECK:STDOUT: %pattern_type.loc6_32: type = pattern_type %ptr.loc6_36.1 [symbolic = %pattern_type.loc6_32 (constants.%pattern_type.65a)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc6_36: <witness> = require_complete_type %ptr.loc6_36.1 [symbolic = %require_complete.loc6_36 (constants.%require_complete.9dc)]
|
||||
// CHECK:STDOUT: %require_complete.loc6_22: <witness> = require_complete_type %Class [symbolic = %require_complete.loc6_22 (constants.%require_complete.904)]
|
||||
// CHECK:STDOUT: %require_complete.loc6_36: <witness> = require_complete_type %ptr.loc6_36.1 [symbolic = %require_complete.loc6_36 (constants.%require_complete.9dc)]
|
||||
// CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T.binding.as_type [symbolic = %Class.elem (constants.%Class.elem)]
|
||||
// CHECK:STDOUT: %.loc7_12.1: require_specific_def_type = require_specific_def @ptr.as.Copy.impl(%T.binding.as_type) [symbolic = %.loc7_12.1 (constants.%.3a3)]
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness: <witness> = lookup_impl_witness %ptr.loc6_36.1, @Copy [symbolic = %Copy.lookup_impl_witness (constants.%Copy.lookup_impl_witness.2e7)]
|
||||
@@ -222,9 +222,9 @@ class Declaration(T:! type);
|
||||
// CHECK:STDOUT: %pattern_type.loc10_29: type = pattern_type %T.binding.as_type [symbolic = %pattern_type.loc10_29 (constants.%pattern_type.9b9f0c.1)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc10_19: <witness> = require_complete_type %Class [symbolic = %require_complete.loc10_19 (constants.%require_complete.904)]
|
||||
// CHECK:STDOUT: %require_complete.loc10_32: <witness> = require_complete_type %T.binding.as_type [symbolic = %require_complete.loc10_32 (constants.%require_complete.67c)]
|
||||
// CHECK:STDOUT: %require_complete.loc10: <witness> = require_complete_type %Class [symbolic = %require_complete.loc10 (constants.%require_complete.904)]
|
||||
// CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T.binding.as_type [symbolic = %Class.elem (constants.%Class.elem)]
|
||||
// CHECK:STDOUT: %require_complete.loc11: <witness> = require_complete_type %T.binding.as_type [symbolic = %require_complete.loc11 (constants.%require_complete.67c)]
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness: <witness> = lookup_impl_witness %T, @Copy [symbolic = %Copy.lookup_impl_witness (constants.%Copy.lookup_impl_witness.58d)]
|
||||
// CHECK:STDOUT: %.loc11_16.3: type = fn_type_with_self_type constants.%Copy.Op.type, %T [symbolic = %.loc11_16.3 (constants.%.72e)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc11_16.2: @Class.GetValue.%.loc11_16.3 (%.72e) = impl_witness_access %Copy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc11_16.2 (constants.%impl.elem0.07b)]
|
||||
|
||||
+4
-4
@@ -253,9 +253,9 @@ fn H(U:! Core.Copy, c: Class(U)) -> U {
|
||||
// CHECK:STDOUT: %pattern_type.loc13_34: type = pattern_type %T.binding.as_type [symbolic = %pattern_type.loc13_34 (constants.%pattern_type.9b9f0c.2)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc13_37: <witness> = require_complete_type %T.binding.as_type [symbolic = %require_complete.loc13_37 (constants.%require_complete.67ca8d.1)]
|
||||
// CHECK:STDOUT: %require_complete.loc13_22: <witness> = require_complete_type %Class.loc13_31.1 [symbolic = %require_complete.loc13_22 (constants.%require_complete.ae7bfa.1)]
|
||||
// CHECK:STDOUT: %require_complete.loc13: <witness> = require_complete_type %Class.loc13_31.1 [symbolic = %require_complete.loc13 (constants.%require_complete.ae7bfa.1)]
|
||||
// CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class.loc13_31.1, %T.binding.as_type [symbolic = %Class.elem (constants.%Class.elem.7657d6.1)]
|
||||
// CHECK:STDOUT: %require_complete.loc14: <witness> = require_complete_type %T.binding.as_type [symbolic = %require_complete.loc14 (constants.%require_complete.67ca8d.1)]
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness: <witness> = lookup_impl_witness %T.loc13_6.1, @Copy [symbolic = %Copy.lookup_impl_witness (constants.%Copy.lookup_impl_witness.58dce0.1)]
|
||||
// CHECK:STDOUT: %.loc14_11.3: type = fn_type_with_self_type constants.%Copy.Op.type, %T.loc13_6.1 [symbolic = %.loc14_11.3 (constants.%.72e61c.1)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc14_11.2: @G.%.loc14_11.3 (%.72e61c.1) = impl_witness_access %Copy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc14_11.2 (constants.%impl.elem0.07b224.1)]
|
||||
@@ -286,9 +286,9 @@ fn H(U:! Core.Copy, c: Class(U)) -> U {
|
||||
// CHECK:STDOUT: %pattern_type.loc17_34: type = pattern_type %U.binding.as_type [symbolic = %pattern_type.loc17_34 (constants.%pattern_type.9b9f0c.3)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc17_37: <witness> = require_complete_type %U.binding.as_type [symbolic = %require_complete.loc17_37 (constants.%require_complete.67ca8d.2)]
|
||||
// CHECK:STDOUT: %require_complete.loc17_22: <witness> = require_complete_type %Class.loc17_31.1 [symbolic = %require_complete.loc17_22 (constants.%require_complete.ae7bfa.2)]
|
||||
// CHECK:STDOUT: %require_complete.loc17: <witness> = require_complete_type %Class.loc17_31.1 [symbolic = %require_complete.loc17 (constants.%require_complete.ae7bfa.2)]
|
||||
// CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class.loc17_31.1, %U.binding.as_type [symbolic = %Class.elem (constants.%Class.elem.7657d6.2)]
|
||||
// CHECK:STDOUT: %require_complete.loc18: <witness> = require_complete_type %U.binding.as_type [symbolic = %require_complete.loc18 (constants.%require_complete.67ca8d.2)]
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness: <witness> = lookup_impl_witness %U.loc17_6.1, @Copy [symbolic = %Copy.lookup_impl_witness (constants.%Copy.lookup_impl_witness.58dce0.2)]
|
||||
// CHECK:STDOUT: %.loc18_11.3: type = fn_type_with_self_type constants.%Copy.Op.type, %U.loc17_6.1 [symbolic = %.loc18_11.3 (constants.%.72e61c.2)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc18_11.2: @H.%.loc18_11.3 (%.72e61c.2) = impl_witness_access %Copy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc18_11.2 (constants.%impl.elem0.07b224.2)]
|
||||
|
||||
@@ -169,6 +169,7 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) {
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T.binding.as_type [symbolic = %Class.elem (constants.%Class.elem.05d)]
|
||||
// CHECK:STDOUT: %require_complete.loc9: <witness> = require_complete_type %T.binding.as_type [symbolic = %require_complete.loc9 (constants.%require_complete.67c)]
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness: <witness> = lookup_impl_witness %T, @Copy [symbolic = %Copy.lookup_impl_witness (constants.%Copy.lookup_impl_witness.58d)]
|
||||
// CHECK:STDOUT: %.loc9_16.3: type = fn_type_with_self_type constants.%Copy.Op.type, %T [symbolic = %.loc9_16.3 (constants.%.72e)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc9_16.2: @Class.Get.%.loc9_16.3 (%.72e) = impl_witness_access %Copy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc9_16.2 (constants.%impl.elem0.07b)]
|
||||
@@ -326,9 +327,9 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) {
|
||||
// CHECK:STDOUT: %pattern_type.loc7_24 => constants.%pattern_type.7ce
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc7_14 => constants.%complete_type.1ec
|
||||
// CHECK:STDOUT: %require_complete.loc7_27 => constants.%complete_type.f8a
|
||||
// CHECK:STDOUT: %require_complete.loc7 => constants.%complete_type.1ec
|
||||
// CHECK:STDOUT: %Class.elem => constants.%Class.elem.da5
|
||||
// CHECK:STDOUT: %require_complete.loc9 => constants.%complete_type.f8a
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness => constants.%Copy.impl_witness.f17
|
||||
// CHECK:STDOUT: %.loc9_16.3 => constants.%.f79
|
||||
// CHECK:STDOUT: %impl.elem0.loc9_16.2 => constants.%Int.as.Copy.impl.Op.664
|
||||
@@ -345,8 +346,8 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) {
|
||||
// CHECK:STDOUT: %pattern_type.loc13_32 => constants.%pattern_type.fe8
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc13_36 => constants.%complete_type.3d0
|
||||
// CHECK:STDOUT: %require_complete.loc13_22 => constants.%complete_type.1ec
|
||||
// CHECK:STDOUT: %require_complete.loc13_36 => constants.%complete_type.3d0
|
||||
// CHECK:STDOUT: %Class.elem => constants.%Class.elem.da5
|
||||
// CHECK:STDOUT: %.loc15_12.1 => constants.%.cab
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness => constants.%Copy.impl_witness.843
|
||||
@@ -367,6 +368,7 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) {
|
||||
// CHECK:STDOUT: %pattern_type.466: type = pattern_type %Class [symbolic]
|
||||
// CHECK:STDOUT: %Class.Make.type: type = fn_type @Class.Make, @Class(%T) [symbolic]
|
||||
// CHECK:STDOUT: %Class.Make: %Class.Make.type = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %Class [symbolic]
|
||||
// CHECK:STDOUT: %Class.Make.specific_fn: <specific function> = specific_function %Class.Make, @Class.Make(%T) [symbolic]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -377,7 +379,7 @@ fn StaticMemberFunctionCall(T:! type) -> Class(T) {
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: %require_complete: <witness> = require_complete_type %Class.loc8_49.1 [symbolic = %require_complete (constants.%require_complete)]
|
||||
// CHECK:STDOUT: %Class.Make.type: type = fn_type @Class.Make, @Class(%T.loc8_29.1) [symbolic = %Class.Make.type (constants.%Class.Make.type)]
|
||||
// CHECK:STDOUT: %Class.Make: @StaticMemberFunctionCall.%Class.Make.type (%Class.Make.type) = struct_value () [symbolic = %Class.Make (constants.%Class.Make)]
|
||||
// CHECK:STDOUT: %Class.Make.specific_fn.loc10_18.2: <specific function> = specific_function %Class.Make, @Class.Make(%T.loc8_29.1) [symbolic = %Class.Make.specific_fn.loc10_18.2 (constants.%Class.Make.specific_fn)]
|
||||
|
||||
@@ -202,9 +202,9 @@ class C(T:! Core.Copy) {
|
||||
// CHECK:STDOUT: %pattern_type.loc10_22: type = pattern_type %T.binding.as_type [symbolic = %pattern_type.loc10_22 (constants.%pattern_type.9b9f0c.1)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc10_12: <witness> = require_complete_type %Class [symbolic = %require_complete.loc10_12 (constants.%require_complete.904)]
|
||||
// CHECK:STDOUT: %require_complete.loc10_25: <witness> = require_complete_type %T.binding.as_type [symbolic = %require_complete.loc10_25 (constants.%require_complete.67c)]
|
||||
// CHECK:STDOUT: %require_complete.loc10: <witness> = require_complete_type %Class [symbolic = %require_complete.loc10 (constants.%require_complete.904)]
|
||||
// CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T.binding.as_type [symbolic = %Class.elem (constants.%Class.elem)]
|
||||
// CHECK:STDOUT: %require_complete.loc11: <witness> = require_complete_type %T.binding.as_type [symbolic = %require_complete.loc11 (constants.%require_complete.67c)]
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness: <witness> = lookup_impl_witness %T, @Copy [symbolic = %Copy.lookup_impl_witness (constants.%Copy.lookup_impl_witness.58d)]
|
||||
// CHECK:STDOUT: %.loc11_16.3: type = fn_type_with_self_type constants.%Copy.Op.type, %T [symbolic = %.loc11_16.3 (constants.%.72e)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc11_16.2: @Class.G.%.loc11_16.3 (%.72e) = impl_witness_access %Copy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc11_16.2 (constants.%impl.elem0.07b)]
|
||||
|
||||
@@ -88,6 +88,7 @@ fn AccessMissingConcrete(x: Derived(i32)) -> i32 {
|
||||
// CHECK:STDOUT: %pattern_type.9b9f0c.1: type = pattern_type %T.binding.as_type [symbolic]
|
||||
// CHECK:STDOUT: %Base.ab3: type = class_type @Base, @Base(%T.binding.as_type) [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.b68: <witness> = require_complete_type %Base.ab3 [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.67c: <witness> = require_complete_type %T.binding.as_type [symbolic]
|
||||
// CHECK:STDOUT: %Derived.elem.d6f: type = unbound_element_type %Derived.ad7, %T.binding.as_type [symbolic]
|
||||
// CHECK:STDOUT: %Base.elem.384: type = unbound_element_type %Base.ab3, %T.binding.as_type [symbolic]
|
||||
// CHECK:STDOUT: %Copy.Op.type: type = fn_type @Copy.Op [concrete]
|
||||
@@ -106,6 +107,7 @@ fn AccessMissingConcrete(x: Derived(i32)) -> i32 {
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: %Derived.elem: type = unbound_element_type %Derived.loc13_45.1, %T.binding.as_type [symbolic = %Derived.elem (constants.%Derived.elem.d6f)]
|
||||
// CHECK:STDOUT: %require_complete.loc15: <witness> = require_complete_type %T.binding.as_type [symbolic = %require_complete.loc15 (constants.%require_complete.67c)]
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness: <witness> = lookup_impl_witness %T.loc13_18.1, @Copy [symbolic = %Copy.lookup_impl_witness (constants.%Copy.lookup_impl_witness.58d)]
|
||||
// CHECK:STDOUT: %.loc15_11.3: type = fn_type_with_self_type constants.%Copy.Op.type, %T.loc13_18.1 [symbolic = %.loc15_11.3 (constants.%.72e)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc15_11.2: @AccessDerived.%.loc15_11.3 (%.72e) = impl_witness_access %Copy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc15_11.2 (constants.%impl.elem0.07b)]
|
||||
@@ -133,8 +135,9 @@ fn AccessMissingConcrete(x: Derived(i32)) -> i32 {
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: <elided>
|
||||
// CHECK:STDOUT: %Base: type = class_type @Base, @Base(%T.binding.as_type) [symbolic = %Base (constants.%Base.ab3)]
|
||||
// CHECK:STDOUT: %require_complete.loc21: <witness> = require_complete_type %Base [symbolic = %require_complete.loc21 (constants.%require_complete.b68)]
|
||||
// CHECK:STDOUT: %require_complete.loc21_11: <witness> = require_complete_type %Base [symbolic = %require_complete.loc21_11 (constants.%require_complete.b68)]
|
||||
// CHECK:STDOUT: %Base.elem: type = unbound_element_type %Base, %T.binding.as_type [symbolic = %Base.elem (constants.%Base.elem.384)]
|
||||
// CHECK:STDOUT: %require_complete.loc21_13: <witness> = require_complete_type %T.binding.as_type [symbolic = %require_complete.loc21_13 (constants.%require_complete.67c)]
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness: <witness> = lookup_impl_witness %T.loc19_15.1, @Copy [symbolic = %Copy.lookup_impl_witness (constants.%Copy.lookup_impl_witness.58d)]
|
||||
// CHECK:STDOUT: %.loc21_11.5: type = fn_type_with_self_type constants.%Copy.Op.type, %T.loc19_15.1 [symbolic = %.loc21_11.5 (constants.%.72e)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc21_11.2: @AccessBase.%.loc21_11.5 (%.72e) = impl_witness_access %Copy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc21_11.2 (constants.%impl.elem0.07b)]
|
||||
|
||||
@@ -320,9 +320,9 @@ fn Generic(T:! ()).WrongType() {}
|
||||
// CHECK:STDOUT: %pattern_type.loc7_22: type = pattern_type %T.binding.as_type [symbolic = %pattern_type.loc7_22 (constants.%pattern_type.9b9f0c.1)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc15_31: <witness> = require_complete_type %Class [symbolic = %require_complete.loc15_31 (constants.%require_complete.904)]
|
||||
// CHECK:STDOUT: %require_complete.loc15_44: <witness> = require_complete_type %T.binding.as_type [symbolic = %require_complete.loc15_44 (constants.%require_complete.67c)]
|
||||
// CHECK:STDOUT: %require_complete.loc15: <witness> = require_complete_type %Class [symbolic = %require_complete.loc15 (constants.%require_complete.904)]
|
||||
// CHECK:STDOUT: %Class.elem: type = unbound_element_type %Class, %T.binding.as_type [symbolic = %Class.elem (constants.%Class.elem)]
|
||||
// CHECK:STDOUT: %require_complete.loc16: <witness> = require_complete_type %T.binding.as_type [symbolic = %require_complete.loc16 (constants.%require_complete.67c)]
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness: <witness> = lookup_impl_witness %T.loc7, @Copy [symbolic = %Copy.lookup_impl_witness (constants.%Copy.lookup_impl_witness.58d)]
|
||||
// CHECK:STDOUT: %.loc16_14.3: type = fn_type_with_self_type constants.%Copy.Op.type, %T.loc7 [symbolic = %.loc16_14.3 (constants.%.72e)]
|
||||
// CHECK:STDOUT: %impl.elem0.loc16_14.2: @Class.G.%.loc16_14.3 (%.72e) = impl_witness_access %Copy.lookup_impl_witness, element0 [symbolic = %impl.elem0.loc16_14.2 (constants.%impl.elem0.07b)]
|
||||
|
||||
@@ -264,8 +264,8 @@ fn Test() -> i32 {
|
||||
// CHECK:STDOUT: %pattern_type.loc9_14: type = pattern_type %Inner [symbolic = %pattern_type.loc9_14 (constants.%pattern_type.611)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc9_17: <witness> = require_complete_type %Inner [symbolic = %require_complete.loc9_17 (constants.%require_complete.e6c)]
|
||||
// CHECK:STDOUT: %require_complete.loc9_9: <witness> = require_complete_type %T.binding.as_type [symbolic = %require_complete.loc9_9 (constants.%require_complete.67c)]
|
||||
// CHECK:STDOUT: %require_complete.loc9_17: <witness> = require_complete_type %Inner [symbolic = %require_complete.loc9_17 (constants.%require_complete.e6c)]
|
||||
// CHECK:STDOUT: %struct_type.n: type = struct_type {.n: @Outer.F.%T.binding.as_type (%T.binding.as_type)} [symbolic = %struct_type.n (constants.%struct_type.n.47a)]
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness: <witness> = lookup_impl_witness %T, @Copy [symbolic = %Copy.lookup_impl_witness (constants.%Copy.lookup_impl_witness.58d)]
|
||||
// CHECK:STDOUT: %.loc9_38: type = fn_type_with_self_type constants.%Copy.Op.type, %T [symbolic = %.loc9_38 (constants.%.72e)]
|
||||
@@ -405,8 +405,8 @@ fn Test() -> i32 {
|
||||
// CHECK:STDOUT: %pattern_type.loc9_14 => constants.%pattern_type.35b
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc9_17 => constants.%complete_type.54b
|
||||
// CHECK:STDOUT: %require_complete.loc9_9 => constants.%complete_type.f8a
|
||||
// CHECK:STDOUT: %require_complete.loc9_17 => constants.%complete_type.54b
|
||||
// CHECK:STDOUT: %struct_type.n => constants.%struct_type.n.033
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness => constants.%Copy.impl_witness.f17
|
||||
// CHECK:STDOUT: %.loc9_38 => constants.%.f79
|
||||
@@ -444,8 +444,8 @@ fn Test() -> i32 {
|
||||
// CHECK:STDOUT: %Inner.facet.921: %Inner.type.6ef = facet_value %C.131, (%Inner.impl_witness.eb2) [symbolic]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type.357: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %require_complete.944: <witness> = require_complete_type %T [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.4fd: <witness> = require_complete_type %C.131 [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.944: <witness> = require_complete_type %T [symbolic]
|
||||
// CHECK:STDOUT: %.1f8: require_specific_def_type = require_specific_def @C.as.Inner.impl(%T) [symbolic]
|
||||
// CHECK:STDOUT: %Inner.lookup_impl_witness: <witness> = lookup_impl_witness %C.131, @Inner, @Inner(%T) [symbolic]
|
||||
// CHECK:STDOUT: %Inner.facet.f78: %Inner.type.6ef = facet_value %C.131, (%Inner.lookup_impl_witness) [symbolic]
|
||||
@@ -720,8 +720,8 @@ fn Test() -> i32 {
|
||||
// CHECK:STDOUT: %pattern_type.loc11_23: type = pattern_type %T [symbolic = %pattern_type.loc11_23 (constants.%pattern_type.51d)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc11_26: <witness> = require_complete_type %T [symbolic = %require_complete.loc11_26 (constants.%require_complete.944)]
|
||||
// CHECK:STDOUT: %require_complete.loc11_16: <witness> = require_complete_type %C [symbolic = %require_complete.loc11_16 (constants.%require_complete.4fd)]
|
||||
// CHECK:STDOUT: %require_complete.loc11_26: <witness> = require_complete_type %T [symbolic = %require_complete.loc11_26 (constants.%require_complete.944)]
|
||||
// CHECK:STDOUT: %Inner.type: type = facet_type <@Inner, @Inner(%T)> [symbolic = %Inner.type (constants.%Inner.type.6ef)]
|
||||
// CHECK:STDOUT: %require_complete.loc11_48: <witness> = require_complete_type %Inner.type [symbolic = %require_complete.loc11_48 (constants.%require_complete.8b6)]
|
||||
// CHECK:STDOUT: %Inner.assoc_type: type = assoc_entity_type @Inner, @Inner(%T) [symbolic = %Inner.assoc_type (constants.%Inner.assoc_type.be2)]
|
||||
@@ -921,8 +921,8 @@ fn Test() -> i32 {
|
||||
// CHECK:STDOUT: %pattern_type.loc11_23 => constants.%pattern_type.7ce
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc11_26 => constants.%complete_type.f8a
|
||||
// CHECK:STDOUT: %require_complete.loc11_16 => constants.%complete_type.357
|
||||
// CHECK:STDOUT: %require_complete.loc11_26 => constants.%complete_type.f8a
|
||||
// CHECK:STDOUT: %Inner.type => constants.%Inner.type.94a
|
||||
// CHECK:STDOUT: %require_complete.loc11_48 => constants.%complete_type.087
|
||||
// CHECK:STDOUT: %Inner.assoc_type => constants.%Inner.assoc_type.564
|
||||
|
||||
@@ -265,10 +265,10 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc20_19: <witness> = require_complete_type %T [symbolic = %require_complete.loc20_19 (constants.%require_complete.944)]
|
||||
// CHECK:STDOUT: %require_complete.loc20_42: <witness> = require_complete_type %tuple.type [symbolic = %require_complete.loc20_42 (constants.%require_complete.220)]
|
||||
// CHECK:STDOUT: %Class.GetNoDeduce.type: type = fn_type @Class.GetNoDeduce, @Class(%T) [symbolic = %Class.GetNoDeduce.type (constants.%Class.GetNoDeduce.type.cf2)]
|
||||
// CHECK:STDOUT: %Class.GetNoDeduce: @Class.GetNoDeduce.%Class.GetNoDeduce.type (%Class.GetNoDeduce.type.cf2) = struct_value () [symbolic = %Class.GetNoDeduce (constants.%Class.GetNoDeduce.1a5)]
|
||||
// CHECK:STDOUT: %Class.GetNoDeduce.specific_fn.loc20_53.2: <specific function> = specific_function %Class.GetNoDeduce, @Class.GetNoDeduce(%T, %U.loc20_24.1) [symbolic = %Class.GetNoDeduce.specific_fn.loc20_53.2 (constants.%Class.GetNoDeduce.specific_fn.710)]
|
||||
// CHECK:STDOUT: %require_complete.loc20_70: <witness> = require_complete_type %tuple.type [symbolic = %require_complete.loc20_70 (constants.%require_complete.220)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn(%x.param: @Class.GetNoDeduce.%T (%T)) -> out %return.param: @Class.GetNoDeduce.%tuple.type (%tuple.type.a5e) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
@@ -353,10 +353,10 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc20_19 => constants.%require_complete.944
|
||||
// CHECK:STDOUT: %require_complete.loc20_42 => constants.%require_complete.220
|
||||
// CHECK:STDOUT: %Class.GetNoDeduce.type => constants.%Class.GetNoDeduce.type.cf2
|
||||
// CHECK:STDOUT: %Class.GetNoDeduce => constants.%Class.GetNoDeduce.1a5
|
||||
// CHECK:STDOUT: %Class.GetNoDeduce.specific_fn.loc20_53.2 => constants.%Class.GetNoDeduce.specific_fn.710
|
||||
// CHECK:STDOUT: %require_complete.loc20_70 => constants.%require_complete.220
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @Class(constants.%A) {
|
||||
@@ -395,9 +395,9 @@ fn CallGenericMethodWithNonDeducedParam(c: Class(A)) -> (A, B) {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc20_19 => constants.%complete_type.357
|
||||
// CHECK:STDOUT: %require_complete.loc20_42 => constants.%complete_type.f71
|
||||
// CHECK:STDOUT: %Class.GetNoDeduce.type => constants.%Class.GetNoDeduce.type.902
|
||||
// CHECK:STDOUT: %Class.GetNoDeduce => constants.%Class.GetNoDeduce.472
|
||||
// CHECK:STDOUT: %Class.GetNoDeduce.specific_fn.loc20_53.2 => constants.%Class.GetNoDeduce.specific_fn.83b
|
||||
// CHECK:STDOUT: %require_complete.loc20_70 => constants.%complete_type.f71
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+8
-8
@@ -163,9 +163,9 @@ fn G() {
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %require_complete.944: <witness> = require_complete_type %T [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.ff3: <witness> = require_complete_type %array_type.3ec [symbolic]
|
||||
// CHECK:STDOUT: %F.specific_fn.643: <specific function> = specific_function %F, @F(%T) [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.944: <witness> = require_complete_type %T [symbolic]
|
||||
// CHECK:STDOUT: %.64f: form = init_form %C, call_param0 [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.7c7: type = pattern_type %C [concrete]
|
||||
// CHECK:STDOUT: %G.type: type = fn_type @G [concrete]
|
||||
@@ -254,9 +254,9 @@ fn G() {
|
||||
// CHECK:STDOUT: %pattern_type.loc6_32: type = pattern_type %T.loc6_6.1 [symbolic = %pattern_type.loc6_32 (constants.%pattern_type.51d)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc6_35: <witness> = require_complete_type %T.loc6_6.1 [symbolic = %require_complete.loc6_35 (constants.%require_complete.944)]
|
||||
// CHECK:STDOUT: %require_complete.loc6_17: <witness> = require_complete_type %array_type.loc6_29.1 [symbolic = %require_complete.loc6_17 (constants.%require_complete.ff3)]
|
||||
// CHECK:STDOUT: %F.specific_fn.loc6_46.2: <specific function> = specific_function constants.%F, @F(%T.loc6_6.1) [symbolic = %F.specific_fn.loc6_46.2 (constants.%F.specific_fn.643)]
|
||||
// CHECK:STDOUT: %require_complete.loc6_50: <witness> = require_complete_type %T.loc6_6.1 [symbolic = %require_complete.loc6_50 (constants.%require_complete.944)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn(%a.param: @F.%array_type.loc6_29.1 (%array_type.3ec)) -> out %return.param: @F.%T.loc6_6.1 (%T) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
@@ -322,9 +322,9 @@ fn G() {
|
||||
// CHECK:STDOUT: %pattern_type.loc6_32 => constants.%pattern_type.51d
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc6_35 => constants.%require_complete.944
|
||||
// CHECK:STDOUT: %require_complete.loc6_17 => constants.%require_complete.ff3
|
||||
// CHECK:STDOUT: %F.specific_fn.loc6_46.2 => constants.%F.specific_fn.643
|
||||
// CHECK:STDOUT: %require_complete.loc6_50 => constants.%require_complete.944
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @F(constants.%C) {
|
||||
@@ -335,9 +335,9 @@ fn G() {
|
||||
// CHECK:STDOUT: %pattern_type.loc6_32 => constants.%pattern_type.7c7
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc6_35 => constants.%complete_type.357
|
||||
// CHECK:STDOUT: %require_complete.loc6_17 => constants.%complete_type.c7a
|
||||
// CHECK:STDOUT: %F.specific_fn.loc6_46.2 => constants.%F.specific_fn.540
|
||||
// CHECK:STDOUT: %require_complete.loc6_50 => constants.%complete_type.357
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: --- bound_only.carbon
|
||||
@@ -755,9 +755,9 @@ fn G() {
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %require_complete.944: <witness> = require_complete_type %T [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.fc9: <witness> = require_complete_type %array_type.a0b [symbolic]
|
||||
// CHECK:STDOUT: %F.specific_fn.643: <specific function> = specific_function %F, @F(%T) [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.944: <witness> = require_complete_type %T [symbolic]
|
||||
// CHECK:STDOUT: %.64f: form = init_form %C, call_param0 [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.7c7: type = pattern_type %C [concrete]
|
||||
// CHECK:STDOUT: %G.type: type = fn_type @G [concrete]
|
||||
@@ -852,9 +852,9 @@ fn G() {
|
||||
// CHECK:STDOUT: %pattern_type.loc6_32: type = pattern_type %T.loc6_6.1 [symbolic = %pattern_type.loc6_32 (constants.%pattern_type.51d1c4.1)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc6_35: <witness> = require_complete_type %T.loc6_6.1 [symbolic = %require_complete.loc6_35 (constants.%require_complete.944)]
|
||||
// CHECK:STDOUT: %require_complete.loc6_17: <witness> = require_complete_type %array_type.loc6_29.1 [symbolic = %require_complete.loc6_17 (constants.%require_complete.fc9)]
|
||||
// CHECK:STDOUT: %F.specific_fn.loc6_46.2: <specific function> = specific_function constants.%F, @F(%T.loc6_6.1) [symbolic = %F.specific_fn.loc6_46.2 (constants.%F.specific_fn.643)]
|
||||
// CHECK:STDOUT: %require_complete.loc6_50: <witness> = require_complete_type %T.loc6_6.1 [symbolic = %require_complete.loc6_50 (constants.%require_complete.944)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn(%a.param: @F.%array_type.loc6_29.1 (%array_type.a0b)) -> out %return.param: @F.%T.loc6_6.1 (%T) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
@@ -920,9 +920,9 @@ fn G() {
|
||||
// CHECK:STDOUT: %pattern_type.loc6_32 => constants.%pattern_type.51d1c4.1
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc6_35 => constants.%require_complete.944
|
||||
// CHECK:STDOUT: %require_complete.loc6_17 => constants.%require_complete.fc9
|
||||
// CHECK:STDOUT: %F.specific_fn.loc6_46.2 => constants.%F.specific_fn.643
|
||||
// CHECK:STDOUT: %require_complete.loc6_50 => constants.%require_complete.944
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @F(constants.%C) {
|
||||
@@ -933,9 +933,9 @@ fn G() {
|
||||
// CHECK:STDOUT: %pattern_type.loc6_32 => constants.%pattern_type.7c7
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc6_35 => constants.%complete_type.357
|
||||
// CHECK:STDOUT: %require_complete.loc6_17 => constants.%complete_type.b8b
|
||||
// CHECK:STDOUT: %F.specific_fn.loc6_46.2 => constants.%F.specific_fn.540
|
||||
// CHECK:STDOUT: %require_complete.loc6_50 => constants.%complete_type.357
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: --- fail_type_mismatch.carbon
|
||||
|
||||
+8
-8
@@ -87,8 +87,8 @@ fn G() -> i32 {
|
||||
// CHECK:STDOUT: %pattern_type.51d: type = pattern_type %T [symbolic]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %require_complete.944: <witness> = require_complete_type %T [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.32c: <witness> = require_complete_type %C.5a3 [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.944: <witness> = require_complete_type %T [symbolic]
|
||||
// CHECK:STDOUT: %F.specific_fn.643: <specific function> = specific_function %F, @F(%T) [symbolic]
|
||||
// CHECK:STDOUT: %C.302: type = class_type @C, @C(%D) [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.a7e: type = pattern_type %C.302 [concrete]
|
||||
@@ -193,8 +193,8 @@ fn G() -> i32 {
|
||||
// CHECK:STDOUT: %pattern_type.loc7_25: type = pattern_type %T.loc7_6.1 [symbolic = %pattern_type.loc7_25 (constants.%pattern_type.51d)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc7_28: <witness> = require_complete_type %T.loc7_6.1 [symbolic = %require_complete.loc7_28 (constants.%require_complete.944)]
|
||||
// CHECK:STDOUT: %require_complete.loc7_17: <witness> = require_complete_type %C.loc7_22.1 [symbolic = %require_complete.loc7_17 (constants.%require_complete.32c)]
|
||||
// CHECK:STDOUT: %require_complete.loc7_28: <witness> = require_complete_type %T.loc7_6.1 [symbolic = %require_complete.loc7_28 (constants.%require_complete.944)]
|
||||
// CHECK:STDOUT: %F.specific_fn.loc7_39.2: <specific function> = specific_function constants.%F, @F(%T.loc7_6.1) [symbolic = %F.specific_fn.loc7_39.2 (constants.%F.specific_fn.643)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn(%p.param: @F.%C.loc7_22.1 (%C.5a3)) -> out %return.param: @F.%T.loc7_6.1 (%T) {
|
||||
@@ -232,8 +232,8 @@ fn G() -> i32 {
|
||||
// CHECK:STDOUT: %pattern_type.loc7_25 => constants.%pattern_type.51d
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc7_28 => constants.%require_complete.944
|
||||
// CHECK:STDOUT: %require_complete.loc7_17 => constants.%require_complete.32c
|
||||
// CHECK:STDOUT: %require_complete.loc7_28 => constants.%require_complete.944
|
||||
// CHECK:STDOUT: %F.specific_fn.loc7_39.2 => constants.%F.specific_fn.643
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -251,8 +251,8 @@ fn G() -> i32 {
|
||||
// CHECK:STDOUT: %pattern_type.loc7_25 => constants.%pattern_type.9c8
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc7_28 => constants.%complete_type
|
||||
// CHECK:STDOUT: %require_complete.loc7_17 => constants.%complete_type
|
||||
// CHECK:STDOUT: %require_complete.loc7_28 => constants.%complete_type
|
||||
// CHECK:STDOUT: %F.specific_fn.loc7_39.2 => constants.%F.specific_fn.e8a
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -458,8 +458,8 @@ fn G() -> i32 {
|
||||
// CHECK:STDOUT: %pattern_type.eee: type = pattern_type %tuple.type.a5e [symbolic]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %require_complete.220: <witness> = require_complete_type %tuple.type.a5e [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.41c: <witness> = require_complete_type %Inner.e21 [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.220: <witness> = require_complete_type %tuple.type.a5e [symbolic]
|
||||
// CHECK:STDOUT: %F.specific_fn.a54: <specific function> = specific_function %F, @F(%T, %U) [symbolic]
|
||||
// CHECK:STDOUT: %Outer.eed: type = class_type @Outer, @Outer(%C) [concrete]
|
||||
// CHECK:STDOUT: %Inner.type.e8c: type = generic_class_type @Inner, @Outer(%C) [concrete]
|
||||
@@ -627,8 +627,8 @@ fn G() -> i32 {
|
||||
// CHECK:STDOUT: %pattern_type.loc13_48: type = pattern_type %tuple.type [symbolic = %pattern_type.loc13_48 (constants.%pattern_type.eee)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc13_56: <witness> = require_complete_type %tuple.type [symbolic = %require_complete.loc13_56 (constants.%require_complete.220)]
|
||||
// CHECK:STDOUT: %require_complete.loc13_27: <witness> = require_complete_type %Inner.loc13_45.1 [symbolic = %require_complete.loc13_27 (constants.%require_complete.41c)]
|
||||
// CHECK:STDOUT: %require_complete.loc13_56: <witness> = require_complete_type %tuple.type [symbolic = %require_complete.loc13_56 (constants.%require_complete.220)]
|
||||
// CHECK:STDOUT: %F.specific_fn.loc13_67.2: <specific function> = specific_function constants.%F, @F(%T.loc13_6.1, %U.loc13_16.1) [symbolic = %F.specific_fn.loc13_67.2 (constants.%F.specific_fn.a54)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn(%p.param: @F.%Inner.loc13_45.1 (%Inner.e21)) -> out %return.param: @F.%tuple.type (%tuple.type.a5e) {
|
||||
@@ -681,8 +681,8 @@ fn G() -> i32 {
|
||||
// CHECK:STDOUT: %pattern_type.loc13_48 => constants.%pattern_type.eee
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc13_56 => constants.%require_complete.220
|
||||
// CHECK:STDOUT: %require_complete.loc13_27 => constants.%require_complete.41c
|
||||
// CHECK:STDOUT: %require_complete.loc13_56 => constants.%require_complete.220
|
||||
// CHECK:STDOUT: %F.specific_fn.loc13_67.2 => constants.%F.specific_fn.a54
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -715,8 +715,8 @@ fn G() -> i32 {
|
||||
// CHECK:STDOUT: %pattern_type.loc13_48 => constants.%pattern_type.881
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc13_56 => constants.%complete_type.734
|
||||
// CHECK:STDOUT: %require_complete.loc13_27 => constants.%complete_type.357
|
||||
// CHECK:STDOUT: %require_complete.loc13_56 => constants.%complete_type.734
|
||||
// CHECK:STDOUT: %F.specific_fn.loc13_67.2 => constants.%F.specific_fn.107
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+4
-4
@@ -77,9 +77,9 @@ fn G(pair: (C, D)) -> D {
|
||||
// CHECK:STDOUT: %pattern_type.946: type = pattern_type %U [symbolic]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %require_complete.441: <witness> = require_complete_type %U [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.220: <witness> = require_complete_type %tuple.type.a5e [symbolic]
|
||||
// CHECK:STDOUT: %F.specific_fn.a54: <specific function> = specific_function %F, @F(%T, %U) [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.441: <witness> = require_complete_type %U [symbolic]
|
||||
// CHECK:STDOUT: %tuple.a0a: %tuple.type.24b = tuple_value (%C, %D) [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.281: type = tuple_type (%C, %D) [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.881: type = pattern_type %tuple.type.281 [concrete]
|
||||
@@ -181,9 +181,9 @@ fn G(pair: (C, D)) -> D {
|
||||
// CHECK:STDOUT: %pattern_type.loc7_40: type = pattern_type %U.loc7_16.1 [symbolic = %pattern_type.loc7_40 (constants.%pattern_type.946)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc7_43: <witness> = require_complete_type %U.loc7_16.1 [symbolic = %require_complete.loc7_43 (constants.%require_complete.441)]
|
||||
// CHECK:STDOUT: %require_complete.loc7_30: <witness> = require_complete_type %tuple.type [symbolic = %require_complete.loc7_30 (constants.%require_complete.220)]
|
||||
// CHECK:STDOUT: %F.specific_fn.loc7_54.2: <specific function> = specific_function constants.%F, @F(%T.loc7_6.1, %U.loc7_16.1) [symbolic = %F.specific_fn.loc7_54.2 (constants.%F.specific_fn.a54)]
|
||||
// CHECK:STDOUT: %require_complete.loc7_61: <witness> = require_complete_type %U.loc7_16.1 [symbolic = %require_complete.loc7_61 (constants.%require_complete.441)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn(%pair.param: @F.%tuple.type (%tuple.type.a5e)) -> out %return.param: @F.%U.loc7_16.1 (%U) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
@@ -216,9 +216,9 @@ fn G(pair: (C, D)) -> D {
|
||||
// CHECK:STDOUT: %pattern_type.loc7_40 => constants.%pattern_type.946
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc7_43 => constants.%require_complete.441
|
||||
// CHECK:STDOUT: %require_complete.loc7_30 => constants.%require_complete.220
|
||||
// CHECK:STDOUT: %F.specific_fn.loc7_54.2 => constants.%F.specific_fn.a54
|
||||
// CHECK:STDOUT: %require_complete.loc7_61 => constants.%require_complete.441
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: specific @F(constants.%C, constants.%D) {
|
||||
@@ -231,9 +231,9 @@ fn G(pair: (C, D)) -> D {
|
||||
// CHECK:STDOUT: %pattern_type.loc7_40 => constants.%pattern_type.9c8
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc7_43 => constants.%complete_type.357
|
||||
// CHECK:STDOUT: %require_complete.loc7_30 => constants.%complete_type.734
|
||||
// CHECK:STDOUT: %F.specific_fn.loc7_54.2 => constants.%F.specific_fn.107
|
||||
// CHECK:STDOUT: %require_complete.loc7_61 => constants.%complete_type.357
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: --- tuple_value.carbon
|
||||
|
||||
+15
-15
@@ -83,8 +83,8 @@ fn G(p: C*) -> const C {
|
||||
// CHECK:STDOUT: %pattern_type.51d: type = pattern_type %T [symbolic]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %require_complete.944: <witness> = require_complete_type %T [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.ef1: <witness> = require_complete_type %ptr.e8f [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.944: <witness> = require_complete_type %T [symbolic]
|
||||
// CHECK:STDOUT: %F.specific_fn.643: <specific function> = specific_function %F, @F(%T) [symbolic]
|
||||
// CHECK:STDOUT: %ptr.31e: type = ptr_type %C [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.506: type = pattern_type %ptr.31e [concrete]
|
||||
@@ -167,8 +167,8 @@ fn G(p: C*) -> const C {
|
||||
// CHECK:STDOUT: %pattern_type.loc6_23: type = pattern_type %T.loc6_6.1 [symbolic = %pattern_type.loc6_23 (constants.%pattern_type.51d)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc6_26: <witness> = require_complete_type %T.loc6_6.1 [symbolic = %require_complete.loc6_26 (constants.%require_complete.944)]
|
||||
// CHECK:STDOUT: %require_complete.loc6_17: <witness> = require_complete_type %ptr.loc6_20.1 [symbolic = %require_complete.loc6_17 (constants.%require_complete.ef1)]
|
||||
// CHECK:STDOUT: %require_complete.loc6_26: <witness> = require_complete_type %T.loc6_6.1 [symbolic = %require_complete.loc6_26 (constants.%require_complete.944)]
|
||||
// CHECK:STDOUT: %F.specific_fn.loc6_37.2: <specific function> = specific_function constants.%F, @F(%T.loc6_6.1) [symbolic = %F.specific_fn.loc6_37.2 (constants.%F.specific_fn.643)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn(%p.param: @F.%ptr.loc6_20.1 (%ptr.e8f)) -> out %return.param: @F.%T.loc6_6.1 (%T) {
|
||||
@@ -200,8 +200,8 @@ fn G(p: C*) -> const C {
|
||||
// CHECK:STDOUT: %pattern_type.loc6_23 => constants.%pattern_type.51d
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc6_26 => constants.%require_complete.944
|
||||
// CHECK:STDOUT: %require_complete.loc6_17 => constants.%require_complete.ef1
|
||||
// CHECK:STDOUT: %require_complete.loc6_26 => constants.%require_complete.944
|
||||
// CHECK:STDOUT: %F.specific_fn.loc6_37.2 => constants.%F.specific_fn.643
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -213,8 +213,8 @@ fn G(p: C*) -> const C {
|
||||
// CHECK:STDOUT: %pattern_type.loc6_23 => constants.%pattern_type.7c7
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc6_26 => constants.%complete_type.357
|
||||
// CHECK:STDOUT: %require_complete.loc6_17 => constants.%complete_type.17a
|
||||
// CHECK:STDOUT: %require_complete.loc6_26 => constants.%complete_type.357
|
||||
// CHECK:STDOUT: %F.specific_fn.loc6_37.2 => constants.%F.specific_fn.540
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -235,8 +235,8 @@ fn G(p: C*) -> const C {
|
||||
// CHECK:STDOUT: %pattern_type.51d: type = pattern_type %T [symbolic]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %require_complete.944: <witness> = require_complete_type %T [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.0c1: <witness> = require_complete_type %ptr.a15 [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.944: <witness> = require_complete_type %T [symbolic]
|
||||
// CHECK:STDOUT: %F.specific_fn.643: <specific function> = specific_function %F, @F(%T) [symbolic]
|
||||
// CHECK:STDOUT: %const.0e5: type = const_type %C [concrete]
|
||||
// CHECK:STDOUT: %ptr.c45: type = ptr_type %const.0e5 [concrete]
|
||||
@@ -323,8 +323,8 @@ fn G(p: C*) -> const C {
|
||||
// CHECK:STDOUT: %pattern_type.loc6_29: type = pattern_type %T.loc6_6.1 [symbolic = %pattern_type.loc6_29 (constants.%pattern_type.51d)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc6_32: <witness> = require_complete_type %T.loc6_6.1 [symbolic = %require_complete.loc6_32 (constants.%require_complete.944)]
|
||||
// CHECK:STDOUT: %require_complete.loc6_17: <witness> = require_complete_type %ptr.loc6_26.1 [symbolic = %require_complete.loc6_17 (constants.%require_complete.0c1)]
|
||||
// CHECK:STDOUT: %require_complete.loc6_32: <witness> = require_complete_type %T.loc6_6.1 [symbolic = %require_complete.loc6_32 (constants.%require_complete.944)]
|
||||
// CHECK:STDOUT: %F.specific_fn.loc6_43.2: <specific function> = specific_function constants.%F, @F(%T.loc6_6.1) [symbolic = %F.specific_fn.loc6_43.2 (constants.%F.specific_fn.643)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn(%p.param: @F.%ptr.loc6_26.1 (%ptr.a15)) -> out %return.param: @F.%T.loc6_6.1 (%T) {
|
||||
@@ -357,8 +357,8 @@ fn G(p: C*) -> const C {
|
||||
// CHECK:STDOUT: %pattern_type.loc6_29 => constants.%pattern_type.51d
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc6_32 => constants.%require_complete.944
|
||||
// CHECK:STDOUT: %require_complete.loc6_17 => constants.%require_complete.0c1
|
||||
// CHECK:STDOUT: %require_complete.loc6_32 => constants.%require_complete.944
|
||||
// CHECK:STDOUT: %F.specific_fn.loc6_43.2 => constants.%F.specific_fn.643
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -371,8 +371,8 @@ fn G(p: C*) -> const C {
|
||||
// CHECK:STDOUT: %pattern_type.loc6_29 => constants.%pattern_type.7c7
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc6_32 => constants.%complete_type.357
|
||||
// CHECK:STDOUT: %require_complete.loc6_17 => constants.%complete_type.e6f
|
||||
// CHECK:STDOUT: %require_complete.loc6_32 => constants.%complete_type.357
|
||||
// CHECK:STDOUT: %F.specific_fn.loc6_43.2 => constants.%F.specific_fn.540
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -392,8 +392,8 @@ fn G(p: C*) -> const C {
|
||||
// CHECK:STDOUT: %pattern_type.51d: type = pattern_type %T [symbolic]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %require_complete.944: <witness> = require_complete_type %T [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.ef1: <witness> = require_complete_type %ptr.e8f [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.944: <witness> = require_complete_type %T [symbolic]
|
||||
// CHECK:STDOUT: %F.specific_fn.643: <specific function> = specific_function %F, @F(%T) [symbolic]
|
||||
// CHECK:STDOUT: %const: type = const_type %C [concrete]
|
||||
// CHECK:STDOUT: %ptr.c45: type = ptr_type %const [concrete]
|
||||
@@ -479,8 +479,8 @@ fn G(p: C*) -> const C {
|
||||
// CHECK:STDOUT: %pattern_type.loc6_23: type = pattern_type %T.loc6_6.1 [symbolic = %pattern_type.loc6_23 (constants.%pattern_type.51d)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc6_26: <witness> = require_complete_type %T.loc6_6.1 [symbolic = %require_complete.loc6_26 (constants.%require_complete.944)]
|
||||
// CHECK:STDOUT: %require_complete.loc6_17: <witness> = require_complete_type %ptr.loc6_20.1 [symbolic = %require_complete.loc6_17 (constants.%require_complete.ef1)]
|
||||
// CHECK:STDOUT: %require_complete.loc6_26: <witness> = require_complete_type %T.loc6_6.1 [symbolic = %require_complete.loc6_26 (constants.%require_complete.944)]
|
||||
// CHECK:STDOUT: %F.specific_fn.loc6_37.2: <specific function> = specific_function constants.%F, @F(%T.loc6_6.1) [symbolic = %F.specific_fn.loc6_37.2 (constants.%F.specific_fn.643)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn(%p.param: @F.%ptr.loc6_20.1 (%ptr.e8f)) -> out %return.param: @F.%T.loc6_6.1 (%T) {
|
||||
@@ -512,8 +512,8 @@ fn G(p: C*) -> const C {
|
||||
// CHECK:STDOUT: %pattern_type.loc6_23 => constants.%pattern_type.51d
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc6_26 => constants.%require_complete.944
|
||||
// CHECK:STDOUT: %require_complete.loc6_17 => constants.%require_complete.ef1
|
||||
// CHECK:STDOUT: %require_complete.loc6_26 => constants.%require_complete.944
|
||||
// CHECK:STDOUT: %F.specific_fn.loc6_37.2 => constants.%F.specific_fn.643
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -525,8 +525,8 @@ fn G(p: C*) -> const C {
|
||||
// CHECK:STDOUT: %pattern_type.loc6_23 => constants.%pattern_type.03b
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc6_26 => constants.%complete_type.357
|
||||
// CHECK:STDOUT: %require_complete.loc6_17 => constants.%complete_type.e6f
|
||||
// CHECK:STDOUT: %require_complete.loc6_26 => constants.%complete_type.357
|
||||
// CHECK:STDOUT: %F.specific_fn.loc6_37.2 => constants.%F.specific_fn.98a
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -547,8 +547,8 @@ fn G(p: C*) -> const C {
|
||||
// CHECK:STDOUT: %pattern_type.51d: type = pattern_type %T [symbolic]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %require_complete.944: <witness> = require_complete_type %T [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.0c1: <witness> = require_complete_type %ptr.a15 [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.944: <witness> = require_complete_type %T [symbolic]
|
||||
// CHECK:STDOUT: %F.specific_fn: <specific function> = specific_function %F, @F(%T) [symbolic]
|
||||
// CHECK:STDOUT: %ptr.31e: type = ptr_type %C [concrete]
|
||||
// CHECK:STDOUT: %pattern_type.506: type = pattern_type %ptr.31e [concrete]
|
||||
@@ -633,8 +633,8 @@ fn G(p: C*) -> const C {
|
||||
// CHECK:STDOUT: %pattern_type.loc6_29: type = pattern_type %T.loc6_6.1 [symbolic = %pattern_type.loc6_29 (constants.%pattern_type.51d)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc6_32: <witness> = require_complete_type %T.loc6_6.1 [symbolic = %require_complete.loc6_32 (constants.%require_complete.944)]
|
||||
// CHECK:STDOUT: %require_complete.loc6_17: <witness> = require_complete_type %ptr.loc6_26.1 [symbolic = %require_complete.loc6_17 (constants.%require_complete.0c1)]
|
||||
// CHECK:STDOUT: %require_complete.loc6_32: <witness> = require_complete_type %T.loc6_6.1 [symbolic = %require_complete.loc6_32 (constants.%require_complete.944)]
|
||||
// CHECK:STDOUT: %F.specific_fn.loc6_43.2: <specific function> = specific_function constants.%F, @F(%T.loc6_6.1) [symbolic = %F.specific_fn.loc6_43.2 (constants.%F.specific_fn)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn(%p.param: @F.%ptr.loc6_26.1 (%ptr.a15)) -> out %return.param: @F.%T.loc6_6.1 (%T) {
|
||||
@@ -664,8 +664,8 @@ fn G(p: C*) -> const C {
|
||||
// CHECK:STDOUT: %pattern_type.loc6_29 => constants.%pattern_type.51d
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc6_32 => constants.%require_complete.944
|
||||
// CHECK:STDOUT: %require_complete.loc6_17 => constants.%require_complete.0c1
|
||||
// CHECK:STDOUT: %require_complete.loc6_32 => constants.%require_complete.944
|
||||
// CHECK:STDOUT: %F.specific_fn.loc6_43.2 => constants.%F.specific_fn
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+9
-9
@@ -125,12 +125,12 @@ fn Read(y:! Core.IntLiteral()) {
|
||||
// CHECK:STDOUT: %.3676: type = fn_type_with_self_type %Copy.Op.type, %Copy.facet.3b9 [symbolic]
|
||||
// CHECK:STDOUT: %impl.elem0.053: %.3676 = impl_witness_access %Copy.lookup_impl_witness.7a8, element0 [symbolic]
|
||||
// CHECK:STDOUT: %specific_impl_fn.62b: <specific function> = specific_impl_function %impl.elem0.053, @Copy.Op(%Copy.facet.3b9) [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.45c: <witness> = require_complete_type %ptr.c9c [symbolic]
|
||||
// CHECK:STDOUT: %Optional.None.type.d56: type = fn_type @Optional.None, @Optional(%OptionalStorage.facet.01e) [symbolic]
|
||||
// CHECK:STDOUT: %Optional.None.b26: %Optional.None.type.d56 = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %Optional.Some.type.f74: type = fn_type @Optional.Some, @Optional(%OptionalStorage.facet.01e) [symbolic]
|
||||
// CHECK:STDOUT: %Optional.Some.076: %Optional.Some.type.f74 = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.0bc: <witness> = require_complete_type %Optional.e48 [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.45c: <witness> = require_complete_type %ptr.c9c [symbolic]
|
||||
// CHECK:STDOUT: %OrderedWith.type.270: type = generic_interface_type @OrderedWith [concrete]
|
||||
// CHECK:STDOUT: %OrderedWith.generic: %OrderedWith.type.270 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Other: type = symbolic_binding Other, 0 [symbolic]
|
||||
@@ -175,13 +175,13 @@ fn Read(y:! Core.IntLiteral()) {
|
||||
// CHECK:STDOUT: %pattern_type.615: type = pattern_type %IntRange.a89 [concrete]
|
||||
// CHECK:STDOUT: %Range.type: type = fn_type @Range [concrete]
|
||||
// CHECK:STDOUT: %Range: %Range.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [concrete]
|
||||
// CHECK:STDOUT: %complete_type.f8a: <witness> = complete_type_witness %i32.builtin [concrete]
|
||||
// CHECK:STDOUT: %IntRange.Make.type.045: type = fn_type @IntRange.Make, @IntRange(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %IntRange.Make.3e9: %IntRange.Make.type.045 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %Copy.impl_witness.f17: <witness> = impl_witness imports.%Copy.impl_witness_table.e76, @Int.as.Copy.impl(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %Int.as.Copy.impl.Op.type.546: type = fn_type @Int.as.Copy.impl.Op, @Int.as.Copy.impl(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %Int.as.Copy.impl.Op.664: %Int.as.Copy.impl.Op.type.546 = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %i32.builtin: type = int_type signed, %int_32 [concrete]
|
||||
// CHECK:STDOUT: %complete_type.f8a: <witness> = complete_type_witness %i32.builtin [concrete]
|
||||
// CHECK:STDOUT: %.14e: require_specific_def_type = require_specific_def @Int.as.Copy.impl(%int_32) [concrete]
|
||||
// CHECK:STDOUT: %IntRange.elem.a58: type = unbound_element_type %IntRange.a89, %i32 [concrete]
|
||||
// CHECK:STDOUT: %struct_type.start.end.d0a: type = struct_type {.start: %i32, .end: %i32} [concrete]
|
||||
@@ -490,8 +490,8 @@ fn Read(y:! Core.IntLiteral()) {
|
||||
// CHECK:STDOUT: %pattern_type.loc5_49: type = pattern_type %IntRange [symbolic = %pattern_type.loc5_49 (constants.%pattern_type.b16)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc5_52: <witness> = require_complete_type %IntRange [symbolic = %require_complete.loc5_52 (constants.%require_complete.8a1)]
|
||||
// CHECK:STDOUT: %require_complete.loc5_16: <witness> = require_complete_type %Int.loc5_28.1 [symbolic = %require_complete.loc5_16 (constants.%require_complete.9019d7.1)]
|
||||
// CHECK:STDOUT: %require_complete.loc5_52: <witness> = require_complete_type %IntRange [symbolic = %require_complete.loc5_52 (constants.%require_complete.8a1)]
|
||||
// CHECK:STDOUT: %struct_type.start.end: type = struct_type {.start: @IntRange.Make.%Int.loc5_28.1 (%Int.fc6021.1), .end: @IntRange.Make.%Int.loc5_28.1 (%Int.fc6021.1)} [symbolic = %struct_type.start.end (constants.%struct_type.start.end.ff1)]
|
||||
// CHECK:STDOUT: %.loc6_22.1: require_specific_def_type = require_specific_def @Int.as.Copy.impl(%N) [symbolic = %.loc6_22.1 (constants.%.4f8)]
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness: <witness> = lookup_impl_witness %Int.loc5_28.1, @Copy [symbolic = %Copy.lookup_impl_witness (constants.%Copy.lookup_impl_witness.7a8)]
|
||||
@@ -537,8 +537,8 @@ fn Read(y:! Core.IntLiteral()) {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc10_22: <witness> = require_complete_type %IntRange [symbolic = %require_complete.loc10_22 (constants.%require_complete.8a1)]
|
||||
// CHECK:STDOUT: %require_complete.loc10_45: <witness> = require_complete_type %Int.loc10_45.1 [symbolic = %require_complete.loc10_45 (constants.%require_complete.9019d7.1)]
|
||||
// CHECK:STDOUT: %IntRange.elem: type = unbound_element_type %IntRange, %Int.loc10_45.1 [symbolic = %IntRange.elem (constants.%IntRange.elem.541)]
|
||||
// CHECK:STDOUT: %require_complete.loc10_60: <witness> = require_complete_type %Int.loc10_45.1 [symbolic = %require_complete.loc10_60 (constants.%require_complete.9019d7.1)]
|
||||
// CHECK:STDOUT: %.loc10_60.3: require_specific_def_type = require_specific_def @Int.as.Copy.impl(%N) [symbolic = %.loc10_60.3 (constants.%.4f8)]
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness: <witness> = lookup_impl_witness %Int.loc10_45.1, @Copy [symbolic = %Copy.lookup_impl_witness (constants.%Copy.lookup_impl_witness.7a8)]
|
||||
// CHECK:STDOUT: %Copy.facet: %Copy.type = facet_value %Int.loc10_45.1, (%Copy.lookup_impl_witness) [symbolic = %Copy.facet (constants.%Copy.facet.3b9)]
|
||||
@@ -578,9 +578,9 @@ fn Read(y:! Core.IntLiteral()) {
|
||||
// CHECK:STDOUT: %pattern_type.loc11_47: type = pattern_type %Optional.loc11_75.1 [symbolic = %pattern_type.loc11_47 (constants.%pattern_type.0c2)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc11_75: <witness> = require_complete_type %Optional.loc11_75.1 [symbolic = %require_complete.loc11_75 (constants.%require_complete.0bc)]
|
||||
// CHECK:STDOUT: %require_complete.loc11_17: <witness> = require_complete_type %IntRange [symbolic = %require_complete.loc11_17 (constants.%require_complete.8a1)]
|
||||
// CHECK:STDOUT: %require_complete.loc11_31: <witness> = require_complete_type %ptr.loc11_44.1 [symbolic = %require_complete.loc11_31 (constants.%require_complete.45c)]
|
||||
// CHECK:STDOUT: %require_complete.loc11_75: <witness> = require_complete_type %Optional.loc11_75.1 [symbolic = %require_complete.loc11_75 (constants.%require_complete.0bc)]
|
||||
// CHECK:STDOUT: %require_complete.loc12: <witness> = require_complete_type %Int.loc11_43.1 [symbolic = %require_complete.loc12 (constants.%require_complete.9019d7.1)]
|
||||
// CHECK:STDOUT: %pattern_type.loc12: type = pattern_type %Int.loc11_43.1 [symbolic = %pattern_type.loc12 (constants.%pattern_type.764eab.1)]
|
||||
// CHECK:STDOUT: %.loc12_32.3: require_specific_def_type = require_specific_def @Int.as.Copy.impl(%N) [symbolic = %.loc12_32.3 (constants.%.4f8)]
|
||||
@@ -826,8 +826,8 @@ fn Read(y:! Core.IntLiteral()) {
|
||||
// CHECK:STDOUT: %pattern_type.loc5_49 => constants.%pattern_type.615
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc5_52 => constants.%complete_type.c45
|
||||
// CHECK:STDOUT: %require_complete.loc5_16 => constants.%complete_type.f8a
|
||||
// CHECK:STDOUT: %require_complete.loc5_52 => constants.%complete_type.c45
|
||||
// CHECK:STDOUT: %struct_type.start.end => constants.%struct_type.start.end.d0a
|
||||
// CHECK:STDOUT: %.loc6_22.1 => constants.%.14e
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness => constants.%Copy.impl_witness.f17
|
||||
@@ -1028,8 +1028,8 @@ fn Read(y:! Core.IntLiteral()) {
|
||||
// CHECK:STDOUT: %pattern_type.2: type = pattern_type %IntRange [symbolic = %pattern_type.2 (constants.%pattern_type.b16)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.1: <witness> = require_complete_type %IntRange [symbolic = %require_complete.1 (constants.%require_complete.8a1)]
|
||||
// CHECK:STDOUT: %require_complete.2: <witness> = require_complete_type %Int [symbolic = %require_complete.2 (constants.%require_complete.2ded7d.1)]
|
||||
// CHECK:STDOUT: %require_complete.1: <witness> = require_complete_type %Int [symbolic = %require_complete.1 (constants.%require_complete.2ded7d.1)]
|
||||
// CHECK:STDOUT: %require_complete.2: <witness> = require_complete_type %IntRange [symbolic = %require_complete.2 (constants.%require_complete.8a1)]
|
||||
// CHECK:STDOUT: %struct_type.start.end: type = struct_type {.start: @IntRange.Make.%Int (%Int.b6d943.1), .end: @IntRange.Make.%Int (%Int.b6d943.1)} [symbolic = %struct_type.start.end (constants.%struct_type.start.end.79a)]
|
||||
// CHECK:STDOUT: %.2: require_specific_def_type = require_specific_def @Int.as.Copy.impl(%N) [symbolic = %.2 (constants.%.b26)]
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness: <witness> = lookup_impl_witness %Int, @Copy [symbolic = %Copy.lookup_impl_witness (constants.%Copy.lookup_impl_witness.4c7)]
|
||||
|
||||
+8
-8
@@ -538,8 +538,8 @@ fn F() {
|
||||
// CHECK:STDOUT: %ExplicitAndAlsoDeduced.type: type = fn_type @ExplicitAndAlsoDeduced [concrete]
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [concrete]
|
||||
// CHECK:STDOUT: %ExplicitAndAlsoDeduced: %ExplicitAndAlsoDeduced.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %require_complete.ef1: <witness> = require_complete_type %ptr.e8f [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.944: <witness> = require_complete_type %T [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.ef1: <witness> = require_complete_type %ptr.e8f [symbolic]
|
||||
// CHECK:STDOUT: %ExplicitAndAlsoDeduced.specific_fn.7e7: <specific function> = specific_function %ExplicitAndAlsoDeduced, @ExplicitAndAlsoDeduced(%T) [symbolic]
|
||||
// CHECK:STDOUT: %ptr.643: type = ptr_type %A [concrete]
|
||||
// CHECK:STDOUT: %.a25: form = init_form %ptr.643, call_param0 [concrete]
|
||||
@@ -621,8 +621,8 @@ fn F() {
|
||||
// CHECK:STDOUT: %pattern_type.loc6_43: type = pattern_type %ptr.loc6_47.1 [symbolic = %pattern_type.loc6_43 (constants.%pattern_type.4f4)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc6_47: <witness> = require_complete_type %ptr.loc6_47.1 [symbolic = %require_complete.loc6_47 (constants.%require_complete.ef1)]
|
||||
// CHECK:STDOUT: %require_complete.loc6_38: <witness> = require_complete_type %T.loc6_27.1 [symbolic = %require_complete.loc6_38 (constants.%require_complete.944)]
|
||||
// CHECK:STDOUT: %require_complete.loc6_47: <witness> = require_complete_type %ptr.loc6_47.1 [symbolic = %require_complete.loc6_47 (constants.%require_complete.ef1)]
|
||||
// CHECK:STDOUT: %ExplicitAndAlsoDeduced.specific_fn.loc7_10.2: <specific function> = specific_function constants.%ExplicitAndAlsoDeduced, @ExplicitAndAlsoDeduced(%T.loc6_27.1) [symbolic = %ExplicitAndAlsoDeduced.specific_fn.loc7_10.2 (constants.%ExplicitAndAlsoDeduced.specific_fn.7e7)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn(%x.param: @ExplicitAndAlsoDeduced.%T.loc6_27.1 (%T)) -> out %return.param: @ExplicitAndAlsoDeduced.%ptr.loc6_47.1 (%ptr.e8f) {
|
||||
@@ -663,8 +663,8 @@ fn F() {
|
||||
// CHECK:STDOUT: %pattern_type.loc6_43 => constants.%pattern_type.4f4
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc6_47 => constants.%require_complete.ef1
|
||||
// CHECK:STDOUT: %require_complete.loc6_38 => constants.%require_complete.944
|
||||
// CHECK:STDOUT: %require_complete.loc6_47 => constants.%require_complete.ef1
|
||||
// CHECK:STDOUT: %ExplicitAndAlsoDeduced.specific_fn.loc7_10.2 => constants.%ExplicitAndAlsoDeduced.specific_fn.7e7
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -676,8 +676,8 @@ fn F() {
|
||||
// CHECK:STDOUT: %pattern_type.loc6_43 => constants.%pattern_type.f29
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc6_47 => constants.%complete_type.8a0
|
||||
// CHECK:STDOUT: %require_complete.loc6_38 => constants.%complete_type.357
|
||||
// CHECK:STDOUT: %require_complete.loc6_47 => constants.%complete_type.8a0
|
||||
// CHECK:STDOUT: %ExplicitAndAlsoDeduced.specific_fn.loc7_10.2 => constants.%ExplicitAndAlsoDeduced.specific_fn.1f3
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -694,8 +694,8 @@ fn F() {
|
||||
// CHECK:STDOUT: %pattern_type.4f4: type = pattern_type %ptr.e8f [symbolic]
|
||||
// CHECK:STDOUT: %ImplicitGenericParam.type: type = fn_type @ImplicitGenericParam [concrete]
|
||||
// CHECK:STDOUT: %ImplicitGenericParam: %ImplicitGenericParam.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %require_complete.ef1: <witness> = require_complete_type %ptr.e8f [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.944: <witness> = require_complete_type %T [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.ef1: <witness> = require_complete_type %ptr.e8f [symbolic]
|
||||
// CHECK:STDOUT: %ImplicitGenericParam.specific_fn.7cc: <specific function> = specific_function %ImplicitGenericParam, @ImplicitGenericParam(%T) [symbolic]
|
||||
// CHECK:STDOUT: %int_32: Core.IntLiteral = int_value 32 [concrete]
|
||||
// CHECK:STDOUT: %Int.type: type = generic_class_type @Int [concrete]
|
||||
@@ -776,8 +776,8 @@ fn F() {
|
||||
// CHECK:STDOUT: %pattern_type.loc4_41: type = pattern_type %ptr.loc4_45.1 [symbolic = %pattern_type.loc4_41 (constants.%pattern_type.4f4)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc4_45: <witness> = require_complete_type %ptr.loc4_45.1 [symbolic = %require_complete.loc4_45 (constants.%require_complete.ef1)]
|
||||
// CHECK:STDOUT: %require_complete.loc4_36: <witness> = require_complete_type %T.loc4_25.1 [symbolic = %require_complete.loc4_36 (constants.%require_complete.944)]
|
||||
// CHECK:STDOUT: %require_complete.loc4_45: <witness> = require_complete_type %ptr.loc4_45.1 [symbolic = %require_complete.loc4_45 (constants.%require_complete.ef1)]
|
||||
// CHECK:STDOUT: %ImplicitGenericParam.specific_fn.loc4_56.2: <specific function> = specific_function constants.%ImplicitGenericParam, @ImplicitGenericParam(%T.loc4_25.1) [symbolic = %ImplicitGenericParam.specific_fn.loc4_56.2 (constants.%ImplicitGenericParam.specific_fn.7cc)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn(%x.param: @ImplicitGenericParam.%T.loc4_25.1 (%T)) -> out %return.param: @ImplicitGenericParam.%ptr.loc4_45.1 (%ptr.e8f) {
|
||||
@@ -807,8 +807,8 @@ fn F() {
|
||||
// CHECK:STDOUT: %pattern_type.loc4_41 => constants.%pattern_type.4f4
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc4_45 => constants.%require_complete.ef1
|
||||
// CHECK:STDOUT: %require_complete.loc4_36 => constants.%require_complete.944
|
||||
// CHECK:STDOUT: %require_complete.loc4_45 => constants.%require_complete.ef1
|
||||
// CHECK:STDOUT: %ImplicitGenericParam.specific_fn.loc4_56.2 => constants.%ImplicitGenericParam.specific_fn.7cc
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -820,8 +820,8 @@ fn F() {
|
||||
// CHECK:STDOUT: %pattern_type.loc4_41 => constants.%pattern_type.fe8
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc4_45 => constants.%complete_type.3d0
|
||||
// CHECK:STDOUT: %require_complete.loc4_36 => constants.%complete_type.f8a
|
||||
// CHECK:STDOUT: %require_complete.loc4_45 => constants.%complete_type.3d0
|
||||
// CHECK:STDOUT: %ImplicitGenericParam.specific_fn.loc4_56.2 => constants.%ImplicitGenericParam.specific_fn.be5
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
@@ -78,9 +78,9 @@ fn Test(d: D) -> i32 {
|
||||
// CHECK:STDOUT: %pattern_type.7ce: type = pattern_type %i32 [concrete]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %require_complete.944: <witness> = require_complete_type %T.67db0b.1 [template]
|
||||
// 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: %require_complete.944: <witness> = require_complete_type %T.67db0b.1 [template]
|
||||
// CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete]
|
||||
// CHECK:STDOUT: %Copy.Op.type: type = fn_type @Copy.Op [concrete]
|
||||
// CHECK:STDOUT: %Int.as.Copy.impl.Op.type.824: type = fn_type @Int.as.Copy.impl.Op, @Int.as.Copy.impl(%N) [symbolic]
|
||||
|
||||
@@ -42,8 +42,8 @@ fn F(template T:! type, U:! type) -> (T, U) {
|
||||
// CHECK:STDOUT: %pattern_type.4f4b84.1: type = pattern_type %ptr.e8f8f9.1 [template]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %require_complete.ef162c.1: <witness> = require_complete_type %ptr.e8f8f9.1 [template]
|
||||
// CHECK:STDOUT: %require_complete.fbe: <witness> = require_complete_type %ptr.125 [template]
|
||||
// CHECK:STDOUT: %require_complete.ef162c.1: <witness> = require_complete_type %ptr.e8f8f9.1 [template]
|
||||
// CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete]
|
||||
// CHECK:STDOUT: %Copy.Op.type: type = fn_type @Copy.Op [concrete]
|
||||
// CHECK:STDOUT: %.2f2: require_specific_def_type = require_specific_def @ptr.as.Copy.impl(%T.67db0b.1) [template]
|
||||
@@ -91,8 +91,8 @@ fn F(template T:! type, U:! type) -> (T, U) {
|
||||
// CHECK:STDOUT: %pattern_type.loc5_33: type = pattern_type %ptr.loc5_29.1 [template = %pattern_type.loc5_33 (constants.%pattern_type.4f4b84.1)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc5_37: <witness> = require_complete_type %ptr.loc5_29.1 [template = %require_complete.loc5_37 (constants.%require_complete.ef162c.1)]
|
||||
// CHECK:STDOUT: %require_complete.loc5_26: <witness> = require_complete_type %ptr.loc5_30.1 [template = %require_complete.loc5_26 (constants.%require_complete.fbe)]
|
||||
// CHECK:STDOUT: %require_complete.loc5_37: <witness> = require_complete_type %ptr.loc5_29.1 [template = %require_complete.loc5_37 (constants.%require_complete.ef162c.1)]
|
||||
// CHECK:STDOUT: %.loc6_10.3: require_specific_def_type = require_specific_def @ptr.as.Copy.impl(%T.loc5_15.1) [template = %.loc6_10.3 (constants.%.2f2)]
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness: <witness> = lookup_impl_witness %ptr.loc5_29.1, @Copy [template = %Copy.lookup_impl_witness (constants.%Copy.lookup_impl_witness.2e6)]
|
||||
// CHECK:STDOUT: %Copy.facet: %Copy.type = facet_value %ptr.loc5_29.1, (%Copy.lookup_impl_witness) [template = %Copy.facet (constants.%Copy.facet)]
|
||||
|
||||
+3
-3
@@ -61,9 +61,9 @@ fn TestSpecific(a: A({})*) -> {}* {
|
||||
// CHECK:STDOUT: %pattern_type.4f4b84.2: type = pattern_type %ptr.e8f8f9.2 [symbolic]
|
||||
// CHECK:STDOUT: %A.as.I.impl.F.type.58747b.1: type = fn_type @A.as.I.impl.F, @A.as.I.impl(%V.67d) [symbolic]
|
||||
// CHECK:STDOUT: %A.as.I.impl.F.afeb91.1: %A.as.I.impl.F.type.58747b.1 = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.ef162c.1: <witness> = require_complete_type %ptr.e8f8f9.2 [symbolic]
|
||||
// CHECK:STDOUT: %A.elem.8a20fa.2: type = unbound_element_type %A.95c0c7.2, %V.67d [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.fd656a.1: <witness> = require_complete_type %A.95c0c7.2 [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.ef162c.1: <witness> = require_complete_type %ptr.e8f8f9.2 [symbolic]
|
||||
// CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete]
|
||||
// CHECK:STDOUT: %Copy.Op.type: type = fn_type @Copy.Op [concrete]
|
||||
// CHECK:STDOUT: %ptr.as.Copy.impl.Op.type.2d4455.1: type = fn_type @ptr.as.Copy.impl.Op, @ptr.as.Copy.impl(%T.67d) [symbolic]
|
||||
@@ -194,8 +194,8 @@ fn TestSpecific(a: A({})*) -> {}* {
|
||||
// CHECK:STDOUT: %pattern_type.loc13_26: type = pattern_type %ptr.loc13_30.1 [symbolic = %pattern_type.loc13_26 (constants.%pattern_type.4f4b84.2)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc13_30: <witness> = require_complete_type %ptr.loc13_30.1 [symbolic = %require_complete.loc13_30 (constants.%require_complete.ef162c.1)]
|
||||
// CHECK:STDOUT: %require_complete.loc13_16: <witness> = require_complete_type %A [symbolic = %require_complete.loc13_16 (constants.%require_complete.fd656a.1)]
|
||||
// CHECK:STDOUT: %require_complete.loc13_30: <witness> = require_complete_type %ptr.loc13_30.1 [symbolic = %require_complete.loc13_30 (constants.%require_complete.ef162c.1)]
|
||||
// CHECK:STDOUT: %A.elem: type = unbound_element_type %A, %V [symbolic = %A.elem (constants.%A.elem.8a20fa.2)]
|
||||
// CHECK:STDOUT: %.loc14_12.1: require_specific_def_type = require_specific_def @ptr.as.Copy.impl(%V) [symbolic = %.loc14_12.1 (constants.%.2f2)]
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness: <witness> = lookup_impl_witness %ptr.loc13_30.1, @Copy [symbolic = %Copy.lookup_impl_witness (constants.%Copy.lookup_impl_witness.2e6)]
|
||||
@@ -337,8 +337,8 @@ fn TestSpecific(a: A({})*) -> {}* {
|
||||
// CHECK:STDOUT: %pattern_type.loc13_26 => constants.%pattern_type.1cc
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc13_30 => constants.%complete_type.38e
|
||||
// CHECK:STDOUT: %require_complete.loc13_16 => constants.%complete_type.0a6
|
||||
// CHECK:STDOUT: %require_complete.loc13_30 => constants.%complete_type.38e
|
||||
// CHECK:STDOUT: %A.elem => constants.%A.elem.599
|
||||
// CHECK:STDOUT: %.loc14_12.1 => constants.%.07c
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness => constants.%Copy.impl_witness.3fd
|
||||
|
||||
+6
-6
@@ -806,8 +806,8 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: %pattern_type.4f4: type = pattern_type %ptr.e8f8f9.2 [symbolic]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %require_complete.ef1: <witness> = require_complete_type %ptr.e8f8f9.2 [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.944: <witness> = require_complete_type %T.67d [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.ef1: <witness> = require_complete_type %ptr.e8f8f9.2 [symbolic]
|
||||
// CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete]
|
||||
// CHECK:STDOUT: %Copy.Op.type: type = fn_type @Copy.Op [concrete]
|
||||
// CHECK:STDOUT: %.2f2: require_specific_def_type = require_specific_def @ptr.as.Copy.impl(%T.67d) [symbolic]
|
||||
@@ -928,8 +928,8 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: %pattern_type.loc9_26: type = pattern_type %ptr [symbolic = %pattern_type.loc9_26 (constants.%pattern_type.4f4)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc9_30: <witness> = require_complete_type %ptr [symbolic = %require_complete.loc9_30 (constants.%require_complete.ef1)]
|
||||
// CHECK:STDOUT: %require_complete.loc9_16: <witness> = require_complete_type %T.loc9_6.1 [symbolic = %require_complete.loc9_16 (constants.%require_complete.944)]
|
||||
// CHECK:STDOUT: %require_complete.loc9_30: <witness> = require_complete_type %ptr [symbolic = %require_complete.loc9_30 (constants.%require_complete.ef1)]
|
||||
// CHECK:STDOUT: %.loc10_10.1: require_specific_def_type = require_specific_def @ptr.as.Copy.impl(%T.loc9_6.1) [symbolic = %.loc10_10.1 (constants.%.2f2)]
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness: <witness> = lookup_impl_witness %ptr, @Copy [symbolic = %Copy.lookup_impl_witness (constants.%Copy.lookup_impl_witness.2e6)]
|
||||
// CHECK:STDOUT: %Copy.facet: %Copy.type = facet_value %ptr, (%Copy.lookup_impl_witness) [symbolic = %Copy.facet (constants.%Copy.facet)]
|
||||
@@ -1016,8 +1016,8 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: %pattern_type.804: type = pattern_type %ptr.a86 [symbolic]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %require_complete.c1c: <witness> = require_complete_type %ptr.a86 [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.552: <witness> = require_complete_type %T.binding.as_type.3dc [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.c1c: <witness> = require_complete_type %ptr.a86 [symbolic]
|
||||
// CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete]
|
||||
// CHECK:STDOUT: %Copy.Op.type: type = fn_type @Copy.Op [concrete]
|
||||
// CHECK:STDOUT: %.54b: require_specific_def_type = require_specific_def @ptr.as.Copy.impl(%T.binding.as_type.3dc) [symbolic]
|
||||
@@ -1144,8 +1144,8 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: %pattern_type.loc9_25: type = pattern_type %ptr [symbolic = %pattern_type.loc9_25 (constants.%pattern_type.804)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc9_29: <witness> = require_complete_type %ptr [symbolic = %require_complete.loc9_29 (constants.%require_complete.c1c)]
|
||||
// CHECK:STDOUT: %require_complete.loc9_15: <witness> = require_complete_type %T.binding.as_type [symbolic = %require_complete.loc9_15 (constants.%require_complete.552)]
|
||||
// CHECK:STDOUT: %require_complete.loc9_29: <witness> = require_complete_type %ptr [symbolic = %require_complete.loc9_29 (constants.%require_complete.c1c)]
|
||||
// CHECK:STDOUT: %.loc10_10.1: require_specific_def_type = require_specific_def @ptr.as.Copy.impl(%T.binding.as_type) [symbolic = %.loc10_10.1 (constants.%.54b)]
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness: <witness> = lookup_impl_witness %ptr, @Copy [symbolic = %Copy.lookup_impl_witness (constants.%Copy.lookup_impl_witness.3c7)]
|
||||
// CHECK:STDOUT: %Copy.facet: %Copy.type = facet_value %ptr, (%Copy.lookup_impl_witness) [symbolic = %Copy.facet (constants.%Copy.facet)]
|
||||
@@ -1232,8 +1232,8 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: %pattern_type.804: type = pattern_type %ptr.a86 [symbolic]
|
||||
// CHECK:STDOUT: %F.type: type = fn_type @F [concrete]
|
||||
// CHECK:STDOUT: %F: %F.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %require_complete.c1c: <witness> = require_complete_type %ptr.a86 [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.552: <witness> = require_complete_type %T.binding.as_type.3dc [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.c1c: <witness> = require_complete_type %ptr.a86 [symbolic]
|
||||
// CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete]
|
||||
// CHECK:STDOUT: %Copy.Op.type: type = fn_type @Copy.Op [concrete]
|
||||
// CHECK:STDOUT: %.54b: require_specific_def_type = require_specific_def @ptr.as.Copy.impl(%T.binding.as_type.3dc) [symbolic]
|
||||
@@ -1359,8 +1359,8 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) {
|
||||
// CHECK:STDOUT: %pattern_type.loc9_25: type = pattern_type %ptr [symbolic = %pattern_type.loc9_25 (constants.%pattern_type.804)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc9_29: <witness> = require_complete_type %ptr [symbolic = %require_complete.loc9_29 (constants.%require_complete.c1c)]
|
||||
// CHECK:STDOUT: %require_complete.loc9_15: <witness> = require_complete_type %T.binding.as_type [symbolic = %require_complete.loc9_15 (constants.%require_complete.552)]
|
||||
// CHECK:STDOUT: %require_complete.loc9_29: <witness> = require_complete_type %ptr [symbolic = %require_complete.loc9_29 (constants.%require_complete.c1c)]
|
||||
// CHECK:STDOUT: %.loc10_10.1: require_specific_def_type = require_specific_def @ptr.as.Copy.impl(%T.binding.as_type) [symbolic = %.loc10_10.1 (constants.%.54b)]
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness: <witness> = lookup_impl_witness %ptr, @Copy [symbolic = %Copy.lookup_impl_witness (constants.%Copy.lookup_impl_witness.3c7)]
|
||||
// CHECK:STDOUT: %Copy.facet: %Copy.type = facet_value %ptr, (%Copy.lookup_impl_witness) [symbolic = %Copy.facet (constants.%Copy.facet)]
|
||||
|
||||
+7
-7
@@ -1074,8 +1074,8 @@ fn F() {
|
||||
// CHECK:STDOUT: %.722: form = init_form %impl.elem0.560, call_param2 [symbolic]
|
||||
// CHECK:STDOUT: %GenericCallF.type: type = fn_type @GenericCallF [concrete]
|
||||
// CHECK:STDOUT: %GenericCallF: %GenericCallF.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %require_complete.06a: <witness> = require_complete_type %impl.elem0.560 [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.19a: <witness> = require_complete_type %T.binding.as_type [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.06a: <witness> = require_complete_type %impl.elem0.560 [symbolic]
|
||||
// CHECK:STDOUT: %.322: type = fn_type_with_self_type %J.F.type, %T [symbolic]
|
||||
// CHECK:STDOUT: %impl.elem1: %.322 = impl_witness_access %J.lookup_impl_witness.264, element1 [symbolic]
|
||||
// CHECK:STDOUT: %.873: form = init_form %impl.elem0.560, call_param1 [symbolic]
|
||||
@@ -1500,8 +1500,8 @@ fn F() {
|
||||
// CHECK:STDOUT: %.loc28_42.2: form = init_form %impl.elem0.loc28_34.1, call_param2 [symbolic = %.loc28_42.2 (constants.%.722)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc28_42: <witness> = require_complete_type %impl.elem0.loc28_34.1 [symbolic = %require_complete.loc28_42 (constants.%require_complete.06a)]
|
||||
// CHECK:STDOUT: %require_complete.loc28_25: <witness> = require_complete_type %T.binding.as_type [symbolic = %require_complete.loc28_25 (constants.%require_complete.19a)]
|
||||
// CHECK:STDOUT: %require_complete.loc28_31: <witness> = require_complete_type %impl.elem0.loc28_34.1 [symbolic = %require_complete.loc28_31 (constants.%require_complete.06a)]
|
||||
// CHECK:STDOUT: %.loc29: type = fn_type_with_self_type constants.%J.F.type, %T.loc28_17.1 [symbolic = %.loc29 (constants.%.322)]
|
||||
// CHECK:STDOUT: %impl.elem1.loc29_11.2: @GenericCallF.%.loc29 (%.322) = impl_witness_access %J.lookup_impl_witness, element1 [symbolic = %impl.elem1.loc29_11.2 (constants.%impl.elem1)]
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc29_11.2: <specific function> = specific_impl_function %impl.elem1.loc29_11.2, @J.F(%T.loc28_17.1) [symbolic = %specific_impl_fn.loc29_11.2 (constants.%specific_impl_fn)]
|
||||
@@ -1610,8 +1610,8 @@ fn F() {
|
||||
// CHECK:STDOUT: %.loc28_42.2 => constants.%.88a
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc28_42 => constants.%complete_type.f8a
|
||||
// CHECK:STDOUT: %require_complete.loc28_25 => constants.%complete_type.357
|
||||
// CHECK:STDOUT: %require_complete.loc28_31 => constants.%complete_type.f8a
|
||||
// CHECK:STDOUT: %.loc29 => constants.%.013
|
||||
// CHECK:STDOUT: %impl.elem1.loc29_11.2 => constants.%E.as.J.impl.F
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc29_11.2 => constants.%E.as.J.impl.F
|
||||
@@ -1659,8 +1659,8 @@ fn F() {
|
||||
// CHECK:STDOUT: %.997: form = init_form %as_type.baf, call_param2 [symbolic]
|
||||
// CHECK:STDOUT: %GenericResult.type: type = fn_type @GenericResult [concrete]
|
||||
// CHECK:STDOUT: %GenericResult: %GenericResult.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %require_complete.9b3: <witness> = require_complete_type %as_type.baf [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.19a: <witness> = require_complete_type %T.binding.as_type [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.9b3: <witness> = require_complete_type %as_type.baf [symbolic]
|
||||
// CHECK:STDOUT: %.322: type = fn_type_with_self_type %J.F.type, %T [symbolic]
|
||||
// CHECK:STDOUT: %impl.elem1: %.322 = impl_witness_access %J.lookup_impl_witness.264, element1 [symbolic]
|
||||
// CHECK:STDOUT: %.d40: form = init_form %as_type.baf, call_param1 [symbolic]
|
||||
@@ -1859,8 +1859,8 @@ fn F() {
|
||||
// CHECK:STDOUT: %.loc12_43.2: form = init_form %as_type.loc12_35.1, call_param2 [symbolic = %.loc12_43.2 (constants.%.997)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc12_43: <witness> = require_complete_type %as_type.loc12_35.1 [symbolic = %require_complete.loc12_43 (constants.%require_complete.9b3)]
|
||||
// CHECK:STDOUT: %require_complete.loc12_26: <witness> = require_complete_type %T.binding.as_type [symbolic = %require_complete.loc12_26 (constants.%require_complete.19a)]
|
||||
// CHECK:STDOUT: %require_complete.loc12_32: <witness> = require_complete_type %as_type.loc12_35.1 [symbolic = %require_complete.loc12_32 (constants.%require_complete.9b3)]
|
||||
// CHECK:STDOUT: %.loc13_11: type = fn_type_with_self_type constants.%J.F.type, %T.loc12_18.1 [symbolic = %.loc13_11 (constants.%.322)]
|
||||
// CHECK:STDOUT: %impl.elem1.loc13_11.2: @GenericResult.%.loc13_11 (%.322) = impl_witness_access %J.lookup_impl_witness, element1 [symbolic = %impl.elem1.loc13_11.2 (constants.%impl.elem1)]
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc13_11.2: <specific function> = specific_impl_function %impl.elem1.loc13_11.2, @J.F(%T.loc12_18.1) [symbolic = %specific_impl_fn.loc13_11.2 (constants.%specific_impl_fn.c25)]
|
||||
@@ -1995,8 +1995,8 @@ fn F() {
|
||||
// CHECK:STDOUT: %.722: form = init_form %impl.elem0.560, call_param2 [symbolic]
|
||||
// CHECK:STDOUT: %GenericCallInterfaceQualified.type: type = fn_type @GenericCallInterfaceQualified [concrete]
|
||||
// CHECK:STDOUT: %GenericCallInterfaceQualified: %GenericCallInterfaceQualified.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %require_complete.06a: <witness> = require_complete_type %impl.elem0.560 [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.19a: <witness> = require_complete_type %T.binding.as_type [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.06a: <witness> = require_complete_type %impl.elem0.560 [symbolic]
|
||||
// CHECK:STDOUT: %.588: type = fn_type_with_self_type %J.G.type, %T [symbolic]
|
||||
// CHECK:STDOUT: %impl.elem1: %.588 = impl_witness_access %J.lookup_impl_witness.264, element1 [symbolic]
|
||||
// CHECK:STDOUT: %specific_impl_fn: <specific function> = specific_impl_function %impl.elem1, @J.G(%T) [symbolic]
|
||||
@@ -2127,8 +2127,8 @@ fn F() {
|
||||
// CHECK:STDOUT: %.loc8_59.2: form = init_form %impl.elem0.loc8_51.1, call_param2 [symbolic = %.loc8_59.2 (constants.%.722)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc8_59: <witness> = require_complete_type %impl.elem0.loc8_51.1 [symbolic = %require_complete.loc8_59 (constants.%require_complete.06a)]
|
||||
// CHECK:STDOUT: %require_complete.loc8_42: <witness> = require_complete_type %T.binding.as_type [symbolic = %require_complete.loc8_42 (constants.%require_complete.19a)]
|
||||
// CHECK:STDOUT: %require_complete.loc8_48: <witness> = require_complete_type %impl.elem0.loc8_51.1 [symbolic = %require_complete.loc8_48 (constants.%require_complete.06a)]
|
||||
// CHECK:STDOUT: %.loc9: type = fn_type_with_self_type constants.%J.G.type, %T.loc8_34.1 [symbolic = %.loc9 (constants.%.588)]
|
||||
// CHECK:STDOUT: %impl.elem1.loc9_11.2: @GenericCallInterfaceQualified.%.loc9 (%.588) = impl_witness_access %J.lookup_impl_witness, element1 [symbolic = %impl.elem1.loc9_11.2 (constants.%impl.elem1)]
|
||||
// CHECK:STDOUT: %specific_impl_fn.loc9_11.2: <specific function> = specific_impl_function %impl.elem1.loc9_11.2, @J.G(%T.loc8_34.1) [symbolic = %specific_impl_fn.loc9_11.2 (constants.%specific_impl_fn)]
|
||||
|
||||
+2
-2
@@ -227,8 +227,8 @@ fn Interface.C.F[self: Self](U:! type, u: U*) -> U* { return u; }
|
||||
// CHECK:STDOUT: %C.F: %C.F.type = struct_value () [symbolic]
|
||||
// CHECK:STDOUT: %empty_struct_type: type = struct_type {} [concrete]
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %empty_struct_type [concrete]
|
||||
// CHECK:STDOUT: %require_complete.56d: <witness> = require_complete_type %ptr.18e [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.03c: <witness> = require_complete_type %C [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.56d: <witness> = require_complete_type %ptr.18e [symbolic]
|
||||
// CHECK:STDOUT: %Copy.type: type = facet_type <@Copy> [concrete]
|
||||
// CHECK:STDOUT: %Copy.Op.type: type = fn_type @Copy.Op [concrete]
|
||||
// CHECK:STDOUT: %.f1d: require_specific_def_type = require_specific_def @ptr.as.Copy.impl(%U.091) [symbolic]
|
||||
@@ -353,8 +353,8 @@ fn Interface.C.F[self: Self](U:! type, u: U*) -> U* { return u; }
|
||||
// CHECK:STDOUT: %.loc14_43.1: form = init_form %ptr.loc14_36.1, call_param2 [symbolic = %.loc14_43.1 (constants.%.2cd)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc20_51: <witness> = require_complete_type %ptr.loc14_36.1 [symbolic = %require_complete.loc20_51 (constants.%require_complete.56d)]
|
||||
// CHECK:STDOUT: %require_complete.loc20_22: <witness> = require_complete_type %C [symbolic = %require_complete.loc20_22 (constants.%require_complete.03c)]
|
||||
// CHECK:STDOUT: %require_complete.loc20_41: <witness> = require_complete_type %ptr.loc14_36.1 [symbolic = %require_complete.loc20_41 (constants.%require_complete.56d)]
|
||||
// CHECK:STDOUT: %.loc20_62.1: require_specific_def_type = require_specific_def @ptr.as.Copy.impl(%U.loc14_22.1) [symbolic = %.loc20_62.1 (constants.%.f1d)]
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness: <witness> = lookup_impl_witness %ptr.loc14_36.1, @Copy [symbolic = %Copy.lookup_impl_witness (constants.%Copy.lookup_impl_witness.484)]
|
||||
// CHECK:STDOUT: %Copy.facet: %Copy.type = facet_value %ptr.loc14_36.1, (%Copy.lookup_impl_witness) [symbolic = %Copy.facet (constants.%Copy.facet)]
|
||||
|
||||
@@ -133,8 +133,8 @@ fn CallIndirect() {
|
||||
// CHECK:STDOUT: %A.facet: %A.type.ab6 = facet_value %Y, (%A.impl_witness) [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.f96: type = tuple_type (type, %A.type.ab6, type) [concrete]
|
||||
// CHECK:STDOUT: %tuple.5c5: %tuple.type.f96 = tuple_value (%X, %A.facet, %ptr.e8f8f9.1) [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.034: <witness> = require_complete_type %tuple.type.244 [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.ef162c.1: <witness> = require_complete_type %ptr.e8f8f9.1 [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.034: <witness> = require_complete_type %tuple.type.244 [symbolic]
|
||||
// CHECK:STDOUT: %empty_struct: %empty_struct_type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.dd2: type = tuple_type (%empty_struct_type, %empty_struct_type, %ptr.e8f8f9.1) [symbolic]
|
||||
// CHECK:STDOUT: %X.val: %X = struct_value () [concrete]
|
||||
@@ -188,8 +188,8 @@ fn CallIndirect() {
|
||||
// CHECK:STDOUT: %CallIndirect.type: type = fn_type @CallIndirect [concrete]
|
||||
// CHECK:STDOUT: %CallIndirect: %CallIndirect.type = struct_value () [concrete]
|
||||
// CHECK:STDOUT: %CallGeneric.specific_fn: <specific function> = specific_function %CallGeneric, @CallGeneric(%A.facet) [concrete]
|
||||
// CHECK:STDOUT: %complete_type.28e: <witness> = complete_type_witness %tuple.type.847 [concrete]
|
||||
// CHECK:STDOUT: %complete_type.543: <witness> = complete_type_witness %ptr.2a0 [concrete]
|
||||
// CHECK:STDOUT: %complete_type.28e: <witness> = complete_type_witness %tuple.type.847 [concrete]
|
||||
// CHECK:STDOUT: %tuple.type.0dd: type = tuple_type (%empty_struct_type, %empty_struct_type, %ptr.2a0) [concrete]
|
||||
// CHECK:STDOUT: %Copy.impl_witness.425: <witness> = impl_witness imports.%Copy.impl_witness_table.c3a, @ptr.as.Copy.impl(%Z) [concrete]
|
||||
// CHECK:STDOUT: %ptr.as.Copy.impl.Op.type.505: type = fn_type @ptr.as.Copy.impl.Op, @ptr.as.Copy.impl(%Z) [concrete]
|
||||
@@ -398,8 +398,8 @@ fn CallIndirect() {
|
||||
// CHECK:STDOUT: %pattern_type.loc16_25: type = pattern_type %tuple.type.loc16 [symbolic = %pattern_type.loc16_25 (constants.%pattern_type.06d)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc16_37: <witness> = require_complete_type %tuple.type.loc16 [symbolic = %require_complete.loc16_37 (constants.%require_complete.034)]
|
||||
// CHECK:STDOUT: %require_complete.loc16_19: <witness> = require_complete_type %ptr.loc16_22.1 [symbolic = %require_complete.loc16_19 (constants.%require_complete.ef162c.1)]
|
||||
// CHECK:STDOUT: %require_complete.loc16_37: <witness> = require_complete_type %tuple.type.loc16 [symbolic = %require_complete.loc16_37 (constants.%require_complete.034)]
|
||||
// CHECK:STDOUT: %tuple.type.loc17: type = tuple_type (constants.%empty_struct_type, constants.%empty_struct_type, %ptr.loc16_22.1) [symbolic = %tuple.type.loc17 (constants.%tuple.type.dd2)]
|
||||
// CHECK:STDOUT: %.loc17_21.1: require_specific_def_type = require_specific_def @ptr.as.Copy.impl(%U.loc16_8.1) [symbolic = %.loc17_21.1 (constants.%.2f2)]
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness: <witness> = lookup_impl_witness %ptr.loc16_22.1, @Copy [symbolic = %Copy.lookup_impl_witness (constants.%Copy.lookup_impl_witness.2e6)]
|
||||
@@ -595,8 +595,8 @@ fn CallIndirect() {
|
||||
// CHECK:STDOUT: %pattern_type.loc16_25 => constants.%pattern_type.79c
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc16_37 => constants.%complete_type.28e
|
||||
// CHECK:STDOUT: %require_complete.loc16_19 => constants.%complete_type.543
|
||||
// CHECK:STDOUT: %require_complete.loc16_37 => constants.%complete_type.28e
|
||||
// CHECK:STDOUT: %tuple.type.loc17 => constants.%tuple.type.0dd
|
||||
// CHECK:STDOUT: %.loc17_21.1 => constants.%.157
|
||||
// CHECK:STDOUT: %Copy.lookup_impl_witness => constants.%Copy.impl_witness.425
|
||||
@@ -712,8 +712,8 @@ fn CallIndirect() {
|
||||
// CHECK:STDOUT: %A.facet.56b: %A.type.fe7 = facet_value %tuple.type.a5e, (%A.impl_witness.be2) [symbolic]
|
||||
// CHECK:STDOUT: %tuple.type.52a: type = tuple_type (type, %A.type.fe7, type) [symbolic]
|
||||
// CHECK:STDOUT: %tuple.ec4: %tuple.type.52a = tuple_value (%W, %A.facet.56b, %U.ce4) [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.da0: <witness> = require_complete_type %tuple.type.897 [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.5a4: <witness> = require_complete_type %U.ce4 [symbolic]
|
||||
// CHECK:STDOUT: %require_complete.da0: <witness> = require_complete_type %tuple.type.897 [symbolic]
|
||||
// CHECK:STDOUT: %tuple.type.as.A.impl.F.specific_fn.009: <specific function> = specific_function %tuple.type.as.A.impl.F.74d, @tuple.type.as.A.impl.F(%V1, %V2, %W, %U.ce4) [symbolic]
|
||||
// CHECK:STDOUT: %Call.type: type = fn_type @Call [concrete]
|
||||
// CHECK:STDOUT: %Call: %Call.type = struct_value () [concrete]
|
||||
@@ -1002,8 +1002,8 @@ fn CallIndirect() {
|
||||
// CHECK:STDOUT: %pattern_type.loc17_24: type = pattern_type %tuple.type.loc17_42.2 [symbolic = %pattern_type.loc17_24 (constants.%pattern_type.5cc)]
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc17_42: <witness> = require_complete_type %tuple.type.loc17_42.2 [symbolic = %require_complete.loc17_42 (constants.%require_complete.da0)]
|
||||
// CHECK:STDOUT: %require_complete.loc17_19: <witness> = require_complete_type %U.loc17_8.1 [symbolic = %require_complete.loc17_19 (constants.%require_complete.5a4)]
|
||||
// CHECK:STDOUT: %require_complete.loc17_42: <witness> = require_complete_type %tuple.type.loc17_42.2 [symbolic = %require_complete.loc17_42 (constants.%require_complete.da0)]
|
||||
// CHECK:STDOUT: %tuple.type.as.A.impl.F.type: type = fn_type @tuple.type.as.A.impl.F, @tuple.type.as.A.impl(%V1, %V2, %W) [symbolic = %tuple.type.as.A.impl.F.type (constants.%tuple.type.as.A.impl.F.type.ce6)]
|
||||
// CHECK:STDOUT: %tuple.type.as.A.impl.F: @tuple.type.as.A.impl.F.%tuple.type.as.A.impl.F.type (%tuple.type.as.A.impl.F.type.ce6) = struct_value () [symbolic = %tuple.type.as.A.impl.F (constants.%tuple.type.as.A.impl.F.74d)]
|
||||
// CHECK:STDOUT: %tuple.type.as.A.impl.F.specific_fn.loc18_12.2: <specific function> = specific_function %tuple.type.as.A.impl.F, @tuple.type.as.A.impl.F(%V1, %V2, %W, %U.loc17_8.1) [symbolic = %tuple.type.as.A.impl.F.specific_fn.loc18_12.2 (constants.%tuple.type.as.A.impl.F.specific_fn.009)]
|
||||
@@ -1176,8 +1176,8 @@ fn CallIndirect() {
|
||||
// CHECK:STDOUT: %pattern_type.loc17_24 => constants.%pattern_type.5cc
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc17_42 => constants.%require_complete.da0
|
||||
// CHECK:STDOUT: %require_complete.loc17_19 => constants.%require_complete.5a4
|
||||
// CHECK:STDOUT: %require_complete.loc17_42 => constants.%require_complete.da0
|
||||
// CHECK:STDOUT: %tuple.type.as.A.impl.F.type => constants.%tuple.type.as.A.impl.F.type.ce6
|
||||
// CHECK:STDOUT: %tuple.type.as.A.impl.F => constants.%tuple.type.as.A.impl.F.74d
|
||||
// CHECK:STDOUT: %tuple.type.as.A.impl.F.specific_fn.loc18_12.2 => constants.%tuple.type.as.A.impl.F.specific_fn.009
|
||||
@@ -1238,8 +1238,8 @@ fn CallIndirect() {
|
||||
// CHECK:STDOUT: %pattern_type.loc17_24 => constants.%pattern_type.30b
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !definition:
|
||||
// CHECK:STDOUT: %require_complete.loc17_42 => constants.%complete_type.cf2
|
||||
// CHECK:STDOUT: %require_complete.loc17_19 => constants.%complete_type.357
|
||||
// CHECK:STDOUT: %require_complete.loc17_42 => constants.%complete_type.cf2
|
||||
// CHECK:STDOUT: %tuple.type.as.A.impl.F.type => constants.%tuple.type.as.A.impl.F.type.d14
|
||||
// CHECK:STDOUT: %tuple.type.as.A.impl.F => constants.%tuple.type.as.A.impl.F.cc8
|
||||
// CHECK:STDOUT: %tuple.type.as.A.impl.F.specific_fn.loc18_12.2 => constants.%tuple.type.as.A.impl.F.specific_fn.af6
|
||||
|
||||
Reference in New Issue
Block a user