mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-09-24 21:20:11 +01:00
Fix incorrect application of invalid type on imports. (#3902)
In handle_class and handle_interface we assign TypeType, so is more consistent. I think this had been missed because we haven't really been using these declarations (historically, declarations didn't have a type). It seems not to significantly affect output at present, although I found this while trying to change merge behavior.
This commit is contained in:
@@ -542,7 +542,7 @@ class ImportRefResolver {
|
||||
auto MakeIncompleteClass(const SemIR::Class& import_class)
|
||||
-> SemIR::ConstantId {
|
||||
auto class_decl =
|
||||
SemIR::ClassDecl{SemIR::TypeId::Invalid, SemIR::ClassId::Invalid,
|
||||
SemIR::ClassDecl{SemIR::TypeId::TypeType, SemIR::ClassId::Invalid,
|
||||
SemIR::InstBlockId::Empty};
|
||||
auto class_decl_id =
|
||||
context_.AddPlaceholderInst(SemIR::LocIdAndInst::Untyped(
|
||||
@@ -788,7 +788,7 @@ class ImportRefResolver {
|
||||
// importing the interface definition in order to resolve cycles.
|
||||
auto MakeInterfaceDecl(const SemIR::Interface& import_interface)
|
||||
-> SemIR::ConstantId {
|
||||
auto interface_decl = SemIR::InterfaceDecl{SemIR::TypeId::Invalid,
|
||||
auto interface_decl = SemIR::InterfaceDecl{SemIR::TypeId::TypeType,
|
||||
SemIR::InterfaceId::Invalid,
|
||||
SemIR::InstBlockId::Empty};
|
||||
auto interface_decl_id =
|
||||
|
||||
+2
-2
@@ -115,7 +115,7 @@ var c: i32 = a_alias_alias;
|
||||
// CHECK:STDOUT: %import_ref.2: type = import_ref ir2, inst+6, loc_12 [template = constants.%C]
|
||||
// CHECK:STDOUT: %import_ref.3 = import_ref ir2, inst+11, unloaded
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace [template] {}
|
||||
// CHECK:STDOUT: %C.decl: invalid = class_decl @C [template = constants.%C] {}
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {}
|
||||
// CHECK:STDOUT: %import_ref.4 = import_ref ir2, inst+3, unloaded
|
||||
// CHECK:STDOUT: %c_alias.ref.loc6: type = name_ref c_alias, %import_ref.2 [template = constants.%C]
|
||||
// CHECK:STDOUT: %c_alias_alias: type = bind_alias c_alias_alias, %import_ref.2 [template = constants.%C]
|
||||
@@ -148,7 +148,7 @@ var c: i32 = a_alias_alias;
|
||||
// CHECK:STDOUT: %import_ref.1: type = import_ref ir2, inst+10, loc_11 [template = constants.%C]
|
||||
// CHECK:STDOUT: %import_ref.2 = import_ref ir2, inst+15, unloaded
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace [template] {}
|
||||
// CHECK:STDOUT: %C.decl: invalid = class_decl @C [template = constants.%C] {}
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {}
|
||||
// CHECK:STDOUT: %import_ref.3 = import_ref ir2, inst+8, unloaded
|
||||
// CHECK:STDOUT: %c_alias_alias.ref: type = name_ref c_alias_alias, %import_ref.1 [template = constants.%C]
|
||||
// CHECK:STDOUT: %.loc6: type = ptr_type C [template = constants.%.2]
|
||||
|
||||
+1
-1
@@ -93,7 +93,7 @@ var a_val: a = {.v = b_val.v};
|
||||
// CHECK:STDOUT: %import_ref.4: type = import_ref ir2, inst+14, loc_23 [template = constants.%C]
|
||||
// CHECK:STDOUT: %import_ref.5: type = import_ref ir2, inst+16, loc_11 [template = constants.%C]
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace [template] {}
|
||||
// CHECK:STDOUT: %C.decl: invalid = class_decl @C [template = constants.%C] {}
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {}
|
||||
// CHECK:STDOUT: %import_ref.6: <unbound element of class C> = import_ref ir2, inst+5, loc_31 [template = imports.%.1]
|
||||
// CHECK:STDOUT: %import_ref.7 = import_ref ir2, inst+3, unloaded
|
||||
// CHECK:STDOUT: %d.ref: type = name_ref d, %import_ref.5 [template = constants.%C]
|
||||
|
||||
@@ -159,7 +159,7 @@ var c: Other.C = {};
|
||||
// CHECK:STDOUT: %Other: <namespace> = namespace [template] {}
|
||||
// CHECK:STDOUT: %Other.ref: <namespace> = name_ref Other, %Other [template = %Other]
|
||||
// CHECK:STDOUT: %import_ref.1: type = import_ref ir3, inst+2, loc_14 [template = constants.%C]
|
||||
// CHECK:STDOUT: %C.decl: invalid = class_decl @C [template = constants.%C] {}
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {}
|
||||
// CHECK:STDOUT: %import_ref.2 = import_ref ir3, inst+3, unloaded
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, %import_ref.1 [template = constants.%C]
|
||||
// CHECK:STDOUT: %c.var: ref C = var c
|
||||
@@ -198,7 +198,7 @@ var c: Other.C = {};
|
||||
// CHECK:STDOUT: %Other: <namespace> = namespace [template] {}
|
||||
// CHECK:STDOUT: %Other.ref: <namespace> = name_ref Other, %Other [template = %Other]
|
||||
// CHECK:STDOUT: %import_ref: type = import_ref ir3, inst+3, loc_14 [template = constants.%.1]
|
||||
// CHECK:STDOUT: %C.decl: invalid = class_decl @C [template = constants.%C] {}
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {}
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, %import_ref [template = constants.%.1]
|
||||
// CHECK:STDOUT: %c.var: ref extern C = var c
|
||||
// CHECK:STDOUT: %c: ref extern C = bind_name c, %c.var
|
||||
@@ -235,10 +235,10 @@ var c: Other.C = {};
|
||||
// CHECK:STDOUT: %Other: <namespace> = namespace [template] {}
|
||||
// CHECK:STDOUT: %Other.ref: <namespace> = name_ref Other, %Other [template = %Other]
|
||||
// CHECK:STDOUT: %import_ref.1: type = import_ref ir3, inst+2, loc_19 [template = constants.%C.1]
|
||||
// CHECK:STDOUT: %C.decl.1: invalid = class_decl @C.1 [template = constants.%C.1] {}
|
||||
// CHECK:STDOUT: %C.decl.1: type = class_decl @C.1 [template = constants.%C.1] {}
|
||||
// CHECK:STDOUT: %import_ref.2 = import_ref ir3, inst+3, unloaded
|
||||
// CHECK:STDOUT: %import_ref.3: type = import_ref ir4, inst+3, loaded [template = constants.%.2]
|
||||
// CHECK:STDOUT: %C.decl.2: invalid = class_decl @C.2 [template = constants.%C.2] {}
|
||||
// CHECK:STDOUT: %C.decl.2: type = class_decl @C.2 [template = constants.%C.2] {}
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, %import_ref.1 [template = constants.%C.1]
|
||||
// CHECK:STDOUT: %c.var: ref C = var c
|
||||
// CHECK:STDOUT: %c: ref C = bind_name c, %c.var
|
||||
@@ -280,7 +280,7 @@ var c: Other.C = {};
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace [template] {}
|
||||
// CHECK:STDOUT: %Other.ref: <namespace> = name_ref Other, %Other [template = %Other]
|
||||
// CHECK:STDOUT: %import_ref.1: type = import_ref ir2, inst+2, loc_19 [template = constants.%C]
|
||||
// CHECK:STDOUT: %C.decl: invalid = class_decl @C.2 [template = constants.%C] {}
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C.2 [template = constants.%C] {}
|
||||
// CHECK:STDOUT: %import_ref.2 = import_ref ir2, inst+3, unloaded
|
||||
// CHECK:STDOUT: %import_ref.3: <function> = import_ref ir3, inst+2, loaded [template = imports.%C]
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, %import_ref.1 [template = constants.%C]
|
||||
|
||||
+15
-15
@@ -454,8 +454,8 @@ extern class C;
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref.1: type = import_ref ir2, inst+3, loaded [template = constants.%.1]
|
||||
// CHECK:STDOUT: %import_ref.2: type = import_ref ir3, inst+2, loaded [template = constants.%C.1]
|
||||
// CHECK:STDOUT: %C.decl.1: invalid = class_decl @C.1 [template = constants.%C.1] {}
|
||||
// CHECK:STDOUT: %C.decl.2: invalid = class_decl @C.2 [template = constants.%C.2] {}
|
||||
// CHECK:STDOUT: %C.decl.1: type = class_decl @C.1 [template = constants.%C.1] {}
|
||||
// CHECK:STDOUT: %C.decl.2: type = class_decl @C.2 [template = constants.%C.2] {}
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace [template] {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -478,8 +478,8 @@ extern class C;
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref.1: type = import_ref ir2, inst+2, loaded [template = constants.%C.2]
|
||||
// CHECK:STDOUT: %import_ref.2: type = import_ref ir3, inst+3, loaded [template = constants.%.1]
|
||||
// CHECK:STDOUT: %C.decl.1: invalid = class_decl @C.1 [template = constants.%C.1] {}
|
||||
// CHECK:STDOUT: %C.decl.2: invalid = class_decl @C.2 [template = constants.%C.2] {}
|
||||
// CHECK:STDOUT: %C.decl.1: type = class_decl @C.1 [template = constants.%C.1] {}
|
||||
// CHECK:STDOUT: %C.decl.2: type = class_decl @C.2 [template = constants.%C.2] {}
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace [template] {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -503,9 +503,9 @@ extern class C;
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref.1: type = import_ref ir2, inst+3, loaded [template = constants.%.2]
|
||||
// CHECK:STDOUT: %import_ref.2: type = import_ref ir3, inst+2, loaded [template = constants.%C.1]
|
||||
// CHECK:STDOUT: %C.decl.1: invalid = class_decl @C.1 [template = constants.%C.1] {}
|
||||
// CHECK:STDOUT: %C.decl.1: type = class_decl @C.1 [template = constants.%C.1] {}
|
||||
// CHECK:STDOUT: %import_ref.3 = import_ref ir3, inst+3, unloaded
|
||||
// CHECK:STDOUT: %C.decl.2: invalid = class_decl @C.2 [template = constants.%C.2] {}
|
||||
// CHECK:STDOUT: %C.decl.2: type = class_decl @C.2 [template = constants.%C.2] {}
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace [template] {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -536,10 +536,10 @@ extern class C;
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref.1: type = import_ref ir2, inst+3, loaded [template = constants.%.1]
|
||||
// CHECK:STDOUT: %import_ref.2: type = import_ref ir3, inst+2, loaded [template = constants.%C.1]
|
||||
// CHECK:STDOUT: %C.decl.1: invalid = class_decl @C.1 [template = constants.%C.1] {}
|
||||
// CHECK:STDOUT: %C.decl.2: invalid = class_decl @C.2 [template = constants.%C.2] {}
|
||||
// CHECK:STDOUT: %C.decl.1: type = class_decl @C.1 [template = constants.%C.1] {}
|
||||
// CHECK:STDOUT: %C.decl.2: type = class_decl @C.2 [template = constants.%C.2] {}
|
||||
// CHECK:STDOUT: %import_ref.3: type = import_ref ir4, inst+2, loaded [template = constants.%C.3]
|
||||
// CHECK:STDOUT: %C.decl.3: invalid = class_decl @C.3 [template = constants.%C.3] {}
|
||||
// CHECK:STDOUT: %C.decl.3: type = class_decl @C.3 [template = constants.%C.3] {}
|
||||
// CHECK:STDOUT: %import_ref.4 = import_ref ir4, inst+3, unloaded
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace [template] {}
|
||||
// CHECK:STDOUT: }
|
||||
@@ -572,8 +572,8 @@ extern class C;
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref.1: type = import_ref ir2, inst+3, loaded [template = constants.%.2]
|
||||
// CHECK:STDOUT: %import_ref.2: type = import_ref ir3, inst+3, loaded [template = constants.%.1]
|
||||
// CHECK:STDOUT: %C.decl.1: invalid = class_decl @C.1 [template = constants.%C.1] {}
|
||||
// CHECK:STDOUT: %C.decl.2: invalid = class_decl @C.2 [template = constants.%C.2] {}
|
||||
// CHECK:STDOUT: %C.decl.1: type = class_decl @C.1 [template = constants.%C.1] {}
|
||||
// CHECK:STDOUT: %C.decl.2: type = class_decl @C.2 [template = constants.%C.2] {}
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace [template] {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -596,7 +596,7 @@ extern class C;
|
||||
// CHECK:STDOUT: %import_ref: type = import_ref ir2, inst+3, loaded [template = constants.%.1]
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace [template] {}
|
||||
// CHECK:STDOUT: %C.decl.loc6: type = class_decl @C [template = constants.%C] {
|
||||
// CHECK:STDOUT: %C.decl.1: invalid = class_decl @C [template = constants.%C] {}
|
||||
// CHECK:STDOUT: %C.decl.1: type = class_decl @C [template = constants.%C] {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc6: type = extern_decl %C.decl.loc6 [template = constants.%.1]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -618,7 +618,7 @@ extern class C;
|
||||
// CHECK:STDOUT: %import_ref: type = import_ref ir2, inst+2, loaded [template = constants.%C]
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace [template] {}
|
||||
// CHECK:STDOUT: %C.decl.loc6: type = class_decl @C [template = constants.%C] {
|
||||
// CHECK:STDOUT: %C.decl.1: invalid = class_decl @C [template = constants.%C] {}
|
||||
// CHECK:STDOUT: %C.decl.1: type = class_decl @C [template = constants.%C] {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc6: type = extern_decl %C.decl.loc6 [template = constants.%.1]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -642,7 +642,7 @@ extern class C;
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace [template] {}
|
||||
// CHECK:STDOUT: %import_ref.2 = import_ref ir2, inst+3, unloaded
|
||||
// CHECK:STDOUT: %C.decl.loc6: type = class_decl @C [template = constants.%C] {
|
||||
// CHECK:STDOUT: %C.decl.1: invalid = class_decl @C [template = constants.%C] {}
|
||||
// CHECK:STDOUT: %C.decl.1: type = class_decl @C [template = constants.%C] {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc6: type = extern_decl %C.decl.loc6 [template = constants.%.2]
|
||||
// CHECK:STDOUT: }
|
||||
@@ -669,7 +669,7 @@ extern class C;
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace [template] {}
|
||||
// CHECK:STDOUT: %import_ref.2 = import_ref ir2, inst+3, unloaded
|
||||
// CHECK:STDOUT: %C.decl.loc6: type = class_decl @C [template = constants.%C] {
|
||||
// CHECK:STDOUT: %C.decl.1: invalid = class_decl @C [template = constants.%C] {}
|
||||
// CHECK:STDOUT: %C.decl.1: type = class_decl @C [template = constants.%C] {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc6: type = extern_decl %C.decl.loc6 [template = constants.%.2]
|
||||
// CHECK:STDOUT: }
|
||||
|
||||
@@ -89,9 +89,9 @@ var a: Incomplete;
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace [template] {}
|
||||
// CHECK:STDOUT: %import_ref.3 = import_ref ir2, inst+3, unloaded
|
||||
// CHECK:STDOUT: %Empty.decl.loc16: type = class_decl @Empty [template = constants.%Empty] {
|
||||
// CHECK:STDOUT: %Empty.decl.1: invalid = class_decl @Empty [template = constants.%Empty] {}
|
||||
// CHECK:STDOUT: %Empty.decl.1: type = class_decl @Empty [template = constants.%Empty] {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Incomplete.decl: invalid = class_decl @Incomplete [template = constants.%Incomplete] {}
|
||||
// CHECK:STDOUT: %Incomplete.decl: type = class_decl @Incomplete [template = constants.%Incomplete] {}
|
||||
// CHECK:STDOUT: %Incomplete.ref: type = name_ref Incomplete, %import_ref.2 [template = constants.%Incomplete]
|
||||
// CHECK:STDOUT: %a.var: ref <error> = var a
|
||||
// CHECK:STDOUT: %a: ref <error> = bind_name a, %a.var
|
||||
|
||||
+5
-5
@@ -191,7 +191,7 @@ fn Run() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @Run() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %Empty.decl: invalid = class_decl @Empty [template = constants.%Empty] {}
|
||||
// CHECK:STDOUT: %Empty.decl: type = class_decl @Empty [template = constants.%Empty] {}
|
||||
// CHECK:STDOUT: %Empty.ref: type = name_ref Empty, file.%import_ref.1 [template = constants.%Empty]
|
||||
// CHECK:STDOUT: %a.var: ref Empty = var a
|
||||
// CHECK:STDOUT: %a: ref Empty = bind_name a, %a.var
|
||||
@@ -199,7 +199,7 @@ fn Run() {
|
||||
// CHECK:STDOUT: %.loc7_19.2: init Empty = class_init (), %a.var [template = constants.%.4]
|
||||
// CHECK:STDOUT: %.loc7_20: init Empty = converted %.loc7_19.1, %.loc7_19.2 [template = constants.%.4]
|
||||
// CHECK:STDOUT: assign %a.var, %.loc7_20
|
||||
// CHECK:STDOUT: %Field.decl: invalid = class_decl @Field [template = constants.%Field] {}
|
||||
// CHECK:STDOUT: %Field.decl: type = class_decl @Field [template = constants.%Field] {}
|
||||
// CHECK:STDOUT: %Field.ref: type = name_ref Field, file.%import_ref.2 [template = constants.%Field]
|
||||
// CHECK:STDOUT: %b.var: ref Field = var b
|
||||
// CHECK:STDOUT: %b: ref Field = bind_name b, %b.var
|
||||
@@ -215,7 +215,7 @@ fn Run() {
|
||||
// CHECK:STDOUT: %.loc10_4: ref i32 = class_element_access %b.ref, element0
|
||||
// CHECK:STDOUT: %.loc10_9: i32 = int_literal 2 [template = constants.%.10]
|
||||
// CHECK:STDOUT: assign %.loc10_4, %.loc10_9
|
||||
// CHECK:STDOUT: %ForwardDeclared.decl.1: invalid = class_decl @ForwardDeclared.1 [template = constants.%ForwardDeclared.1] {}
|
||||
// CHECK:STDOUT: %ForwardDeclared.decl.1: type = class_decl @ForwardDeclared.1 [template = constants.%ForwardDeclared.1] {}
|
||||
// CHECK:STDOUT: %ForwardDeclared.ref.loc12: type = name_ref ForwardDeclared, file.%import_ref.3 [template = constants.%ForwardDeclared.1]
|
||||
// CHECK:STDOUT: %c.var: ref ForwardDeclared = var c
|
||||
// CHECK:STDOUT: %c: ref ForwardDeclared = bind_name c, %c.var
|
||||
@@ -224,7 +224,7 @@ fn Run() {
|
||||
// CHECK:STDOUT: %.loc12_30: init ForwardDeclared = converted %.loc12_29.1, %.loc12_29.2 [template = constants.%.11]
|
||||
// CHECK:STDOUT: assign %c.var, %.loc12_30
|
||||
// CHECK:STDOUT: %c.ref.loc13: ref ForwardDeclared = name_ref c, %c
|
||||
// CHECK:STDOUT: %ForwardDeclared.decl.2: invalid = class_decl @ForwardDeclared.2 [template = constants.%ForwardDeclared.2] {}
|
||||
// CHECK:STDOUT: %ForwardDeclared.decl.2: type = class_decl @ForwardDeclared.2 [template = constants.%ForwardDeclared.2] {}
|
||||
// CHECK:STDOUT: %F.ref: <function> = name_ref F, file.%import_ref.10 [template = imports.%F]
|
||||
// CHECK:STDOUT: %.loc13_4: <bound method> = bound_method %c.ref.loc13, %F.ref
|
||||
// CHECK:STDOUT: %.loc13_3: ForwardDeclared = bind_value %c.ref.loc13
|
||||
@@ -241,7 +241,7 @@ fn Run() {
|
||||
// CHECK:STDOUT: %c.ref.loc16: ref ForwardDeclared = name_ref c, %c
|
||||
// CHECK:STDOUT: %.loc16_29: ForwardDeclared* = addr_of %c.ref.loc16
|
||||
// CHECK:STDOUT: assign %d.var, %.loc16_29
|
||||
// CHECK:STDOUT: %Incomplete.decl: invalid = class_decl @Incomplete [template = constants.%Incomplete] {}
|
||||
// CHECK:STDOUT: %Incomplete.decl: type = class_decl @Incomplete [template = constants.%Incomplete] {}
|
||||
// CHECK:STDOUT: %Incomplete.ref: type = name_ref Incomplete, file.%import_ref.4 [template = constants.%Incomplete]
|
||||
// CHECK:STDOUT: %.loc18: type = ptr_type Incomplete [template = constants.%.13]
|
||||
// CHECK:STDOUT: %e.var: ref Incomplete* = var e
|
||||
|
||||
+2
-2
@@ -150,8 +150,8 @@ fn Run() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @Run() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %Child.decl: invalid = class_decl @Child [template = constants.%Child] {}
|
||||
// CHECK:STDOUT: %Base.decl: invalid = class_decl @Base [template = constants.%Base] {}
|
||||
// CHECK:STDOUT: %Child.decl: type = class_decl @Child [template = constants.%Child] {}
|
||||
// CHECK:STDOUT: %Base.decl: type = class_decl @Base [template = constants.%Base] {}
|
||||
// CHECK:STDOUT: %Child.ref: type = name_ref Child, file.%import_ref.2 [template = constants.%Child]
|
||||
// CHECK:STDOUT: %a.var: ref Child = var a
|
||||
// CHECK:STDOUT: %a: ref Child = bind_name a, %a.var
|
||||
|
||||
@@ -49,7 +49,7 @@ class ForwardDecl {
|
||||
// CHECK:STDOUT: %import_ref: type = import_ref ir1, inst+2, loaded [template = constants.%ForwardDecl]
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace [template] {}
|
||||
// CHECK:STDOUT: %ForwardDecl.decl.loc4: type = class_decl @ForwardDecl [template = constants.%ForwardDecl] {
|
||||
// CHECK:STDOUT: %ForwardDecl.decl.1: invalid = class_decl @ForwardDecl [template = constants.%ForwardDecl] {}
|
||||
// CHECK:STDOUT: %ForwardDecl.decl.1: type = class_decl @ForwardDecl [template = constants.%ForwardDecl] {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
@@ -79,7 +79,7 @@ fn Run() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @Run() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %Cycle.decl: invalid = class_decl @Cycle [template = constants.%Cycle] {}
|
||||
// CHECK:STDOUT: %Cycle.decl: type = class_decl @Cycle [template = constants.%Cycle] {}
|
||||
// CHECK:STDOUT: %Cycle.ref: type = name_ref Cycle, file.%import_ref.1 [template = constants.%Cycle]
|
||||
// CHECK:STDOUT: %.loc7: type = ptr_type Cycle [template = constants.%.1]
|
||||
// CHECK:STDOUT: %a.var: ref Cycle* = var a
|
||||
|
||||
@@ -98,7 +98,7 @@ fn Run() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @Run() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %Cycle.decl: invalid = class_decl @Cycle [template = constants.%Cycle] {}
|
||||
// CHECK:STDOUT: %Cycle.decl: type = class_decl @Cycle [template = constants.%Cycle] {}
|
||||
// CHECK:STDOUT: %a.ref.loc7_3: ref {.b: Cycle*} = name_ref a, file.%import_ref.2
|
||||
// CHECK:STDOUT: %.loc7_4: ref Cycle* = struct_access %a.ref.loc7_3, element0
|
||||
// CHECK:STDOUT: %a.ref.loc7_11: ref {.b: Cycle*} = name_ref a, file.%import_ref.2
|
||||
|
||||
+3
-3
@@ -76,7 +76,7 @@ var d2: D* = &c2;
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref.1: type = import_ref ir2, inst+2, loc_12 [template = constants.%C]
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace [template] {}
|
||||
// CHECK:STDOUT: %C.decl: invalid = class_decl @C [template = constants.%C] {}
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {}
|
||||
// CHECK:STDOUT: %import_ref.2 = import_ref ir2, inst+3, unloaded
|
||||
// CHECK:STDOUT: %C.ref.loc6: type = name_ref C, %import_ref.1 [template = constants.%C]
|
||||
// CHECK:STDOUT: %D: type = bind_alias D, %import_ref.1 [template = constants.%C]
|
||||
@@ -134,12 +134,12 @@ var d2: D* = &c2;
|
||||
// CHECK:STDOUT: %import_ref.3 = import_ref ir3, inst+13, unloaded
|
||||
// CHECK:STDOUT: %import_ref.4 = import_ref ir3, inst+23, unloaded
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace [template] {}
|
||||
// CHECK:STDOUT: %C.decl.1: invalid = class_decl @C.1 [template = constants.%C.1] {}
|
||||
// CHECK:STDOUT: %C.decl.1: type = class_decl @C.1 [template = constants.%C.1] {}
|
||||
// CHECK:STDOUT: %import_ref.5 = import_ref ir2, inst+3, unloaded
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, %import_ref.1 [template = constants.%C.1]
|
||||
// CHECK:STDOUT: %c2.var: ref C = var c2
|
||||
// CHECK:STDOUT: %c2: ref C = bind_name c2, %c2.var
|
||||
// CHECK:STDOUT: %C.decl.2: invalid = class_decl @C.2 [template = constants.%C.2] {}
|
||||
// CHECK:STDOUT: %C.decl.2: type = class_decl @C.2 [template = constants.%C.2] {}
|
||||
// CHECK:STDOUT: %import_ref.6 = import_ref ir3, inst+6, unloaded
|
||||
// CHECK:STDOUT: %D.ref: type = name_ref D, %import_ref.2 [template = constants.%C.2]
|
||||
// CHECK:STDOUT: %.loc11: type = ptr_type C [template = constants.%.5]
|
||||
|
||||
@@ -100,7 +100,7 @@ var arr: [i32; 1 + 2] = (3, 4, 3 + 4);
|
||||
// CHECK:STDOUT: %import_ref.4: <function> = import_ref ir3, inst+18, loc_10 [template = imports.%Op]
|
||||
// CHECK:STDOUT: impl_decl @impl {
|
||||
// CHECK:STDOUT: %Core.ref: <namespace> = name_ref Core, %Core [template = %Core]
|
||||
// CHECK:STDOUT: %Add.decl: invalid = interface_decl @Add [template = constants.%.1] {}
|
||||
// CHECK:STDOUT: %Add.decl: type = interface_decl @Add [template = constants.%.1] {}
|
||||
// CHECK:STDOUT: %Add.ref: type = name_ref Add, %import_ref.1 [template = constants.%.1]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.loc10_16: i32 = int_literal 1 [template = constants.%.3]
|
||||
|
||||
+2
-2
@@ -180,12 +180,12 @@ fn CallFAndGIncomplete() {
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: fn @CallFAndGIncomplete() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %C.decl: invalid = class_decl @C [template = constants.%C] {}
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {}
|
||||
// CHECK:STDOUT: %ReturnCUnused.ref: <function> = name_ref ReturnCUnused, file.%import_ref.3 [template = imports.%ReturnCUnused]
|
||||
// CHECK:STDOUT: %ReturnCUnused.call: init <error> = call %ReturnCUnused.ref()
|
||||
// CHECK:STDOUT: %ReturnCUsed.ref: <function> = name_ref ReturnCUsed, file.%import_ref.4 [template = imports.%ReturnCUsed]
|
||||
// CHECK:STDOUT: %ReturnCUsed.call: init <error> = call %ReturnCUsed.ref()
|
||||
// CHECK:STDOUT: %D.decl: invalid = class_decl @D [template = constants.%D] {}
|
||||
// CHECK:STDOUT: %D.decl: type = class_decl @D [template = constants.%D] {}
|
||||
// CHECK:STDOUT: %ReturnDUnused.ref: <function> = name_ref ReturnDUnused, file.%import_ref.5 [template = imports.%ReturnDUnused]
|
||||
// CHECK:STDOUT: %.loc24_16.1: ref D = temporary_storage
|
||||
// CHECK:STDOUT: %ReturnDUnused.call: init D = call %ReturnDUnused.ref() to %.loc24_16.1
|
||||
|
||||
+2
-2
@@ -105,9 +105,9 @@ fn G(c: Impl.C) {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Impl: <namespace> = namespace [template] {}
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace [template] {}
|
||||
// CHECK:STDOUT: %C.decl: invalid = class_decl @C [template = constants.%C] {}
|
||||
// CHECK:STDOUT: %C.decl: type = class_decl @C [template = constants.%C] {}
|
||||
// CHECK:STDOUT: %import_ref.1 = import_ref ir2, inst+10, unloaded
|
||||
// CHECK:STDOUT: %HasF.decl: invalid = interface_decl @HasF [template = constants.%.2] {}
|
||||
// CHECK:STDOUT: %HasF.decl: type = interface_decl @HasF [template = constants.%.2] {}
|
||||
// CHECK:STDOUT: %import_ref.2: <associated <function> in HasF> = import_ref ir2, inst+7, loc_20 [template = constants.%.6]
|
||||
// CHECK:STDOUT: %import_ref.3 = import_ref ir2, inst+4, unloaded
|
||||
// CHECK:STDOUT: %import_ref.4 = import_ref ir2, inst+5, unloaded
|
||||
|
||||
+3
-3
@@ -164,7 +164,7 @@ var f: ForwardDeclared* = &f_ref.f;
|
||||
// CHECK:STDOUT: %Core: <namespace> = namespace [template] {}
|
||||
// CHECK:STDOUT: %import_ref.5 = import_ref ir2, inst+4, unloaded
|
||||
// CHECK:STDOUT: %UseEmpty: <function> = fn_decl @UseEmpty [template] {
|
||||
// CHECK:STDOUT: %Empty.decl: invalid = interface_decl @Empty [template = constants.%.1] {}
|
||||
// CHECK:STDOUT: %Empty.decl: type = interface_decl @Empty [template = constants.%.1] {}
|
||||
// CHECK:STDOUT: %Empty.ref: type = name_ref Empty, %import_ref.1 [template = constants.%.1]
|
||||
// CHECK:STDOUT: %e.loc6_13.1: Empty = param e
|
||||
// CHECK:STDOUT: @UseEmpty.%e: Empty = bind_name e, %e.loc6_13.1
|
||||
@@ -175,7 +175,7 @@ var f: ForwardDeclared* = &f_ref.f;
|
||||
// CHECK:STDOUT: %import_ref.9 = import_ref ir2, inst+8, unloaded
|
||||
// CHECK:STDOUT: %import_ref.10 = import_ref ir2, inst+12, unloaded
|
||||
// CHECK:STDOUT: %UseBasic: <function> = fn_decl @UseBasic [template] {
|
||||
// CHECK:STDOUT: %Basic.decl: invalid = interface_decl @Basic [template = constants.%.3] {}
|
||||
// CHECK:STDOUT: %Basic.decl: type = interface_decl @Basic [template = constants.%.3] {}
|
||||
// CHECK:STDOUT: %Basic.ref.loc7: type = name_ref Basic, %import_ref.2 [template = constants.%.3]
|
||||
// CHECK:STDOUT: %e.loc7_13.1: Basic = param e
|
||||
// CHECK:STDOUT: @UseBasic.%e: Basic = bind_name e, %e.loc7_13.1
|
||||
@@ -186,7 +186,7 @@ var f: ForwardDeclared* = &f_ref.f;
|
||||
// CHECK:STDOUT: %import_ref.14 = import_ref ir2, inst+20, unloaded
|
||||
// CHECK:STDOUT: %import_ref.15 = import_ref ir2, inst+24, unloaded
|
||||
// CHECK:STDOUT: %UseForwardDeclared: <function> = fn_decl @UseForwardDeclared [template] {
|
||||
// CHECK:STDOUT: %ForwardDeclared.decl: invalid = interface_decl @ForwardDeclared [template = constants.%.4] {}
|
||||
// CHECK:STDOUT: %ForwardDeclared.decl: type = interface_decl @ForwardDeclared [template = constants.%.4] {}
|
||||
// CHECK:STDOUT: %ForwardDeclared.ref.loc8: type = name_ref ForwardDeclared, %import_ref.3 [template = constants.%.4]
|
||||
// CHECK:STDOUT: %f.loc8_23.1: ForwardDeclared = param f
|
||||
// CHECK:STDOUT: @UseForwardDeclared.%f: ForwardDeclared = bind_name f, %f.loc8_23.1
|
||||
|
||||
@@ -153,7 +153,7 @@ fn TestAssign(a: C*, b: C) {
|
||||
// CHECK:STDOUT: impl_decl @impl.1 {
|
||||
// CHECK:STDOUT: %C.ref.loc8: type = name_ref C, %C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %Core.ref.loc8: <namespace> = name_ref Core, %Core [template = %Core]
|
||||
// CHECK:STDOUT: %Add.decl: invalid = interface_decl @Add [template = constants.%.2] {}
|
||||
// CHECK:STDOUT: %Add.decl: type = interface_decl @Add [template = constants.%.2] {}
|
||||
// CHECK:STDOUT: %Add.ref: type = name_ref Add, %import_ref.1 [template = constants.%.2]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref.5: type = import_ref ir3, inst+22, loc_46 [template = constants.%.7]
|
||||
@@ -163,7 +163,7 @@ fn TestAssign(a: C*, b: C) {
|
||||
// CHECK:STDOUT: impl_decl @impl.2 {
|
||||
// CHECK:STDOUT: %C.ref.loc13: type = name_ref C, %C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %Core.ref.loc13: <namespace> = name_ref Core, %Core [template = %Core]
|
||||
// CHECK:STDOUT: %AddAssign.decl: invalid = interface_decl @AddAssign [template = constants.%.7] {}
|
||||
// CHECK:STDOUT: %AddAssign.decl: type = interface_decl @AddAssign [template = constants.%.7] {}
|
||||
// CHECK:STDOUT: %AddAssign.ref: type = name_ref AddAssign, %import_ref.5 [template = constants.%.7]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %TestOp: <function> = fn_decl @TestOp [template] {
|
||||
|
||||
@@ -153,7 +153,7 @@ fn TestAssign(a: C*, b: C) {
|
||||
// CHECK:STDOUT: impl_decl @impl.1 {
|
||||
// CHECK:STDOUT: %C.ref.loc8: type = name_ref C, %C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %Core.ref.loc8: <namespace> = name_ref Core, %Core [template = %Core]
|
||||
// CHECK:STDOUT: %BitAnd.decl: invalid = interface_decl @BitAnd [template = constants.%.2] {}
|
||||
// CHECK:STDOUT: %BitAnd.decl: type = interface_decl @BitAnd [template = constants.%.2] {}
|
||||
// CHECK:STDOUT: %BitAnd.ref: type = name_ref BitAnd, %import_ref.1 [template = constants.%.2]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref.5: type = import_ref ir3, inst+22, loc_46 [template = constants.%.7]
|
||||
@@ -163,7 +163,7 @@ fn TestAssign(a: C*, b: C) {
|
||||
// CHECK:STDOUT: impl_decl @impl.2 {
|
||||
// CHECK:STDOUT: %C.ref.loc13: type = name_ref C, %C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %Core.ref.loc13: <namespace> = name_ref Core, %Core [template = %Core]
|
||||
// CHECK:STDOUT: %BitAndAssign.decl: invalid = interface_decl @BitAndAssign [template = constants.%.7] {}
|
||||
// CHECK:STDOUT: %BitAndAssign.decl: type = interface_decl @BitAndAssign [template = constants.%.7] {}
|
||||
// CHECK:STDOUT: %BitAndAssign.ref: type = name_ref BitAndAssign, %import_ref.5 [template = constants.%.7]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %TestOp: <function> = fn_decl @TestOp [template] {
|
||||
|
||||
@@ -99,7 +99,7 @@ fn TestOp(a: C) -> C {
|
||||
// CHECK:STDOUT: impl_decl @impl {
|
||||
// CHECK:STDOUT: %C.ref.loc8: type = name_ref C, %C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %Core.ref: <namespace> = name_ref Core, %Core [template = %Core]
|
||||
// CHECK:STDOUT: %BitComplement.decl: invalid = interface_decl @BitComplement [template = constants.%.2] {}
|
||||
// CHECK:STDOUT: %BitComplement.decl: type = interface_decl @BitComplement [template = constants.%.2] {}
|
||||
// CHECK:STDOUT: %BitComplement.ref: type = name_ref BitComplement, %import_ref.1 [template = constants.%.2]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %TestOp: <function> = fn_decl @TestOp [template] {
|
||||
|
||||
@@ -153,7 +153,7 @@ fn TestAssign(a: C*, b: C) {
|
||||
// CHECK:STDOUT: impl_decl @impl.1 {
|
||||
// CHECK:STDOUT: %C.ref.loc8: type = name_ref C, %C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %Core.ref.loc8: <namespace> = name_ref Core, %Core [template = %Core]
|
||||
// CHECK:STDOUT: %BitOr.decl: invalid = interface_decl @BitOr [template = constants.%.2] {}
|
||||
// CHECK:STDOUT: %BitOr.decl: type = interface_decl @BitOr [template = constants.%.2] {}
|
||||
// CHECK:STDOUT: %BitOr.ref: type = name_ref BitOr, %import_ref.1 [template = constants.%.2]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref.5: type = import_ref ir3, inst+22, loc_46 [template = constants.%.7]
|
||||
@@ -163,7 +163,7 @@ fn TestAssign(a: C*, b: C) {
|
||||
// CHECK:STDOUT: impl_decl @impl.2 {
|
||||
// CHECK:STDOUT: %C.ref.loc13: type = name_ref C, %C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %Core.ref.loc13: <namespace> = name_ref Core, %Core [template = %Core]
|
||||
// CHECK:STDOUT: %BitOrAssign.decl: invalid = interface_decl @BitOrAssign [template = constants.%.7] {}
|
||||
// CHECK:STDOUT: %BitOrAssign.decl: type = interface_decl @BitOrAssign [template = constants.%.7] {}
|
||||
// CHECK:STDOUT: %BitOrAssign.ref: type = name_ref BitOrAssign, %import_ref.5 [template = constants.%.7]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %TestOp: <function> = fn_decl @TestOp [template] {
|
||||
|
||||
@@ -153,7 +153,7 @@ fn TestAssign(a: C*, b: C) {
|
||||
// CHECK:STDOUT: impl_decl @impl.1 {
|
||||
// CHECK:STDOUT: %C.ref.loc8: type = name_ref C, %C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %Core.ref.loc8: <namespace> = name_ref Core, %Core [template = %Core]
|
||||
// CHECK:STDOUT: %BitXor.decl: invalid = interface_decl @BitXor [template = constants.%.2] {}
|
||||
// CHECK:STDOUT: %BitXor.decl: type = interface_decl @BitXor [template = constants.%.2] {}
|
||||
// CHECK:STDOUT: %BitXor.ref: type = name_ref BitXor, %import_ref.1 [template = constants.%.2]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref.5: type = import_ref ir3, inst+22, loc_46 [template = constants.%.7]
|
||||
@@ -163,7 +163,7 @@ fn TestAssign(a: C*, b: C) {
|
||||
// CHECK:STDOUT: impl_decl @impl.2 {
|
||||
// CHECK:STDOUT: %C.ref.loc13: type = name_ref C, %C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %Core.ref.loc13: <namespace> = name_ref Core, %Core [template = %Core]
|
||||
// CHECK:STDOUT: %BitXorAssign.decl: invalid = interface_decl @BitXorAssign [template = constants.%.7] {}
|
||||
// CHECK:STDOUT: %BitXorAssign.decl: type = interface_decl @BitXorAssign [template = constants.%.7] {}
|
||||
// CHECK:STDOUT: %BitXorAssign.ref: type = name_ref BitXorAssign, %import_ref.5 [template = constants.%.7]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %TestOp: <function> = fn_decl @TestOp [template] {
|
||||
|
||||
@@ -99,7 +99,7 @@ fn TestOp() {
|
||||
// CHECK:STDOUT: impl_decl @impl {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, %C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %Core.ref: <namespace> = name_ref Core, %Core [template = %Core]
|
||||
// CHECK:STDOUT: %Dec.decl: invalid = interface_decl @Dec [template = constants.%.2] {}
|
||||
// CHECK:STDOUT: %Dec.decl: type = interface_decl @Dec [template = constants.%.2] {}
|
||||
// CHECK:STDOUT: %Dec.ref: type = name_ref Dec, %import_ref.1 [template = constants.%.2]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %TestOp: <function> = fn_decl @TestOp [template] {}
|
||||
|
||||
@@ -153,7 +153,7 @@ fn TestAssign(a: C*, b: C) {
|
||||
// CHECK:STDOUT: impl_decl @impl.1 {
|
||||
// CHECK:STDOUT: %C.ref.loc8: type = name_ref C, %C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %Core.ref.loc8: <namespace> = name_ref Core, %Core [template = %Core]
|
||||
// CHECK:STDOUT: %Div.decl: invalid = interface_decl @Div [template = constants.%.2] {}
|
||||
// CHECK:STDOUT: %Div.decl: type = interface_decl @Div [template = constants.%.2] {}
|
||||
// CHECK:STDOUT: %Div.ref: type = name_ref Div, %import_ref.1 [template = constants.%.2]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref.5: type = import_ref ir3, inst+22, loc_46 [template = constants.%.7]
|
||||
@@ -163,7 +163,7 @@ fn TestAssign(a: C*, b: C) {
|
||||
// CHECK:STDOUT: impl_decl @impl.2 {
|
||||
// CHECK:STDOUT: %C.ref.loc13: type = name_ref C, %C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %Core.ref.loc13: <namespace> = name_ref Core, %Core [template = %Core]
|
||||
// CHECK:STDOUT: %DivAssign.decl: invalid = interface_decl @DivAssign [template = constants.%.7] {}
|
||||
// CHECK:STDOUT: %DivAssign.decl: type = interface_decl @DivAssign [template = constants.%.7] {}
|
||||
// CHECK:STDOUT: %DivAssign.ref: type = name_ref DivAssign, %import_ref.5 [template = constants.%.7]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %TestOp: <function> = fn_decl @TestOp [template] {
|
||||
|
||||
+3
-3
@@ -182,7 +182,7 @@ fn TestLhsBad(a: D, b: C) -> bool {
|
||||
// CHECK:STDOUT: impl_decl @impl {
|
||||
// CHECK:STDOUT: %C.ref.loc8: type = name_ref C, %C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %Core.ref: <namespace> = name_ref Core, %Core [template = %Core]
|
||||
// CHECK:STDOUT: %Eq.decl: invalid = interface_decl @Eq [template = constants.%.2] {}
|
||||
// CHECK:STDOUT: %Eq.decl: type = interface_decl @Eq [template = constants.%.2] {}
|
||||
// CHECK:STDOUT: %Eq.ref: type = name_ref Eq, %import_ref.1 [template = constants.%.2]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %TestEqual: <function> = fn_decl @TestEqual [template] {
|
||||
@@ -349,7 +349,7 @@ fn TestLhsBad(a: D, b: C) -> bool {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %a.ref: D = name_ref a, %a
|
||||
// CHECK:STDOUT: %b.ref: D = name_ref b, %b
|
||||
// CHECK:STDOUT: %Eq.decl: invalid = interface_decl @Eq [template = constants.%.4] {}
|
||||
// CHECK:STDOUT: %Eq.decl: type = interface_decl @Eq [template = constants.%.4] {}
|
||||
// CHECK:STDOUT: return <error>
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -395,7 +395,7 @@ fn TestLhsBad(a: D, b: C) -> bool {
|
||||
// CHECK:STDOUT: impl_decl @impl {
|
||||
// CHECK:STDOUT: %C.ref.loc9: type = name_ref C, %C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %Core.ref: <namespace> = name_ref Core, %Core [template = %Core]
|
||||
// CHECK:STDOUT: %Eq.decl: invalid = interface_decl @Eq [template = constants.%.2] {}
|
||||
// CHECK:STDOUT: %Eq.decl: type = interface_decl @Eq [template = constants.%.2] {}
|
||||
// CHECK:STDOUT: %Eq.ref: type = name_ref Eq, %import_ref.1 [template = constants.%.2]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %TestRhsBad: <function> = fn_decl @TestRhsBad [template] {
|
||||
|
||||
@@ -156,7 +156,7 @@ fn TestAddAssignNonRef(a: C, b: C) {
|
||||
// CHECK:STDOUT: impl_decl @impl.1 {
|
||||
// CHECK:STDOUT: %C.ref.loc8: type = name_ref C, %C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %Core.ref.loc8: <namespace> = name_ref Core, %Core [template = %Core]
|
||||
// CHECK:STDOUT: %Inc.decl: invalid = interface_decl @Inc [template = constants.%.2] {}
|
||||
// CHECK:STDOUT: %Inc.decl: type = interface_decl @Inc [template = constants.%.2] {}
|
||||
// CHECK:STDOUT: %Inc.ref: type = name_ref Inc, %import_ref.1 [template = constants.%.2]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref.5: type = import_ref ir3, inst+16, loc_38 [template = constants.%.6]
|
||||
@@ -166,7 +166,7 @@ fn TestAddAssignNonRef(a: C, b: C) {
|
||||
// CHECK:STDOUT: impl_decl @impl.2 {
|
||||
// CHECK:STDOUT: %C.ref.loc11: type = name_ref C, %C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %Core.ref.loc11: <namespace> = name_ref Core, %Core [template = %Core]
|
||||
// CHECK:STDOUT: %AddAssign.decl: invalid = interface_decl @AddAssign [template = constants.%.6] {}
|
||||
// CHECK:STDOUT: %AddAssign.decl: type = interface_decl @AddAssign [template = constants.%.6] {}
|
||||
// CHECK:STDOUT: %AddAssign.ref: type = name_ref AddAssign, %import_ref.5 [template = constants.%.6]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %TestIncNonRef: <function> = fn_decl @TestIncNonRef [template] {
|
||||
|
||||
@@ -296,7 +296,7 @@ fn TestRef(b: C) {
|
||||
// CHECK:STDOUT: fn @TestUnary(%a: C) -> %return: C {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %a.ref: C = name_ref a, %a
|
||||
// CHECK:STDOUT: %Negate.decl: invalid = interface_decl @Negate [template = constants.%.4] {}
|
||||
// CHECK:STDOUT: %Negate.decl: type = interface_decl @Negate [template = constants.%.4] {}
|
||||
// CHECK:STDOUT: return <error>
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -304,7 +304,7 @@ fn TestRef(b: C) {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %a.ref: C = name_ref a, %a
|
||||
// CHECK:STDOUT: %b.ref: C = name_ref b, %b
|
||||
// CHECK:STDOUT: %Add.decl: invalid = interface_decl @Add [template = constants.%.7] {}
|
||||
// CHECK:STDOUT: %Add.decl: type = interface_decl @Add [template = constants.%.7] {}
|
||||
// CHECK:STDOUT: return <error>
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -319,9 +319,9 @@ fn TestRef(b: C) {
|
||||
// CHECK:STDOUT: assign %a.var, %.loc25_16
|
||||
// CHECK:STDOUT: %a.ref.loc30: ref C = name_ref a, %a
|
||||
// CHECK:STDOUT: %b.ref: C = name_ref b, %b
|
||||
// CHECK:STDOUT: %AddAssign.decl: invalid = interface_decl @AddAssign [template = constants.%.11] {}
|
||||
// CHECK:STDOUT: %AddAssign.decl: type = interface_decl @AddAssign [template = constants.%.11] {}
|
||||
// CHECK:STDOUT: %a.ref.loc34: ref C = name_ref a, %a
|
||||
// CHECK:STDOUT: %Inc.decl: invalid = interface_decl @Inc [template = constants.%.14] {}
|
||||
// CHECK:STDOUT: %Inc.decl: type = interface_decl @Inc [template = constants.%.14] {}
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
@@ -167,7 +167,7 @@ fn TestAssign(b: D) {
|
||||
// CHECK:STDOUT: impl_decl @impl.1 {
|
||||
// CHECK:STDOUT: %C.ref.loc9: type = name_ref C, %C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %Core.ref.loc9: <namespace> = name_ref Core, %Core [template = %Core]
|
||||
// CHECK:STDOUT: %Add.decl: invalid = interface_decl @Add [template = constants.%.2] {}
|
||||
// CHECK:STDOUT: %Add.decl: type = interface_decl @Add [template = constants.%.2] {}
|
||||
// CHECK:STDOUT: %Add.ref: type = name_ref Add, %import_ref.1 [template = constants.%.2]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref.5: type = import_ref ir3, inst+22, loc_46 [template = constants.%.4]
|
||||
@@ -177,7 +177,7 @@ fn TestAssign(b: D) {
|
||||
// CHECK:STDOUT: impl_decl @impl.2 {
|
||||
// CHECK:STDOUT: %C.ref.loc12: type = name_ref C, %C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %Core.ref.loc12: <namespace> = name_ref Core, %Core [template = %Core]
|
||||
// CHECK:STDOUT: %AddAssign.decl: invalid = interface_decl @AddAssign [template = constants.%.4] {}
|
||||
// CHECK:STDOUT: %AddAssign.decl: type = interface_decl @AddAssign [template = constants.%.4] {}
|
||||
// CHECK:STDOUT: %AddAssign.ref: type = name_ref AddAssign, %import_ref.5 [template = constants.%.4]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Test: <function> = fn_decl @Test [template] {
|
||||
|
||||
@@ -99,7 +99,7 @@ fn TestOp() {
|
||||
// CHECK:STDOUT: impl_decl @impl {
|
||||
// CHECK:STDOUT: %C.ref: type = name_ref C, %C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %Core.ref: <namespace> = name_ref Core, %Core [template = %Core]
|
||||
// CHECK:STDOUT: %Inc.decl: invalid = interface_decl @Inc [template = constants.%.2] {}
|
||||
// CHECK:STDOUT: %Inc.decl: type = interface_decl @Inc [template = constants.%.2] {}
|
||||
// CHECK:STDOUT: %Inc.ref: type = name_ref Inc, %import_ref.1 [template = constants.%.2]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %TestOp: <function> = fn_decl @TestOp [template] {}
|
||||
|
||||
@@ -153,7 +153,7 @@ fn TestAssign(a: C*, b: C) {
|
||||
// CHECK:STDOUT: impl_decl @impl.1 {
|
||||
// CHECK:STDOUT: %C.ref.loc8: type = name_ref C, %C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %Core.ref.loc8: <namespace> = name_ref Core, %Core [template = %Core]
|
||||
// CHECK:STDOUT: %LeftShift.decl: invalid = interface_decl @LeftShift [template = constants.%.2] {}
|
||||
// CHECK:STDOUT: %LeftShift.decl: type = interface_decl @LeftShift [template = constants.%.2] {}
|
||||
// CHECK:STDOUT: %LeftShift.ref: type = name_ref LeftShift, %import_ref.1 [template = constants.%.2]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref.5: type = import_ref ir3, inst+22, loc_46 [template = constants.%.7]
|
||||
@@ -163,7 +163,7 @@ fn TestAssign(a: C*, b: C) {
|
||||
// CHECK:STDOUT: impl_decl @impl.2 {
|
||||
// CHECK:STDOUT: %C.ref.loc13: type = name_ref C, %C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %Core.ref.loc13: <namespace> = name_ref Core, %Core [template = %Core]
|
||||
// CHECK:STDOUT: %LeftShiftAssign.decl: invalid = interface_decl @LeftShiftAssign [template = constants.%.7] {}
|
||||
// CHECK:STDOUT: %LeftShiftAssign.decl: type = interface_decl @LeftShiftAssign [template = constants.%.7] {}
|
||||
// CHECK:STDOUT: %LeftShiftAssign.ref: type = name_ref LeftShiftAssign, %import_ref.5 [template = constants.%.7]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %TestOp: <function> = fn_decl @TestOp [template] {
|
||||
|
||||
@@ -153,7 +153,7 @@ fn TestAssign(a: C*, b: C) {
|
||||
// CHECK:STDOUT: impl_decl @impl.1 {
|
||||
// CHECK:STDOUT: %C.ref.loc8: type = name_ref C, %C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %Core.ref.loc8: <namespace> = name_ref Core, %Core [template = %Core]
|
||||
// CHECK:STDOUT: %Mod.decl: invalid = interface_decl @Mod [template = constants.%.2] {}
|
||||
// CHECK:STDOUT: %Mod.decl: type = interface_decl @Mod [template = constants.%.2] {}
|
||||
// CHECK:STDOUT: %Mod.ref: type = name_ref Mod, %import_ref.1 [template = constants.%.2]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref.5: type = import_ref ir3, inst+22, loc_46 [template = constants.%.7]
|
||||
@@ -163,7 +163,7 @@ fn TestAssign(a: C*, b: C) {
|
||||
// CHECK:STDOUT: impl_decl @impl.2 {
|
||||
// CHECK:STDOUT: %C.ref.loc13: type = name_ref C, %C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %Core.ref.loc13: <namespace> = name_ref Core, %Core [template = %Core]
|
||||
// CHECK:STDOUT: %ModAssign.decl: invalid = interface_decl @ModAssign [template = constants.%.7] {}
|
||||
// CHECK:STDOUT: %ModAssign.decl: type = interface_decl @ModAssign [template = constants.%.7] {}
|
||||
// CHECK:STDOUT: %ModAssign.ref: type = name_ref ModAssign, %import_ref.5 [template = constants.%.7]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %TestOp: <function> = fn_decl @TestOp [template] {
|
||||
|
||||
@@ -153,7 +153,7 @@ fn TestAssign(a: C*, b: C) {
|
||||
// CHECK:STDOUT: impl_decl @impl.1 {
|
||||
// CHECK:STDOUT: %C.ref.loc8: type = name_ref C, %C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %Core.ref.loc8: <namespace> = name_ref Core, %Core [template = %Core]
|
||||
// CHECK:STDOUT: %Mul.decl: invalid = interface_decl @Mul [template = constants.%.2] {}
|
||||
// CHECK:STDOUT: %Mul.decl: type = interface_decl @Mul [template = constants.%.2] {}
|
||||
// CHECK:STDOUT: %Mul.ref: type = name_ref Mul, %import_ref.1 [template = constants.%.2]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref.5: type = import_ref ir3, inst+22, loc_46 [template = constants.%.7]
|
||||
@@ -163,7 +163,7 @@ fn TestAssign(a: C*, b: C) {
|
||||
// CHECK:STDOUT: impl_decl @impl.2 {
|
||||
// CHECK:STDOUT: %C.ref.loc13: type = name_ref C, %C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %Core.ref.loc13: <namespace> = name_ref Core, %Core [template = %Core]
|
||||
// CHECK:STDOUT: %MulAssign.decl: invalid = interface_decl @MulAssign [template = constants.%.7] {}
|
||||
// CHECK:STDOUT: %MulAssign.decl: type = interface_decl @MulAssign [template = constants.%.7] {}
|
||||
// CHECK:STDOUT: %MulAssign.ref: type = name_ref MulAssign, %import_ref.5 [template = constants.%.7]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %TestOp: <function> = fn_decl @TestOp [template] {
|
||||
|
||||
@@ -99,7 +99,7 @@ fn TestOp(a: C) -> C {
|
||||
// CHECK:STDOUT: impl_decl @impl {
|
||||
// CHECK:STDOUT: %C.ref.loc8: type = name_ref C, %C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %Core.ref: <namespace> = name_ref Core, %Core [template = %Core]
|
||||
// CHECK:STDOUT: %Negate.decl: invalid = interface_decl @Negate [template = constants.%.2] {}
|
||||
// CHECK:STDOUT: %Negate.decl: type = interface_decl @Negate [template = constants.%.2] {}
|
||||
// CHECK:STDOUT: %Negate.ref: type = name_ref Negate, %import_ref.1 [template = constants.%.2]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %TestOp: <function> = fn_decl @TestOp [template] {
|
||||
|
||||
@@ -222,7 +222,7 @@ fn TestGreaterEqual(a: D, b: D) -> bool {
|
||||
// CHECK:STDOUT: impl_decl @impl {
|
||||
// CHECK:STDOUT: %C.ref.loc8: type = name_ref C, %C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %Core.ref: <namespace> = name_ref Core, %Core [template = %Core]
|
||||
// CHECK:STDOUT: %Ordered.decl: invalid = interface_decl @Ordered [template = constants.%.2] {}
|
||||
// CHECK:STDOUT: %Ordered.decl: type = interface_decl @Ordered [template = constants.%.2] {}
|
||||
// CHECK:STDOUT: %Ordered.ref: type = name_ref Ordered, %import_ref.1 [template = constants.%.2]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %TestLess: <function> = fn_decl @TestLess [template] {
|
||||
@@ -497,7 +497,7 @@ fn TestGreaterEqual(a: D, b: D) -> bool {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %a.ref: D = name_ref a, %a
|
||||
// CHECK:STDOUT: %b.ref: D = name_ref b, %b
|
||||
// CHECK:STDOUT: %Ordered.decl: invalid = interface_decl @Ordered [template = constants.%.4] {}
|
||||
// CHECK:STDOUT: %Ordered.decl: type = interface_decl @Ordered [template = constants.%.4] {}
|
||||
// CHECK:STDOUT: return <error>
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
@@ -153,7 +153,7 @@ fn TestAssign(a: C*, b: C) {
|
||||
// CHECK:STDOUT: impl_decl @impl.1 {
|
||||
// CHECK:STDOUT: %C.ref.loc8: type = name_ref C, %C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %Core.ref.loc8: <namespace> = name_ref Core, %Core [template = %Core]
|
||||
// CHECK:STDOUT: %RightShift.decl: invalid = interface_decl @RightShift [template = constants.%.2] {}
|
||||
// CHECK:STDOUT: %RightShift.decl: type = interface_decl @RightShift [template = constants.%.2] {}
|
||||
// CHECK:STDOUT: %RightShift.ref: type = name_ref RightShift, %import_ref.1 [template = constants.%.2]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref.5: type = import_ref ir3, inst+22, loc_46 [template = constants.%.7]
|
||||
@@ -163,7 +163,7 @@ fn TestAssign(a: C*, b: C) {
|
||||
// CHECK:STDOUT: impl_decl @impl.2 {
|
||||
// CHECK:STDOUT: %C.ref.loc13: type = name_ref C, %C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %Core.ref.loc13: <namespace> = name_ref Core, %Core [template = %Core]
|
||||
// CHECK:STDOUT: %RightShiftAssign.decl: invalid = interface_decl @RightShiftAssign [template = constants.%.7] {}
|
||||
// CHECK:STDOUT: %RightShiftAssign.decl: type = interface_decl @RightShiftAssign [template = constants.%.7] {}
|
||||
// CHECK:STDOUT: %RightShiftAssign.ref: type = name_ref RightShiftAssign, %import_ref.5 [template = constants.%.7]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %TestOp: <function> = fn_decl @TestOp [template] {
|
||||
|
||||
@@ -153,7 +153,7 @@ fn TestAssign(a: C*, b: C) {
|
||||
// CHECK:STDOUT: impl_decl @impl.1 {
|
||||
// CHECK:STDOUT: %C.ref.loc8: type = name_ref C, %C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %Core.ref.loc8: <namespace> = name_ref Core, %Core [template = %Core]
|
||||
// CHECK:STDOUT: %Sub.decl: invalid = interface_decl @Sub [template = constants.%.2] {}
|
||||
// CHECK:STDOUT: %Sub.decl: type = interface_decl @Sub [template = constants.%.2] {}
|
||||
// CHECK:STDOUT: %Sub.ref: type = name_ref Sub, %import_ref.1 [template = constants.%.2]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %import_ref.5: type = import_ref ir3, inst+22, loc_46 [template = constants.%.7]
|
||||
@@ -163,7 +163,7 @@ fn TestAssign(a: C*, b: C) {
|
||||
// CHECK:STDOUT: impl_decl @impl.2 {
|
||||
// CHECK:STDOUT: %C.ref.loc13: type = name_ref C, %C.decl [template = constants.%C]
|
||||
// CHECK:STDOUT: %Core.ref.loc13: <namespace> = name_ref Core, %Core [template = %Core]
|
||||
// CHECK:STDOUT: %SubAssign.decl: invalid = interface_decl @SubAssign [template = constants.%.7] {}
|
||||
// CHECK:STDOUT: %SubAssign.decl: type = interface_decl @SubAssign [template = constants.%.7] {}
|
||||
// CHECK:STDOUT: %SubAssign.ref: type = name_ref SubAssign, %import_ref.5 [template = constants.%.7]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %TestOp: <function> = fn_decl @TestOp [template] {
|
||||
|
||||
Reference in New Issue
Block a user