mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-04 22:02:52 +01:00
Model var as a pattern operator (#4720)
Co-authored-by: Richard Smith <richard@metafoo.co.uk>
This commit is contained in:
co-authored by
Richard Smith
parent
6572da7314
commit
13434f0e8a
@@ -506,15 +506,56 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %default.import = import <invalid>
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %a.patt: %empty_tuple.type = binding_pattern a
|
||||
// CHECK:STDOUT: %.loc6_1: %empty_tuple.type = var_pattern %a.patt
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %a.var: ref %empty_tuple.type = var a
|
||||
// CHECK:STDOUT: %.loc6_9.1: type = splice_block %.loc6_9.3 [template = constants.%empty_tuple.type] {
|
||||
// CHECK:STDOUT: %.loc6_9.2: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc6_9.3: type = converted %.loc6_9.2, constants.%empty_tuple.type [template = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %a: ref %empty_tuple.type = bind_name a, %a.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %b.patt: %i32 = binding_pattern b
|
||||
// CHECK:STDOUT: %.loc7_1: %i32 = var_pattern %b.patt
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %b.var: ref %i32 = var b
|
||||
// CHECK:STDOUT: %.loc7_8: type = splice_block %i32.loc7 [template = constants.%i32] {
|
||||
// CHECK:STDOUT: %int_32.loc7: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc7: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %c.patt: %struct_type.c = binding_pattern c
|
||||
// CHECK:STDOUT: %.loc8_1: %struct_type.c = var_pattern %c.patt
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %c.var: ref %struct_type.c = var c
|
||||
// CHECK:STDOUT: %.loc8_16: type = splice_block %struct_type.c [template = constants.%struct_type.c] {
|
||||
// CHECK:STDOUT: %int_32.loc8: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc8: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %i32} [template = constants.%struct_type.c]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %c: ref %struct_type.c = bind_name c, %c.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %d.patt: %empty_tuple.type = binding_pattern d
|
||||
// CHECK:STDOUT: %.loc9_1: %empty_tuple.type = var_pattern %d.patt
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %d.var: ref %empty_tuple.type = var d
|
||||
// CHECK:STDOUT: %.loc9_9.1: type = splice_block %.loc9_9.3 [template = constants.%empty_tuple.type] {
|
||||
// CHECK:STDOUT: %.loc9_9.2: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc9_9.3: type = converted %.loc9_9.2, constants.%empty_tuple.type [template = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %d: ref %empty_tuple.type = bind_name d, %d.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %e.patt: %empty_tuple.type = binding_pattern e
|
||||
// CHECK:STDOUT: %.loc10_1: %empty_tuple.type = var_pattern %e.patt
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %e.var: ref %empty_tuple.type = var e
|
||||
// CHECK:STDOUT: %.loc10_9.1: type = splice_block %.loc10_9.3 [template = constants.%empty_tuple.type] {
|
||||
// CHECK:STDOUT: %.loc10_9.2: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc10_9.3: type = converted %.loc10_9.2, constants.%empty_tuple.type [template = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %e: ref %empty_tuple.type = bind_name e, %e.var
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -656,15 +697,56 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %D.decl: %D.type = fn_decl @D [template = constants.%D] {} {}
|
||||
// CHECK:STDOUT: %E.decl: %E.type = fn_decl @E [template = constants.%E] {} {}
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %a.patt: %empty_tuple.type = binding_pattern a
|
||||
// CHECK:STDOUT: %.loc52_1: %empty_tuple.type = var_pattern %a.patt
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %a.var: ref %empty_tuple.type = var a
|
||||
// CHECK:STDOUT: %.loc52_9.1: type = splice_block %.loc52_9.3 [template = constants.%empty_tuple.type] {
|
||||
// CHECK:STDOUT: %.loc52_9.2: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc52_9.3: type = converted %.loc52_9.2, constants.%empty_tuple.type [template = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %a: ref %empty_tuple.type = bind_name a, %a.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %b.patt: %i32 = binding_pattern b
|
||||
// CHECK:STDOUT: %.loc53_1: %i32 = var_pattern %b.patt
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %b.var: ref %i32 = var b
|
||||
// CHECK:STDOUT: %.loc53_8: type = splice_block %i32.loc53 [template = constants.%i32] {
|
||||
// CHECK:STDOUT: %int_32.loc53: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc53: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %c.patt: %struct_type.c = binding_pattern c
|
||||
// CHECK:STDOUT: %.loc54_1: %struct_type.c = var_pattern %c.patt
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %c.var: ref %struct_type.c = var c
|
||||
// CHECK:STDOUT: %.loc54_16: type = splice_block %struct_type.c [template = constants.%struct_type.c] {
|
||||
// CHECK:STDOUT: %int_32.loc54: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc54: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %i32} [template = constants.%struct_type.c]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %c: ref %struct_type.c = bind_name c, %c.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %d.patt: %empty_tuple.type = binding_pattern d
|
||||
// CHECK:STDOUT: %.loc55_1: %empty_tuple.type = var_pattern %d.patt
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %d.var: ref %empty_tuple.type = var d
|
||||
// CHECK:STDOUT: %.loc55_9.1: type = splice_block %.loc55_9.3 [template = constants.%empty_tuple.type] {
|
||||
// CHECK:STDOUT: %.loc55_9.2: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc55_9.3: type = converted %.loc55_9.2, constants.%empty_tuple.type [template = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %d: ref %empty_tuple.type = bind_name d, %d.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %e.patt: %empty_tuple.type = binding_pattern e
|
||||
// CHECK:STDOUT: %.loc56_1: %empty_tuple.type = var_pattern %e.patt
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %e.var: ref %empty_tuple.type = var e
|
||||
// CHECK:STDOUT: %.loc56_9.1: type = splice_block %.loc56_9.3 [template = constants.%empty_tuple.type] {
|
||||
// CHECK:STDOUT: %.loc56_9.2: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc56_9.3: type = converted %.loc56_9.2, constants.%empty_tuple.type [template = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %e: ref %empty_tuple.type = bind_name e, %e.var
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -806,15 +888,56 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %D.decl: %D.type = fn_decl @D [template = constants.%D] {} {}
|
||||
// CHECK:STDOUT: %E.decl: %E.type = fn_decl @E [template = constants.%E] {} {}
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %a.patt: %empty_tuple.type = binding_pattern a
|
||||
// CHECK:STDOUT: %.loc12_1: %empty_tuple.type = var_pattern %a.patt
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %a.var: ref %empty_tuple.type = var a
|
||||
// CHECK:STDOUT: %.loc12_9.1: type = splice_block %.loc12_9.3 [template = constants.%empty_tuple.type] {
|
||||
// CHECK:STDOUT: %.loc12_9.2: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc12_9.3: type = converted %.loc12_9.2, constants.%empty_tuple.type [template = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %a: ref %empty_tuple.type = bind_name a, %a.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %b.patt: %i32 = binding_pattern b
|
||||
// CHECK:STDOUT: %.loc13_1: %i32 = var_pattern %b.patt
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %b.var: ref %i32 = var b
|
||||
// CHECK:STDOUT: %.loc13_8: type = splice_block %i32.loc13 [template = constants.%i32] {
|
||||
// CHECK:STDOUT: %int_32.loc13: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc13: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %c.patt: %struct_type.c = binding_pattern c
|
||||
// CHECK:STDOUT: %.loc14_1: %struct_type.c = var_pattern %c.patt
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %c.var: ref %struct_type.c = var c
|
||||
// CHECK:STDOUT: %.loc14_16: type = splice_block %struct_type.c [template = constants.%struct_type.c] {
|
||||
// CHECK:STDOUT: %int_32.loc14: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc14: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %i32} [template = constants.%struct_type.c]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %c: ref %struct_type.c = bind_name c, %c.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %d.patt: %empty_tuple.type = binding_pattern d
|
||||
// CHECK:STDOUT: %.loc15_1: %empty_tuple.type = var_pattern %d.patt
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %d.var: ref %empty_tuple.type = var d
|
||||
// CHECK:STDOUT: %.loc15_9.1: type = splice_block %.loc15_9.3 [template = constants.%empty_tuple.type] {
|
||||
// CHECK:STDOUT: %.loc15_9.2: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc15_9.3: type = converted %.loc15_9.2, constants.%empty_tuple.type [template = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %d: ref %empty_tuple.type = bind_name d, %d.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %e.patt: %empty_tuple.type = binding_pattern e
|
||||
// CHECK:STDOUT: %.loc16_1: %empty_tuple.type = var_pattern %e.patt
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %e.var: ref %empty_tuple.type = var e
|
||||
// CHECK:STDOUT: %.loc16_9.1: type = splice_block %.loc16_9.3 [template = constants.%empty_tuple.type] {
|
||||
// CHECK:STDOUT: %.loc16_9.2: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc16_9.3: type = converted %.loc16_9.2, constants.%empty_tuple.type [template = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %e: ref %empty_tuple.type = bind_name e, %e.var
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -930,15 +1053,56 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %default.import = import <invalid>
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %a.patt: %empty_tuple.type = binding_pattern a
|
||||
// CHECK:STDOUT: %.loc52_1: %empty_tuple.type = var_pattern %a.patt
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %a.var: ref %empty_tuple.type = var a
|
||||
// CHECK:STDOUT: %.loc52_9.1: type = splice_block %.loc52_9.3 [template = constants.%empty_tuple.type] {
|
||||
// CHECK:STDOUT: %.loc52_9.2: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc52_9.3: type = converted %.loc52_9.2, constants.%empty_tuple.type [template = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %a: ref %empty_tuple.type = bind_name a, %a.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %b.patt: %i32 = binding_pattern b
|
||||
// CHECK:STDOUT: %.loc53_1: %i32 = var_pattern %b.patt
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %b.var: ref %i32 = var b
|
||||
// CHECK:STDOUT: %.loc53_8: type = splice_block %i32.loc53 [template = constants.%i32] {
|
||||
// CHECK:STDOUT: %int_32.loc53: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc53: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %c.patt: %struct_type.c = binding_pattern c
|
||||
// CHECK:STDOUT: %.loc54_1: %struct_type.c = var_pattern %c.patt
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %c.var: ref %struct_type.c = var c
|
||||
// CHECK:STDOUT: %.loc54_16: type = splice_block %struct_type.c [template = constants.%struct_type.c] {
|
||||
// CHECK:STDOUT: %int_32.loc54: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc54: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %i32} [template = constants.%struct_type.c]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %c: ref %struct_type.c = bind_name c, %c.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %d.patt: %empty_tuple.type = binding_pattern d
|
||||
// CHECK:STDOUT: %.loc55_1: %empty_tuple.type = var_pattern %d.patt
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %d.var: ref %empty_tuple.type = var d
|
||||
// CHECK:STDOUT: %.loc55_9.1: type = splice_block %.loc55_9.3 [template = constants.%empty_tuple.type] {
|
||||
// CHECK:STDOUT: %.loc55_9.2: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc55_9.3: type = converted %.loc55_9.2, constants.%empty_tuple.type [template = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %d: ref %empty_tuple.type = bind_name d, %d.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %e.patt: %empty_tuple.type = binding_pattern e
|
||||
// CHECK:STDOUT: %.loc56_1: %empty_tuple.type = var_pattern %e.patt
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %e.var: ref %empty_tuple.type = var e
|
||||
// CHECK:STDOUT: %.loc56_9.1: type = splice_block %.loc56_9.3 [template = constants.%empty_tuple.type] {
|
||||
// CHECK:STDOUT: %.loc56_9.2: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc56_9.3: type = converted %.loc56_9.2, constants.%empty_tuple.type [template = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %e: ref %empty_tuple.type = bind_name e, %e.var
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -1054,15 +1218,56 @@ import library "extern_api";
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %Core.import = import Core
|
||||
// CHECK:STDOUT: %default.import = import <invalid>
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %a.patt: %empty_tuple.type = binding_pattern a
|
||||
// CHECK:STDOUT: %.loc52_1: %empty_tuple.type = var_pattern %a.patt
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %a.var: ref %empty_tuple.type = var a
|
||||
// CHECK:STDOUT: %.loc52_9.1: type = splice_block %.loc52_9.3 [template = constants.%empty_tuple.type] {
|
||||
// CHECK:STDOUT: %.loc52_9.2: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc52_9.3: type = converted %.loc52_9.2, constants.%empty_tuple.type [template = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %a: ref %empty_tuple.type = bind_name a, %a.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %b.patt: %i32 = binding_pattern b
|
||||
// CHECK:STDOUT: %.loc53_1: %i32 = var_pattern %b.patt
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %b.var: ref %i32 = var b
|
||||
// CHECK:STDOUT: %.loc53_8: type = splice_block %i32.loc53 [template = constants.%i32] {
|
||||
// CHECK:STDOUT: %int_32.loc53: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc53: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %b: ref %i32 = bind_name b, %b.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %c.patt: %struct_type.c = binding_pattern c
|
||||
// CHECK:STDOUT: %.loc54_1: %struct_type.c = var_pattern %c.patt
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %c.var: ref %struct_type.c = var c
|
||||
// CHECK:STDOUT: %.loc54_16: type = splice_block %struct_type.c [template = constants.%struct_type.c] {
|
||||
// CHECK:STDOUT: %int_32.loc54: Core.IntLiteral = int_value 32 [template = constants.%int_32]
|
||||
// CHECK:STDOUT: %i32.loc54: type = class_type @Int, @Int(constants.%int_32) [template = constants.%i32]
|
||||
// CHECK:STDOUT: %struct_type.c: type = struct_type {.c: %i32} [template = constants.%struct_type.c]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %c: ref %struct_type.c = bind_name c, %c.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %d.patt: %empty_tuple.type = binding_pattern d
|
||||
// CHECK:STDOUT: %.loc55_1: %empty_tuple.type = var_pattern %d.patt
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %d.var: ref %empty_tuple.type = var d
|
||||
// CHECK:STDOUT: %.loc55_9.1: type = splice_block %.loc55_9.3 [template = constants.%empty_tuple.type] {
|
||||
// CHECK:STDOUT: %.loc55_9.2: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc55_9.3: type = converted %.loc55_9.2, constants.%empty_tuple.type [template = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %d: ref %empty_tuple.type = bind_name d, %d.var
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %e.patt: %empty_tuple.type = binding_pattern e
|
||||
// CHECK:STDOUT: %.loc56_1: %empty_tuple.type = var_pattern %e.patt
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %e.var: ref %empty_tuple.type = var e
|
||||
// CHECK:STDOUT: %.loc56_9.1: type = splice_block %.loc56_9.3 [template = constants.%empty_tuple.type] {
|
||||
// CHECK:STDOUT: %.loc56_9.2: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc56_9.3: type = converted %.loc56_9.2, constants.%empty_tuple.type [template = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %e: ref %empty_tuple.type = bind_name e, %e.var
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
@@ -93,7 +93,15 @@ var f: () = F();
|
||||
// CHECK:STDOUT: .f = %f
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %default.import = import <invalid>
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %f.patt: %empty_tuple.type = binding_pattern f
|
||||
// CHECK:STDOUT: %.loc6_1: %empty_tuple.type = var_pattern %f.patt
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %f.var: ref %empty_tuple.type = var f
|
||||
// CHECK:STDOUT: %.loc6_9.1: type = splice_block %.loc6_9.3 [template = constants.%empty_tuple.type] {
|
||||
// CHECK:STDOUT: %.loc6_9.2: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc6_9.3: type = converted %.loc6_9.2, constants.%empty_tuple.type [template = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %f: ref %empty_tuple.type = bind_name f, %f.var
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
@@ -115,7 +115,15 @@ extern library "basic" fn F();
|
||||
// CHECK:STDOUT: .x = %x
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %default.import = import <invalid>
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %x.patt: %empty_tuple.type = binding_pattern x
|
||||
// CHECK:STDOUT: %.loc4_1: %empty_tuple.type = var_pattern %x.patt
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %x.var: ref %empty_tuple.type = var x
|
||||
// CHECK:STDOUT: %.loc4_9.1: type = splice_block %.loc4_9.3 [template = constants.%empty_tuple.type] {
|
||||
// CHECK:STDOUT: %.loc4_9.2: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc4_9.3: type = converted %.loc4_9.2, constants.%empty_tuple.type [template = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %x: ref %empty_tuple.type = bind_name x, %x.var
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+14
-5
@@ -103,6 +103,7 @@ fn A {
|
||||
// CHECK:STDOUT: constants {
|
||||
// CHECK:STDOUT: %empty_tuple.type: type = tuple_type () [template]
|
||||
// CHECK:STDOUT: %x: %empty_tuple.type = bind_symbolic_name x [symbolic]
|
||||
// CHECK:STDOUT: %x.patt: %empty_tuple.type = symbolic_binding_pattern x [symbolic]
|
||||
// CHECK:STDOUT: %empty_tuple: %empty_tuple.type = tuple_value () [template]
|
||||
// CHECK:STDOUT: %A.type: type = fn_type @A [template]
|
||||
// CHECK:STDOUT: %A: %A.type = struct_value () [template]
|
||||
@@ -113,8 +114,16 @@ fn A {
|
||||
// CHECK:STDOUT: .x = %x
|
||||
// CHECK:STDOUT: .A = %A.decl
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %x.var: ref %empty_tuple.type = var x
|
||||
// CHECK:STDOUT: %x: %empty_tuple.type = bind_symbolic_name x, %x.var [symbolic = constants.%x]
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %x.patt: %empty_tuple.type = symbolic_binding_pattern x [symbolic = constants.%x.patt]
|
||||
// CHECK:STDOUT: %.loc8_1: %empty_tuple.type = var_pattern %x.patt
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.var: ref %empty_tuple.type = var <invalid>
|
||||
// CHECK:STDOUT: %.loc8_10.1: type = splice_block %.loc8_10.3 [template = constants.%empty_tuple.type] {
|
||||
// CHECK:STDOUT: %.loc8_10.2: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc8_10.3: type = converted %.loc8_10.2, constants.%empty_tuple.type [template = constants.%empty_tuple.type]
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %x: %empty_tuple.type = bind_symbolic_name x, %.var [symbolic = constants.%x]
|
||||
// CHECK:STDOUT: %A.decl: %A.type = fn_decl @A [template = constants.%A] {} {}
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
@@ -128,9 +137,9 @@ fn A {
|
||||
// CHECK:STDOUT: fn @__global_init() {
|
||||
// CHECK:STDOUT: !entry:
|
||||
// CHECK:STDOUT: %.loc8_15.1: %empty_tuple.type = tuple_literal ()
|
||||
// CHECK:STDOUT: %.loc8_15.2: init %empty_tuple.type = tuple_init () to file.%x.var [template = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc8_16: init %empty_tuple.type = converted %.loc8_15.1, %.loc8_15.2 [template = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: assign file.%x.var, %.loc8_16
|
||||
// CHECK:STDOUT: %.loc8_15.2: init %empty_tuple.type = tuple_init () to file.%.var [template = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: %.loc8_1: init %empty_tuple.type = converted %.loc8_15.1, %.loc8_15.2 [template = constants.%empty_tuple]
|
||||
// CHECK:STDOUT: assign file.%.var, %.loc8_1
|
||||
// CHECK:STDOUT: return
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+10
-2
@@ -606,7 +606,11 @@ fn F() {
|
||||
// CHECK:STDOUT: %x: %C1 = bind_name x, %x.param
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %C2.decl: type = class_decl @C2 [template = constants.%C2] {} {}
|
||||
// CHECK:STDOUT: %.loc18: %D.elem = field_decl C1, element0 [template]
|
||||
// CHECK:STDOUT: %.loc18_9: %D.elem = field_decl C1, element0 [template]
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %.loc18_3: %D.elem = var_pattern %.loc18_9
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.var: ref %D.elem = var <invalid>
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %struct_type.C1 [template = constants.%complete_type.ec1]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
// CHECK:STDOUT: }
|
||||
@@ -1170,7 +1174,11 @@ fn F() {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: class @B {
|
||||
// CHECK:STDOUT: %.loc9: %B.elem = field_decl v, element0 [template]
|
||||
// CHECK:STDOUT: %.loc9_10: %B.elem = field_decl v, element0 [template]
|
||||
// CHECK:STDOUT: name_binding_decl {
|
||||
// CHECK:STDOUT: %.loc9_5: %B.elem = var_pattern %.loc9_10
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT: %.var: ref %B.elem = var <invalid>
|
||||
// CHECK:STDOUT: %.decl: type = class_decl @.1 [template = constants.%.96d] {} {}
|
||||
// CHECK:STDOUT: %complete_type: <witness> = complete_type_witness %struct_type.v [template = constants.%complete_type.57e]
|
||||
// CHECK:STDOUT: complete_type_witness = %complete_type
|
||||
|
||||
Reference in New Issue
Block a user