Model patterns as constant values (#5385)

This will enable us to simplify support for parameter and return
patterns in import, which operates primarily on constants.
This commit is contained in:
Geoff Romer
2025-04-30 22:32:41 +00:00
committed by GitHub
parent 500cf63d0d
commit 34887403ab
550 changed files with 6425 additions and 6416 deletions
+6 -6
View File
@@ -259,8 +259,8 @@ fn F() {
// CHECK:STDOUT: import Cpp "int_return_function_decl.h"
// CHECK:STDOUT: }
// CHECK:STDOUT: %Carbon_foo.decl: %Carbon_foo.type = fn_decl @Carbon_foo [concrete = constants.%Carbon_foo] {
// CHECK:STDOUT: %val.patt: %pattern_type.7ce = binding_pattern val
// CHECK:STDOUT: %val.param_patt: %pattern_type.7ce = value_param_pattern %val.patt, call_param0
// CHECK:STDOUT: %val.patt: %pattern_type.7ce = binding_pattern val [concrete]
// CHECK:STDOUT: %val.param_patt: %pattern_type.7ce = value_param_pattern %val.patt, call_param0 [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %val.param: %i32 = value_param call_param0
// CHECK:STDOUT: %.loc6: type = splice_block %i32 [concrete = constants.%i32] {
@@ -854,8 +854,8 @@ fn F() {
// CHECK:STDOUT: fn @F() {
// CHECK:STDOUT: !entry:
// CHECK:STDOUT: name_binding_decl {
// CHECK:STDOUT: %a.patt: %pattern_type.7ce = binding_pattern a
// CHECK:STDOUT: %.loc7_3.1: %pattern_type.7ce = var_pattern %a.patt
// CHECK:STDOUT: %a.patt: %pattern_type.7ce = binding_pattern a [concrete]
// CHECK:STDOUT: %.loc7_3.1: %pattern_type.7ce = var_pattern %a.patt [concrete]
// CHECK:STDOUT: }
// CHECK:STDOUT: %a.var: ref %i32 = var a
// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
@@ -930,8 +930,8 @@ fn F() {
// CHECK:STDOUT: fn @F() {
// CHECK:STDOUT: !entry:
// CHECK:STDOUT: name_binding_decl {
// CHECK:STDOUT: %a.patt: %pattern_type.7ce = binding_pattern a
// CHECK:STDOUT: %.loc7_3.1: %pattern_type.7ce = var_pattern %a.patt
// CHECK:STDOUT: %a.patt: %pattern_type.7ce = binding_pattern a [concrete]
// CHECK:STDOUT: %.loc7_3.1: %pattern_type.7ce = var_pattern %a.patt [concrete]
// CHECK:STDOUT: }
// CHECK:STDOUT: %a.var: ref %i32 = var a
// CHECK:STDOUT: %int_1: Core.IntLiteral = int_value 1 [concrete = constants.%int_1.5b8]
+20 -20
View File
@@ -323,8 +323,8 @@ fn MyF(bar: Cpp.Bar*);
// CHECK:STDOUT: import Cpp "class_declaration.h"
// CHECK:STDOUT: }
// CHECK:STDOUT: %MyF.decl: %MyF.type = fn_decl @MyF [concrete = constants.%MyF] {
// CHECK:STDOUT: %bar.patt: <error> = binding_pattern bar
// CHECK:STDOUT: %bar.param_patt: <error> = value_param_pattern %bar.patt, call_param0
// CHECK:STDOUT: %bar.patt: <error> = binding_pattern bar [concrete]
// CHECK:STDOUT: %bar.param_patt: <error> = value_param_pattern %bar.patt, call_param0 [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %bar.param: <error> = value_param call_param0
// CHECK:STDOUT: %.loc13: type = splice_block %ptr [concrete = <error>] {
@@ -366,8 +366,8 @@ fn MyF(bar: Cpp.Bar*);
// CHECK:STDOUT: import Cpp "class_definition.h"
// CHECK:STDOUT: }
// CHECK:STDOUT: %MyF.decl: %MyF.type = fn_decl @MyF [concrete = constants.%MyF] {
// CHECK:STDOUT: %bar.patt: %pattern_type = binding_pattern bar
// CHECK:STDOUT: %bar.param_patt: %pattern_type = value_param_pattern %bar.patt, call_param0
// CHECK:STDOUT: %bar.patt: %pattern_type = binding_pattern bar [concrete]
// CHECK:STDOUT: %bar.param_patt: %pattern_type = value_param_pattern %bar.patt, call_param0 [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %bar.param: %ptr = value_param call_param0
// CHECK:STDOUT: %.loc6: type = splice_block %ptr [concrete = constants.%ptr] {
@@ -420,8 +420,8 @@ fn MyF(bar: Cpp.Bar*);
// CHECK:STDOUT: import Cpp "class_declaration_and_definition.h"
// CHECK:STDOUT: }
// CHECK:STDOUT: %MyF.decl: %MyF.type = fn_decl @MyF [concrete = constants.%MyF] {
// CHECK:STDOUT: %bar.patt: %pattern_type = binding_pattern bar
// CHECK:STDOUT: %bar.param_patt: %pattern_type = value_param_pattern %bar.patt, call_param0
// CHECK:STDOUT: %bar.patt: %pattern_type = binding_pattern bar [concrete]
// CHECK:STDOUT: %bar.param_patt: %pattern_type = value_param_pattern %bar.patt, call_param0 [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %bar.param: %ptr = value_param call_param0
// CHECK:STDOUT: %.loc6: type = splice_block %ptr [concrete = constants.%ptr] {
@@ -584,8 +584,8 @@ fn MyF(bar: Cpp.Bar*);
// CHECK:STDOUT: import Cpp "class_public_member_function.h"
// CHECK:STDOUT: }
// CHECK:STDOUT: %MyF.decl: %MyF.type = fn_decl @MyF [concrete = constants.%MyF] {
// CHECK:STDOUT: %bar.patt: %pattern_type = binding_pattern bar
// CHECK:STDOUT: %bar.param_patt: %pattern_type = value_param_pattern %bar.patt, call_param0
// CHECK:STDOUT: %bar.patt: %pattern_type = binding_pattern bar [concrete]
// CHECK:STDOUT: %bar.param_patt: %pattern_type = value_param_pattern %bar.patt, call_param0 [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %bar.param: %ptr.f68 = value_param call_param0
// CHECK:STDOUT: %.loc6: type = splice_block %ptr [concrete = constants.%ptr.f68] {
@@ -659,7 +659,7 @@ fn MyF(bar: Cpp.Bar*);
// CHECK:STDOUT: fn @MyF() {
// CHECK:STDOUT: !entry:
// CHECK:STDOUT: name_binding_decl {
// CHECK:STDOUT: %bar.patt: %pattern_type = binding_pattern bar
// CHECK:STDOUT: %bar.patt: %pattern_type = binding_pattern bar [concrete]
// CHECK:STDOUT: }
// CHECK:STDOUT: %Cpp.ref.loc18_23: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
// CHECK:STDOUT: %Bar.ref.loc18_26: type = name_ref Bar, %Bar.decl [concrete = constants.%Bar]
@@ -704,8 +704,8 @@ fn MyF(bar: Cpp.Bar*);
// CHECK:STDOUT: import Cpp "class_public_static_data_member.h"
// CHECK:STDOUT: }
// CHECK:STDOUT: %MyF.decl: %MyF.type = fn_decl @MyF [concrete = constants.%MyF] {
// CHECK:STDOUT: %bar.patt: %pattern_type = binding_pattern bar
// CHECK:STDOUT: %bar.param_patt: %pattern_type = value_param_pattern %bar.patt, call_param0
// CHECK:STDOUT: %bar.patt: %pattern_type = binding_pattern bar [concrete]
// CHECK:STDOUT: %bar.param_patt: %pattern_type = value_param_pattern %bar.patt, call_param0 [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %bar.param: %ptr.f68 = value_param call_param0
// CHECK:STDOUT: %.loc6: type = splice_block %ptr.loc6 [concrete = constants.%ptr.f68] {
@@ -732,7 +732,7 @@ fn MyF(bar: Cpp.Bar*);
// CHECK:STDOUT: fn @MyF(%bar.param: %ptr.f68) {
// CHECK:STDOUT: !entry:
// CHECK:STDOUT: name_binding_decl {
// CHECK:STDOUT: %foo_bar.patt: %pattern_type = binding_pattern foo_bar
// CHECK:STDOUT: %foo_bar.patt: %pattern_type = binding_pattern foo_bar [concrete]
// CHECK:STDOUT: }
// CHECK:STDOUT: %bar.ref: %ptr.f68 = name_ref bar, %bar
// CHECK:STDOUT: %.loc18_30: ref %Bar = deref %bar.ref
@@ -870,8 +870,8 @@ fn MyF(bar: Cpp.Bar*);
// CHECK:STDOUT: import Cpp "class_inheritance_pointers.h"
// CHECK:STDOUT: }
// CHECK:STDOUT: %MyF1.decl: %MyF1.type = fn_decl @MyF1 [concrete = constants.%MyF1] {
// CHECK:STDOUT: %bar.patt: %pattern_type.3cc = binding_pattern bar
// CHECK:STDOUT: %bar.param_patt: %pattern_type.3cc = value_param_pattern %bar.patt, call_param0
// CHECK:STDOUT: %bar.patt: %pattern_type.3cc = binding_pattern bar [concrete]
// CHECK:STDOUT: %bar.param_patt: %pattern_type.3cc = value_param_pattern %bar.patt, call_param0 [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %bar.param: %ptr.f68 = value_param call_param0
// CHECK:STDOUT: %.loc6: type = splice_block %ptr [concrete = constants.%ptr.f68] {
@@ -885,8 +885,8 @@ fn MyF(bar: Cpp.Bar*);
// CHECK:STDOUT: %bar: %ptr.f68 = bind_name bar, %bar.param
// CHECK:STDOUT: }
// CHECK:STDOUT: %MyF2.decl: %MyF2.type = fn_decl @MyF2 [concrete = constants.%MyF2] {
// CHECK:STDOUT: %bar.patt: %pattern_type.92a = binding_pattern bar
// CHECK:STDOUT: %bar.param_patt: %pattern_type.92a = value_param_pattern %bar.patt, call_param0
// CHECK:STDOUT: %bar.patt: %pattern_type.92a = binding_pattern bar [concrete]
// CHECK:STDOUT: %bar.param_patt: %pattern_type.92a = value_param_pattern %bar.patt, call_param0 [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %bar.param: %ptr.eca = value_param call_param0
// CHECK:STDOUT: %.loc15_23: type = splice_block %ptr [concrete = constants.%ptr.eca] {
@@ -951,8 +951,8 @@ fn MyF(bar: Cpp.Bar*);
// CHECK:STDOUT: import Cpp "class_dynamic.h"
// CHECK:STDOUT: }
// CHECK:STDOUT: %MyF.decl: %MyF.type = fn_decl @MyF [concrete = constants.%MyF] {
// CHECK:STDOUT: %bar.patt: <error> = binding_pattern bar
// CHECK:STDOUT: %bar.param_patt: <error> = value_param_pattern %bar.patt, call_param0
// CHECK:STDOUT: %bar.patt: <error> = binding_pattern bar [concrete]
// CHECK:STDOUT: %bar.param_patt: <error> = value_param_pattern %bar.patt, call_param0 [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %bar.param: <error> = value_param call_param0
// CHECK:STDOUT: %.loc13: type = splice_block %ptr [concrete = <error>] {
@@ -1141,8 +1141,8 @@ fn MyF(bar: Cpp.Bar*);
// CHECK:STDOUT: import Cpp "class_template.h"
// CHECK:STDOUT: }
// CHECK:STDOUT: %MyF.decl: %MyF.type = fn_decl @MyF [concrete = constants.%MyF] {
// CHECK:STDOUT: %bar.patt: <error> = binding_pattern bar
// CHECK:STDOUT: %bar.param_patt: <error> = value_param_pattern %bar.patt, call_param0
// CHECK:STDOUT: %bar.patt: <error> = binding_pattern bar [concrete]
// CHECK:STDOUT: %bar.param_patt: <error> = value_param_pattern %bar.patt, call_param0 [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %bar.param: <error> = value_param call_param0
// CHECK:STDOUT: %.loc17: type = splice_block %ptr [concrete = <error>] {
+20 -20
View File
@@ -313,8 +313,8 @@ fn MyF(bar: Cpp.Bar*);
// CHECK:STDOUT: import Cpp "struct_declaration.h"
// CHECK:STDOUT: }
// CHECK:STDOUT: %MyF.decl: %MyF.type = fn_decl @MyF [concrete = constants.%MyF] {
// CHECK:STDOUT: %bar.patt: <error> = binding_pattern bar
// CHECK:STDOUT: %bar.param_patt: <error> = value_param_pattern %bar.patt, call_param0
// CHECK:STDOUT: %bar.patt: <error> = binding_pattern bar [concrete]
// CHECK:STDOUT: %bar.param_patt: <error> = value_param_pattern %bar.patt, call_param0 [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %bar.param: <error> = value_param call_param0
// CHECK:STDOUT: %.loc13: type = splice_block %ptr [concrete = <error>] {
@@ -356,8 +356,8 @@ fn MyF(bar: Cpp.Bar*);
// CHECK:STDOUT: import Cpp "struct_definition.h"
// CHECK:STDOUT: }
// CHECK:STDOUT: %MyF.decl: %MyF.type = fn_decl @MyF [concrete = constants.%MyF] {
// CHECK:STDOUT: %bar.patt: %pattern_type = binding_pattern bar
// CHECK:STDOUT: %bar.param_patt: %pattern_type = value_param_pattern %bar.patt, call_param0
// CHECK:STDOUT: %bar.patt: %pattern_type = binding_pattern bar [concrete]
// CHECK:STDOUT: %bar.param_patt: %pattern_type = value_param_pattern %bar.patt, call_param0 [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %bar.param: %ptr = value_param call_param0
// CHECK:STDOUT: %.loc6: type = splice_block %ptr [concrete = constants.%ptr] {
@@ -410,8 +410,8 @@ fn MyF(bar: Cpp.Bar*);
// CHECK:STDOUT: import Cpp "struct_declaration_and_definition.h"
// CHECK:STDOUT: }
// CHECK:STDOUT: %MyF.decl: %MyF.type = fn_decl @MyF [concrete = constants.%MyF] {
// CHECK:STDOUT: %bar.patt: %pattern_type = binding_pattern bar
// CHECK:STDOUT: %bar.param_patt: %pattern_type = value_param_pattern %bar.patt, call_param0
// CHECK:STDOUT: %bar.patt: %pattern_type = binding_pattern bar [concrete]
// CHECK:STDOUT: %bar.param_patt: %pattern_type = value_param_pattern %bar.patt, call_param0 [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %bar.param: %ptr = value_param call_param0
// CHECK:STDOUT: %.loc6: type = splice_block %ptr [concrete = constants.%ptr] {
@@ -574,8 +574,8 @@ fn MyF(bar: Cpp.Bar*);
// CHECK:STDOUT: import Cpp "struct_public_member_function.h"
// CHECK:STDOUT: }
// CHECK:STDOUT: %MyF.decl: %MyF.type = fn_decl @MyF [concrete = constants.%MyF] {
// CHECK:STDOUT: %bar.patt: %pattern_type = binding_pattern bar
// CHECK:STDOUT: %bar.param_patt: %pattern_type = value_param_pattern %bar.patt, call_param0
// CHECK:STDOUT: %bar.patt: %pattern_type = binding_pattern bar [concrete]
// CHECK:STDOUT: %bar.param_patt: %pattern_type = value_param_pattern %bar.patt, call_param0 [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %bar.param: %ptr.f68 = value_param call_param0
// CHECK:STDOUT: %.loc6: type = splice_block %ptr [concrete = constants.%ptr.f68] {
@@ -649,7 +649,7 @@ fn MyF(bar: Cpp.Bar*);
// CHECK:STDOUT: fn @MyF() {
// CHECK:STDOUT: !entry:
// CHECK:STDOUT: name_binding_decl {
// CHECK:STDOUT: %bar.patt: %pattern_type = binding_pattern bar
// CHECK:STDOUT: %bar.patt: %pattern_type = binding_pattern bar [concrete]
// CHECK:STDOUT: }
// CHECK:STDOUT: %Cpp.ref.loc18_23: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
// CHECK:STDOUT: %Bar.ref.loc18_26: type = name_ref Bar, %Bar.decl [concrete = constants.%Bar]
@@ -694,8 +694,8 @@ fn MyF(bar: Cpp.Bar*);
// CHECK:STDOUT: import Cpp "struct_public_static_data_member.h"
// CHECK:STDOUT: }
// CHECK:STDOUT: %MyF.decl: %MyF.type = fn_decl @MyF [concrete = constants.%MyF] {
// CHECK:STDOUT: %bar.patt: %pattern_type = binding_pattern bar
// CHECK:STDOUT: %bar.param_patt: %pattern_type = value_param_pattern %bar.patt, call_param0
// CHECK:STDOUT: %bar.patt: %pattern_type = binding_pattern bar [concrete]
// CHECK:STDOUT: %bar.param_patt: %pattern_type = value_param_pattern %bar.patt, call_param0 [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %bar.param: %ptr.f68 = value_param call_param0
// CHECK:STDOUT: %.loc6: type = splice_block %ptr.loc6 [concrete = constants.%ptr.f68] {
@@ -722,7 +722,7 @@ fn MyF(bar: Cpp.Bar*);
// CHECK:STDOUT: fn @MyF(%bar.param: %ptr.f68) {
// CHECK:STDOUT: !entry:
// CHECK:STDOUT: name_binding_decl {
// CHECK:STDOUT: %foo_bar.patt: %pattern_type = binding_pattern foo_bar
// CHECK:STDOUT: %foo_bar.patt: %pattern_type = binding_pattern foo_bar [concrete]
// CHECK:STDOUT: }
// CHECK:STDOUT: %bar.ref: %ptr.f68 = name_ref bar, %bar
// CHECK:STDOUT: %.loc18_30: ref %Bar = deref %bar.ref
@@ -860,8 +860,8 @@ fn MyF(bar: Cpp.Bar*);
// CHECK:STDOUT: import Cpp "struct_inheritance_pointers.h"
// CHECK:STDOUT: }
// CHECK:STDOUT: %MyF1.decl: %MyF1.type = fn_decl @MyF1 [concrete = constants.%MyF1] {
// CHECK:STDOUT: %bar.patt: %pattern_type.3cc = binding_pattern bar
// CHECK:STDOUT: %bar.param_patt: %pattern_type.3cc = value_param_pattern %bar.patt, call_param0
// CHECK:STDOUT: %bar.patt: %pattern_type.3cc = binding_pattern bar [concrete]
// CHECK:STDOUT: %bar.param_patt: %pattern_type.3cc = value_param_pattern %bar.patt, call_param0 [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %bar.param: %ptr.f68 = value_param call_param0
// CHECK:STDOUT: %.loc6: type = splice_block %ptr [concrete = constants.%ptr.f68] {
@@ -875,8 +875,8 @@ fn MyF(bar: Cpp.Bar*);
// CHECK:STDOUT: %bar: %ptr.f68 = bind_name bar, %bar.param
// CHECK:STDOUT: }
// CHECK:STDOUT: %MyF2.decl: %MyF2.type = fn_decl @MyF2 [concrete = constants.%MyF2] {
// CHECK:STDOUT: %bar.patt: %pattern_type.92a = binding_pattern bar
// CHECK:STDOUT: %bar.param_patt: %pattern_type.92a = value_param_pattern %bar.patt, call_param0
// CHECK:STDOUT: %bar.patt: %pattern_type.92a = binding_pattern bar [concrete]
// CHECK:STDOUT: %bar.param_patt: %pattern_type.92a = value_param_pattern %bar.patt, call_param0 [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %bar.param: %ptr.eca = value_param call_param0
// CHECK:STDOUT: %.loc15_23: type = splice_block %ptr [concrete = constants.%ptr.eca] {
@@ -941,8 +941,8 @@ fn MyF(bar: Cpp.Bar*);
// CHECK:STDOUT: import Cpp "struct_dynamic.h"
// CHECK:STDOUT: }
// CHECK:STDOUT: %MyF.decl: %MyF.type = fn_decl @MyF [concrete = constants.%MyF] {
// CHECK:STDOUT: %bar.patt: <error> = binding_pattern bar
// CHECK:STDOUT: %bar.param_patt: <error> = value_param_pattern %bar.patt, call_param0
// CHECK:STDOUT: %bar.patt: <error> = binding_pattern bar [concrete]
// CHECK:STDOUT: %bar.param_patt: <error> = value_param_pattern %bar.patt, call_param0 [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %bar.param: <error> = value_param call_param0
// CHECK:STDOUT: %.loc13: type = splice_block %ptr [concrete = <error>] {
@@ -1131,8 +1131,8 @@ fn MyF(bar: Cpp.Bar*);
// CHECK:STDOUT: import Cpp "struct_template.h"
// CHECK:STDOUT: }
// CHECK:STDOUT: %MyF.decl: %MyF.type = fn_decl @MyF [concrete = constants.%MyF] {
// CHECK:STDOUT: %bar.patt: <error> = binding_pattern bar
// CHECK:STDOUT: %bar.param_patt: <error> = value_param_pattern %bar.patt, call_param0
// CHECK:STDOUT: %bar.patt: <error> = binding_pattern bar [concrete]
// CHECK:STDOUT: %bar.param_patt: <error> = value_param_pattern %bar.patt, call_param0 [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %bar.param: <error> = value_param call_param0
// CHECK:STDOUT: %.loc17: type = splice_block %ptr [concrete = <error>] {
+14 -14
View File
@@ -234,8 +234,8 @@ fn MyF(bar: Cpp.Bar*);
// CHECK:STDOUT: import Cpp "union_declaration.h"
// CHECK:STDOUT: }
// CHECK:STDOUT: %MyF.decl: %MyF.type = fn_decl @MyF [concrete = constants.%MyF] {
// CHECK:STDOUT: %bar.patt: <error> = binding_pattern bar
// CHECK:STDOUT: %bar.param_patt: <error> = value_param_pattern %bar.patt, call_param0
// CHECK:STDOUT: %bar.patt: <error> = binding_pattern bar [concrete]
// CHECK:STDOUT: %bar.param_patt: <error> = value_param_pattern %bar.patt, call_param0 [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %bar.param: <error> = value_param call_param0
// CHECK:STDOUT: %.loc13: type = splice_block %ptr [concrete = <error>] {
@@ -277,8 +277,8 @@ fn MyF(bar: Cpp.Bar*);
// CHECK:STDOUT: import Cpp "union_definition.h"
// CHECK:STDOUT: }
// CHECK:STDOUT: %MyF.decl: %MyF.type = fn_decl @MyF [concrete = constants.%MyF] {
// CHECK:STDOUT: %bar.patt: %pattern_type = binding_pattern bar
// CHECK:STDOUT: %bar.param_patt: %pattern_type = value_param_pattern %bar.patt, call_param0
// CHECK:STDOUT: %bar.patt: %pattern_type = binding_pattern bar [concrete]
// CHECK:STDOUT: %bar.param_patt: %pattern_type = value_param_pattern %bar.patt, call_param0 [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %bar.param: %ptr = value_param call_param0
// CHECK:STDOUT: %.loc6: type = splice_block %ptr [concrete = constants.%ptr] {
@@ -331,8 +331,8 @@ fn MyF(bar: Cpp.Bar*);
// CHECK:STDOUT: import Cpp "union_declaration_and_definition.h"
// CHECK:STDOUT: }
// CHECK:STDOUT: %MyF.decl: %MyF.type = fn_decl @MyF [concrete = constants.%MyF] {
// CHECK:STDOUT: %bar.patt: %pattern_type = binding_pattern bar
// CHECK:STDOUT: %bar.param_patt: %pattern_type = value_param_pattern %bar.patt, call_param0
// CHECK:STDOUT: %bar.patt: %pattern_type = binding_pattern bar [concrete]
// CHECK:STDOUT: %bar.param_patt: %pattern_type = value_param_pattern %bar.patt, call_param0 [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %bar.param: %ptr = value_param call_param0
// CHECK:STDOUT: %.loc6: type = splice_block %ptr [concrete = constants.%ptr] {
@@ -495,8 +495,8 @@ fn MyF(bar: Cpp.Bar*);
// CHECK:STDOUT: import Cpp "union_public_member_function.h"
// CHECK:STDOUT: }
// CHECK:STDOUT: %MyF.decl: %MyF.type = fn_decl @MyF [concrete = constants.%MyF] {
// CHECK:STDOUT: %bar.patt: %pattern_type = binding_pattern bar
// CHECK:STDOUT: %bar.param_patt: %pattern_type = value_param_pattern %bar.patt, call_param0
// CHECK:STDOUT: %bar.patt: %pattern_type = binding_pattern bar [concrete]
// CHECK:STDOUT: %bar.param_patt: %pattern_type = value_param_pattern %bar.patt, call_param0 [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %bar.param: %ptr.f68 = value_param call_param0
// CHECK:STDOUT: %.loc6: type = splice_block %ptr [concrete = constants.%ptr.f68] {
@@ -570,7 +570,7 @@ fn MyF(bar: Cpp.Bar*);
// CHECK:STDOUT: fn @MyF() {
// CHECK:STDOUT: !entry:
// CHECK:STDOUT: name_binding_decl {
// CHECK:STDOUT: %bar.patt: %pattern_type = binding_pattern bar
// CHECK:STDOUT: %bar.patt: %pattern_type = binding_pattern bar [concrete]
// CHECK:STDOUT: }
// CHECK:STDOUT: %Cpp.ref.loc18_23: <namespace> = name_ref Cpp, imports.%Cpp [concrete = imports.%Cpp]
// CHECK:STDOUT: %Bar.ref.loc18_26: type = name_ref Bar, %Bar.decl [concrete = constants.%Bar]
@@ -615,8 +615,8 @@ fn MyF(bar: Cpp.Bar*);
// CHECK:STDOUT: import Cpp "union_public_static_data_member.h"
// CHECK:STDOUT: }
// CHECK:STDOUT: %MyF.decl: %MyF.type = fn_decl @MyF [concrete = constants.%MyF] {
// CHECK:STDOUT: %bar.patt: %pattern_type = binding_pattern bar
// CHECK:STDOUT: %bar.param_patt: %pattern_type = value_param_pattern %bar.patt, call_param0
// CHECK:STDOUT: %bar.patt: %pattern_type = binding_pattern bar [concrete]
// CHECK:STDOUT: %bar.param_patt: %pattern_type = value_param_pattern %bar.patt, call_param0 [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %bar.param: %ptr.f68 = value_param call_param0
// CHECK:STDOUT: %.loc6: type = splice_block %ptr.loc6 [concrete = constants.%ptr.f68] {
@@ -643,7 +643,7 @@ fn MyF(bar: Cpp.Bar*);
// CHECK:STDOUT: fn @MyF(%bar.param: %ptr.f68) {
// CHECK:STDOUT: !entry:
// CHECK:STDOUT: name_binding_decl {
// CHECK:STDOUT: %foo_bar.patt: %pattern_type = binding_pattern foo_bar
// CHECK:STDOUT: %foo_bar.patt: %pattern_type = binding_pattern foo_bar [concrete]
// CHECK:STDOUT: }
// CHECK:STDOUT: %bar.ref: %ptr.f68 = name_ref bar, %bar
// CHECK:STDOUT: %.loc18_30: ref %Bar = deref %bar.ref
@@ -756,8 +756,8 @@ fn MyF(bar: Cpp.Bar*);
// CHECK:STDOUT: import Cpp "union_template.h"
// CHECK:STDOUT: }
// CHECK:STDOUT: %MyF.decl: %MyF.type = fn_decl @MyF [concrete = constants.%MyF] {
// CHECK:STDOUT: %bar.patt: <error> = binding_pattern bar
// CHECK:STDOUT: %bar.param_patt: <error> = value_param_pattern %bar.patt, call_param0
// CHECK:STDOUT: %bar.patt: <error> = binding_pattern bar [concrete]
// CHECK:STDOUT: %bar.param_patt: <error> = value_param_pattern %bar.patt, call_param0 [concrete]
// CHECK:STDOUT: } {
// CHECK:STDOUT: %bar.param: <error> = value_param call_param0
// CHECK:STDOUT: %.loc17: type = splice_block %ptr [concrete = <error>] {