Add require decls to Interface and NamedConstraint (#6321)

They are not used for impl lookup or verifying anything yet, but now
they appear in the textual semir.

---------

Co-authored-by: Jon Ross-Perkins <jperkins@google.com>
This commit is contained in:
Dana Jansens
2025-11-11 16:36:15 +00:00
committed by GitHub
co-authored by Jon Ross-Perkins
parent 81e55bed8a
commit ff0cea55f6
141 changed files with 954 additions and 17 deletions
+15 -3
View File
@@ -115,6 +115,10 @@ class Context {
return field_decls_stack_;
}
auto require_impls_stack() -> ArrayStack<SemIR::RequireImplsId>& {
return require_impls_stack_;
}
auto decl_name_stack() -> DeclNameStack& { return decl_name_stack_; }
auto decl_introducer_state_stack() -> DeclIntroducerStateStack& {
@@ -271,6 +275,9 @@ class Context {
auto require_impls() -> SemIR::RequireImplsStore& {
return sem_ir().require_impls();
}
auto require_impls_blocks() -> SemIR::RequireImplsBlockStore& {
return sem_ir().require_impls_blocks();
}
auto associated_constants() -> SemIR::AssociatedConstantStore& {
return sem_ir().associated_constants();
}
@@ -354,9 +361,10 @@ class Context {
// The stack of instruction blocks being used for type information while
// processing arguments. This is used in parallel with
// param_and_arg_refs_stack_. It's currently only used for struct literals,
// where we need to track names for a type separate from the literal
// arguments.
// param_and_arg_refs_stack_. It's used for:
// - Struct literals, where we need to track names for a type separate from
// the literal arguments.
// - The associated entries witness table, while parsing an interface.
InstBlockStack args_type_info_stack_;
// The stack of StructTypeFields for in-progress StructTypeLiterals.
@@ -365,6 +373,10 @@ class Context {
// The stack of FieldDecls for in-progress Class definitions.
ArrayStack<SemIR::InstId> field_decls_stack_;
// The stack of RequireImpls for in-progress Interface and Constraint
// definitions.
ArrayStack<SemIR::RequireImplsId> require_impls_stack_;
// The stack used for qualified declaration name construction.
DeclNameStack decl_name_stack_;
+7 -2
View File
@@ -129,7 +129,7 @@ auto HandleParseNode(Context& context,
StartGenericDefinition(context, interface_info.generic_id);
context.inst_block_stack().Push();
context.require_impls_stack().PushArray();
// We use the arg stack to build the witness table type.
context.args_type_info_stack().Push();
@@ -168,9 +168,14 @@ auto HandleParseNode(Context& context, Parse::InterfaceDefinitionId /*node_id*/)
context.inst_block_stack().Pop();
auto associated_entities_id = context.args_type_info_stack().Pop();
// The interface type is now fully defined.
auto require_impls_block_id = context.require_impls_blocks().Add(
context.require_impls_stack().PeekArray());
context.require_impls_stack().PopArray();
auto& interface_info = context.interfaces().Get(interface_id);
if (!interface_info.associated_entities_id.has_value()) {
interface_info.require_impls_block_id = require_impls_block_id;
// This marks the interface type as fully defined.
interface_info.associated_entities_id = associated_entities_id;
}
+11 -4
View File
@@ -130,6 +130,7 @@ auto HandleParseNode(Context& context,
StartGenericDefinition(context, constraint_info.generic_id);
context.inst_block_stack().Push();
context.require_impls_stack().PushArray();
// Declare and introduce `Self`. We model `Self` as a symbolic binding whose
// type is the named constraint, excluding any other interfaces mentioned by
@@ -156,14 +157,20 @@ auto HandleParseNode(Context& context,
.Pop<Parse::NodeKind::NamedConstraintDefinitionStart>();
context.inst_block_stack().Pop();
auto require_impls_block_id = context.require_impls_blocks().Add(
context.require_impls_stack().PeekArray());
context.require_impls_stack().PopArray();
auto& constraint_info = context.named_constraints().Get(named_constraint_id);
constraint_info.complete = true;
if (!constraint_info.complete) {
constraint_info.require_impls_block_id = require_impls_block_id;
// TODO: Do something with `alias` statements in the body of the
// constraint.
constraint_info.complete = true;
}
FinishGenericDefinition(context, constraint_info.generic_id);
// TODO: Do something with `require` and `alias` statements in the body of the
// constraint.
// The decl_name_stack and scopes are popped by `ProcessNodeIds`.
return true;
}
+2
View File
@@ -259,6 +259,8 @@ auto HandleParseNode(Context& context, Parse::RequireDeclId node_id) -> bool {
require_impls_decl.require_impls_id = require_impls_id;
ReplaceInstBeforeConstantUse(context, decl_id, require_impls_decl);
context.require_impls_stack().AppendToTop(require_impls_id);
return true;
}
+2
View File
@@ -2593,6 +2593,7 @@ static auto TryResolveTypedInst(ImportRefResolver& resolver,
implicit_param_patterns);
new_interface.param_patterns_id = GetLocalCanonicalInstBlockId(
resolver, import_interface.param_patterns_id, param_patterns);
// TODO: Import require_impls_block_id.
SetGenericData(resolver, import_interface.generic_id,
new_interface.generic_id, generic_data);
@@ -2749,6 +2750,7 @@ static auto TryResolveTypedInst(ImportRefResolver& resolver,
implicit_param_patterns);
new_named_constraint.param_patterns_id = GetLocalCanonicalInstBlockId(
resolver, import_named_constraint.param_patterns_id, param_patterns);
// TODO: Import require_impls_block_id.
SetGenericData(resolver, import_named_constraint.generic_id,
import_named_constraint.generic_id, generic_data);
+3 -3
View File
@@ -38,9 +38,9 @@ class InstBlockStack {
auto PushUnreachable() -> void { Push(SemIR::InstBlockId::Unreachable); }
// Returns the ID of the top instruction block, allocating one if necessary.
// If `depth` is specified, returns the instruction at `depth` levels from the
// top of the stack instead of the top block, where the top block is at depth
// 0.
// If `depth` is specified, returns the instruction block at `depth` levels
// from the top of the stack instead of the top block, where the top block is
// at depth 0.
auto PeekOrAdd(int depth = 0) -> SemIR::InstBlockId;
// Pops the top instruction block. This will never return `None`; `Empty` is
@@ -108,6 +108,8 @@ fn F(c: C) { c.(I.Op)(); }
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: --- exclude/included_with_range.carbon
@@ -154,6 +156,8 @@ fn F(c: C) { c.(I.Op)(); }
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .Op = %assoc0
// CHECK:STDOUT: witness = (%I.Op.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic fn @I.Op(@I.%Self: %I.type) {
@@ -246,6 +250,8 @@ fn F(c: C) { c.(I.Op)(); }
// CHECK:STDOUT: .Self = imports.%Main.import_ref.8df
// CHECK:STDOUT: .Op = imports.%Main.import_ref.9cd
// CHECK:STDOUT: witness = (imports.%Main.Op)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @C.as.I.impl: imports.%Main.import_ref.29a as imports.%Main.import_ref.301 [from "exclude/included_with_range.carbon"] {
+2
View File
@@ -259,6 +259,8 @@ interface I {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @F() {
@@ -562,6 +562,8 @@ fn Test() -> i32 {
// CHECK:STDOUT: .T = <poisoned>
// CHECK:STDOUT: .F = %assoc0.loc6_28.1
// CHECK:STDOUT: witness = (%Inner.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -211,6 +211,8 @@ fn F() {
// CHECK:STDOUT: .AA = <poisoned>
// CHECK:STDOUT: .BB = <poisoned>
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @A {
@@ -223,6 +225,8 @@ fn F() {
// CHECK:STDOUT: .AA = %assoc0
// CHECK:STDOUT: .BB = <poisoned>
// CHECK:STDOUT: witness = (%A.AA.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @B {
@@ -235,6 +239,8 @@ fn F() {
// CHECK:STDOUT: .BB = %assoc0
// CHECK:STDOUT: .AA = <poisoned>
// CHECK:STDOUT: witness = (%B.BB.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @C.as.Empty.impl: %C.ref as %Empty.ref {
@@ -87,6 +87,8 @@ fn F() {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @Goat.as.Animal.impl: %Goat.ref as %Animal.ref {
@@ -202,6 +202,8 @@ fn G() {
// CHECK:STDOUT: .Self = %Self.loc4_34.1
// CHECK:STDOUT: .F = %assoc0.loc5_9.1
// CHECK:STDOUT: witness = (%Generic.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -493,6 +495,8 @@ fn G() {
// CHECK:STDOUT: .Self = %Self.loc4_34.1
// CHECK:STDOUT: .F = %assoc0.loc5_9.1
// CHECK:STDOUT: witness = (%Generic.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -110,6 +110,8 @@ fn F() {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @Goat.as.Animal.impl: %Goat.ref as %Animal.ref {
@@ -255,6 +255,8 @@ fn B() {
// CHECK:STDOUT: .Self = %Self.loc4_34.1
// CHECK:STDOUT: .F = %assoc0.loc5_9.1
// CHECK:STDOUT: witness = (%Generic.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -555,6 +557,8 @@ fn B() {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self.loc3_33.1
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -796,6 +800,8 @@ fn B() {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self.loc3_33.1
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -996,6 +1002,8 @@ fn B() {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic impl @C.as.I.impl(%T.loc7_14.1: type) {
@@ -103,6 +103,8 @@ fn F() {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @Goat.as.Animal.impl: %Goat.ref as %Animal.ref {
@@ -201,6 +201,8 @@ fn CallsWithTypeExplicit(U:! type) {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Animal {
@@ -209,6 +211,8 @@ fn CallsWithTypeExplicit(U:! type) {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic fn @Feed(%T.loc6_9.2: %Eats.type) {
@@ -404,6 +408,8 @@ fn CallsWithTypeExplicit(U:! type) {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Animal {
@@ -412,6 +418,8 @@ fn CallsWithTypeExplicit(U:! type) {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Tame {
@@ -420,6 +428,8 @@ fn CallsWithTypeExplicit(U:! type) {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic fn @FeedTame(%V.loc7_13.2: %facet_type.807) {
@@ -630,6 +640,8 @@ fn CallsWithTypeExplicit(U:! type) {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Animal {
@@ -638,6 +650,8 @@ fn CallsWithTypeExplicit(U:! type) {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Tame {
@@ -646,6 +660,8 @@ fn CallsWithTypeExplicit(U:! type) {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic impl @A.binding.as_type.as.Eats.impl(%A.loc7_14.1: %Animal.type) {
@@ -830,6 +846,8 @@ fn CallsWithTypeExplicit(U:! type) {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic fn @TakesA(%T.loc7_11.2: %A.type) {
@@ -131,6 +131,8 @@ fn HandleAnimal[T:! Animal](a: T) { Feed(a); }
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Animal {
@@ -139,6 +141,8 @@ fn HandleAnimal[T:! Animal](a: T) { Feed(a); }
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic impl @A.binding.as_type.as.Eats.impl(%A.loc18_14.1: %Animal.type) {
@@ -275,6 +275,8 @@ fn F() {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Animal {
@@ -283,6 +285,8 @@ fn F() {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic interface @Eats(%Food.loc21_16.2: type) {
@@ -298,6 +302,8 @@ fn F() {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self.loc21_29.1
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -135,6 +135,8 @@ fn F() {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @Goat.as.Animal.impl: %Goat.ref as %Animal.ref {
@@ -80,6 +80,8 @@ fn G() { F(Animal); }
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Animal {
@@ -88,6 +90,8 @@ fn G() { F(Animal); }
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @Animal.type.as.Eats.impl: %Animal.ref as %Eats.ref {
@@ -149,6 +149,8 @@ fn G() {
// CHECK:STDOUT: .Self = %Self.loc15_34.1
// CHECK:STDOUT: .F = %assoc0.loc16_9.1
// CHECK:STDOUT: witness = (%Generic.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -113,6 +113,8 @@ fn HandleAnimal[T:! Animal](a: T) { Feed(a); }
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Animal {
@@ -121,6 +123,8 @@ fn HandleAnimal[T:! Animal](a: T) { Feed(a); }
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic fn @Feed(%T.loc18_9.2: %Eats.type) {
@@ -94,6 +94,8 @@ fn F() {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @Goat.as.Animal.impl: %Goat.ref as %Animal.ref {
+2
View File
@@ -489,6 +489,8 @@ fn F[U:! Core.Destroy where .Self impls I(.Self)](u: U) {
// CHECK:STDOUT: .Self = %Self.loc4_23.1
// CHECK:STDOUT: .I1 = @I1.%assoc0
// CHECK:STDOUT: witness = (%I1)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
+4
View File
@@ -82,11 +82,15 @@ fn F(A:! X, B:! Y) {}
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = imports.%Main.import_ref.581
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: constraint @X [from "a.carbon"] {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = imports.%Main.import_ref.cae
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic fn @F(%A.loc4_6.2: %X.type, %B.loc4_13.2: %Y.type) {
@@ -299,6 +299,8 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
// CHECK:STDOUT: .Self = %Self.loc7_29.1
// CHECK:STDOUT: .Op = %assoc0.loc8_41.1
// CHECK:STDOUT: witness = (%AddWith.Op.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -340,6 +342,8 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
// CHECK:STDOUT: .T = <poisoned>
// CHECK:STDOUT: .Convert = %assoc0.loc12_32.1
// CHECK:STDOUT: witness = (%As.Convert.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -381,6 +385,8 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
// CHECK:STDOUT: .T = <poisoned>
// CHECK:STDOUT: .Convert = %assoc0.loc16_32.1
// CHECK:STDOUT: witness = (%ImplicitAs.Convert.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -881,6 +887,8 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
// CHECK:STDOUT: .Self = imports.%Core.import_ref.375
// CHECK:STDOUT: .Convert = imports.%Core.import_ref.471
// CHECK:STDOUT: witness = (imports.%Core.Convert.924)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -900,6 +908,8 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
// CHECK:STDOUT: .Self = imports.%Core.import_ref.833
// CHECK:STDOUT: .Op = imports.%Core.import_ref.d7c
// CHECK:STDOUT: witness = (imports.%Core.Op)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -919,6 +929,8 @@ var arr: array(i32, (1 as i32) + (2 as i32)) = (3, 4, (3 as i32) + (4 as i32));
// CHECK:STDOUT: .Self = imports.%Core.import_ref.d6f
// CHECK:STDOUT: .Convert = imports.%Core.import_ref.b9c
// CHECK:STDOUT: witness = (imports.%Core.Convert.acf)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -211,6 +211,8 @@ var arr: array(i32, (1 as i32).(I.F)(2));
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F = %assoc0
// CHECK:STDOUT: witness = (%I.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @i32.as.I.impl: %i32 as %I.ref {
@@ -181,6 +181,8 @@ fn G() {
// CHECK:STDOUT: .Self = %Self.loc15_34.1
// CHECK:STDOUT: .F = %assoc0.loc16_9.1
// CHECK:STDOUT: witness = (%Generic.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -193,6 +195,8 @@ fn G() {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .G = %assoc0
// CHECK:STDOUT: witness = (%Other.G.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @ImplsGeneric.as.Generic.impl: %ImplsGeneric.ref as %Generic.type {
@@ -1682,6 +1682,8 @@ fn F() {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @EE.as.Z.impl: %EE.ref as %Z.ref {
@@ -165,6 +165,8 @@ fn F() {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @W {
@@ -173,6 +175,8 @@ fn F() {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Z {
@@ -181,6 +185,8 @@ fn F() {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @DD.as.Y.impl: %DD.ref as %Y.ref {
@@ -95,6 +95,8 @@ fn B() {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic fn @A(%T.loc4_6.2: %Z.type) {
@@ -187,6 +189,8 @@ fn B() {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = imports.%Lib.import_ref.462
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic fn @A.loc4(%T.loc4_6.2: %Z.type) {
+10
View File
@@ -227,6 +227,8 @@ fn CallF() {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .V = @V.%assoc0
// CHECK:STDOUT: witness = (%V)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @V(@I.%Self: %I.type) {
@@ -343,6 +345,8 @@ fn CallF() {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .V = @V.%assoc0
// CHECK:STDOUT: witness = (%V)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @V(@I.%Self: %I.type) {
@@ -480,6 +484,8 @@ fn CallF() {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .V = @V.%assoc0
// CHECK:STDOUT: witness = (%V)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @V(@I.%Self: %I.type) {
@@ -671,6 +677,8 @@ fn CallF() {
// CHECK:STDOUT: .N = <poisoned>
// CHECK:STDOUT: .V = @V.%assoc0
// CHECK:STDOUT: witness = (%V)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -814,6 +822,8 @@ fn CallF() {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .V = @V.%assoc0
// CHECK:STDOUT: witness = (%V)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @V(@I.%Self: %I.type) {
+16
View File
@@ -190,6 +190,8 @@ fn InstanceCallFail() {
// CHECK:STDOUT: .Dest = <poisoned>
// CHECK:STDOUT: .Convert = %assoc0.loc4_35.1
// CHECK:STDOUT: witness = (%ImplicitAs.Convert.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -263,6 +265,8 @@ fn InstanceCallFail() {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F1 = %assoc0
// CHECK:STDOUT: witness = (%NonInstance1.F1.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @struct_type.a.as.NonInstance1.impl: %struct_type.a as %NonInstance1.ref {
@@ -394,6 +398,8 @@ fn InstanceCallFail() {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F2 = %assoc0
// CHECK:STDOUT: witness = (%NonInstance2.F2.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic interface @ImplicitAs(imports.%Core.import_ref.efcd44.1: type) [from "core.carbon"] {
@@ -412,6 +418,8 @@ fn InstanceCallFail() {
// CHECK:STDOUT: .Self = imports.%Core.import_ref.d6f
// CHECK:STDOUT: .Convert = imports.%Core.import_ref.b9c
// CHECK:STDOUT: witness = (imports.%Core.Convert)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -577,6 +585,8 @@ fn InstanceCallFail() {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F3 = %assoc0
// CHECK:STDOUT: witness = (%NonInstance3.F3.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic interface @ImplicitAs(imports.%Core.import_ref.efcd44.1: type) [from "core.carbon"] {
@@ -595,6 +605,8 @@ fn InstanceCallFail() {
// CHECK:STDOUT: .Self = imports.%Core.import_ref.d6f
// CHECK:STDOUT: .Convert = imports.%Core.import_ref.b9c
// CHECK:STDOUT: witness = (imports.%Core.Convert)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -756,6 +768,8 @@ fn InstanceCallFail() {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .G1 = %assoc0
// CHECK:STDOUT: witness = (%Instance1.G1.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @struct_type.d.as.Instance1.impl: %struct_type.d as %Instance1.ref {
@@ -885,6 +899,8 @@ fn InstanceCallFail() {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .G2 = %assoc0
// CHECK:STDOUT: witness = (%Instance2.G2.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @struct_type.e.as.Instance2.impl: %struct_type.e as %Instance2.ref {
+2
View File
@@ -66,6 +66,8 @@ impl i32 as I {}
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @i32.as.I.impl: %i32.loc17 as %I.ref.loc17 {
+2
View File
@@ -61,6 +61,8 @@ impl i32 as Empty {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @i32.as.Empty.impl: %i32 as %Empty.ref {
+2
View File
@@ -55,6 +55,8 @@ impl forall [T: type] C as I { }
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @C.as.I.impl: %C.ref as %I.ref {
@@ -214,6 +214,8 @@ class X(U:! type) {
// CHECK:STDOUT: .F = %assoc0.loc5_14.1
// CHECK:STDOUT: .Param = <poisoned>
// CHECK:STDOUT: witness = (%HasF.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -487,6 +489,8 @@ class X(U:! type) {
// CHECK:STDOUT: .F = %assoc0.loc5_25.1
// CHECK:STDOUT: .U = <poisoned>
// CHECK:STDOUT: witness = (%I.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
+2
View File
@@ -71,6 +71,8 @@ impl AC as AI {}
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @C.as.I.impl.7de31e.1: %AC.ref as %AI.ref {
@@ -114,6 +114,8 @@ fn InstanceCall(n: i32) {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .G = %assoc0
// CHECK:STDOUT: witness = (%Simple.G.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @i32.as.Simple.impl: %i32 as %Simple.ref {
@@ -94,6 +94,8 @@ class C {
// CHECK:STDOUT: .T = <poisoned>
// CHECK:STDOUT: .F = %assoc0.loc16_13.1
// CHECK:STDOUT: witness = (%GenericInterface.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -102,6 +102,8 @@ fn F() {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @empty_tuple.type.as.I.impl: %.loc9_14.2 as %I.ref {
@@ -144,6 +146,8 @@ fn F() {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @empty_struct_type.as.J.impl: %.loc10_16.2 as %J.ref {
@@ -230,6 +234,8 @@ fn F() {
// CHECK:STDOUT: .Zero = %assoc0
// CHECK:STDOUT: .Z = <poisoned>
// CHECK:STDOUT: witness = (%Z.Zero.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic impl @<error>.as.Z.impl(@Z.%Self: %Z.type) {
@@ -97,6 +97,8 @@ class E {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @i32.as.I.impl: %i32 as %I.ref {
@@ -52,6 +52,8 @@ interface I {
// CHECK:STDOUT: .C = %C.decl
// CHECK:STDOUT: .I = <poisoned>
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic impl @C.as.I.impl(@I.%Self: %I.type) {
+10
View File
@@ -140,6 +140,8 @@ class X {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @<error>.as.I.impl: <error> as %I.ref {
@@ -197,6 +199,8 @@ class X {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @<error>.as.J.impl: <error> as %J.ref {
@@ -312,6 +316,8 @@ class X {
// CHECK:STDOUT: .Method = %assoc1
// CHECK:STDOUT: .Z = <poisoned>
// CHECK:STDOUT: witness = (%Z.Zero.decl, %Z.Method.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic impl @<error>.as.Z.impl(@Z.%Self: %Z.type) {
@@ -537,6 +543,8 @@ class X {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .B = %assoc0
// CHECK:STDOUT: witness = (%A.B.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @C {
@@ -545,6 +553,8 @@ class X {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @X.as.A.impl: %Self.ref as %A.ref {
@@ -58,6 +58,8 @@ impl () as I {}
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .T = @T.%assoc0
// CHECK:STDOUT: witness = (%T)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @T(@I.%Self: %I.type) {
@@ -452,6 +452,8 @@ class SelfNestedBadReturnType {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F = %assoc0
// CHECK:STDOUT: witness = (%I.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @J {
@@ -490,6 +492,8 @@ class SelfNestedBadReturnType {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F = %assoc0
// CHECK:STDOUT: witness = (%J.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @SelfNested {
@@ -530,6 +534,8 @@ class SelfNestedBadReturnType {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F = %assoc0
// CHECK:STDOUT: witness = (%SelfNested.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @NoF.as.I.impl: %Self.ref as %I.ref {
@@ -222,6 +222,8 @@ impl {.a: bool} as type where .Self impls I {}
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @struct_type.a.as.<error>.impl: %struct_type.a as %.loc10_25 {
@@ -62,6 +62,8 @@ impl true as I {}
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @<error>.as.I.impl: <error> as %I.ref {
@@ -73,6 +73,8 @@ impl i32 as I {}
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @i32.as.I.impl.36ba5e.1: %i32 as %I.ref {
@@ -164,6 +164,8 @@ impl i32 as I {
// CHECK:STDOUT: .C = <poisoned>
// CHECK:STDOUT: .F = %assoc0
// CHECK:STDOUT: witness = (%I.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @bool.as.I.impl: %.loc28_6.2 as %I.ref {
@@ -182,6 +182,8 @@ impl C as J where .Self impls Incomplete and .T = ();
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Incomplete;
@@ -260,6 +262,8 @@ impl C as J where .Self impls Incomplete and .T = ();
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .T = @T.%assoc0
// CHECK:STDOUT: witness = (%T)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Incomplete;
+34
View File
@@ -323,6 +323,8 @@ interface I {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @empty_struct_type.as.I.impl: %.loc4_7.2 as %I.ref.loc4 {
@@ -384,6 +386,8 @@ interface I {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .G = %assoc0
// CHECK:STDOUT: witness = (%I.G.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @empty_struct_type.as.I.impl: %.loc4_7.2 as %I.ref.loc4 {
@@ -477,6 +481,8 @@ interface I {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @empty_struct_type.as.I.impl: %.loc4_7.2 as file.%.loc4_14.2 {
@@ -564,6 +570,8 @@ interface I {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .T = @T.%assoc0
// CHECK:STDOUT: witness = (%T)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @T(@I.%Self: %I.type) {
@@ -679,6 +687,8 @@ interface I {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .T = @T.%assoc0
// CHECK:STDOUT: witness = (%T)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @T(@I.%Self: %I.type) {
@@ -812,6 +822,8 @@ interface I {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .T = @T.%assoc0
// CHECK:STDOUT: witness = (%T)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @T(@I.%Self: %I.type) {
@@ -911,6 +923,8 @@ interface I {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .T = @T.%assoc0
// CHECK:STDOUT: witness = (%T)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @T(@I.%Self: %I.type) {
@@ -1004,6 +1018,8 @@ interface I {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .T = <poisoned>
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @D.as.<error>.impl: %D.ref.loc13 as %.loc13 {
@@ -1140,6 +1156,8 @@ interface I {
// CHECK:STDOUT: .Self = %Self.loc3_23.1
// CHECK:STDOUT: .T = @T.%assoc0
// CHECK:STDOUT: witness = (%T)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -1292,6 +1310,8 @@ interface I {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @D.as.I.impl: %D.ref.loc5 as %I.ref.loc5 {
@@ -1398,6 +1418,8 @@ interface I {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @J {
@@ -1406,6 +1428,8 @@ interface I {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @empty_struct_type.as.<error>.impl: %.loc10_7.2 as file.%.loc10_14.2;
@@ -1497,6 +1521,8 @@ interface I {
// CHECK:STDOUT: .T = @T.%assoc0
// CHECK:STDOUT: .U = @U.%assoc1
// CHECK:STDOUT: witness = (%T, %U)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @T(@I.%Self: %I.type) {
@@ -1672,6 +1698,8 @@ interface I {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Y {
@@ -1680,6 +1708,8 @@ interface I {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @C.as.X.impl: %C.ref.loc12 as %X.ref.loc12 {
@@ -1810,6 +1840,8 @@ interface I {
// CHECK:STDOUT: .F = %assoc0
// CHECK:STDOUT: .I = <poisoned>
// CHECK:STDOUT: witness = (%I.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic impl @C.as.I.impl(@I.%Self: %I.type) {
@@ -1922,6 +1954,8 @@ interface I {
// CHECK:STDOUT: .F = %assoc1
// CHECK:STDOUT: .I = <poisoned>
// CHECK:STDOUT: witness = (%U, %I.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @U(@I.%Self: %I.type) {
@@ -293,6 +293,8 @@ impl forall [T:! type] T as I {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @I {
@@ -301,6 +303,8 @@ impl forall [T:! type] T as I {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @J {
@@ -309,6 +313,8 @@ impl forall [T:! type] T as I {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @K {
@@ -317,6 +323,8 @@ impl forall [T:! type] T as I {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @L {
@@ -325,6 +333,8 @@ impl forall [T:! type] T as I {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic impl @T.binding.as_type.as.Interface.impl.de7(%T.loc12_14.1: %I.type) {
@@ -470,6 +480,8 @@ impl forall [T:! type] T as I {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @J {
@@ -478,6 +490,8 @@ impl forall [T:! type] T as I {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic impl @T.binding.as_type.as.J.impl.8399b6.1(%T.loc7_14.1: %I.type) {
@@ -571,6 +585,8 @@ impl forall [T:! type] T as I {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @C.as.I.impl.7de31e.1: %C.ref as %I.ref {
@@ -649,6 +665,8 @@ impl forall [T:! type] T as I {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic impl @T.as.I.impl.381c92.1(%T.loc4_14.2: type) {
+2
View File
@@ -82,6 +82,8 @@ class C {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F = %assoc0
// CHECK:STDOUT: witness = (%Simple.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @C.as.Simple.impl: %Self.ref as %Simple.ref {
@@ -233,6 +233,8 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3,
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .X = @X.%assoc0
// CHECK:STDOUT: witness = (%X)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @X(@I.%Self: %I.type) {
@@ -409,6 +411,8 @@ impl () as I where .X = {.a = true, .b = (1, 2)} and .X = {.a = false, .b = (3,
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .X = @X.%assoc0
// CHECK:STDOUT: witness = (%X)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @X(@I.%Self: %I.type) {
+2
View File
@@ -65,6 +65,8 @@ impl forall [T:! type] T as Simple {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F = %assoc0
// CHECK:STDOUT: witness = (%Simple.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic impl @T.as.Simple.impl(%T.loc19_14.2: type) {
@@ -250,6 +250,8 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt);
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .Op = %assoc0
// CHECK:STDOUT: witness = (%Add.Op.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic impl @MyInt.as.Add.impl(%N.loc15_14.2: Core.IntLiteral) {
@@ -545,6 +547,8 @@ var n: Int(64) = MakeFromClass(FromLiteral(64) as OtherInt);
// CHECK:STDOUT: .Self = imports.%Main.import_ref.c52
// CHECK:STDOUT: .Op = imports.%Main.import_ref.f99
// CHECK:STDOUT: witness = (imports.%Main.Op)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic impl @MyInt.as.Add.impl(imports.%Main.import_ref.40af26.2: Core.IntLiteral) [from "generic_impl.carbon"] {
+14
View File
@@ -171,6 +171,8 @@ fn InstanceCallImportFail() {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F = %assoc0
// CHECK:STDOUT: witness = (%NonInstance.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Instance {
@@ -193,6 +195,8 @@ fn InstanceCallImportFail() {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .G = %assoc0
// CHECK:STDOUT: witness = (%Instance.G.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @struct_type.i.as.NonInstance.impl: %struct_type.i as %NonInstance.ref {
@@ -312,6 +316,8 @@ fn InstanceCallImportFail() {
// CHECK:STDOUT: .Self = imports.%Main.import_ref.700
// CHECK:STDOUT: .F = imports.%Main.import_ref.e3c
// CHECK:STDOUT: witness = (imports.%Main.F)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @struct_type.i.as.NonInstance.impl: imports.%Main.import_ref.c9a as imports.%Main.import_ref.ef5 [from "lib.carbon"] {
@@ -403,6 +409,8 @@ fn InstanceCallImportFail() {
// CHECK:STDOUT: .Self = imports.%Main.import_ref.700
// CHECK:STDOUT: .F = imports.%Main.import_ref.e3c
// CHECK:STDOUT: witness = (imports.%Main.F)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @NonInstanceCallImportFail(%n.param: %struct_type.i) {
@@ -484,6 +492,8 @@ fn InstanceCallImportFail() {
// CHECK:STDOUT: .Self = imports.%Main.import_ref.700
// CHECK:STDOUT: .F = imports.%Main.import_ref.e3c
// CHECK:STDOUT: witness = (imports.%Main.F)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @NonInstanceCallIndirectImport(%p.param: %ptr) {
@@ -592,6 +602,8 @@ fn InstanceCallImportFail() {
// CHECK:STDOUT: .Self = imports.%Main.import_ref.34d
// CHECK:STDOUT: .G = imports.%Main.import_ref.124
// CHECK:STDOUT: witness = (imports.%Main.G)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @struct_type.i.as.Instance.impl: imports.%Main.import_ref.c9a as imports.%Main.import_ref.b49 [from "lib.carbon"] {
@@ -694,6 +706,8 @@ fn InstanceCallImportFail() {
// CHECK:STDOUT: .Self = imports.%Main.import_ref.34d
// CHECK:STDOUT: .G = imports.%Main.import_ref.124
// CHECK:STDOUT: witness = (imports.%Main.G)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @struct_type.i.as.Instance.impl: imports.%Main.import_ref.c9a as imports.%Main.import_ref.b49 [from "lib.carbon"] {
@@ -73,6 +73,8 @@ fn G(c: C) {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F = %assoc0
// CHECK:STDOUT: witness = (%I.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @C.as.I.impl: %Self.ref as %I.ref {
@@ -175,6 +177,8 @@ fn G(c: C) {
// CHECK:STDOUT: .Self = imports.%Main.import_ref.8df
// CHECK:STDOUT: .F = imports.%Main.import_ref.c44
// CHECK:STDOUT: witness = (imports.%Main.F)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @C.as.I.impl: imports.%Main.import_ref.0ed as imports.%Main.import_ref.3019d1.2 [from "extend_impl_library.carbon"] {
+8
View File
@@ -186,6 +186,8 @@ impl forall [T:! type] D as J(T*) {}
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self.loc5_23.1
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -360,6 +362,8 @@ impl forall [T:! type] D as J(T*) {}
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = imports.%Main.import_ref.769
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -563,6 +567,8 @@ impl forall [T:! type] D as J(T*) {}
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self.loc5_23.1
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -711,6 +717,8 @@ impl forall [T:! type] D as J(T*) {}
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = imports.%Main.import_ref.b3b
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -244,6 +244,8 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .T = @T.%assoc0
// CHECK:STDOUT: witness = (%T)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @I3 {
@@ -264,6 +266,8 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: .T2 = @T2.%assoc1
// CHECK:STDOUT: .T3 = @T3.%assoc2
// CHECK:STDOUT: witness = (%T1, %T2, %T3)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @NonType {
@@ -276,6 +280,8 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .Y = @Y.%assoc0
// CHECK:STDOUT: witness = (%Y)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @T(@I.%Self: %I.type) {
@@ -373,6 +379,8 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: .Self = imports.%Main.import_ref.8df
// CHECK:STDOUT: .T = imports.%Main.import_ref.4fb
// CHECK:STDOUT: witness = (imports.%Main.T)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @T(imports.%Main.import_ref.e33: %I.type) [from "interface.carbon"] {
@@ -477,6 +485,8 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: .Self = imports.%Main.import_ref.8df
// CHECK:STDOUT: .T = imports.%Main.import_ref.4fb
// CHECK:STDOUT: witness = (imports.%Main.T)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @T(imports.%Main.import_ref.e33: %I.type) [from "interface.carbon"] {
@@ -572,6 +582,8 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: .Self = imports.%Main.import_ref.8df
// CHECK:STDOUT: .T = imports.%Main.import_ref.4fb
// CHECK:STDOUT: witness = (imports.%Main.T)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @T(imports.%Main.import_ref.e33: %I.type) [from "interface.carbon"] {
@@ -684,6 +696,8 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: .Self = imports.%Main.import_ref.8df
// CHECK:STDOUT: .T = imports.%Main.import_ref.4fb
// CHECK:STDOUT: witness = (imports.%Main.T)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @T(imports.%Main.import_ref.e33: %I.type) [from "interface.carbon"] {
@@ -837,6 +851,8 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: .T2 = imports.%Main.import_ref.680
// CHECK:STDOUT: .T3 = imports.%Main.import_ref.181
// CHECK:STDOUT: witness = (imports.%Main.T1, imports.%Main.T2, imports.%Main.T3)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @T1(imports.%Main.import_ref.fbb73e.1: %I3.type) [from "interface.carbon"] {
@@ -950,6 +966,8 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: .Self = imports.%Main.import_ref.8df
// CHECK:STDOUT: .T = imports.%Main.import_ref.4fb
// CHECK:STDOUT: witness = (imports.%Main.T)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @T(imports.%Main.import_ref.e33: %I.type) [from "interface.carbon"] {
@@ -1045,6 +1063,8 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: .Self = imports.%Main.import_ref.8df
// CHECK:STDOUT: .T = imports.%Main.import_ref.4fb
// CHECK:STDOUT: witness = (imports.%Main.T)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @T(imports.%Main.import_ref.e33: %I.type) [from "interface.carbon"] {
@@ -1138,6 +1158,8 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: .Self = imports.%Main.import_ref.8df
// CHECK:STDOUT: .T = imports.%Main.import_ref.4fb
// CHECK:STDOUT: witness = (imports.%Main.T)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @T(imports.%Main.import_ref.e33: %I.type) [from "interface.carbon"] {
@@ -1230,6 +1252,8 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: .Self = imports.%Main.import_ref.8df
// CHECK:STDOUT: .T = imports.%Main.import_ref.4fb
// CHECK:STDOUT: witness = (imports.%Main.T)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @T(imports.%Main.import_ref.e33: %I.type) [from "interface.carbon"] {
@@ -1322,6 +1346,8 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: .Self = imports.%Main.import_ref.8df
// CHECK:STDOUT: .T = imports.%Main.import_ref.4fb
// CHECK:STDOUT: witness = (imports.%Main.T)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @T(imports.%Main.import_ref.e33: %I.type) [from "interface.carbon"] {
@@ -1419,6 +1445,8 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: .Self = imports.%Main.import_ref.8df
// CHECK:STDOUT: .T = imports.%Main.import_ref.4fb
// CHECK:STDOUT: witness = (imports.%Main.T)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @T(imports.%Main.import_ref.e33: %I.type) [from "interface.carbon"] {
@@ -1514,6 +1542,8 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: .Self = imports.%Main.import_ref.b1e
// CHECK:STDOUT: .Y = imports.%Main.import_ref.9fa
// CHECK:STDOUT: witness = (imports.%Main.Y)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @Y(imports.%Main.import_ref.046: %NonType.type) [from "interface.carbon"] {
@@ -1564,6 +1594,8 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F = %assoc0
// CHECK:STDOUT: witness = (%IF.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic fn @IF.F(@IF.%Self: %IF.type) {
@@ -1637,6 +1669,8 @@ impl CD as IF where .F = 0 {
// CHECK:STDOUT: .Self = imports.%Main.import_ref.14d
// CHECK:STDOUT: .F = imports.%Main.import_ref.f22
// CHECK:STDOUT: witness = (imports.%Main.F)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @CD.as.IF.impl: %CD.ref as %.loc10_15 {
+4
View File
@@ -99,6 +99,8 @@ fn F(x: (), y: ()) -> () {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .Op = %assoc0
// CHECK:STDOUT: witness = (%Add.Op.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic fn @Add.Op(@Add.%Self: %Add.type) {
@@ -198,6 +200,8 @@ fn F(x: (), y: ()) -> () {
// CHECK:STDOUT: .Self = imports.%Main.import_ref.c52
// CHECK:STDOUT: .Op = imports.%Main.import_ref.f99
// CHECK:STDOUT: witness = (imports.%Main.Op)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @empty_tuple.type.as.Add.impl: %.loc6_7.2 as %Add.ref {
@@ -147,6 +147,8 @@ impl forall [N:! E] D(N) as I where .Assoc = () {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Z {
@@ -155,6 +157,8 @@ impl forall [N:! E] D(N) as I where .Assoc = () {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @I {
@@ -187,6 +191,8 @@ impl forall [N:! E] D(N) as I where .Assoc = () {
// CHECK:STDOUT: .C = <poisoned>
// CHECK:STDOUT: .F = %assoc1
// CHECK:STDOUT: witness = (%Assoc, %I.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @Assoc(@I.%Self: %I.type) {
@@ -428,18 +434,24 @@ impl forall [N:! E] D(N) as I where .Assoc = () {
// CHECK:STDOUT: .Assoc = imports.%Main.import_ref.9ff
// CHECK:STDOUT: .F = imports.%Main.import_ref.abf
// CHECK:STDOUT: witness = (imports.%Main.Assoc, imports.%Main.F)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Y [from "impl_def.carbon"] {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = imports.%Main.import_ref.581
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Z [from "impl_def.carbon"] {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = imports.%Main.import_ref.462
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @Assoc(imports.%Main.import_ref.e339be.1: %I.type) [from "impl_def.carbon"] {
+6
View File
@@ -89,6 +89,8 @@ fn G() {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F = %assoc0
// CHECK:STDOUT: witness = (%I.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic fn @I.F(@I.%Self: %I.type) {
@@ -206,6 +208,8 @@ fn G() {
// CHECK:STDOUT: .Self = imports.%Main.import_ref.8df
// CHECK:STDOUT: .F = imports.%Main.import_ref.507
// CHECK:STDOUT: witness = (imports.%Main.F)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic impl @C.as.I.impl(%Y.loc7_14.2: %empty_tuple.type) {
@@ -474,6 +478,8 @@ fn G() {
// CHECK:STDOUT: .Self = imports.%Main.import_ref.8df
// CHECK:STDOUT: .F = imports.%Main.import_ref.c44
// CHECK:STDOUT: witness = (imports.%Main.F.8b9)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic impl @C.as.I.impl(imports.%Main.import_ref.7a8327.2: %empty_tuple.type) [from "b.carbon"] {
@@ -112,6 +112,8 @@ fn H() -> C({}).(I.F)() {}
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F = %assoc0
// CHECK:STDOUT: witness = (%I.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic impl @C.as.I.impl(%T.loc10_14.2: type) {
@@ -291,6 +293,8 @@ fn H() -> C({}).(I.F)() {}
// CHECK:STDOUT: .Self = imports.%Main.import_ref.8df
// CHECK:STDOUT: .F = imports.%Main.import_ref.c44
// CHECK:STDOUT: witness = (imports.%Main.F)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic impl @C.as.I.impl(imports.%Main.import_ref.efcd44.2: type) [from "import_generic.carbon"] {
+14
View File
@@ -177,6 +177,8 @@ fn InstanceC(a: A) -> C {
// CHECK:STDOUT: .Dest = <poisoned>
// CHECK:STDOUT: .Convert = %assoc0.loc4_35.1
// CHECK:STDOUT: witness = (%ImplicitAs.Convert.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -319,6 +321,8 @@ fn InstanceC(a: A) -> C {
// CHECK:STDOUT: .Self = %Self.loc4_28.1
// CHECK:STDOUT: .Op = %assoc0.loc5_22.1
// CHECK:STDOUT: witness = (%Action.Op.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -528,6 +532,8 @@ fn InstanceC(a: A) -> C {
// CHECK:STDOUT: .Self = imports.%Main.import_ref.0fd
// CHECK:STDOUT: .Op = imports.%Main.import_ref.2c8
// CHECK:STDOUT: witness = (imports.%Main.Op)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -708,6 +714,8 @@ fn InstanceC(a: A) -> C {
// CHECK:STDOUT: .Self = imports.%Main.import_ref.0fd
// CHECK:STDOUT: .Op = imports.%Main.import_ref.2c8
// CHECK:STDOUT: witness = (imports.%Main.Op)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -923,6 +931,8 @@ fn InstanceC(a: A) -> C {
// CHECK:STDOUT: .Make = %assoc0.loc6_17.1
// CHECK:STDOUT: .Method = %assoc1.loc8_31.1
// CHECK:STDOUT: witness = (%Factory.Make.decl, %Factory.Method.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -1183,6 +1193,8 @@ fn InstanceC(a: A) -> C {
// CHECK:STDOUT: .Make = imports.%Main.import_ref.2a0
// CHECK:STDOUT: .Method = imports.%Main.import_ref.da9
// CHECK:STDOUT: witness = (imports.%Main.Make, imports.%Main.Method)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -1437,6 +1449,8 @@ fn InstanceC(a: A) -> C {
// CHECK:STDOUT: .Make = imports.%Main.import_ref.2a0
// CHECK:STDOUT: .Method = imports.%Main.import_ref.da9
// CHECK:STDOUT: witness = (imports.%Main.Make, imports.%Main.Method)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
+2
View File
@@ -85,6 +85,8 @@ fn G(c: C) {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F = %assoc0
// CHECK:STDOUT: witness = (%HasF.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @C.as.HasF.impl: %C.ref as %HasF.ref {
@@ -193,6 +193,8 @@ fn G() {
// CHECK:STDOUT: .JJ = <poisoned>
// CHECK:STDOUT: .J = <poisoned>
// CHECK:STDOUT: witness = (%I.II.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @J {
@@ -215,6 +217,8 @@ fn G() {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .JJ = %assoc0
// CHECK:STDOUT: witness = (%J.JJ.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @C.as.I.impl: %Self.ref as %I.ref {
@@ -77,6 +77,8 @@ fn F(c: C) {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F = %assoc0
// CHECK:STDOUT: witness = (%I.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: class @C {
@@ -101,6 +101,8 @@ fn G() {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F = %assoc0
// CHECK:STDOUT: witness = (%I.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @C.as.I.impl.bd0: %Self.ref as %I.ref;
+12
View File
@@ -220,6 +220,8 @@ fn G(x: A) {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F = %assoc0
// CHECK:STDOUT: witness = (%HasF.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic impl @T.as.HasF.impl(%T.loc8_14.2: type) {
@@ -452,6 +454,8 @@ fn G(x: A) {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F = %assoc0
// CHECK:STDOUT: witness = (%HasF.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic impl @ptr.as.HasF.impl(%T.loc8_14.2: type) {
@@ -692,6 +696,8 @@ fn G(x: A) {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F = %assoc0
// CHECK:STDOUT: witness = (%HasF.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic impl @C.as.HasF.impl(%T.loc10_14.2: type) {
@@ -947,6 +953,8 @@ fn G(x: A) {
// CHECK:STDOUT: .Self = %Self.loc4_26.1
// CHECK:STDOUT: .F = %assoc0.loc5_21.1
// CHECK:STDOUT: witness = (%HasF.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -1168,6 +1176,8 @@ fn G(x: A) {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F = %assoc0
// CHECK:STDOUT: witness = (%HasF.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic impl @T.as.HasF.impl(%T.loc12_14.2: type, %U.loc12_24.2: type) {
@@ -1362,6 +1372,8 @@ fn G(x: A) {
// CHECK:STDOUT: .Self = %Self.loc4_26.1
// CHECK:STDOUT: .F = %assoc0.loc5_21.1
// CHECK:STDOUT: witness = (%HasF.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
+68
View File
@@ -288,6 +288,8 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F = %assoc0
// CHECK:STDOUT: witness = (%HasF.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @C.as.HasF.impl: %C.ref as %HasF.ref {
@@ -448,6 +450,8 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .G = %assoc0
// CHECK:STDOUT: witness = (%HasG.G.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @HasF [from "package_a.carbon"] {
@@ -455,6 +459,8 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: .Self = imports.%PackageA.import_ref.2fb
// CHECK:STDOUT: .F = imports.%PackageA.import_ref.c63
// CHECK:STDOUT: witness = (imports.%PackageA.F)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @C.as.HasG.impl: %C.ref as %HasG.ref {
@@ -655,6 +661,8 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: .Self = imports.%PackageA.import_ref.2fb
// CHECK:STDOUT: .F = imports.%PackageA.import_ref.b36
// CHECK:STDOUT: witness = (imports.%PackageA.F)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @C.as.HasF.impl: imports.%PackageA.import_ref.29a as imports.%PackageA.import_ref.e8c [from "package_a.carbon"] {
@@ -785,6 +793,8 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: .Self = imports.%PackageA.import_ref.2fb
// CHECK:STDOUT: .F = imports.%PackageA.import_ref.b36
// CHECK:STDOUT: witness = (imports.%PackageA.F)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @C.as.HasF.impl: imports.%PackageA.import_ref.29a as imports.%PackageA.import_ref.e8c [from "package_a.carbon"] {
@@ -927,6 +937,8 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: .Self = imports.%PackageB.import_ref.103
// CHECK:STDOUT: .G = imports.%PackageB.import_ref.6c2
// CHECK:STDOUT: witness = (imports.%PackageB.G)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @C.as.HasG.impl: imports.%PackageB.import_ref.dfb as imports.%PackageB.import_ref.cee586.1 [from "package_b.carbon"] {
@@ -1064,6 +1076,8 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: .Self = imports.%PackageB.import_ref.103
// CHECK:STDOUT: .G = imports.%PackageB.import_ref.6c2
// CHECK:STDOUT: witness = (imports.%PackageB.G)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @C.as.HasG.impl: imports.%PackageB.import_ref.dfb as imports.%PackageB.import_ref.cee586.1 [from "package_b.carbon"] {
@@ -1180,6 +1194,8 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .H = %assoc0
// CHECK:STDOUT: witness = (%Z.H.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @empty_tuple.type.as.Z.impl: %.loc8_7.2 as %Z.ref {
@@ -1282,6 +1298,8 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: .Self = imports.%PackageAssociatedInterface.import_ref.462
// CHECK:STDOUT: .H = imports.%PackageAssociatedInterface.import_ref.609
// CHECK:STDOUT: witness = (imports.%PackageAssociatedInterface.H)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @empty_tuple.type.as.Z.impl: imports.%PackageAssociatedInterface.import_ref.e5c as imports.%PackageAssociatedInterface.import_ref.df1 [from "associated_interface.carbon"] {
@@ -1393,6 +1411,8 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .K = %assoc0
// CHECK:STDOUT: witness = (%Y.K.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic class @AnyParam(%T.loc4_16.2: type, %X.loc4_26.2: @AnyParam.%T.loc4_16.1 (%T)) {
@@ -1551,6 +1571,8 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self.loc6_38.1
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -1559,6 +1581,8 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: .Self = imports.%PackageHasParam.import_ref.581
// CHECK:STDOUT: .K = imports.%PackageHasParam.import_ref.f69
// CHECK:STDOUT: witness = (imports.%PackageHasParam.K)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @AnyParam.as.Y.impl: %AnyParam as %Y.ref {
@@ -1777,6 +1801,8 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = imports.%PackageGenericInterface.import_ref.4d7
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -1785,6 +1811,8 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: .Self = imports.%PackageHasParam.import_ref.581
// CHECK:STDOUT: .K = imports.%PackageHasParam.import_ref.f69
// CHECK:STDOUT: witness = (imports.%PackageHasParam.K)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @AnyParam.as.Y.impl: imports.%PackageGenericInterface.import_ref.321 as imports.%PackageGenericInterface.import_ref.ca6 [from "has_generic_interface.carbon"] {
@@ -1984,6 +2012,8 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: .Self = imports.%PackageHasParam.import_ref.581
// CHECK:STDOUT: .K = imports.%PackageHasParam.import_ref.f69
// CHECK:STDOUT: witness = (imports.%PackageHasParam.K)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @AnyParam.as.Y.impl: %AnyParam as %Y.ref {
@@ -2209,6 +2239,8 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: .Self = imports.%PackageHasParam.import_ref.581
// CHECK:STDOUT: .K = imports.%PackageHasParam.import_ref.f69
// CHECK:STDOUT: witness = (imports.%PackageHasParam.K)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @AnyParam.as.Y.impl: imports.%PackageGenericClass.import_ref.a0e as imports.%PackageGenericClass.import_ref.ca6 [from "has_generic_class.carbon"] {
@@ -2424,6 +2456,8 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Extra2 {
@@ -2432,6 +2466,8 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Extra3 {
@@ -2440,6 +2476,8 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Extra4 {
@@ -2448,6 +2486,8 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Extra5 {
@@ -2456,6 +2496,8 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Extra6 {
@@ -2464,6 +2506,8 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Extra7 {
@@ -2472,6 +2516,8 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Extra8 {
@@ -2480,6 +2526,8 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @I {
@@ -2502,6 +2550,8 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F = %assoc0
// CHECK:STDOUT: witness = (%I.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @C.as.I.impl: %C as %I.ref {
@@ -2660,54 +2710,72 @@ fn Test(c: HasExtraInterfaces.C(type)) {
// CHECK:STDOUT: .Self = imports.%HasExtraInterfaces.import_ref.8df
// CHECK:STDOUT: .F = imports.%HasExtraInterfaces.import_ref.be9
// CHECK:STDOUT: witness = (imports.%HasExtraInterfaces.F)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Extra8 [from "has_extra_interfaces.carbon"] {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = imports.%HasExtraInterfaces.import_ref.c8c
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Extra7 [from "has_extra_interfaces.carbon"] {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = imports.%HasExtraInterfaces.import_ref.591
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Extra6 [from "has_extra_interfaces.carbon"] {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = imports.%HasExtraInterfaces.import_ref.16e
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Extra5 [from "has_extra_interfaces.carbon"] {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = imports.%HasExtraInterfaces.import_ref.e5e
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Extra4 [from "has_extra_interfaces.carbon"] {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = imports.%HasExtraInterfaces.import_ref.178
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Extra3 [from "has_extra_interfaces.carbon"] {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = imports.%HasExtraInterfaces.import_ref.e5d
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Extra2 [from "has_extra_interfaces.carbon"] {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = imports.%HasExtraInterfaces.import_ref.7fd
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Extra1 [from "has_extra_interfaces.carbon"] {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = imports.%HasExtraInterfaces.import_ref.642
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @C.as.I.impl: imports.%HasExtraInterfaces.import_ref.ef7 as imports.%HasExtraInterfaces.import_ref.301 [from "has_extra_interfaces.carbon"] {
@@ -119,6 +119,8 @@ fn F(c: C) -> i32 {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F = %assoc0
// CHECK:STDOUT: witness = (%I.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @C.as.I.impl: %Self.ref as %I.ref {
@@ -217,6 +217,8 @@ fn F() {
// CHECK:STDOUT: .Self = %Self.loc50_15.1
// CHECK:STDOUT: .T = @T.%assoc0
// CHECK:STDOUT: witness = (%T)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -512,6 +514,8 @@ fn F() {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Z2 {
@@ -520,6 +524,8 @@ fn F() {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic interface @Y(@Outer.%OuterParam.loc6_13.2: %Z1.type) {
@@ -540,6 +546,8 @@ fn F() {
// CHECK:STDOUT: .Self = %Self.loc7_15.1
// CHECK:STDOUT: .T = @T.%assoc0
// CHECK:STDOUT: witness = (%T)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -264,6 +264,8 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) {
// CHECK:STDOUT: .Self = %Self.loc3_23.1
// CHECK:STDOUT: .X = @X.%assoc0
// CHECK:STDOUT: witness = (%X)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -605,6 +607,8 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) {
// CHECK:STDOUT: .Self = %Self.loc3_23.1
// CHECK:STDOUT: .X = @X.%assoc0
// CHECK:STDOUT: witness = (%X)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -614,6 +618,8 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @X(@Z.%T.loc3_13.2: type, @Z.%Self.loc3_23.1: @Z.%Z.type (%Z.type.4d7)) {
@@ -879,6 +885,8 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .Type = @Type.%assoc0
// CHECK:STDOUT: witness = (%Type)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @Type(@Ptr.%Self: %Ptr.type) {
@@ -1084,6 +1092,8 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .Type = @Type.%assoc0
// CHECK:STDOUT: witness = (%Type)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @Type(@Ptr.%Self: %Ptr.type) {
@@ -1288,6 +1298,8 @@ fn F[T:! Ptr](var t: T) -> T.(Ptr.Type) {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .Type = @Type.%assoc0
// CHECK:STDOUT: witness = (%Type)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @Type(@Ptr.%Self: %Ptr.type) {
@@ -133,6 +133,8 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); }
// CHECK:STDOUT: .Self = %Self.loc4_23.1
// CHECK:STDOUT: .F = %assoc0.loc4_43.1
// CHECK:STDOUT: witness = (%I.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -265,6 +267,8 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); }
// CHECK:STDOUT: .Self = imports.%Main.import_ref.769
// CHECK:STDOUT: .F = imports.%Main.import_ref.2de
// CHECK:STDOUT: witness = (imports.%Main.F)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -440,6 +444,8 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); }
// CHECK:STDOUT: .Self = imports.%Main.import_ref.769
// CHECK:STDOUT: .F = imports.%Main.import_ref.715
// CHECK:STDOUT: witness = (imports.%Main.F)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -601,6 +607,8 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); }
// CHECK:STDOUT: .Self = imports.%Main.import_ref.769
// CHECK:STDOUT: .F = imports.%Main.import_ref.2de
// CHECK:STDOUT: witness = (imports.%Main.F)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -809,6 +817,8 @@ fn H(c: C(InClassArgs)) { c.(I(X).F)(); }
// CHECK:STDOUT: .Self = imports.%Main.import_ref.769
// CHECK:STDOUT: .F = imports.%Main.import_ref.715
// CHECK:STDOUT: witness = (imports.%Main.F)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -96,6 +96,8 @@ fn Call() {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F = %assoc0
// CHECK:STDOUT: witness = (%I.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic fn @I.F(@I.%Self: %I.type) {
@@ -165,6 +167,8 @@ fn Call() {
// CHECK:STDOUT: .Self = imports.%Main.import_ref.8df
// CHECK:STDOUT: .F = imports.%Main.import_ref.507
// CHECK:STDOUT: witness = (imports.%Main.F)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @C.as.I.impl: %C.ref as %I.ref {
@@ -336,6 +340,8 @@ fn Call() {
// CHECK:STDOUT: .Self = imports.%Main.import_ref.8df
// CHECK:STDOUT: .F = imports.%Main.import_ref.c44
// CHECK:STDOUT: witness = (imports.%Main.F)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @C.as.I.impl: imports.%Main.import_ref.29a as imports.%Main.import_ref.f50 [from "c.carbon"] {
+16
View File
@@ -229,6 +229,8 @@ fn P(o: O) {
// CHECK:STDOUT: .HasG = <poisoned>
// CHECK:STDOUT: .G = <poisoned>
// CHECK:STDOUT: witness = (%HasF.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @HasG {
@@ -241,6 +243,8 @@ fn P(o: O) {
// CHECK:STDOUT: .G = %assoc0
// CHECK:STDOUT: .F = <poisoned>
// CHECK:STDOUT: witness = (%HasG.G.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @C.as.HasF.impl: %Self.ref as %HasF.ref {
@@ -393,6 +397,8 @@ fn P(o: O) {
// CHECK:STDOUT: .A = %assoc0
// CHECK:STDOUT: .HasA2 = <poisoned>
// CHECK:STDOUT: witness = (%HasA1.A.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @HasA2 {
@@ -404,6 +410,8 @@ fn P(o: O) {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .A = %assoc0
// CHECK:STDOUT: witness = (%HasA2.A.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @D.as.HasA1.impl: %Self.ref as %HasA1.ref {
@@ -541,6 +549,8 @@ fn P(o: O) {
// CHECK:STDOUT: .I = %assoc0
// CHECK:STDOUT: .J = <poisoned>
// CHECK:STDOUT: witness = (%HasI.I.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @E.as.HasI.impl: %Self.ref as %HasI.ref {
@@ -679,6 +689,8 @@ fn P(o: O) {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .K = %assoc0
// CHECK:STDOUT: witness = (%HasK.K.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @L.as.HasK.impl: %Self.ref as %HasK.ref {
@@ -821,6 +833,8 @@ fn P(o: O) {
// CHECK:STDOUT: .N = %assoc0
// CHECK:STDOUT: .HasN2 = <poisoned>
// CHECK:STDOUT: witness = (%HasN1.N.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @HasN2 {
@@ -832,6 +846,8 @@ fn P(o: O) {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .N = %assoc0
// CHECK:STDOUT: witness = (%HasN2.N.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @O.as.HasN1.impl: %Self.ref as %HasN1.ref {
@@ -133,6 +133,8 @@ impl () as D;
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @empty_tuple.type.as.A.impl: %.loc10_7.2 as %A.ref;
@@ -173,6 +175,8 @@ impl () as D;
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = imports.%Main.import_ref.3b8
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @empty_tuple.type.as.A.impl.766c6e.1: imports.%Main.import_ref.e5c as imports.%Main.import_ref.831 [from "fail_decl_in_api_definition_in_impl.carbon"];
@@ -233,6 +237,8 @@ impl () as D;
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @empty_tuple.type.as.B.impl: %.loc10_7.2 as %B.ref;
@@ -263,6 +269,8 @@ impl () as D;
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = imports.%Main.import_ref.5c0
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @empty_tuple.type.as.B.impl: imports.%Main.import_ref.e5c as imports.%Main.import_ref.171 [from "fail_decl_only_in_api.carbon"];
@@ -296,6 +304,8 @@ impl () as D;
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @empty_tuple.type.as.C.impl: %.loc10_7.2 as %C.ref;
@@ -331,6 +341,8 @@ impl () as D;
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = imports.%Main.import_ref.a1a
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @empty_tuple.type.as.C.impl.130841.1: imports.%Main.import_ref.e5c as imports.%Main.import_ref.653 [from "fail_decl_in_api_decl_in_impl.carbon"];
@@ -374,6 +386,8 @@ impl () as D;
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @empty_tuple.type.as.D.impl: %.loc10_7.2 as %D.ref;
+2
View File
@@ -75,6 +75,8 @@ impl i32 as I {}
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @i32.as.I.impl: %i32.loc17 as %I.ref.loc17 {
+2
View File
@@ -78,6 +78,8 @@ class A {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .Make = %assoc0
// CHECK:STDOUT: witness = (%DefaultConstructible.Make.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @C.as.DefaultConstructible.impl: %C.ref as %DefaultConstructible.ref {
@@ -171,6 +171,8 @@ impl D as SelfNested {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F = %assoc0
// CHECK:STDOUT: witness = (%UseSelf.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @SelfNested {
@@ -202,6 +204,8 @@ impl D as SelfNested {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F = %assoc0
// CHECK:STDOUT: witness = (%SelfNested.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @C.as.UseSelf.impl: %C.ref as %UseSelf.ref {
@@ -63,6 +63,8 @@ class X {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .B = %assoc0
// CHECK:STDOUT: witness = (%A.B.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @X.as.A.impl: %Self.ref as %A.ref {
+28
View File
@@ -486,6 +486,8 @@ fn F() {
// CHECK:STDOUT: .U = @U.%assoc0
// CHECK:STDOUT: .F = %assoc1
// CHECK:STDOUT: witness = (%U, %J.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @U(@J.%Self: %J.type) {
@@ -791,6 +793,8 @@ fn F() {
// CHECK:STDOUT: .U = @U.%assoc0
// CHECK:STDOUT: .F = %assoc1
// CHECK:STDOUT: witness = (%U, %J.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @U(@J.%Self: %J.type) {
@@ -1145,6 +1149,8 @@ fn F() {
// CHECK:STDOUT: .F = %assoc1
// CHECK:STDOUT: .G = %assoc2
// CHECK:STDOUT: witness = (%U, %J.F.decl, %J.G.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @U(@J.%Self: %J.type) {
@@ -1670,6 +1676,8 @@ fn F() {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .Op = %assoc0
// CHECK:STDOUT: witness = (%I.Op.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @J {
@@ -1706,6 +1714,8 @@ fn F() {
// CHECK:STDOUT: .U = @U.%assoc0
// CHECK:STDOUT: .F = %assoc1
// CHECK:STDOUT: witness = (%U, %J.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @U(@J.%Self: %J.type) {
@@ -1980,6 +1990,8 @@ fn F() {
// CHECK:STDOUT: .U = @U.%assoc0
// CHECK:STDOUT: .G = %assoc1
// CHECK:STDOUT: witness = (%U, %J.G.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @U(@J.%Self: %J.type) {
@@ -2203,6 +2215,8 @@ fn F() {
// CHECK:STDOUT: .U = @U.%assoc0
// CHECK:STDOUT: .F = %assoc1
// CHECK:STDOUT: witness = (%U, %J.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @U(@J.%Self: %J.type) {
@@ -2361,6 +2375,8 @@ fn F() {
// CHECK:STDOUT: .U = @U.%assoc0
// CHECK:STDOUT: .F = %assoc1
// CHECK:STDOUT: witness = (%U, %J.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @U(@J.%Self: %J.type) {
@@ -2606,6 +2622,8 @@ fn F() {
// CHECK:STDOUT: .U2 = @U2.%assoc0
// CHECK:STDOUT: .F = %assoc1
// CHECK:STDOUT: witness = (%U2, %J2.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @U2(@J2.%Self: %J2.type) {
@@ -2895,6 +2913,8 @@ fn F() {
// CHECK:STDOUT: .V = @V.%assoc0
// CHECK:STDOUT: .F = %assoc1
// CHECK:STDOUT: witness = (%V, %K.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @V(@K.%Self: %K.type) {
@@ -3098,6 +3118,8 @@ fn F() {
// CHECK:STDOUT: .Z = @Z.%assoc0
// CHECK:STDOUT: .G = %assoc1
// CHECK:STDOUT: witness = (%Z, %M.G.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @Z(@M.%Self: %M.type) {
@@ -3299,6 +3321,8 @@ fn F() {
// CHECK:STDOUT: .Z = @Z.%assoc0
// CHECK:STDOUT: .G = %assoc1
// CHECK:STDOUT: witness = (%Z, %M.G.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @Z(@M.%Self: %M.type) {
@@ -3595,6 +3619,8 @@ fn F() {
// CHECK:STDOUT: .N = @N.%assoc0
// CHECK:STDOUT: .F = %assoc1
// CHECK:STDOUT: witness = (%N, %I.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @N(@I.%Self: %I.type) {
@@ -3798,6 +3824,8 @@ fn F() {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .X = @X.%assoc0
// CHECK:STDOUT: witness = (%X)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @X(@Z.%Self: %Z.type) {
+2
View File
@@ -48,6 +48,8 @@ fn F(e: Empty) {}
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @F(%e.param: %Empty.type) {
@@ -103,6 +103,8 @@ fn F(T:! Empty) {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @C.as.Empty.impl: %C.ref as %Empty.ref {
+2
View File
@@ -63,6 +63,8 @@ interface I {
// CHECK:STDOUT: .T = @T.%assoc0
// CHECK:STDOUT: .N = @N.%assoc1
// CHECK:STDOUT: witness = (%T, %N)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @T(@I.%Self: %I.type) {
@@ -114,6 +114,8 @@ fn H() {
// CHECK:STDOUT: .Self = %Self.loc15_23.1
// CHECK:STDOUT: .F = %assoc0.loc16_22.1
// CHECK:STDOUT: witness = (%I.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
+4
View File
@@ -50,6 +50,8 @@ interface ForwardDeclared {
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @ForwardDeclared {
@@ -61,6 +63,8 @@ interface ForwardDeclared {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F = %assoc0
// CHECK:STDOUT: witness = (%ForwardDeclared.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic fn @ForwardDeclared.F(@ForwardDeclared.%Self: %ForwardDeclared.type) {
@@ -344,6 +344,8 @@ fn Works() {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .U = @U.%assoc0
// CHECK:STDOUT: witness = (%U)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @U(@J.%Self: %J.type) {
@@ -479,6 +481,8 @@ fn Works() {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .Q1 = %assoc0
// CHECK:STDOUT: witness = (%K1.Q1.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic fn @K1.Q1(@K1.%Self: %K1.type) {
@@ -641,6 +645,8 @@ fn Works() {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .Q2 = %assoc0
// CHECK:STDOUT: witness = (%K2.Q2.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic fn @K2.Q2(@K2.%Self: %K2.type) {
@@ -864,6 +870,8 @@ fn Works() {
// CHECK:STDOUT: .R1 = %assoc0
// CHECK:STDOUT: .S1 = %assoc1
// CHECK:STDOUT: witness = (%L1.R1.decl, %L1.S1.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic fn @L1.R1(@L1.%Self: %L1.type) {
@@ -1179,6 +1187,8 @@ fn Works() {
// CHECK:STDOUT: .R1 = %assoc0
// CHECK:STDOUT: .S1 = %assoc1
// CHECK:STDOUT: witness = (%L1.R1.decl, %L1.S1.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic fn @L1.R1(@L1.%Self: %L1.type) {
@@ -1440,6 +1450,8 @@ fn Works() {
// CHECK:STDOUT: .R2 = %assoc0
// CHECK:STDOUT: .S2 = %assoc1
// CHECK:STDOUT: witness = (%L2.R2.decl, %L2.S2.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic fn @L2.R2(@L2.%Self: %L2.type) {
@@ -1652,6 +1664,8 @@ fn Works() {
// CHECK:STDOUT: .R2 = %assoc0
// CHECK:STDOUT: .S2 = %assoc1
// CHECK:STDOUT: witness = (%L2.R2.decl, %L2.S2.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic fn @L2.R2(@L2.%Self: %L2.type) {
@@ -1840,6 +1854,8 @@ fn Works() {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .G = %assoc0
// CHECK:STDOUT: witness = (%A.G.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @C.as.A.impl: %C.ref as %A.ref {
@@ -2021,6 +2037,8 @@ fn Works() {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .G = %assoc0
// CHECK:STDOUT: witness = (%A.G.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @C.as.A.impl: %C.ref as %A.ref {
@@ -281,6 +281,8 @@ fn Works() {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .U = @U.%assoc0
// CHECK:STDOUT: witness = (%U)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @U(@J.%Self: %J.type) {
@@ -416,6 +418,8 @@ fn Works() {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .Q1 = %assoc0
// CHECK:STDOUT: witness = (%K1.Q1.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic fn @K1.Q1(@K1.%Self: %K1.type) {
@@ -578,6 +582,8 @@ fn Works() {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .Q2 = %assoc0
// CHECK:STDOUT: witness = (%K2.Q2.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic fn @K2.Q2(@K2.%Self: %K2.type) {
@@ -801,6 +807,8 @@ fn Works() {
// CHECK:STDOUT: .R1 = %assoc0
// CHECK:STDOUT: .S1 = %assoc1
// CHECK:STDOUT: witness = (%L1.R1.decl, %L1.S1.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic fn @L1.R1(@L1.%Self: %L1.type) {
@@ -1056,6 +1064,8 @@ fn Works() {
// CHECK:STDOUT: .R2 = %assoc0
// CHECK:STDOUT: .S2 = %assoc1
// CHECK:STDOUT: witness = (%L2.R2.decl, %L2.S2.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic fn @L2.R2(@L2.%Self: %L2.type) {
@@ -1240,6 +1250,8 @@ fn Works() {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .G = %assoc0
// CHECK:STDOUT: witness = (%A.G.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @C.as.A.impl: %C.ref as %A.ref {
@@ -1421,6 +1433,8 @@ fn Works() {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .G = %assoc0
// CHECK:STDOUT: witness = (%A.G.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @C.as.A.impl: %C.ref as %A.ref {
+2
View File
@@ -99,6 +99,8 @@ class C {
// CHECK:STDOUT: .C = <poisoned>
// CHECK:STDOUT: .I = <poisoned>
// CHECK:STDOUT: witness = (%I.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: impl @C.as.I.impl: %C.ref as %I.ref {
+6
View File
@@ -62,6 +62,8 @@ fn UseEmpty(i: I) {}
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: --- export.carbon
@@ -87,6 +89,8 @@ fn UseEmpty(i: I) {}
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = imports.%Main.import_ref
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: --- use_export.carbon
@@ -123,6 +127,8 @@ fn UseEmpty(i: I) {}
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = imports.%Main.import_ref
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: fn @UseEmpty(%i.param: %I.type) {
@@ -70,6 +70,8 @@ interface Outer {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F = file.%Interface.F.decl
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Outer {
@@ -81,6 +83,8 @@ interface Outer {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .Inner = %Inner.decl
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic interface @Inner(@Outer.%Self: %Outer.type) {
@@ -99,6 +103,8 @@ interface Outer {
// CHECK:STDOUT: .Self = %Self.loc25_19.1
// CHECK:STDOUT: .F = @Outer.%Inner.F.decl
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -156,6 +156,8 @@ interface C {
// CHECK:STDOUT: .Dest = <poisoned>
// CHECK:STDOUT: .Convert = %assoc0.loc4_35.1
// CHECK:STDOUT: witness = (%ImplicitAs.Convert.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -226,6 +228,8 @@ interface C {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .T = @T.%assoc0
// CHECK:STDOUT: witness = (%T)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @J {
@@ -250,6 +254,8 @@ interface C {
// CHECK:STDOUT: .U = %U
// CHECK:STDOUT: .F = %assoc0
// CHECK:STDOUT: witness = (%J.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @T(@I.%Self: %I.type) {
@@ -359,6 +365,8 @@ interface C {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .T2 = @T2.%assoc0
// CHECK:STDOUT: witness = (%T2)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @J2 {
@@ -386,6 +394,8 @@ interface C {
// CHECK:STDOUT: .U2 = %U2
// CHECK:STDOUT: .F2 = %assoc0
// CHECK:STDOUT: witness = (%J2.F2.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @T2(@I2.%Self: %I2.type) {
@@ -507,6 +517,8 @@ interface C {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F = %assoc0
// CHECK:STDOUT: witness = (%A.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @B {
@@ -531,6 +543,8 @@ interface C {
// CHECK:STDOUT: .F = %F
// CHECK:STDOUT: .G = %assoc0
// CHECK:STDOUT: witness = (%B.G.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic fn @A.F(@A.%Self: %A.type) {
@@ -630,6 +644,8 @@ interface C {
// CHECK:STDOUT: .F = %assoc0
// CHECK:STDOUT: .G = %assoc1
// CHECK:STDOUT: witness = (%C.F.decl, %C.G.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic fn @C.F(@C.%Self: %C.type) {
@@ -65,6 +65,8 @@ interface I {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .T = @T.%assoc0
// CHECK:STDOUT: witness = (%T)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic assoc_const @T(@I.%Self: %I.type) {
@@ -89,6 +89,8 @@ fn Use(T:! I) {
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F = %assoc0
// CHECK:STDOUT: witness = (%I.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic fn @I.F(@I.%Self: %I.type) {
@@ -76,5 +76,7 @@ interface I {}
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -101,6 +101,8 @@ interface Class { }
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Interface.loc13 {
@@ -112,6 +114,8 @@ interface Class { }
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F = %assoc0
// CHECK:STDOUT: witness = (%Interface.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic fn @Interface.F(@Interface.loc13.%Self: %Interface.type.ba0a47.2) {
@@ -149,6 +153,8 @@ interface Class { }
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: interface @Interface.loc13 {
@@ -171,6 +177,8 @@ interface Class { }
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: .F = %assoc0
// CHECK:STDOUT: witness = (%Interface.F.decl)
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic fn @Interface.F(@Interface.loc13.%Self: %Interface.type.ba0a47.2) {
@@ -229,6 +237,8 @@ interface Class { }
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: class @Class.loc2;
@@ -122,6 +122,8 @@ interface DifferentParams(T:! ()) {}
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self.loc23_32.1
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:
@@ -137,6 +139,8 @@ interface DifferentParams(T:! ()) {}
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: generic interface @DifferentParams.loc35(%T.loc35_27.2: type) {
@@ -158,6 +162,8 @@ interface DifferentParams(T:! ()) {}
// CHECK:STDOUT: !members:
// CHECK:STDOUT: .Self = %Self.loc43_35.1
// CHECK:STDOUT: witness = ()
// CHECK:STDOUT:
// CHECK:STDOUT: !requires:
// CHECK:STDOUT: }
// CHECK:STDOUT: }
// CHECK:STDOUT:

Some files were not shown because too many files have changed in this diff Show More