| author | |
| committer | |
| log | 68bf81432cd0bafc355821370268eedc91ed8eb7 |
| tree | c994fd653f8d282feacc5bd06ebb25ebfc6ec9bb |
| parent | bc08199ef1f9419b5b8ed4165458783314934266 |
upstream commit 5f5a050569a95ecc40a426f0c3666ae7ef987ede32 files changed, 3686 insertions(+), 2540 deletions(-)
lib/compiler/aro/aro/Attribute.zig+202-116| ... | ... | @@ -7,7 +7,9 @@ const Diagnostics = @import("Diagnostics.zig"); |
| 7 | 7 | const Parser = @import("Parser.zig"); |
| 8 | 8 | const Tree = @import("Tree.zig"); |
| 9 | 9 | const TokenIndex = Tree.TokenIndex; |
| 10 | const QualType = @import("TypeStore.zig").QualType; | |
| 10 | const TypeStore = @import("TypeStore.zig"); | |
| 11 | const Type = TypeStore.Type; | |
| 12 | const QualType = TypeStore.QualType; | |
| 11 | 13 | const Value = @import("Value.zig"); |
| 12 | 14 | |
| 13 | 15 | const Attribute = @This(); |
| ... | ... | @@ -341,7 +343,6 @@ fn diagnoseField( |
| 341 | 343 | |
| 342 | 344 | pub fn diagnose(attr: Tag, arguments: *Arguments, arg_idx: u32, res: Parser.Result, arg_start: TokenIndex, node: Tree.Node, p: *Parser) !bool { |
| 343 | 345 | switch (attr) { |
| 344 | .nonnull => return false, | |
| 345 | 346 | inline else => |tag| { |
| 346 | 347 | const decl = @typeInfo(attributes).@"struct".decls[@intFromEnum(tag)]; |
| 347 | 348 | const max_arg_count = comptime maxArgCount(tag); |
| ... | ... | @@ -529,7 +530,10 @@ const attributes = struct { |
| 529 | 530 | pub const @"noinline" = struct {}; |
| 530 | 531 | pub const noipa = struct {}; |
| 531 | 532 | // TODO: arbitrary number of arguments |
| 532 | pub const nonnull = struct {}; | |
| 533 | // const nonnull = struct { | |
| 534 | // // arg_index: []const u32, | |
| 535 | // }; | |
| 536 | // }; | |
| 533 | 537 | pub const nonstring = struct {}; |
| 534 | 538 | pub const noplt = struct {}; |
| 535 | 539 | pub const @"noreturn" = struct {}; |
| ... | ... | @@ -577,6 +581,7 @@ const attributes = struct { |
| 577 | 581 | }; |
| 578 | 582 | } = null, |
| 579 | 583 | }; |
| 584 | pub const single = struct {}; | |
| 580 | 585 | pub const spectre = struct { |
| 581 | 586 | arg: enum { |
| 582 | 587 | nomitigation, |
| ... | ... | @@ -618,6 +623,7 @@ const attributes = struct { |
| 618 | 623 | __name_tok: TokenIndex, |
| 619 | 624 | }; |
| 620 | 625 | pub const uninitialized = struct {}; |
| 626 | pub const unsafe_indexable = struct {}; | |
| 621 | 627 | pub const unsequenced = struct {}; |
| 622 | 628 | pub const unused = struct {}; |
| 623 | 629 | pub const used = struct {}; |
| ... | ... | @@ -723,6 +729,7 @@ pub const Arguments = blk: { |
| 723 | 729 | name.* = decl.name; |
| 724 | 730 | T.* = @field(attributes, decl.name); |
| 725 | 731 | } |
| 732 | ||
| 726 | 733 | break :blk @Union(.auto, null, &names, &types, &@splat(.{})); |
| 727 | 734 | }; |
| 728 | 735 | |
| ... | ... | @@ -784,15 +791,8 @@ fn ignoredAttrErr(p: *Parser, tok: TokenIndex, attr: Attribute.Tag, context: []c |
| 784 | 791 | try p.err(tok, .ignored_attribute, .{ @tagName(attr), context }); |
| 785 | 792 | } |
| 786 | 793 | |
| 787 | pub fn applyParameterAttributes(p: *Parser, qt: QualType, attr_buf_start: usize, diagnostic: ?Parser.Diagnostic) !QualType { | |
| 788 | return applyVariableOrParameterAttributes(p, qt, attr_buf_start, diagnostic, .parameter); | |
| 789 | } | |
| 790 | ||
| 794 | pub const applyParameterAttributes = applyVariableAttributes; | |
| 791 | 795 | pub fn applyVariableAttributes(p: *Parser, qt: QualType, attr_buf_start: usize, diagnostic: ?Parser.Diagnostic) !QualType { |
| 792 | return applyVariableOrParameterAttributes(p, qt, attr_buf_start, diagnostic, .variable); | |
| 793 | } | |
| 794 | ||
| 795 | fn applyVariableOrParameterAttributes(p: *Parser, qt: QualType, attr_buf_start: usize, diagnostic: ?Parser.Diagnostic, context: enum { parameter, variable }) !QualType { | |
| 796 | 796 | const gpa = p.comp.gpa; |
| 797 | 797 | const attrs = p.attr_buf.items(.attr)[attr_buf_start..]; |
| 798 | 798 | const toks = p.attr_buf.items(.tok)[attr_buf_start..]; |
| ... | ... | @@ -804,6 +804,7 @@ fn applyVariableOrParameterAttributes(p: *Parser, qt: QualType, attr_buf_start: |
| 804 | 804 | // zig fmt: off |
| 805 | 805 | .alias, .may_alias, .deprecated, .unavailable, .unused, .warn_if_not_aligned, .weak, .used, |
| 806 | 806 | .noinit, .retain, .persistent, .section, .mode, .asm_label, .nullability, .unaligned, .selectany, .internal_linkage, |
| 807 | .visibility, | |
| 807 | 808 | => try p.attr_application_buf.append(gpa, attr), |
| 808 | 809 | // zig fmt: on |
| 809 | 810 | .common => if (nocommon) { |
| ... | ... | @@ -820,12 +821,6 @@ fn applyVariableOrParameterAttributes(p: *Parser, qt: QualType, attr_buf_start: |
| 820 | 821 | }, |
| 821 | 822 | .vector_size => try attr.applyVectorSize(p, tok, &base_qt), |
| 822 | 823 | .aligned => try attr.applyAligned(p, base_qt, diagnostic), |
| 823 | .nonnull => { | |
| 824 | switch (context) { | |
| 825 | .parameter => try p.err(tok, .attribute_todo, .{ "nonnull", "parameters" }), | |
| 826 | .variable => try p.err(tok, .nonnull_not_applicable, .{}), | |
| 827 | } | |
| 828 | }, | |
| 829 | 824 | .nonstring => { |
| 830 | 825 | if (base_qt.get(p.comp, .array)) |array_ty| { |
| 831 | 826 | if (array_ty.elem.get(p.comp, .int)) |int_ty| switch (int_ty) { |
| ... | ... | @@ -848,11 +843,28 @@ fn applyVariableOrParameterAttributes(p: *Parser, qt: QualType, attr_buf_start: |
| 848 | 843 | } else { |
| 849 | 844 | try p.attr_application_buf.append(gpa, attr); |
| 850 | 845 | }, |
| 851 | .calling_convention => try applyCallingConvention(attr, p, tok, base_qt), | |
| 846 | .single, | |
| 847 | .unsafe_indexable, | |
| 848 | => try applyBoundsSafetyAttr(.fromTag(attr.tag), p, tok, &base_qt), | |
| 849 | ||
| 850 | .calling_convention => try applyKeywordCallingConvention(attr, p, tok, base_qt), | |
| 851 | ||
| 852 | .fastcall, | |
| 853 | .stdcall, | |
| 854 | .thiscall, | |
| 855 | .vectorcall, | |
| 856 | .cdecl, | |
| 857 | .pcs, | |
| 858 | .riscv_vector_cc, | |
| 859 | .aarch64_sve_pcs, | |
| 860 | .aarch64_vector_pcs, | |
| 861 | .sysv_abi, | |
| 862 | .ms_abi, | |
| 863 | => try applyGnuAttrCallingConvention(attr, p, tok, base_qt), | |
| 864 | ||
| 852 | 865 | .alloc_size, |
| 853 | 866 | .copy, |
| 854 | 867 | .tls_model, |
| 855 | .visibility, | |
| 856 | 868 | => |t| try p.err(tok, .attribute_todo, .{ @tagName(t), "variables" }), |
| 857 | 869 | // There is already an error in Parser for _Noreturn keyword |
| 858 | 870 | .noreturn => if (attr.syntax != .keyword) try ignoredAttrErr(p, tok, attr.tag, "variables"), |
| ... | ... | @@ -903,7 +915,25 @@ pub fn applyTypeAttributes(p: *Parser, qt: QualType, attr_buf_start: usize, diag |
| 903 | 915 | } else { |
| 904 | 916 | try p.err(tok, .designated_init_invalid, .{}); |
| 905 | 917 | }, |
| 906 | .calling_convention => try applyCallingConvention(attr, p, tok, base_qt), | |
| 918 | .calling_convention => try applyKeywordCallingConvention(attr, p, tok, base_qt), | |
| 919 | ||
| 920 | .fastcall, | |
| 921 | .stdcall, | |
| 922 | .thiscall, | |
| 923 | .vectorcall, | |
| 924 | .cdecl, | |
| 925 | .pcs, | |
| 926 | .riscv_vector_cc, | |
| 927 | .aarch64_sve_pcs, | |
| 928 | .aarch64_vector_pcs, | |
| 929 | .sysv_abi, | |
| 930 | .ms_abi, | |
| 931 | => try applyGnuAttrCallingConvention(attr, p, tok, base_qt), | |
| 932 | ||
| 933 | .single, | |
| 934 | .unsafe_indexable, | |
| 935 | => try applyBoundsSafetyAttr(.fromTag(attr.tag), p, tok, &base_qt), | |
| 936 | ||
| 907 | 937 | .alloc_size, |
| 908 | 938 | .copy, |
| 909 | 939 | .scalar_storage_order, |
| ... | ... | @@ -931,6 +961,7 @@ pub fn applyFunctionAttributes(p: *Parser, qt: QualType, attr_buf_start: usize) |
| 931 | 961 | .@"const", .warn_unused_result, .section, .returns_nonnull, .returns_twice, .@"error", |
| 932 | 962 | .externally_visible, .retain, .flatten, .gnu_inline, .alias, .asm_label, .nodiscard, |
| 933 | 963 | .reproducible, .unsequenced, .nothrow, .nullability, .unaligned, .internal_linkage, |
| 964 | .visibility, | |
| 934 | 965 | => try p.attr_application_buf.append(gpa, attr), |
| 935 | 966 | // zig fmt: on |
| 936 | 967 | .hot => if (cold) { |
| ... | ... | @@ -959,97 +990,21 @@ pub fn applyFunctionAttributes(p: *Parser, qt: QualType, attr_buf_start: usize) |
| 959 | 990 | }, |
| 960 | 991 | .aligned => try attr.applyAligned(p, base_qt, null), |
| 961 | 992 | .format => try attr.applyFormat(p, base_qt), |
| 962 | .calling_convention => try applyCallingConvention(attr, p, tok, base_qt), | |
| 963 | .fastcall => if (p.comp.target.cpu.arch == .x86) { | |
| 964 | try p.attr_application_buf.append(gpa, .{ | |
| 965 | .tag = .calling_convention, | |
| 966 | .args = .{ .calling_convention = .{ .cc = .fastcall } }, | |
| 967 | .syntax = attr.syntax, | |
| 968 | }); | |
| 969 | } else { | |
| 970 | try p.err(tok, .callconv_not_supported, .{"fastcall"}); | |
| 971 | }, | |
| 972 | .stdcall => if (p.comp.target.cpu.arch == .x86) { | |
| 973 | try p.attr_application_buf.append(gpa, .{ | |
| 974 | .tag = .calling_convention, | |
| 975 | .args = .{ .calling_convention = .{ .cc = .stdcall } }, | |
| 976 | .syntax = attr.syntax, | |
| 977 | }); | |
| 978 | } else { | |
| 979 | try p.err(tok, .callconv_not_supported, .{"stdcall"}); | |
| 980 | }, | |
| 981 | .thiscall => if (p.comp.target.cpu.arch == .x86) { | |
| 982 | try p.attr_application_buf.append(gpa, .{ | |
| 983 | .tag = .calling_convention, | |
| 984 | .args = .{ .calling_convention = .{ .cc = .thiscall } }, | |
| 985 | .syntax = attr.syntax, | |
| 986 | }); | |
| 987 | } else { | |
| 988 | try p.err(tok, .callconv_not_supported, .{"thiscall"}); | |
| 989 | }, | |
| 990 | .vectorcall => if (p.comp.target.cpu.arch == .x86 or p.comp.target.cpu.arch.isAARCH64()) { | |
| 991 | try p.attr_application_buf.append(gpa, .{ | |
| 992 | .tag = .calling_convention, | |
| 993 | .args = .{ .calling_convention = .{ .cc = .vectorcall } }, | |
| 994 | .syntax = attr.syntax, | |
| 995 | }); | |
| 996 | } else { | |
| 997 | try p.err(tok, .callconv_not_supported, .{"vectorcall"}); | |
| 998 | }, | |
| 999 | .cdecl => {}, | |
| 1000 | .pcs => if (p.comp.target.cpu.arch.isArm()) { | |
| 1001 | try p.attr_application_buf.append(gpa, .{ | |
| 1002 | .tag = .calling_convention, | |
| 1003 | .args = .{ .calling_convention = .{ .cc = switch (attr.args.pcs.kind) { | |
| 1004 | .aapcs => .arm_aapcs, | |
| 1005 | .@"aapcs-vfp" => .arm_aapcs_vfp, | |
| 1006 | } } }, | |
| 1007 | .syntax = attr.syntax, | |
| 1008 | }); | |
| 1009 | } else { | |
| 1010 | try p.err(tok, .callconv_not_supported, .{"pcs"}); | |
| 1011 | }, | |
| 1012 | .riscv_vector_cc => if (p.comp.target.cpu.arch.isRISCV()) { | |
| 1013 | try p.attr_application_buf.append(gpa, .{ | |
| 1014 | .tag = .calling_convention, | |
| 1015 | .args = .{ .calling_convention = .{ .cc = .riscv_vector } }, | |
| 1016 | .syntax = attr.syntax, | |
| 1017 | }); | |
| 1018 | } else { | |
| 1019 | try p.err(tok, .callconv_not_supported, .{"pcs"}); | |
| 1020 | }, | |
| 1021 | .aarch64_sve_pcs => if (p.comp.target.cpu.arch.isAARCH64()) { | |
| 1022 | try p.attr_application_buf.append(gpa, .{ | |
| 1023 | .tag = .calling_convention, | |
| 1024 | .args = .{ .calling_convention = .{ .cc = .aarch64_sve_pcs } }, | |
| 1025 | .syntax = attr.syntax, | |
| 1026 | }); | |
| 1027 | } else { | |
| 1028 | try p.err(tok, .callconv_not_supported, .{"pcs"}); | |
| 1029 | }, | |
| 1030 | .aarch64_vector_pcs => if (p.comp.target.cpu.arch.isAARCH64()) { | |
| 1031 | try p.attr_application_buf.append(gpa, .{ | |
| 1032 | .tag = .calling_convention, | |
| 1033 | .args = .{ .calling_convention = .{ .cc = .aarch64_vector_pcs } }, | |
| 1034 | .syntax = attr.syntax, | |
| 1035 | }); | |
| 1036 | } else { | |
| 1037 | try p.err(tok, .callconv_not_supported, .{"pcs"}); | |
| 1038 | }, | |
| 1039 | .sysv_abi => if (p.comp.target.cpu.arch == .x86_64 and p.comp.target.os.tag == .windows) { | |
| 1040 | try p.attr_application_buf.append(gpa, .{ | |
| 1041 | .tag = .calling_convention, | |
| 1042 | .args = .{ .calling_convention = .{ .cc = .x86_64_sysv } }, | |
| 1043 | .syntax = attr.syntax, | |
| 1044 | }); | |
| 1045 | }, | |
| 1046 | .ms_abi => if (p.comp.target.cpu.arch == .x86_64 and p.comp.target.os.tag != .windows) { | |
| 1047 | try p.attr_application_buf.append(gpa, .{ | |
| 1048 | .tag = .calling_convention, | |
| 1049 | .args = .{ .calling_convention = .{ .cc = .x86_64_win } }, | |
| 1050 | .syntax = attr.syntax, | |
| 1051 | }); | |
| 1052 | }, | |
| 993 | .calling_convention => try applyKeywordCallingConvention(attr, p, tok, base_qt), | |
| 994 | ||
| 995 | .fastcall, | |
| 996 | .stdcall, | |
| 997 | .thiscall, | |
| 998 | .vectorcall, | |
| 999 | .cdecl, | |
| 1000 | .pcs, | |
| 1001 | .riscv_vector_cc, | |
| 1002 | .aarch64_sve_pcs, | |
| 1003 | .aarch64_vector_pcs, | |
| 1004 | .sysv_abi, | |
| 1005 | .ms_abi, | |
| 1006 | => try applyGnuAttrCallingConvention(attr, p, tok, base_qt), | |
| 1007 | ||
| 1053 | 1008 | .malloc => { |
| 1054 | 1009 | if (base_qt.get(p.comp, .func).?.return_type.isPointer(p.comp)) { |
| 1055 | 1010 | try p.attr_application_buf.append(gpa, attr); |
| ... | ... | @@ -1102,7 +1057,7 @@ pub fn applyFunctionAttributes(p: *Parser, qt: QualType, attr_buf_start: usize) |
| 1102 | 1057 | .no_stack_protector, |
| 1103 | 1058 | .noclone, |
| 1104 | 1059 | .noipa, |
| 1105 | .nonnull, | |
| 1060 | // .nonnull, | |
| 1106 | 1061 | .noplt, |
| 1107 | 1062 | // .optimize, |
| 1108 | 1063 | .patchable_function_entry, |
| ... | ... | @@ -1112,7 +1067,6 @@ pub fn applyFunctionAttributes(p: *Parser, qt: QualType, attr_buf_start: usize) |
| 1112 | 1067 | .symver, |
| 1113 | 1068 | .target, |
| 1114 | 1069 | .target_clones, |
| 1115 | .visibility, | |
| 1116 | 1070 | .weakref, |
| 1117 | 1071 | .zero_call_used_regs, |
| 1118 | 1072 | => |t| try p.err(tok, .attribute_todo, .{ @tagName(t), "functions" }), |
| ... | ... | @@ -1262,9 +1216,129 @@ fn applyFormat(attr: Attribute, p: *Parser, qt: QualType) !void { |
| 1262 | 1216 | try p.attr_application_buf.append(p.comp.gpa, attr); |
| 1263 | 1217 | } |
| 1264 | 1218 | |
| 1265 | fn applyCallingConvention(attr: Attribute, p: *Parser, tok: TokenIndex, qt: QualType) !void { | |
| 1266 | if (!qt.is(p.comp, .func)) { | |
| 1267 | return p.err(tok, .callconv_non_func, .{ p.tok_ids[tok].symbol(), qt }); | |
| 1219 | /// These come from GNU attributes like __attribute__((sysv_abi)) | |
| 1220 | fn applyGnuAttrCallingConvention(attr: Attribute, p: *Parser, tok: TokenIndex, qt: QualType) !void { | |
| 1221 | if (!qt.isCallable(p.comp)) { | |
| 1222 | return p.err(tok, .callconv_non_func, .{ p.tokSlice(tok), qt }); | |
| 1223 | } | |
| 1224 | const gpa = p.comp.gpa; | |
| 1225 | switch (attr.tag) { | |
| 1226 | .fastcall => if (p.comp.target.cpu.arch == .x86) { | |
| 1227 | try p.attr_application_buf.append(gpa, .{ | |
| 1228 | .tag = .calling_convention, | |
| 1229 | .args = .{ .calling_convention = .{ .cc = .fastcall } }, | |
| 1230 | .syntax = attr.syntax, | |
| 1231 | }); | |
| 1232 | } else { | |
| 1233 | try p.err(tok, .callconv_not_supported, .{"fastcall"}); | |
| 1234 | }, | |
| 1235 | .stdcall => if (p.comp.target.cpu.arch == .x86) { | |
| 1236 | try p.attr_application_buf.append(gpa, .{ | |
| 1237 | .tag = .calling_convention, | |
| 1238 | .args = .{ .calling_convention = .{ .cc = .stdcall } }, | |
| 1239 | .syntax = attr.syntax, | |
| 1240 | }); | |
| 1241 | } else { | |
| 1242 | try p.err(tok, .callconv_not_supported, .{"stdcall"}); | |
| 1243 | }, | |
| 1244 | .thiscall => if (p.comp.target.cpu.arch == .x86) { | |
| 1245 | try p.attr_application_buf.append(gpa, .{ | |
| 1246 | .tag = .calling_convention, | |
| 1247 | .args = .{ .calling_convention = .{ .cc = .thiscall } }, | |
| 1248 | .syntax = attr.syntax, | |
| 1249 | }); | |
| 1250 | } else { | |
| 1251 | try p.err(tok, .callconv_not_supported, .{"thiscall"}); | |
| 1252 | }, | |
| 1253 | .vectorcall => if (p.comp.target.cpu.arch == .x86 or p.comp.target.cpu.arch.isAARCH64()) { | |
| 1254 | try p.attr_application_buf.append(gpa, .{ | |
| 1255 | .tag = .calling_convention, | |
| 1256 | .args = .{ .calling_convention = .{ .cc = .vectorcall } }, | |
| 1257 | .syntax = attr.syntax, | |
| 1258 | }); | |
| 1259 | } else { | |
| 1260 | try p.err(tok, .callconv_not_supported, .{"vectorcall"}); | |
| 1261 | }, | |
| 1262 | .cdecl => {}, | |
| 1263 | .pcs => if (p.comp.target.cpu.arch.isArm()) { | |
| 1264 | try p.attr_application_buf.append(gpa, .{ | |
| 1265 | .tag = .calling_convention, | |
| 1266 | .args = .{ .calling_convention = .{ .cc = switch (attr.args.pcs.kind) { | |
| 1267 | .aapcs => .arm_aapcs, | |
| 1268 | .@"aapcs-vfp" => .arm_aapcs_vfp, | |
| 1269 | } } }, | |
| 1270 | .syntax = attr.syntax, | |
| 1271 | }); | |
| 1272 | } else { | |
| 1273 | try p.err(tok, .callconv_not_supported, .{"pcs"}); | |
| 1274 | }, | |
| 1275 | .riscv_vector_cc => if (p.comp.target.cpu.arch.isRISCV()) { | |
| 1276 | try p.attr_application_buf.append(gpa, .{ | |
| 1277 | .tag = .calling_convention, | |
| 1278 | .args = .{ .calling_convention = .{ .cc = .riscv_vector } }, | |
| 1279 | .syntax = attr.syntax, | |
| 1280 | }); | |
| 1281 | } else { | |
| 1282 | try p.err(tok, .callconv_not_supported, .{"pcs"}); | |
| 1283 | }, | |
| 1284 | .aarch64_sve_pcs => if (p.comp.target.cpu.arch.isAARCH64()) { | |
| 1285 | try p.attr_application_buf.append(gpa, .{ | |
| 1286 | .tag = .calling_convention, | |
| 1287 | .args = .{ .calling_convention = .{ .cc = .aarch64_sve_pcs } }, | |
| 1288 | .syntax = attr.syntax, | |
| 1289 | }); | |
| 1290 | } else { | |
| 1291 | try p.err(tok, .callconv_not_supported, .{"pcs"}); | |
| 1292 | }, | |
| 1293 | .aarch64_vector_pcs => if (p.comp.target.cpu.arch.isAARCH64()) { | |
| 1294 | try p.attr_application_buf.append(gpa, .{ | |
| 1295 | .tag = .calling_convention, | |
| 1296 | .args = .{ .calling_convention = .{ .cc = .aarch64_vector_pcs } }, | |
| 1297 | .syntax = attr.syntax, | |
| 1298 | }); | |
| 1299 | } else { | |
| 1300 | try p.err(tok, .callconv_not_supported, .{"pcs"}); | |
| 1301 | }, | |
| 1302 | .sysv_abi => if (p.comp.target.cpu.arch == .x86_64 and p.comp.target.os.tag == .windows) { | |
| 1303 | try p.attr_application_buf.append(gpa, .{ | |
| 1304 | .tag = .calling_convention, | |
| 1305 | .args = .{ .calling_convention = .{ .cc = .x86_64_sysv } }, | |
| 1306 | .syntax = attr.syntax, | |
| 1307 | }); | |
| 1308 | }, | |
| 1309 | .ms_abi => if (p.comp.target.cpu.arch == .x86_64 and p.comp.target.os.tag != .windows) { | |
| 1310 | try p.attr_application_buf.append(gpa, .{ | |
| 1311 | .tag = .calling_convention, | |
| 1312 | .args = .{ .calling_convention = .{ .cc = .x86_64_win } }, | |
| 1313 | .syntax = attr.syntax, | |
| 1314 | }); | |
| 1315 | }, | |
| 1316 | else => unreachable, | |
| 1317 | } | |
| 1318 | } | |
| 1319 | ||
| 1320 | fn applyBoundsSafetyAttr(bounds: Type.Pointer.Bounds, p: *Parser, tok: TokenIndex, qt: *QualType) !void { | |
| 1321 | if (qt.isInvalid()) return; | |
| 1322 | const pointer = qt.get(p.comp, .pointer) orelse { | |
| 1323 | return p.err(tok, .attribute_requires_pointer, .{@tagName(bounds)}); | |
| 1324 | }; | |
| 1325 | if (pointer.bounds == bounds) { | |
| 1326 | return p.err(tok, .redundant_bounds_annotation, .{@tagName(bounds)}); | |
| 1327 | } | |
| 1328 | if (pointer.bounds != .c) { | |
| 1329 | return p.err(tok, .multiple_bounds_annotations, .{}); | |
| 1330 | } | |
| 1331 | qt.* = try p.comp.type_store.put(p.comp.gpa, .{ .pointer = .{ | |
| 1332 | .child = pointer.child, | |
| 1333 | .decayed = pointer.decayed, | |
| 1334 | .bounds = bounds, | |
| 1335 | } }); | |
| 1336 | } | |
| 1337 | ||
| 1338 | /// These come from explicit MSVC keywords like __stdcall, __fastcall, etc | |
| 1339 | fn applyKeywordCallingConvention(attr: Attribute, p: *Parser, tok: TokenIndex, qt: QualType) !void { | |
| 1340 | if (!qt.isCallable(p.comp)) { | |
| 1341 | return p.err(tok, .callconv_non_func, .{ p.tokSlice(tok), qt }); | |
| 1268 | 1342 | } |
| 1269 | 1343 | switch (attr.args.calling_convention.cc) { |
| 1270 | 1344 | .c => {}, |
| ... | ... | @@ -1295,3 +1369,15 @@ fn applySelected(qt: QualType, p: *Parser) !QualType { |
| 1295 | 1369 | .attributes = p.attr_application_buf.items, |
| 1296 | 1370 | } })).withQualifiers(qt); |
| 1297 | 1371 | } |
| 1372 | ||
| 1373 | pub fn visibilityFromString(s: []const u8) ?std.builtin.SymbolVisibility { | |
| 1374 | if (mem.eql(u8, s, "internal")) { | |
| 1375 | return .hidden; | |
| 1376 | } | |
| 1377 | const visibility = std.meta.stringToEnum(std.builtin.SymbolVisibility, s) orelse return null; | |
| 1378 | // compiler will notify us if .internal is added as a visibility type | |
| 1379 | switch (visibility) { | |
| 1380 | .default, .hidden, .protected => {}, | |
| 1381 | } | |
| 1382 | return visibility; | |
| 1383 | } |
lib/compiler/aro/aro/Attribute/names.zig+604-589| ... | ... | @@ -99,6 +99,7 @@ pub const Tag = enum(u16) { aarch64_sve_pcs, |
| 99 | 99 | selectany, |
| 100 | 100 | sentinel, |
| 101 | 101 | simd, |
| 102 | single, | |
| 102 | 103 | spectre, |
| 103 | 104 | stack_protect, |
| 104 | 105 | stdcall, |
| ... | ... | @@ -112,6 +113,7 @@ pub const Tag = enum(u16) { aarch64_sve_pcs, |
| 112 | 113 | transparent_union, |
| 113 | 114 | unavailable, |
| 114 | 115 | uninitialized, |
| 116 | unsafe_indexable, | |
| 115 | 117 | unsequenced, |
| 116 | 118 | unused, |
| 117 | 119 | used, |
| ... | ... | @@ -181,7 +183,7 @@ pub const longest_name = 30; |
| 181 | 183 | /// If found, returns the index of the node within the `dafsa` array. |
| 182 | 184 | /// Otherwise, returns `null`. |
| 183 | 185 | pub fn findInList(first_child_index: u16, char: u8) ?u16 { |
| 184 | @setEvalBranchQuota(234); | |
| 186 | @setEvalBranchQuota(238); | |
| 185 | 187 | var index = first_child_index; |
| 186 | 188 | while (true) { |
| 187 | 189 | if (dafsa[index].char == char) return index; |
| ... | ... | @@ -290,9 +292,9 @@ const dafsa = [_]Node{ |
| 290 | 292 | .{ .char = 'n', .end_of_word = false, .end_of_list = false, .number = 25, .child_index = 47 }, |
| 291 | 293 | .{ .char = 'p', .end_of_word = false, .end_of_list = false, .number = 6, .child_index = 49 }, |
| 292 | 294 | .{ .char = 'r', .end_of_word = false, .end_of_list = false, .number = 6, .child_index = 54 }, |
| 293 | .{ .char = 's', .end_of_word = false, .end_of_list = false, .number = 11, .child_index = 56 }, | |
| 295 | .{ .char = 's', .end_of_word = false, .end_of_list = false, .number = 12, .child_index = 56 }, | |
| 294 | 296 | .{ .char = 't', .end_of_word = false, .end_of_list = false, .number = 6, .child_index = 63 }, |
| 295 | .{ .char = 'u', .end_of_word = false, .end_of_list = false, .number = 6, .child_index = 67 }, | |
| 297 | .{ .char = 'u', .end_of_word = false, .end_of_list = false, .number = 7, .child_index = 67 }, | |
| 296 | 298 | .{ .char = 'v', .end_of_word = false, .end_of_list = false, .number = 3, .child_index = 70 }, |
| 297 | 299 | .{ .char = 'w', .end_of_word = false, .end_of_list = false, .number = 5, .child_index = 72 }, |
| 298 | 300 | .{ .char = 'z', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 74 }, |
| ... | ... | @@ -334,642 +336,653 @@ const dafsa = [_]Node{ |
| 334 | 336 | .{ .char = 'a', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 130 }, |
| 335 | 337 | .{ .char = 'c', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 131 }, |
| 336 | 338 | .{ .char = 'e', .end_of_word = false, .end_of_list = false, .number = 3, .child_index = 132 }, |
| 337 | .{ .char = 'i', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 135 }, | |
| 338 | .{ .char = 'p', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 136 }, | |
| 339 | .{ .char = 't', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 137 }, | |
| 340 | .{ .char = 'y', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 139 }, | |
| 341 | .{ .char = 'a', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 141 }, | |
| 342 | .{ .char = 'h', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 142 }, | |
| 343 | .{ .char = 'l', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 144 }, | |
| 344 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 145 }, | |
| 345 | .{ .char = 'n', .end_of_word = false, .end_of_list = false, .number = 4, .child_index = 146 }, | |
| 346 | .{ .char = 's', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 150 }, | |
| 347 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 151 }, | |
| 348 | .{ .char = 'e', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 152 }, | |
| 349 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 153 }, | |
| 350 | .{ .char = 'a', .end_of_word = false, .end_of_list = false, .number = 3, .child_index = 154 }, | |
| 351 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 155 }, | |
| 352 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 156 }, | |
| 353 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 157 }, | |
| 354 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 158 }, | |
| 355 | .{ .char = 'i', .end_of_word = false, .end_of_list = false, .number = 3, .child_index = 159 }, | |
| 356 | .{ .char = 'l', .end_of_word = false, .end_of_list = false, .number = 4, .child_index = 161 }, | |
| 357 | .{ .char = 'w', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 162 }, | |
| 358 | .{ .char = 'p', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 163 }, | |
| 359 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 164 }, | |
| 360 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 165 }, | |
| 361 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 166 }, | |
| 362 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 167 }, | |
| 339 | .{ .char = 'i', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 135 }, | |
| 340 | .{ .char = 'p', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 137 }, | |
| 341 | .{ .char = 't', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 138 }, | |
| 342 | .{ .char = 'y', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 140 }, | |
| 343 | .{ .char = 'a', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 142 }, | |
| 344 | .{ .char = 'h', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 143 }, | |
| 345 | .{ .char = 'l', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 145 }, | |
| 346 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 146 }, | |
| 347 | .{ .char = 'n', .end_of_word = false, .end_of_list = false, .number = 5, .child_index = 147 }, | |
| 348 | .{ .char = 's', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 151 }, | |
| 349 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 152 }, | |
| 350 | .{ .char = 'e', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 153 }, | |
| 351 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 154 }, | |
| 352 | .{ .char = 'a', .end_of_word = false, .end_of_list = false, .number = 3, .child_index = 155 }, | |
| 353 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 156 }, | |
| 354 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 157 }, | |
| 355 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 158 }, | |
| 356 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 159 }, | |
| 357 | .{ .char = 'i', .end_of_word = false, .end_of_list = false, .number = 3, .child_index = 160 }, | |
| 358 | .{ .char = 'l', .end_of_word = false, .end_of_list = false, .number = 4, .child_index = 162 }, | |
| 359 | .{ .char = 'w', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 163 }, | |
| 360 | .{ .char = 'p', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 164 }, | |
| 361 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 165 }, | |
| 362 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 166 }, | |
| 363 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 167 }, | |
| 363 | 364 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 168 }, |
| 364 | .{ .char = 'd', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 169 }, | |
| 365 | .{ .char = 'l', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 170 }, | |
| 366 | .{ .char = 'm', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 171 }, | |
| 367 | .{ .char = 'n', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 172 }, | |
| 368 | .{ .char = 'p', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 173 }, | |
| 369 | .{ .char = 'p', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 174 }, | |
| 370 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 175 }, | |
| 371 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 177 }, | |
| 372 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 179 }, | |
| 373 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 180 }, | |
| 374 | .{ .char = 'l', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 181 }, | |
| 375 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 182 }, | |
| 376 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 183 }, | |
| 377 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 184 }, | |
| 378 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 185 }, | |
| 379 | .{ .char = 't', .end_of_word = true, .end_of_list = true, .number = 1, .child_index = 0 }, | |
| 365 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 169 }, | |
| 366 | .{ .char = 'd', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 170 }, | |
| 367 | .{ .char = 'l', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 171 }, | |
| 368 | .{ .char = 'm', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 172 }, | |
| 369 | .{ .char = 'n', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 173 }, | |
| 370 | .{ .char = 'p', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 174 }, | |
| 371 | .{ .char = 'p', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 175 }, | |
| 372 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 176 }, | |
| 373 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 178 }, | |
| 374 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 180 }, | |
| 375 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 181 }, | |
| 376 | .{ .char = 'l', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 182 }, | |
| 377 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 183 }, | |
| 378 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 184 }, | |
| 379 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 185 }, | |
| 380 | 380 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 186 }, |
| 381 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 3, .child_index = 187 }, | |
| 382 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 188 }, | |
| 383 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 189 }, | |
| 384 | .{ .char = 'l', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 190 }, | |
| 385 | .{ .char = 'y', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 191 }, | |
| 386 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 193 }, | |
| 387 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 194 }, | |
| 388 | .{ .char = 'k', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 150 }, | |
| 389 | .{ .char = '_', .end_of_word = false, .end_of_list = false, .number = 13, .child_index = 195 }, | |
| 390 | .{ .char = 'a', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 200 }, | |
| 391 | .{ .char = 'c', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 201 }, | |
| 392 | .{ .char = 'd', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 203 }, | |
| 393 | .{ .char = 'i', .end_of_word = false, .end_of_list = false, .number = 3, .child_index = 204 }, | |
| 394 | .{ .char = 'n', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 206 }, | |
| 395 | .{ .char = 'p', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 207 }, | |
| 396 | .{ .char = 'r', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 208 }, | |
| 397 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 209 }, | |
| 398 | .{ .char = 'c', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 110 }, | |
| 381 | .{ .char = 't', .end_of_word = true, .end_of_list = true, .number = 1, .child_index = 0 }, | |
| 382 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 187 }, | |
| 383 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 3, .child_index = 188 }, | |
| 384 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 189 }, | |
| 385 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 190 }, | |
| 386 | .{ .char = 'l', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 191 }, | |
| 387 | .{ .char = 'y', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 192 }, | |
| 388 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 194 }, | |
| 389 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 195 }, | |
| 390 | .{ .char = 'k', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 151 }, | |
| 391 | .{ .char = '_', .end_of_word = false, .end_of_list = false, .number = 13, .child_index = 196 }, | |
| 392 | .{ .char = 'a', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 201 }, | |
| 393 | .{ .char = 'c', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 202 }, | |
| 394 | .{ .char = 'd', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 204 }, | |
| 395 | .{ .char = 'i', .end_of_word = false, .end_of_list = false, .number = 3, .child_index = 205 }, | |
| 396 | .{ .char = 'n', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 207 }, | |
| 397 | .{ .char = 'p', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 208 }, | |
| 398 | .{ .char = 'r', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 209 }, | |
| 399 | 399 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 210 }, |
| 400 | .{ .char = 'c', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 110 }, | |
| 401 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 211 }, | |
| 400 | 402 | .{ .char = 's', .end_of_word = true, .end_of_list = true, .number = 1, .child_index = 0 }, |
| 401 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 211 }, | |
| 403 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 212 }, | |
| 402 | 404 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 76 }, |
| 403 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 193 }, | |
| 404 | .{ .char = 'p', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 212 }, | |
| 405 | .{ .char = 's', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 213 }, | |
| 406 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 3, .child_index = 214 }, | |
| 407 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 216 }, | |
| 408 | .{ .char = 'f', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 217 }, | |
| 409 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 218 }, | |
| 410 | .{ .char = 'c', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 219 }, | |
| 411 | .{ .char = 'l', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 220 }, | |
| 412 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 221 }, | |
| 413 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 170 }, | |
| 414 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 222 }, | |
| 415 | .{ .char = 'a', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 223 }, | |
| 416 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 224 }, | |
| 417 | .{ .char = 'm', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 225 }, | |
| 418 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 226 }, | |
| 419 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 227 }, | |
| 420 | .{ .char = 'i', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 228 }, | |
| 421 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 229 }, | |
| 422 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 230 }, | |
| 423 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 231 }, | |
| 424 | .{ .char = 'a', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 232 }, | |
| 425 | .{ .char = 'i', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 233 }, | |
| 426 | .{ .char = 's', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 234 }, | |
| 427 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 235 }, | |
| 428 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 170 }, | |
| 429 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 170 }, | |
| 430 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 236 }, | |
| 431 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 237 }, | |
| 432 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 3, .child_index = 238 }, | |
| 433 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 239 }, | |
| 434 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 240 }, | |
| 435 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 241 }, | |
| 436 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 242 }, | |
| 405 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 194 }, | |
| 406 | .{ .char = 'p', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 213 }, | |
| 407 | .{ .char = 's', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 214 }, | |
| 408 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 3, .child_index = 215 }, | |
| 409 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 217 }, | |
| 410 | .{ .char = 'f', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 218 }, | |
| 411 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 219 }, | |
| 412 | .{ .char = 'c', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 220 }, | |
| 413 | .{ .char = 'l', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 221 }, | |
| 414 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 222 }, | |
| 415 | .{ .char = 'm', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 171 }, | |
| 416 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 223 }, | |
| 417 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 224 }, | |
| 418 | .{ .char = 'a', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 225 }, | |
| 419 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 226 }, | |
| 420 | .{ .char = 'm', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 227 }, | |
| 421 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 228 }, | |
| 422 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 229 }, | |
| 423 | .{ .char = 'i', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 230 }, | |
| 424 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 231 }, | |
| 425 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 232 }, | |
| 426 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 233 }, | |
| 427 | .{ .char = 'a', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 234 }, | |
| 428 | .{ .char = 'i', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 235 }, | |
| 429 | .{ .char = 's', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 236 }, | |
| 430 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 238 }, | |
| 431 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 171 }, | |
| 432 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 171 }, | |
| 433 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 239 }, | |
| 434 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 240 }, | |
| 435 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 3, .child_index = 241 }, | |
| 436 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 242 }, | |
| 437 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 243 }, | |
| 438 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 244 }, | |
| 439 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 245 }, | |
| 437 | 440 | .{ .char = 'a', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 122 }, |
| 438 | .{ .char = 'g', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 243 }, | |
| 439 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 244 }, | |
| 440 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 245 }, | |
| 441 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 246 }, | |
| 442 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 247 }, | |
| 443 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 248 }, | |
| 444 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 249 }, | |
| 445 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 250 }, | |
| 446 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 251 }, | |
| 447 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 252 }, | |
| 441 | .{ .char = 'g', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 246 }, | |
| 442 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 247 }, | |
| 443 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 248 }, | |
| 444 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 249 }, | |
| 445 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 250 }, | |
| 446 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 251 }, | |
| 447 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 252 }, | |
| 448 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 253 }, | |
| 449 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 254 }, | |
| 450 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 255 }, | |
| 448 | 451 | .{ .char = 'd', .end_of_word = true, .end_of_list = true, .number = 1, .child_index = 0 }, |
| 449 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 253 }, | |
| 450 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 254 }, | |
| 452 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 256 }, | |
| 453 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 257 }, | |
| 451 | 454 | .{ .char = 'y', .end_of_word = true, .end_of_list = true, .number = 1, .child_index = 0 }, |
| 452 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 255 }, | |
| 453 | .{ .char = 'i', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 256 }, | |
| 454 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 257 }, | |
| 455 | .{ .char = 'e', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 258 }, | |
| 456 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 259 }, | |
| 457 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 260 }, | |
| 458 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 261 }, | |
| 459 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 262 }, | |
| 460 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 224 }, | |
| 461 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 263 }, | |
| 462 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 264 }, | |
| 463 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 265 }, | |
| 464 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 266 }, | |
| 465 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 3, .child_index = 267 }, | |
| 466 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 268 }, | |
| 455 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 258 }, | |
| 456 | .{ .char = 'i', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 259 }, | |
| 457 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 260 }, | |
| 458 | .{ .char = 'e', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 261 }, | |
| 459 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 262 }, | |
| 460 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 263 }, | |
| 461 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 264 }, | |
| 462 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 265 }, | |
| 463 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 226 }, | |
| 464 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 266 }, | |
| 465 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 267 }, | |
| 466 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 268 }, | |
| 467 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 269 }, | |
| 468 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 3, .child_index = 270 }, | |
| 469 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 271 }, | |
| 467 | 470 | .{ .char = 'f', .end_of_word = true, .end_of_list = true, .number = 1, .child_index = 0 }, |
| 468 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 269 }, | |
| 469 | .{ .char = '_', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 270 }, | |
| 470 | .{ .char = 'b', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 271 }, | |
| 471 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 272 }, | |
| 472 | .{ .char = '_', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 273 }, | |
| 473 | .{ .char = 'b', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 274 }, | |
| 471 | 474 | .{ .char = 'e', .end_of_word = true, .end_of_list = true, .number = 1, .child_index = 0 }, |
| 472 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 272 }, | |
| 473 | .{ .char = 'a', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 273 }, | |
| 474 | .{ .char = 'i', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 274 }, | |
| 475 | .{ .char = 'p', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 276 }, | |
| 476 | .{ .char = 'r', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 277 }, | |
| 477 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 8, .child_index = 278 }, | |
| 478 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 281 }, | |
| 479 | .{ .char = 'l', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 282 }, | |
| 480 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 283 }, | |
| 481 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 284 }, | |
| 482 | .{ .char = 'n', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 285 }, | |
| 483 | .{ .char = 'p', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 287 }, | |
| 484 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 288 }, | |
| 475 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 275 }, | |
| 476 | .{ .char = 'a', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 276 }, | |
| 477 | .{ .char = 'i', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 277 }, | |
| 478 | .{ .char = 'p', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 279 }, | |
| 479 | .{ .char = 'r', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 280 }, | |
| 480 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 8, .child_index = 281 }, | |
| 481 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 284 }, | |
| 482 | .{ .char = 'l', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 285 }, | |
| 483 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 286 }, | |
| 484 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 287 }, | |
| 485 | .{ .char = 'n', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 288 }, | |
| 486 | .{ .char = 'p', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 290 }, | |
| 487 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 291 }, | |
| 485 | 488 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 101 }, |
| 486 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 289 }, | |
| 487 | .{ .char = 'h', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 290 }, | |
| 488 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 291 }, | |
| 489 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 292 }, | |
| 490 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 293 }, | |
| 491 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 294 }, | |
| 492 | .{ .char = 'a', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 295 }, | |
| 493 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 296 }, | |
| 494 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 297 }, | |
| 495 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 298 }, | |
| 496 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 299 }, | |
| 497 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 300 }, | |
| 489 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 292 }, | |
| 490 | .{ .char = 'h', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 293 }, | |
| 491 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 294 }, | |
| 492 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 295 }, | |
| 493 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 296 }, | |
| 494 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 297 }, | |
| 495 | .{ .char = 'a', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 298 }, | |
| 496 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 299 }, | |
| 497 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 300 }, | |
| 498 | 498 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 301 }, |
| 499 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 302 }, | |
| 500 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 303 }, | |
| 501 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 304 }, | |
| 502 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 305 }, | |
| 503 | .{ .char = 'v', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 306 }, | |
| 499 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 302 }, | |
| 500 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 303 }, | |
| 501 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 304 }, | |
| 502 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 305 }, | |
| 503 | .{ .char = 'g', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 306 }, | |
| 504 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 307 }, | |
| 505 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 308 }, | |
| 506 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 309 }, | |
| 507 | .{ .char = 'v', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 310 }, | |
| 504 | 508 | .{ .char = 'v', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 109 }, |
| 505 | .{ .char = 'g', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 307 }, | |
| 506 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 224 }, | |
| 507 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 308 }, | |
| 508 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 309 }, | |
| 509 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 310 }, | |
| 510 | .{ .char = 'v', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 311 }, | |
| 511 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 312 }, | |
| 512 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 313 }, | |
| 513 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 150 }, | |
| 514 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 314 }, | |
| 515 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 315 }, | |
| 516 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 3, .child_index = 316 }, | |
| 517 | .{ .char = 'k', .end_of_word = true, .end_of_list = true, .number = 2, .child_index = 318 }, | |
| 518 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 319 }, | |
| 519 | .{ .char = 'h', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 320 }, | |
| 509 | .{ .char = 'g', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 311 }, | |
| 510 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 226 }, | |
| 511 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 312 }, | |
| 512 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 313 }, | |
| 513 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 314 }, | |
| 514 | .{ .char = 'v', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 315 }, | |
| 515 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 316 }, | |
| 516 | .{ .char = 'a', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 317 }, | |
| 517 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 318 }, | |
| 518 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 151 }, | |
| 519 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 319 }, | |
| 520 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 320 }, | |
| 521 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 3, .child_index = 321 }, | |
| 522 | .{ .char = 'k', .end_of_word = true, .end_of_list = true, .number = 2, .child_index = 323 }, | |
| 523 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 324 }, | |
| 524 | .{ .char = 'h', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 325 }, | |
| 520 | 525 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 122 }, |
| 521 | .{ .char = 'n', .end_of_word = true, .end_of_list = true, .number = 2, .child_index = 321 }, | |
| 522 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 322 }, | |
| 523 | .{ .char = 'y', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 324 }, | |
| 524 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 325 }, | |
| 525 | .{ .char = 'f', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 326 }, | |
| 526 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 327 }, | |
| 527 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 328 }, | |
| 526 | .{ .char = 'n', .end_of_word = true, .end_of_list = true, .number = 2, .child_index = 326 }, | |
| 527 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 327 }, | |
| 528 | .{ .char = 'y', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 329 }, | |
| 529 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 330 }, | |
| 530 | .{ .char = 'f', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 331 }, | |
| 531 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 332 }, | |
| 532 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 333 }, | |
| 528 | 533 | .{ .char = 'l', .end_of_word = true, .end_of_list = true, .number = 1, .child_index = 0 }, |
| 529 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 329 }, | |
| 530 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 330 }, | |
| 531 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 331 }, | |
| 532 | .{ .char = 't', .end_of_word = true, .end_of_list = true, .number = 2, .child_index = 332 }, | |
| 533 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 333 }, | |
| 534 | .{ .char = 'g', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 334 }, | |
| 535 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 335 }, | |
| 536 | .{ .char = 'x', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 336 }, | |
| 537 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 336 }, | |
| 534 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 334 }, | |
| 535 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 335 }, | |
| 536 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 336 }, | |
| 537 | .{ .char = 't', .end_of_word = true, .end_of_list = true, .number = 2, .child_index = 337 }, | |
| 538 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 338 }, | |
| 539 | .{ .char = 'g', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 339 }, | |
| 540 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 340 }, | |
| 541 | .{ .char = 'x', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 341 }, | |
| 542 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 341 }, | |
| 538 | 543 | .{ .char = 'r', .end_of_word = true, .end_of_list = true, .number = 1, .child_index = 0 }, |
| 539 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 337 }, | |
| 540 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 338 }, | |
| 541 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 339 }, | |
| 542 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 340 }, | |
| 543 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 341 }, | |
| 544 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 342 }, | |
| 545 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 343 }, | |
| 546 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 344 }, | |
| 547 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 345 }, | |
| 548 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 346 }, | |
| 544 | 549 | .{ .char = 'c', .end_of_word = true, .end_of_list = true, .number = 1, .child_index = 0 }, |
| 545 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 3, .child_index = 342 }, | |
| 546 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 344 }, | |
| 547 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 266 }, | |
| 548 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 200 }, | |
| 549 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 345 }, | |
| 550 | .{ .char = 'b', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 346 }, | |
| 551 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 347 }, | |
| 552 | .{ .char = 'c', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 189 }, | |
| 553 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 348 }, | |
| 554 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 349 }, | |
| 550 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 3, .child_index = 347 }, | |
| 551 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 349 }, | |
| 552 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 269 }, | |
| 553 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 201 }, | |
| 555 | 554 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 350 }, |
| 556 | .{ .char = 'a', .end_of_word = false, .end_of_list = false, .number = 5, .child_index = 351 }, | |
| 557 | .{ .char = 'p', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 352 }, | |
| 558 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 353 }, | |
| 559 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 354 }, | |
| 560 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 355 }, | |
| 561 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 171 }, | |
| 562 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 356 }, | |
| 555 | .{ .char = 'b', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 351 }, | |
| 556 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 352 }, | |
| 557 | .{ .char = 'c', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 190 }, | |
| 558 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 353 }, | |
| 559 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 354 }, | |
| 560 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 355 }, | |
| 561 | .{ .char = 'a', .end_of_word = false, .end_of_list = false, .number = 5, .child_index = 356 }, | |
| 562 | .{ .char = 'p', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 357 }, | |
| 563 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 358 }, | |
| 564 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 359 }, | |
| 565 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 360 }, | |
| 566 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 172 }, | |
| 567 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 361 }, | |
| 563 | 568 | .{ .char = 'i', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 101 }, |
| 564 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 357 }, | |
| 569 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 362 }, | |
| 565 | 570 | .{ .char = 'a', .end_of_word = true, .end_of_list = true, .number = 1, .child_index = 0 }, |
| 566 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 358 }, | |
| 567 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 359 }, | |
| 568 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 360 }, | |
| 569 | .{ .char = 'h', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 361 }, | |
| 570 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 362 }, | |
| 571 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 363 }, | |
| 572 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 364 }, | |
| 573 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 331 }, | |
| 574 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 365 }, | |
| 575 | .{ .char = 'v', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 366 }, | |
| 576 | .{ .char = 'b', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 367 }, | |
| 577 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 368 }, | |
| 578 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 253 }, | |
| 579 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 369 }, | |
| 580 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 370 }, | |
| 571 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 363 }, | |
| 572 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 364 }, | |
| 573 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 365 }, | |
| 574 | .{ .char = 'h', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 366 }, | |
| 575 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 367 }, | |
| 576 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 368 }, | |
| 577 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 369 }, | |
| 578 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 336 }, | |
| 579 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 370 }, | |
| 580 | .{ .char = 'v', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 371 }, | |
| 581 | .{ .char = 'b', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 372 }, | |
| 582 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 373 }, | |
| 583 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 256 }, | |
| 584 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 374 }, | |
| 585 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 375 }, | |
| 586 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 194 }, | |
| 581 | 587 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 125 }, |
| 582 | .{ .char = 'k', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 371 }, | |
| 583 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 372 }, | |
| 584 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 260 }, | |
| 585 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 373 }, | |
| 586 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 170 }, | |
| 587 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 374 }, | |
| 588 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 375 }, | |
| 589 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 376 }, | |
| 590 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 377 }, | |
| 591 | .{ .char = 'q', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 378 }, | |
| 592 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 379 }, | |
| 593 | .{ .char = 'b', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 380 }, | |
| 594 | .{ .char = '_', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 381 }, | |
| 595 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 383 }, | |
| 596 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 384 }, | |
| 597 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 385 }, | |
| 598 | .{ .char = '6', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 386 }, | |
| 599 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 170 }, | |
| 588 | .{ .char = 'k', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 376 }, | |
| 589 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 377 }, | |
| 590 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 263 }, | |
| 591 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 378 }, | |
| 592 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 171 }, | |
| 593 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 379 }, | |
| 594 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 380 }, | |
| 595 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 381 }, | |
| 596 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 382 }, | |
| 597 | .{ .char = 'f', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 383 }, | |
| 598 | .{ .char = 'q', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 384 }, | |
| 599 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 385 }, | |
| 600 | .{ .char = 'b', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 386 }, | |
| 600 | 601 | .{ .char = '_', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 387 }, |
| 601 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 389 }, | |
| 602 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 185 }, | |
| 603 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 390 }, | |
| 604 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 391 }, | |
| 605 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 392 }, | |
| 606 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 315 }, | |
| 607 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 393 }, | |
| 608 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 394 }, | |
| 602 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 389 }, | |
| 603 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 390 }, | |
| 604 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 391 }, | |
| 605 | .{ .char = '6', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 392 }, | |
| 606 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 171 }, | |
| 607 | .{ .char = '_', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 393 }, | |
| 608 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 395 }, | |
| 609 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 186 }, | |
| 610 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 396 }, | |
| 611 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 397 }, | |
| 612 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 398 }, | |
| 613 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 320 }, | |
| 614 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 399 }, | |
| 615 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 400 }, | |
| 609 | 616 | .{ .char = 'n', .end_of_word = true, .end_of_list = true, .number = 1, .child_index = 0 }, |
| 610 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 335 }, | |
| 611 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 395 }, | |
| 612 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 396 }, | |
| 613 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 397 }, | |
| 614 | .{ .char = 'p', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 398 }, | |
| 615 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 399 }, | |
| 616 | .{ .char = 'h', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 400 }, | |
| 617 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 331 }, | |
| 618 | .{ .char = 't', .end_of_word = true, .end_of_list = true, .number = 2, .child_index = 401 }, | |
| 617 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 340 }, | |
| 618 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 401 }, | |
| 619 | 619 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 402 }, |
| 620 | .{ .char = 'n', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 403 }, | |
| 621 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 404 }, | |
| 622 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 405 }, | |
| 623 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 406 }, | |
| 620 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 403 }, | |
| 621 | .{ .char = 'p', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 404 }, | |
| 622 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 405 }, | |
| 623 | .{ .char = 'h', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 406 }, | |
| 624 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 336 }, | |
| 625 | .{ .char = 't', .end_of_word = true, .end_of_list = true, .number = 2, .child_index = 407 }, | |
| 626 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 408 }, | |
| 627 | .{ .char = 'n', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 409 }, | |
| 628 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 410 }, | |
| 629 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 411 }, | |
| 630 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 412 }, | |
| 624 | 631 | .{ .char = 'i', .end_of_word = true, .end_of_list = true, .number = 1, .child_index = 0 }, |
| 625 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 407 }, | |
| 626 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 408 }, | |
| 627 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 409 }, | |
| 628 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 410 }, | |
| 629 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 5, .child_index = 411 }, | |
| 630 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 412 }, | |
| 631 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 413 }, | |
| 632 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 413 }, | |
| 633 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 414 }, | |
| 634 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 415 }, | |
| 635 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 416 }, | |
| 636 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 5, .child_index = 417 }, | |
| 637 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 418 }, | |
| 638 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 419 }, | |
| 632 | 639 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 122 }, |
| 633 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 193 }, | |
| 634 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 414 }, | |
| 635 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 355 }, | |
| 636 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 415 }, | |
| 637 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 416 }, | |
| 638 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 417 }, | |
| 639 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 418 }, | |
| 640 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 419 }, | |
| 641 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 420 }, | |
| 642 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 421 }, | |
| 643 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 422 }, | |
| 644 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 423 }, | |
| 645 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 424 }, | |
| 646 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 425 }, | |
| 647 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 426 }, | |
| 648 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 427 }, | |
| 649 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 428 }, | |
| 650 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 250 }, | |
| 651 | .{ .char = 't', .end_of_word = true, .end_of_list = true, .number = 2, .child_index = 429 }, | |
| 652 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 430 }, | |
| 653 | .{ .char = 'p', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 431 }, | |
| 654 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 432 }, | |
| 655 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 433 }, | |
| 656 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 434 }, | |
| 657 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 435 }, | |
| 658 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 437 }, | |
| 659 | .{ .char = 'i', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 438 }, | |
| 660 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 439 }, | |
| 661 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 440 }, | |
| 662 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 189 }, | |
| 663 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 441 }, | |
| 664 | .{ .char = '4', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 442 }, | |
| 665 | .{ .char = 'a', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 443 }, | |
| 666 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 444 }, | |
| 667 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 445 }, | |
| 668 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 295 }, | |
| 669 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 447 }, | |
| 670 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 448 }, | |
| 671 | .{ .char = 'p', .end_of_word = true, .end_of_list = true, .number = 1, .child_index = 0 }, | |
| 640 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 194 }, | |
| 641 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 420 }, | |
| 642 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 360 }, | |
| 643 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 421 }, | |
| 644 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 422 }, | |
| 645 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 423 }, | |
| 646 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 424 }, | |
| 647 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 425 }, | |
| 648 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 426 }, | |
| 649 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 427 }, | |
| 650 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 428 }, | |
| 651 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 429 }, | |
| 652 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 430 }, | |
| 653 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 431 }, | |
| 654 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 432 }, | |
| 655 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 433 }, | |
| 656 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 434 }, | |
| 657 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 253 }, | |
| 658 | .{ .char = 't', .end_of_word = true, .end_of_list = true, .number = 2, .child_index = 435 }, | |
| 659 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 436 }, | |
| 660 | .{ .char = 'p', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 437 }, | |
| 661 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 438 }, | |
| 662 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 439 }, | |
| 672 | 663 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 440 }, |
| 673 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 449 }, | |
| 674 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 450 }, | |
| 675 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 451 }, | |
| 676 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 452 }, | |
| 677 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 453 }, | |
| 678 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 454 }, | |
| 664 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 441 }, | |
| 665 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 442 }, | |
| 666 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 444 }, | |
| 667 | .{ .char = 'i', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 445 }, | |
| 668 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 446 }, | |
| 669 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 447 }, | |
| 670 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 190 }, | |
| 671 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 448 }, | |
| 672 | .{ .char = '4', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 449 }, | |
| 673 | .{ .char = 'a', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 450 }, | |
| 674 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 451 }, | |
| 675 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 452 }, | |
| 676 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 298 }, | |
| 677 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 454 }, | |
| 679 | 678 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 455 }, |
| 680 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 357 }, | |
| 679 | .{ .char = 'p', .end_of_word = true, .end_of_list = true, .number = 1, .child_index = 0 }, | |
| 680 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 447 }, | |
| 681 | 681 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 456 }, |
| 682 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 457 }, | |
| 683 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 458 }, | |
| 684 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 459 }, | |
| 685 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 460 }, | |
| 686 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 461 }, | |
| 687 | .{ .char = 'f', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 462 }, | |
| 688 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 463 }, | |
| 689 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 5, .child_index = 464 }, | |
| 690 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 465 }, | |
| 691 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 466 }, | |
| 692 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 467 }, | |
| 693 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 383 }, | |
| 694 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 331 }, | |
| 682 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 457 }, | |
| 683 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 458 }, | |
| 684 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 459 }, | |
| 685 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 460 }, | |
| 686 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 461 }, | |
| 687 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 462 }, | |
| 688 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 362 }, | |
| 689 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 463 }, | |
| 690 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 464 }, | |
| 691 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 465 }, | |
| 692 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 466 }, | |
| 693 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 467 }, | |
| 694 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 468 }, | |
| 695 | .{ .char = 'f', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 469 }, | |
| 696 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 470 }, | |
| 697 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 5, .child_index = 471 }, | |
| 698 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 472 }, | |
| 699 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 473 }, | |
| 700 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 474 }, | |
| 701 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 389 }, | |
| 702 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 336 }, | |
| 695 | 703 | .{ .char = 'w', .end_of_word = true, .end_of_list = true, .number = 1, .child_index = 0 }, |
| 696 | .{ .char = 'b', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 468 }, | |
| 697 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 469 }, | |
| 698 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 470 }, | |
| 704 | .{ .char = 'b', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 475 }, | |
| 705 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 476 }, | |
| 706 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 477 }, | |
| 699 | 707 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 101 }, |
| 700 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 471 }, | |
| 701 | .{ .char = 'v', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 472 }, | |
| 702 | .{ .char = 'f', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 473 }, | |
| 703 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 474 }, | |
| 704 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 475 }, | |
| 705 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 250 }, | |
| 706 | .{ .char = 'p', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 476 }, | |
| 707 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 477 }, | |
| 708 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 427 }, | |
| 709 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 478 }, | |
| 710 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 479 }, | |
| 711 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 480 }, | |
| 712 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 481 }, | |
| 713 | .{ .char = '_', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 482 }, | |
| 714 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 305 }, | |
| 715 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 483 }, | |
| 716 | .{ .char = 'f', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 484 }, | |
| 717 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 485 }, | |
| 708 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 478 }, | |
| 709 | .{ .char = 'v', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 479 }, | |
| 710 | .{ .char = 'f', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 480 }, | |
| 711 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 481 }, | |
| 712 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 482 }, | |
| 713 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 253 }, | |
| 714 | .{ .char = 'p', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 483 }, | |
| 715 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 484 }, | |
| 716 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 433 }, | |
| 717 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 485 }, | |
| 718 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 486 }, | |
| 719 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 487 }, | |
| 720 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 488 }, | |
| 721 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 489 }, | |
| 722 | .{ .char = '_', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 490 }, | |
| 723 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 309 }, | |
| 724 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 491 }, | |
| 725 | .{ .char = 'f', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 492 }, | |
| 726 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 493 }, | |
| 718 | 727 | .{ .char = 'g', .end_of_word = true, .end_of_list = true, .number = 1, .child_index = 0 }, |
| 719 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 486 }, | |
| 720 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 487 }, | |
| 721 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 489 }, | |
| 722 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 490 }, | |
| 723 | .{ .char = 'e', .end_of_word = true, .end_of_list = false, .number = 1, .child_index = 0 }, | |
| 724 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 260 }, | |
| 725 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 491 }, | |
| 726 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 492 }, | |
| 727 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 150 }, | |
| 728 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 493 }, | |
| 729 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 179 }, | |
| 730 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 101 }, | |
| 731 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 494 }, | |
| 732 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 495 }, | |
| 733 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 496 }, | |
| 728 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 494 }, | |
| 729 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 495 }, | |
| 734 | 730 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 497 }, |
| 735 | .{ .char = 'p', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 498 }, | |
| 731 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 498 }, | |
| 732 | .{ .char = 'e', .end_of_word = true, .end_of_list = false, .number = 1, .child_index = 0 }, | |
| 733 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 263 }, | |
| 736 | 734 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 499 }, |
| 737 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 500 }, | |
| 738 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 501 }, | |
| 739 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 502 }, | |
| 740 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 503 }, | |
| 741 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 306 }, | |
| 742 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 5, .child_index = 504 }, | |
| 743 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 505 }, | |
| 744 | .{ .char = 'k', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 506 }, | |
| 745 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 170 }, | |
| 746 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 507 }, | |
| 747 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 508 }, | |
| 748 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 509 }, | |
| 749 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 510 }, | |
| 750 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 512 }, | |
| 751 | .{ .char = 'f', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 513 }, | |
| 752 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 514 }, | |
| 753 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 173 }, | |
| 754 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 515 }, | |
| 755 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 516 }, | |
| 756 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 517 }, | |
| 757 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 518 }, | |
| 758 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 519 }, | |
| 759 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 520 }, | |
| 760 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 444 }, | |
| 761 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 521 }, | |
| 762 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 522 }, | |
| 763 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 523 }, | |
| 764 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 524 }, | |
| 765 | .{ .char = 's', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 525 }, | |
| 766 | .{ .char = 'v', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 526 }, | |
| 767 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 527 }, | |
| 768 | .{ .char = 'z', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 193 }, | |
| 769 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 250 }, | |
| 770 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 528 }, | |
| 771 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 529 }, | |
| 772 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 530 }, | |
| 773 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 531 }, | |
| 774 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 440 }, | |
| 775 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 532 }, | |
| 776 | .{ .char = 't', .end_of_word = true, .end_of_list = true, .number = 2, .child_index = 533 }, | |
| 777 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 534 }, | |
| 778 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 235 }, | |
| 779 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 535 }, | |
| 780 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 536 }, | |
| 735 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 500 }, | |
| 736 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 151 }, | |
| 737 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 501 }, | |
| 738 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 180 }, | |
| 739 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 101 }, | |
| 740 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 502 }, | |
| 741 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 503 }, | |
| 742 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 504 }, | |
| 743 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 505 }, | |
| 744 | .{ .char = 'p', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 506 }, | |
| 745 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 507 }, | |
| 746 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 508 }, | |
| 747 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 509 }, | |
| 748 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 510 }, | |
| 749 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 511 }, | |
| 750 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 310 }, | |
| 751 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 5, .child_index = 512 }, | |
| 752 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 513 }, | |
| 753 | .{ .char = 'k', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 514 }, | |
| 754 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 171 }, | |
| 755 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 515 }, | |
| 756 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 516 }, | |
| 757 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 517 }, | |
| 758 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 518 }, | |
| 759 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 520 }, | |
| 760 | .{ .char = 'f', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 521 }, | |
| 761 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 522 }, | |
| 762 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 174 }, | |
| 763 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 523 }, | |
| 764 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 524 }, | |
| 765 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 525 }, | |
| 766 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 526 }, | |
| 767 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 527 }, | |
| 768 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 528 }, | |
| 769 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 529 }, | |
| 770 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 451 }, | |
| 771 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 530 }, | |
| 772 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 531 }, | |
| 773 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 532 }, | |
| 774 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 533 }, | |
| 775 | .{ .char = 's', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 534 }, | |
| 776 | .{ .char = 'v', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 535 }, | |
| 777 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 536 }, | |
| 778 | .{ .char = 'z', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 194 }, | |
| 779 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 253 }, | |
| 781 | 780 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 537 }, |
| 782 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 5, .child_index = 538 }, | |
| 783 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 539 }, | |
| 784 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 540 }, | |
| 785 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 542 }, | |
| 781 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 538 }, | |
| 782 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 539 }, | |
| 783 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 540 }, | |
| 784 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 447 }, | |
| 785 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 541 }, | |
| 786 | .{ .char = 't', .end_of_word = true, .end_of_list = true, .number = 2, .child_index = 542 }, | |
| 787 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 543 }, | |
| 788 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 238 }, | |
| 789 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 544 }, | |
| 790 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 545 }, | |
| 791 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 546 }, | |
| 792 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 5, .child_index = 547 }, | |
| 793 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 548 }, | |
| 794 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 549 }, | |
| 795 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 551 }, | |
| 786 | 796 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 101 }, |
| 787 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 518 }, | |
| 788 | .{ .char = 'n', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 543 }, | |
| 789 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 544 }, | |
| 790 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 545 }, | |
| 791 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 546 }, | |
| 792 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 547 }, | |
| 793 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 548 }, | |
| 794 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 549 }, | |
| 795 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 550 }, | |
| 796 | .{ .char = 'b', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 551 }, | |
| 797 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 552 }, | |
| 798 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 150 }, | |
| 799 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 173 }, | |
| 800 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 553 }, | |
| 801 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 554 }, | |
| 802 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 555 }, | |
| 803 | .{ .char = 'v', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 556 }, | |
| 804 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 557 }, | |
| 805 | .{ .char = 'g', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 331 }, | |
| 806 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 558 }, | |
| 807 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 559 }, | |
| 808 | .{ .char = 'y', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 560 }, | |
| 809 | .{ .char = 'g', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 561 }, | |
| 810 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 562 }, | |
| 811 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 563 }, | |
| 812 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 564 }, | |
| 813 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 565 }, | |
| 814 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 566 }, | |
| 815 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 567 }, | |
| 816 | .{ .char = 'z', .end_of_word = false, .end_of_list = true, .number = 5, .child_index = 568 }, | |
| 817 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 569 }, | |
| 818 | .{ .char = 'l', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 570 }, | |
| 819 | .{ .char = 'p', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 571 }, | |
| 797 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 526 }, | |
| 798 | .{ .char = 'n', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 552 }, | |
| 799 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 553 }, | |
| 800 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 554 }, | |
| 801 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 555 }, | |
| 802 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 556 }, | |
| 803 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 557 }, | |
| 804 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 558 }, | |
| 805 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 559 }, | |
| 806 | .{ .char = 'b', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 306 }, | |
| 807 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 560 }, | |
| 808 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 561 }, | |
| 809 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 151 }, | |
| 810 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 174 }, | |
| 811 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 562 }, | |
| 812 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 563 }, | |
| 813 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 564 }, | |
| 814 | .{ .char = 'v', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 565 }, | |
| 815 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 566 }, | |
| 816 | .{ .char = 'g', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 336 }, | |
| 817 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 567 }, | |
| 818 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 568 }, | |
| 819 | .{ .char = 'y', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 569 }, | |
| 820 | .{ .char = 'g', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 570 }, | |
| 821 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 571 }, | |
| 820 | 822 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 572 }, |
| 821 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 573 }, | |
| 822 | .{ .char = 'w', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 574 }, | |
| 823 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 575 }, | |
| 823 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 573 }, | |
| 824 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 574 }, | |
| 825 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 575 }, | |
| 826 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 576 }, | |
| 827 | .{ .char = 'z', .end_of_word = false, .end_of_list = true, .number = 5, .child_index = 577 }, | |
| 828 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 578 }, | |
| 829 | .{ .char = 'l', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 579 }, | |
| 830 | .{ .char = 'p', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 580 }, | |
| 831 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 581 }, | |
| 832 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 582 }, | |
| 833 | .{ .char = 'w', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 583 }, | |
| 834 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 584 }, | |
| 824 | 835 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 122 }, |
| 825 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 576 }, | |
| 826 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 577 }, | |
| 827 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 578 }, | |
| 828 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 579 }, | |
| 829 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 193 }, | |
| 830 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 580 }, | |
| 831 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 581 }, | |
| 832 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 582 }, | |
| 833 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 583 }, | |
| 834 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 584 }, | |
| 835 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 585 }, | |
| 836 | .{ .char = 'g', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 586 }, | |
| 837 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 587 }, | |
| 838 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 588 }, | |
| 839 | .{ .char = 'h', .end_of_word = true, .end_of_list = true, .number = 1, .child_index = 0 }, | |
| 836 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 585 }, | |
| 837 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 586 }, | |
| 838 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 587 }, | |
| 839 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 588 }, | |
| 840 | 840 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 589 }, |
| 841 | .{ .char = 'h', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 590 }, | |
| 842 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 266 }, | |
| 843 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 591 }, | |
| 841 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 590 }, | |
| 842 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 591 }, | |
| 844 | 843 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 592 }, |
| 845 | 844 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 593 }, |
| 846 | .{ .char = 'e', .end_of_word = true, .end_of_list = true, .number = 5, .child_index = 594 }, | |
| 847 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 595 }, | |
| 848 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 596 }, | |
| 849 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 597 }, | |
| 850 | .{ .char = 'f', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 598 }, | |
| 851 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 599 }, | |
| 852 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 600 }, | |
| 853 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 601 }, | |
| 854 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 602 }, | |
| 855 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 421 }, | |
| 856 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 603 }, | |
| 857 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 604 }, | |
| 858 | .{ .char = 'z', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 150 }, | |
| 859 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 392 }, | |
| 860 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 605 }, | |
| 861 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 606 }, | |
| 862 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 607 }, | |
| 863 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 608 }, | |
| 864 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 150 }, | |
| 865 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 609 }, | |
| 866 | .{ .char = 'v', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 610 }, | |
| 867 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 611 }, | |
| 868 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 612 }, | |
| 869 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 613 }, | |
| 870 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 614 }, | |
| 871 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 615 }, | |
| 872 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 616 }, | |
| 873 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 620 }, | |
| 874 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 621 }, | |
| 875 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 622 }, | |
| 876 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 623 }, | |
| 877 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 624 }, | |
| 878 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 193 }, | |
| 879 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 625 }, | |
| 880 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 626 }, | |
| 845 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 594 }, | |
| 846 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 595 }, | |
| 847 | .{ .char = 'g', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 596 }, | |
| 848 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 597 }, | |
| 849 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 598 }, | |
| 850 | .{ .char = 'h', .end_of_word = true, .end_of_list = true, .number = 1, .child_index = 0 }, | |
| 851 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 599 }, | |
| 852 | .{ .char = 'h', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 600 }, | |
| 853 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 269 }, | |
| 854 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 601 }, | |
| 855 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 602 }, | |
| 856 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 603 }, | |
| 857 | .{ .char = 'e', .end_of_word = true, .end_of_list = true, .number = 5, .child_index = 604 }, | |
| 858 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 605 }, | |
| 859 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 606 }, | |
| 860 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 607 }, | |
| 861 | .{ .char = 'f', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 608 }, | |
| 862 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 609 }, | |
| 863 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 610 }, | |
| 864 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 611 }, | |
| 865 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 612 }, | |
| 866 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 427 }, | |
| 867 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 613 }, | |
| 868 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 614 }, | |
| 869 | .{ .char = 'z', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 151 }, | |
| 870 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 615 }, | |
| 871 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 398 }, | |
| 872 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 616 }, | |
| 873 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 617 }, | |
| 874 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 618 }, | |
| 875 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 619 }, | |
| 876 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 151 }, | |
| 877 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 620 }, | |
| 878 | .{ .char = 'v', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 621 }, | |
| 879 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 622 }, | |
| 880 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 623 }, | |
| 881 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 624 }, | |
| 882 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 625 }, | |
| 883 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 626 }, | |
| 884 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 627 }, | |
| 885 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 631 }, | |
| 886 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 632 }, | |
| 887 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 633 }, | |
| 888 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 634 }, | |
| 889 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 635 }, | |
| 890 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 194 }, | |
| 891 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 636 }, | |
| 892 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 637 }, | |
| 881 | 893 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 122 }, |
| 882 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 627 }, | |
| 883 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 628 }, | |
| 884 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 629 }, | |
| 885 | .{ .char = 'p', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 630 }, | |
| 886 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 631 }, | |
| 887 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 621 }, | |
| 888 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 632 }, | |
| 889 | .{ .char = 'k', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 633 }, | |
| 890 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 634 }, | |
| 891 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 635 }, | |
| 892 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 636 }, | |
| 893 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 348 }, | |
| 894 | .{ .char = 'a', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 637 }, | |
| 895 | .{ .char = 'c', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 638 }, | |
| 896 | .{ .char = 't', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 639 }, | |
| 897 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 640 }, | |
| 898 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 641 }, | |
| 894 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 638 }, | |
| 895 | .{ .char = 'x', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 486 }, | |
| 896 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 639 }, | |
| 897 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 640 }, | |
| 898 | .{ .char = 'p', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 641 }, | |
| 899 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 642 }, | |
| 900 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 632 }, | |
| 901 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 643 }, | |
| 902 | .{ .char = 'k', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 644 }, | |
| 903 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 645 }, | |
| 904 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 646 }, | |
| 905 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 647 }, | |
| 906 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 353 }, | |
| 907 | .{ .char = 'a', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 648 }, | |
| 908 | .{ .char = 'c', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 649 }, | |
| 909 | .{ .char = 't', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 650 }, | |
| 910 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 651 }, | |
| 911 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 652 }, | |
| 899 | 912 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 101 }, |
| 900 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 642 }, | |
| 901 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 643 }, | |
| 902 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 372 }, | |
| 903 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 644 }, | |
| 904 | .{ .char = 'g', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 645 }, | |
| 905 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 646 }, | |
| 906 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 647 }, | |
| 907 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 648 }, | |
| 908 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 122 }, | |
| 909 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 584 }, | |
| 910 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 509 }, | |
| 911 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 649 }, | |
| 912 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 650 }, | |
| 913 | .{ .char = 'f', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 651 }, | |
| 914 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 652 }, | |
| 915 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 653 }, | |
| 916 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 654 }, | |
| 917 | .{ .char = 'h', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 655 }, | |
| 918 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 656 }, | |
| 919 | .{ .char = 'k', .end_of_word = true, .end_of_list = true, .number = 1, .child_index = 0 }, | |
| 920 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 397 }, | |
| 921 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 657 }, | |
| 922 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 266 }, | |
| 923 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 658 }, | |
| 924 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 300 }, | |
| 913 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 653 }, | |
| 914 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 654 }, | |
| 915 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 377 }, | |
| 916 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 655 }, | |
| 917 | .{ .char = 'g', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 656 }, | |
| 918 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 657 }, | |
| 919 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 658 }, | |
| 925 | 920 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 659 }, |
| 926 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 660 }, | |
| 927 | .{ .char = 'g', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 193 }, | |
| 928 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 306 }, | |
| 929 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 661 }, | |
| 921 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 122 }, | |
| 922 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 594 }, | |
| 923 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 517 }, | |
| 924 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 660 }, | |
| 925 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 661 }, | |
| 930 | 926 | .{ .char = 'f', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 662 }, |
| 931 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 663 }, | |
| 932 | .{ .char = 'v', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 664 }, | |
| 933 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 229 }, | |
| 934 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 665 }, | |
| 935 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 666 }, | |
| 936 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 350 }, | |
| 937 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 667 }, | |
| 938 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 668 }, | |
| 939 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 669 }, | |
| 940 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 670 }, | |
| 941 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 158 }, | |
| 942 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 671 }, | |
| 927 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 663 }, | |
| 928 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 664 }, | |
| 929 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 665 }, | |
| 930 | .{ .char = 'h', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 666 }, | |
| 931 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 667 }, | |
| 932 | .{ .char = 'k', .end_of_word = true, .end_of_list = true, .number = 1, .child_index = 0 }, | |
| 933 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 403 }, | |
| 934 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 668 }, | |
| 935 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 269 }, | |
| 936 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 669 }, | |
| 937 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 303 }, | |
| 938 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 670 }, | |
| 939 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 671 }, | |
| 940 | .{ .char = 'g', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 194 }, | |
| 941 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 310 }, | |
| 943 | 942 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 672 }, |
| 944 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 673 }, | |
| 945 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 207 }, | |
| 946 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 674 }, | |
| 947 | .{ .char = 'y', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 675 }, | |
| 948 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 676 }, | |
| 949 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 633 }, | |
| 950 | .{ .char = 'f', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 677 }, | |
| 951 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 678 }, | |
| 952 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 679 }, | |
| 953 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 680 }, | |
| 954 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 219 }, | |
| 955 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 586 }, | |
| 956 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 681 }, | |
| 957 | .{ .char = 'g', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 122 }, | |
| 958 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 682 }, | |
| 959 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 683 }, | |
| 960 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 684 }, | |
| 961 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 685 }, | |
| 962 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 686 }, | |
| 943 | .{ .char = 'f', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 673 }, | |
| 944 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 674 }, | |
| 945 | .{ .char = 'v', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 675 }, | |
| 946 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 231 }, | |
| 947 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 676 }, | |
| 948 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 677 }, | |
| 949 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 355 }, | |
| 950 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 678 }, | |
| 951 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 679 }, | |
| 952 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 680 }, | |
| 953 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 681 }, | |
| 954 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 159 }, | |
| 955 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 682 }, | |
| 956 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 683 }, | |
| 957 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 684 }, | |
| 958 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 208 }, | |
| 959 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 685 }, | |
| 960 | .{ .char = 'y', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 686 }, | |
| 963 | 961 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 687 }, |
| 964 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 688 }, | |
| 965 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 689 }, | |
| 966 | .{ .char = 'y', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 690 }, | |
| 967 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 173 }, | |
| 968 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 691 }, | |
| 962 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 644 }, | |
| 963 | .{ .char = 'f', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 688 }, | |
| 964 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 689 }, | |
| 965 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 690 }, | |
| 966 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 691 }, | |
| 967 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 220 }, | |
| 968 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 596 }, | |
| 969 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 692 }, | |
| 970 | .{ .char = 'g', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 122 }, | |
| 971 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 693 }, | |
| 972 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 694 }, | |
| 973 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 695 }, | |
| 974 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 696 }, | |
| 975 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 697 }, | |
| 976 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 698 }, | |
| 977 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 699 }, | |
| 978 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 700 }, | |
| 979 | .{ .char = 'y', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 701 }, | |
| 980 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 174 }, | |
| 981 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 702 }, | |
| 969 | 982 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 122 }, |
| 970 | 983 | }; |
| 971 | 984 | pub const data = blk: { |
| 972 | @setEvalBranchQuota(1053); | |
| 985 | @setEvalBranchQuota(1071); | |
| 973 | 986 | break :blk [_]Properties{ |
| 974 | 987 | .{ .tag = .aarch64_sve_pcs, .gnu = true }, |
| 975 | 988 | .{ .tag = .aarch64_vector_pcs, .gnu = true }, |
| ... | ... | @@ -1062,6 +1075,7 @@ pub const data = blk: { |
| 1062 | 1075 | .{ .tag = .selectany, .gnu = true, .declspec = true }, |
| 1063 | 1076 | .{ .tag = .sentinel, .gnu = true }, |
| 1064 | 1077 | .{ .tag = .simd, .gnu = true }, |
| 1078 | .{ .tag = .single, .gnu = true }, | |
| 1065 | 1079 | .{ .tag = .spectre, .declspec = true }, |
| 1066 | 1080 | .{ .tag = .stack_protect, .gnu = true }, |
| 1067 | 1081 | .{ .tag = .stdcall, .gnu = true }, |
| ... | ... | @@ -1075,6 +1089,7 @@ pub const data = blk: { |
| 1075 | 1089 | .{ .tag = .transparent_union, .gnu = true }, |
| 1076 | 1090 | .{ .tag = .unavailable, .gnu = true }, |
| 1077 | 1091 | .{ .tag = .uninitialized, .gnu = true }, |
| 1092 | .{ .tag = .unsafe_indexable, .gnu = true }, | |
| 1078 | 1093 | .{ .tag = .unsequenced, .c23 = true }, |
| 1079 | 1094 | .{ .tag = .unused, .gnu = true }, |
| 1080 | 1095 | .{ .tag = .used, .gnu = true }, |
lib/compiler/aro/aro/Builtins.zig-1| ... | ... | @@ -264,7 +264,6 @@ fn createType(desc: TypeDescription, it: *TypeDescription.TypeIterator, comp: *C |
| 264 | 264 | _ = address_space; // TODO: handle address space |
| 265 | 265 | const pointer_qt = try comp.type_store.put(comp.gpa, .{ .pointer = .{ |
| 266 | 266 | .child = builder.finish() catch unreachable, |
| 267 | .decayed = null, | |
| 268 | 267 | } }); |
| 269 | 268 | |
| 270 | 269 | builder.@"const" = null; |
lib/compiler/aro/aro/Builtins/common.zig+874-863| ... | ... | @@ -751,6 +751,8 @@ pub const Tag = enum(u16) { _Block_object_assign, |
| 751 | 751 | __builtin_usubl_overflow, |
| 752 | 752 | __builtin_usubll_overflow, |
| 753 | 753 | __builtin_va_arg, |
| 754 | __builtin_va_arg_pack, | |
| 755 | __builtin_va_arg_pack_len, | |
| 754 | 756 | __builtin_va_copy, |
| 755 | 757 | __builtin_va_end, |
| 756 | 758 | __builtin_va_start, |
| ... | ... | @@ -1436,7 +1438,7 @@ pub const longest_name = 41; |
| 1436 | 1438 | /// If found, returns the index of the node within the `dafsa` array. |
| 1437 | 1439 | /// Otherwise, returns `null`. |
| 1438 | 1440 | pub fn findInList(first_child_index: u16, char: u8) ?u16 { |
| 1439 | @setEvalBranchQuota(2744); | |
| 1441 | @setEvalBranchQuota(2748); | |
| 1440 | 1442 | var index = first_child_index; |
| 1441 | 1443 | while (true) { |
| 1442 | 1444 | if (dafsa[index].char == char) return index; |
| ... | ... | @@ -1531,7 +1533,7 @@ const Node = packed struct { |
| 1531 | 1533 | |
| 1532 | 1534 | const dafsa = [_]Node{ |
| 1533 | 1535 | .{ .char = 0, .end_of_word = false, .end_of_list = true, .number = 0, .child_index = 1 }, |
| 1534 | .{ .char = '_', .end_of_word = false, .end_of_list = false, .number = 1016, .child_index = 19 }, | |
| 1536 | .{ .char = '_', .end_of_word = false, .end_of_list = false, .number = 1018, .child_index = 19 }, | |
| 1535 | 1537 | .{ .char = 'a', .end_of_word = false, .end_of_list = false, .number = 25, .child_index = 31 }, |
| 1536 | 1538 | .{ .char = 'b', .end_of_word = false, .end_of_list = false, .number = 3, .child_index = 36 }, |
| 1537 | 1539 | .{ .char = 'c', .end_of_word = false, .end_of_list = false, .number = 82, .child_index = 38 }, |
| ... | ... | @@ -1553,7 +1555,7 @@ const dafsa = [_]Node{ |
| 1553 | 1555 | .{ .char = 'E', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 102 }, |
| 1554 | 1556 | .{ .char = 'I', .end_of_word = false, .end_of_list = false, .number = 29, .child_index = 103 }, |
| 1555 | 1557 | .{ .char = 'R', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 104 }, |
| 1556 | .{ .char = '_', .end_of_word = false, .end_of_list = false, .number = 938, .child_index = 105 }, | |
| 1558 | .{ .char = '_', .end_of_word = false, .end_of_list = false, .number = 940, .child_index = 105 }, | |
| 1557 | 1559 | .{ .char = 'a', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 123 }, |
| 1558 | 1560 | .{ .char = 'b', .end_of_word = false, .end_of_list = false, .number = 11, .child_index = 125 }, |
| 1559 | 1561 | .{ .char = 'e', .end_of_word = false, .end_of_list = false, .number = 3, .child_index = 127 }, |
| ... | ... | @@ -1637,7 +1639,7 @@ const dafsa = [_]Node{ |
| 1637 | 1639 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 238 }, |
| 1638 | 1640 | .{ .char = 'G', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 239 }, |
| 1639 | 1641 | .{ .char = 'a', .end_of_word = false, .end_of_list = false, .number = 34, .child_index = 240 }, |
| 1640 | .{ .char = 'b', .end_of_word = false, .end_of_list = false, .number = 694, .child_index = 245 }, | |
| 1642 | .{ .char = 'b', .end_of_word = false, .end_of_list = false, .number = 696, .child_index = 245 }, | |
| 1641 | 1643 | .{ .char = 'c', .end_of_word = false, .end_of_list = false, .number = 19, .child_index = 246 }, |
| 1642 | 1644 | .{ .char = 'd', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 248 }, |
| 1643 | 1645 | .{ .char = 'e', .end_of_word = false, .end_of_list = false, .number = 4, .child_index = 249 }, |
| ... | ... | @@ -1775,7 +1777,7 @@ const dafsa = [_]Node{ |
| 1775 | 1777 | .{ .char = 'r', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 398 }, |
| 1776 | 1778 | .{ .char = 's', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 399 }, |
| 1777 | 1779 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 30, .child_index = 400 }, |
| 1778 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 694, .child_index = 401 }, | |
| 1780 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 696, .child_index = 401 }, | |
| 1779 | 1781 | .{ .char = '1', .end_of_word = false, .end_of_list = false, .number = 17, .child_index = 402 }, |
| 1780 | 1782 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 403 }, |
| 1781 | 1783 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 404 }, |
| ... | ... | @@ -1931,7 +1933,7 @@ const dafsa = [_]Node{ |
| 1931 | 1933 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 523 }, |
| 1932 | 1934 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 524 }, |
| 1933 | 1935 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 30, .child_index = 525 }, |
| 1934 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 694, .child_index = 526 }, | |
| 1936 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 696, .child_index = 526 }, | |
| 1935 | 1937 | .{ .char = '1', .end_of_word = false, .end_of_list = true, .number = 17, .child_index = 527 }, |
| 1936 | 1938 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 528 }, |
| 1937 | 1939 | .{ .char = 'b', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 529 }, |
| ... | ... | @@ -2056,7 +2058,7 @@ const dafsa = [_]Node{ |
| 2056 | 2058 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 610 }, |
| 2057 | 2059 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 611 }, |
| 2058 | 2060 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 30, .child_index = 612 }, |
| 2059 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 694, .child_index = 613 }, | |
| 2061 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 696, .child_index = 613 }, | |
| 2060 | 2062 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 17, .child_index = 614 }, |
| 2061 | 2063 | .{ .char = 'p', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 615 }, |
| 2062 | 2064 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 616 }, |
| ... | ... | @@ -2143,7 +2145,7 @@ const dafsa = [_]Node{ |
| 2143 | 2145 | .{ .char = 'h', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 658 }, |
| 2144 | 2146 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 559 }, |
| 2145 | 2147 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 30, .child_index = 659 }, |
| 2146 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 694, .child_index = 660 }, | |
| 2148 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 696, .child_index = 660 }, | |
| 2147 | 2149 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 17, .child_index = 661 }, |
| 2148 | 2150 | .{ .char = 'i', .end_of_word = true, .end_of_list = true, .number = 2, .child_index = 662 }, |
| 2149 | 2151 | .{ .char = 'g', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 663 }, |
| ... | ... | @@ -2190,7 +2192,7 @@ const dafsa = [_]Node{ |
| 2190 | 2192 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 700 }, |
| 2191 | 2193 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 701 }, |
| 2192 | 2194 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 30, .child_index = 702 }, |
| 2193 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 694, .child_index = 703 }, | |
| 2195 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 696, .child_index = 703 }, | |
| 2194 | 2196 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 17, .child_index = 704 }, |
| 2195 | 2197 | .{ .char = 'f', .end_of_word = true, .end_of_list = true, .number = 1, .child_index = 0 }, |
| 2196 | 2198 | .{ .char = 'b', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 705 }, |
| ... | ... | @@ -2233,7 +2235,7 @@ const dafsa = [_]Node{ |
| 2233 | 2235 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 740 }, |
| 2234 | 2236 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 741 }, |
| 2235 | 2237 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 30, .child_index = 742 }, |
| 2236 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 694, .child_index = 754 }, | |
| 2238 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 696, .child_index = 754 }, | |
| 2237 | 2239 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 17, .child_index = 755 }, |
| 2238 | 2240 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 756 }, |
| 2239 | 2241 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 640 }, |
| ... | ... | @@ -2284,7 +2286,7 @@ const dafsa = [_]Node{ |
| 2284 | 2286 | .{ .char = 's', .end_of_word = false, .end_of_list = false, .number = 4, .child_index = 799 }, |
| 2285 | 2287 | .{ .char = 't', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 802 }, |
| 2286 | 2288 | .{ .char = 'x', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 804 }, |
| 2287 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 694, .child_index = 805 }, | |
| 2289 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 696, .child_index = 805 }, | |
| 2288 | 2290 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 17, .child_index = 825 }, |
| 2289 | 2291 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 826 }, |
| 2290 | 2292 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 12, .child_index = 827 }, |
| ... | ... | @@ -2353,7 +2355,7 @@ const dafsa = [_]Node{ |
| 2353 | 2355 | .{ .char = 's', .end_of_word = false, .end_of_list = false, .number = 76, .child_index = 940 }, |
| 2354 | 2356 | .{ .char = 't', .end_of_word = false, .end_of_list = false, .number = 23, .child_index = 952 }, |
| 2355 | 2357 | .{ .char = 'u', .end_of_word = false, .end_of_list = false, .number = 12, .child_index = 957 }, |
| 2356 | .{ .char = 'v', .end_of_word = false, .end_of_list = false, .number = 12, .child_index = 961 }, | |
| 2358 | .{ .char = 'v', .end_of_word = false, .end_of_list = false, .number = 14, .child_index = 961 }, | |
| 2357 | 2359 | .{ .char = 'w', .end_of_word = false, .end_of_list = true, .number = 8, .child_index = 99 }, |
| 2358 | 2360 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 17, .child_index = 966 }, |
| 2359 | 2361 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 512 }, |
| ... | ... | @@ -2491,7 +2493,7 @@ const dafsa = [_]Node{ |
| 2491 | 2493 | .{ .char = 'm', .end_of_word = false, .end_of_list = false, .number = 3, .child_index = 1140 }, |
| 2492 | 2494 | .{ .char = 'n', .end_of_word = false, .end_of_list = false, .number = 3, .child_index = 1154 }, |
| 2493 | 2495 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 3, .child_index = 1157 }, |
| 2494 | .{ .char = 'a', .end_of_word = false, .end_of_list = false, .number = 4, .child_index = 1158 }, | |
| 2496 | .{ .char = 'a', .end_of_word = false, .end_of_list = false, .number = 6, .child_index = 1158 }, | |
| 2495 | 2497 | .{ .char = 'e', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 1159 }, |
| 2496 | 2498 | .{ .char = 'f', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 1160 }, |
| 2497 | 2499 | .{ .char = 'p', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 174 }, |
| ... | ... | @@ -2688,7 +2690,7 @@ const dafsa = [_]Node{ |
| 2688 | 2690 | .{ .char = 'r', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 1387 }, |
| 2689 | 2691 | .{ .char = 'w', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1388 }, |
| 2690 | 2692 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 3, .child_index = 1371 }, |
| 2691 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 1389 }, | |
| 2693 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 1389 }, | |
| 2692 | 2694 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1393 }, |
| 2693 | 2695 | .{ .char = 'p', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 174 }, |
| 2694 | 2696 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 176 }, |
| ... | ... | @@ -2919,7 +2921,7 @@ const dafsa = [_]Node{ |
| 2919 | 2921 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1574 }, |
| 2920 | 2922 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1575 }, |
| 2921 | 2923 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1576 }, |
| 2922 | .{ .char = 'a', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 1577 }, | |
| 2924 | .{ .char = 'a', .end_of_word = false, .end_of_list = false, .number = 3, .child_index = 1577 }, | |
| 2923 | 2925 | .{ .char = 'c', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 509 }, |
| 2924 | 2926 | .{ .char = 'e', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 510 }, |
| 2925 | 2927 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 511 }, |
| ... | ... | @@ -3107,1047 +3109,1054 @@ const dafsa = [_]Node{ |
| 3107 | 3109 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1728 }, |
| 3108 | 3110 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1729 }, |
| 3109 | 3111 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1730 }, |
| 3110 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1604 }, | |
| 3111 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1731 }, | |
| 3112 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 1732 }, | |
| 3113 | .{ .char = 'x', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1733 }, | |
| 3112 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 3, .child_index = 1731 }, | |
| 3113 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1732 }, | |
| 3114 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 1733 }, | |
| 3115 | .{ .char = 'x', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1734 }, | |
| 3114 | 3116 | .{ .char = 'n', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 236 }, |
| 3115 | 3117 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 857 }, |
| 3116 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1734 }, | |
| 3118 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1735 }, | |
| 3117 | 3119 | .{ .char = 'i', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 863 }, |
| 3118 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1735 }, | |
| 3120 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1736 }, | |
| 3119 | 3121 | .{ .char = 'h', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 867 }, |
| 3120 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 7, .child_index = 1736 }, | |
| 3121 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1735 }, | |
| 3122 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 8, .child_index = 1737 }, | |
| 3123 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 13, .child_index = 1739 }, | |
| 3124 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 25, .child_index = 1740 }, | |
| 3125 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 40, .child_index = 1741 }, | |
| 3126 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 1742 }, | |
| 3127 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 1743 }, | |
| 3128 | .{ .char = 'f', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 1744 }, | |
| 3129 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1745 }, | |
| 3130 | .{ .char = 'p', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 1746 }, | |
| 3131 | .{ .char = 'z', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1747 }, | |
| 3122 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 7, .child_index = 1737 }, | |
| 3123 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1736 }, | |
| 3124 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 8, .child_index = 1738 }, | |
| 3125 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 13, .child_index = 1740 }, | |
| 3126 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 25, .child_index = 1741 }, | |
| 3127 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 40, .child_index = 1742 }, | |
| 3128 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 1743 }, | |
| 3129 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 1744 }, | |
| 3130 | .{ .char = 'f', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 1745 }, | |
| 3131 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1746 }, | |
| 3132 | .{ .char = 'p', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 1747 }, | |
| 3133 | .{ .char = 'z', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1748 }, | |
| 3132 | 3134 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 567 }, |
| 3133 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1748 }, | |
| 3134 | .{ .char = 'p', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 1749 }, | |
| 3135 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1749 }, | |
| 3136 | .{ .char = 'p', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 1750 }, | |
| 3135 | 3137 | .{ .char = '6', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 633 }, |
| 3136 | 3138 | .{ .char = '6', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 633 }, |
| 3137 | 3139 | .{ .char = 'g', .end_of_word = true, .end_of_list = true, .number = 1, .child_index = 0 }, |
| 3138 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 16, .child_index = 1750 }, | |
| 3139 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1751 }, | |
| 3140 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1752 }, | |
| 3141 | .{ .char = 'p', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 1753 }, | |
| 3142 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 1754 }, | |
| 3143 | .{ .char = 'h', .end_of_word = false, .end_of_list = true, .number = 10, .child_index = 1755 }, | |
| 3140 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 16, .child_index = 1751 }, | |
| 3141 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1752 }, | |
| 3142 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1753 }, | |
| 3143 | .{ .char = 'p', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 1754 }, | |
| 3144 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 1755 }, | |
| 3145 | .{ .char = 'h', .end_of_word = false, .end_of_list = true, .number = 10, .child_index = 1756 }, | |
| 3144 | 3146 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 569 }, |
| 3145 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 1756 }, | |
| 3147 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 1757 }, | |
| 3146 | 3148 | .{ .char = 'g', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 1208 }, |
| 3147 | .{ .char = 'a', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 1757 }, | |
| 3148 | .{ .char = 'm', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 1759 }, | |
| 3149 | .{ .char = 'n', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 1761 }, | |
| 3149 | .{ .char = 'a', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 1758 }, | |
| 3150 | .{ .char = 'm', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 1760 }, | |
| 3151 | .{ .char = 'n', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 1762 }, | |
| 3150 | 3152 | .{ .char = 'o', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 572 }, |
| 3151 | .{ .char = 's', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 1762 }, | |
| 3153 | .{ .char = 's', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 1763 }, | |
| 3152 | 3154 | .{ .char = 'x', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 649 }, |
| 3153 | .{ .char = 'k', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1763 }, | |
| 3155 | .{ .char = 'k', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1764 }, | |
| 3154 | 3156 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 641 }, |
| 3155 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1764 }, | |
| 3156 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1765 }, | |
| 3157 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1766 }, | |
| 3158 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 1767 }, | |
| 3159 | .{ .char = 'c', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 1768 }, | |
| 3160 | .{ .char = 'm', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 1770 }, | |
| 3161 | .{ .char = 'p', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 1771 }, | |
| 3162 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1772 }, | |
| 3163 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1773 }, | |
| 3164 | .{ .char = 'c', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 1774 }, | |
| 3165 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1771 }, | |
| 3166 | .{ .char = 'c', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 1775 }, | |
| 3167 | .{ .char = 'l', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 1777 }, | |
| 3168 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 1777 }, | |
| 3169 | .{ .char = 'v', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1778 }, | |
| 3170 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1779 }, | |
| 3171 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 1780 }, | |
| 3172 | .{ .char = 'a', .end_of_word = true, .end_of_list = true, .number = 4, .child_index = 1782 }, | |
| 3173 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1783 }, | |
| 3174 | .{ .char = 'e', .end_of_word = true, .end_of_list = true, .number = 4, .child_index = 1784 }, | |
| 3175 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1785 }, | |
| 3176 | .{ .char = 'v', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 1786 }, | |
| 3157 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1765 }, | |
| 3158 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1766 }, | |
| 3159 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1767 }, | |
| 3160 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 1768 }, | |
| 3161 | .{ .char = 'c', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 1769 }, | |
| 3162 | .{ .char = 'm', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 1771 }, | |
| 3163 | .{ .char = 'p', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 1772 }, | |
| 3164 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1773 }, | |
| 3165 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1774 }, | |
| 3166 | .{ .char = 'c', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 1775 }, | |
| 3167 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1772 }, | |
| 3168 | .{ .char = 'c', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 1776 }, | |
| 3169 | .{ .char = 'l', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 1778 }, | |
| 3170 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 1778 }, | |
| 3171 | .{ .char = 'v', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1779 }, | |
| 3172 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1780 }, | |
| 3173 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 1781 }, | |
| 3174 | .{ .char = 'a', .end_of_word = true, .end_of_list = true, .number = 4, .child_index = 1783 }, | |
| 3175 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1784 }, | |
| 3176 | .{ .char = 'e', .end_of_word = true, .end_of_list = true, .number = 4, .child_index = 1785 }, | |
| 3177 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1786 }, | |
| 3178 | .{ .char = 'v', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 1787 }, | |
| 3177 | 3179 | .{ .char = '1', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 632 }, |
| 3178 | .{ .char = '3', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 1787 }, | |
| 3180 | .{ .char = '3', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 1788 }, | |
| 3179 | 3181 | .{ .char = '6', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 633 }, |
| 3180 | .{ .char = 'w', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1788 }, | |
| 3181 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 1789 }, | |
| 3182 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1790 }, | |
| 3183 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1791 }, | |
| 3184 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1792 }, | |
| 3185 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1793 }, | |
| 3186 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1794 }, | |
| 3187 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 5, .child_index = 1795 }, | |
| 3188 | .{ .char = '2', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 1796 }, | |
| 3182 | .{ .char = 'w', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1789 }, | |
| 3183 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 1790 }, | |
| 3184 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1791 }, | |
| 3185 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1792 }, | |
| 3186 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1793 }, | |
| 3187 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1794 }, | |
| 3188 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1795 }, | |
| 3189 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 5, .child_index = 1796 }, | |
| 3190 | .{ .char = '2', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 1797 }, | |
| 3189 | 3191 | .{ .char = '6', .end_of_word = true, .end_of_list = true, .number = 1, .child_index = 0 }, |
| 3190 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1797 }, | |
| 3192 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1798 }, | |
| 3191 | 3193 | .{ .char = 'n', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 236 }, |
| 3192 | 3194 | .{ .char = 's', .end_of_word = true, .end_of_list = true, .number = 1, .child_index = 0 }, |
| 3193 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1798 }, | |
| 3194 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1799 }, | |
| 3195 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1800 }, | |
| 3196 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 1801 }, | |
| 3197 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1803 }, | |
| 3198 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 1804 }, | |
| 3199 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 40, .child_index = 1805 }, | |
| 3200 | .{ .char = '2', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1796 }, | |
| 3201 | .{ .char = 't', .end_of_word = true, .end_of_list = true, .number = 2, .child_index = 1806 }, | |
| 3202 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1807 }, | |
| 3203 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1808 }, | |
| 3204 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1809 }, | |
| 3205 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 5, .child_index = 1810 }, | |
| 3206 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1811 }, | |
| 3207 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1812 }, | |
| 3208 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1813 }, | |
| 3209 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1814 }, | |
| 3210 | .{ .char = 'v', .end_of_word = false, .end_of_list = true, .number = 5, .child_index = 1815 }, | |
| 3211 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1816 }, | |
| 3212 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1817 }, | |
| 3213 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1818 }, | |
| 3214 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 1819 }, | |
| 3215 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1751 }, | |
| 3216 | .{ .char = 's', .end_of_word = true, .end_of_list = true, .number = 3, .child_index = 1820 }, | |
| 3217 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1822 }, | |
| 3218 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1823 }, | |
| 3195 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1799 }, | |
| 3196 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1800 }, | |
| 3197 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1801 }, | |
| 3198 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 1802 }, | |
| 3199 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1804 }, | |
| 3200 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 1805 }, | |
| 3201 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 40, .child_index = 1806 }, | |
| 3202 | .{ .char = '2', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1797 }, | |
| 3203 | .{ .char = 't', .end_of_word = true, .end_of_list = true, .number = 2, .child_index = 1807 }, | |
| 3204 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1808 }, | |
| 3205 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1809 }, | |
| 3206 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1810 }, | |
| 3207 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 5, .child_index = 1811 }, | |
| 3208 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1812 }, | |
| 3209 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1813 }, | |
| 3210 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1814 }, | |
| 3211 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1815 }, | |
| 3212 | .{ .char = 'v', .end_of_word = false, .end_of_list = true, .number = 5, .child_index = 1816 }, | |
| 3213 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1817 }, | |
| 3214 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1818 }, | |
| 3215 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1819 }, | |
| 3216 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 1820 }, | |
| 3217 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1752 }, | |
| 3218 | .{ .char = 's', .end_of_word = true, .end_of_list = true, .number = 3, .child_index = 1821 }, | |
| 3219 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1823 }, | |
| 3219 | 3220 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1824 }, |
| 3220 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1825 }, | |
| 3221 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1825 }, | |
| 3222 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1826 }, | |
| 3221 | 3223 | .{ .char = 'a', .end_of_word = true, .end_of_list = true, .number = 4, .child_index = 1479 }, |
| 3222 | 3224 | .{ .char = 'd', .end_of_word = true, .end_of_list = true, .number = 4, .child_index = 1479 }, |
| 3223 | .{ .char = 'x', .end_of_word = false, .end_of_list = true, .number = 3, .child_index = 1826 }, | |
| 3224 | .{ .char = 'y', .end_of_word = true, .end_of_list = true, .number = 2, .child_index = 1827 }, | |
| 3225 | .{ .char = 't', .end_of_word = true, .end_of_list = true, .number = 2, .child_index = 1827 }, | |
| 3226 | .{ .char = 'y', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 1828 }, | |
| 3227 | .{ .char = 'f', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 1829 }, | |
| 3228 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 1830 }, | |
| 3229 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1831 }, | |
| 3230 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 1832 }, | |
| 3231 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1833 }, | |
| 3232 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1834 }, | |
| 3225 | .{ .char = 'x', .end_of_word = false, .end_of_list = true, .number = 3, .child_index = 1827 }, | |
| 3226 | .{ .char = 'y', .end_of_word = true, .end_of_list = true, .number = 2, .child_index = 1828 }, | |
| 3227 | .{ .char = 't', .end_of_word = true, .end_of_list = true, .number = 2, .child_index = 1828 }, | |
| 3228 | .{ .char = 'y', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 1829 }, | |
| 3229 | .{ .char = 'f', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 1830 }, | |
| 3230 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 1831 }, | |
| 3231 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1832 }, | |
| 3232 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 1833 }, | |
| 3233 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1834 }, | |
| 3233 | 3234 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1835 }, |
| 3234 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 1836 }, | |
| 3235 | .{ .char = 'g', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 1837 }, | |
| 3235 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1836 }, | |
| 3236 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 1837 }, | |
| 3237 | .{ .char = 'g', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 1838 }, | |
| 3236 | 3238 | .{ .char = 'y', .end_of_word = true, .end_of_list = true, .number = 3, .child_index = 1278 }, |
| 3237 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 1838 }, | |
| 3238 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1839 }, | |
| 3239 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 8, .child_index = 1840 }, | |
| 3240 | .{ .char = 'y', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1841 }, | |
| 3241 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1842 }, | |
| 3242 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 9, .child_index = 1843 }, | |
| 3243 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 1844 }, | |
| 3239 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 1839 }, | |
| 3240 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1840 }, | |
| 3241 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 8, .child_index = 1841 }, | |
| 3242 | .{ .char = 'y', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1842 }, | |
| 3243 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1843 }, | |
| 3244 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 9, .child_index = 1844 }, | |
| 3245 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 1845 }, | |
| 3244 | 3246 | .{ .char = 'o', .end_of_word = true, .end_of_list = true, .number = 4, .child_index = 1479 }, |
| 3245 | 3247 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1674 }, |
| 3246 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 8, .child_index = 1845 }, | |
| 3247 | .{ .char = 'e', .end_of_word = false, .end_of_list = false, .number = 5, .child_index = 1847 }, | |
| 3248 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 8, .child_index = 1846 }, | |
| 3249 | .{ .char = 'e', .end_of_word = false, .end_of_list = false, .number = 5, .child_index = 1848 }, | |
| 3248 | 3250 | .{ .char = 'f', .end_of_word = true, .end_of_list = false, .number = 3, .child_index = 1489 }, |
| 3249 | 3251 | .{ .char = 'l', .end_of_word = true, .end_of_list = true, .number = 1, .child_index = 0 }, |
| 3250 | 3252 | .{ .char = '_', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 1458 }, |
| 3251 | 3253 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1327 }, |
| 3252 | .{ .char = 'l', .end_of_word = false, .end_of_list = false, .number = 4, .child_index = 1848 }, | |
| 3254 | .{ .char = 'l', .end_of_word = false, .end_of_list = false, .number = 4, .child_index = 1849 }, | |
| 3253 | 3255 | .{ .char = 'n', .end_of_word = true, .end_of_list = true, .number = 4, .child_index = 1479 }, |
| 3254 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1849 }, | |
| 3255 | 3256 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1850 }, |
| 3257 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1851 }, | |
| 3256 | 3258 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 3, .child_index = 287 }, |
| 3257 | .{ .char = 's', .end_of_word = true, .end_of_list = true, .number = 8, .child_index = 1851 }, | |
| 3259 | .{ .char = 's', .end_of_word = true, .end_of_list = true, .number = 8, .child_index = 1852 }, | |
| 3258 | 3260 | .{ .char = 'g', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 419 }, |
| 3259 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1854 }, | |
| 3260 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1855 }, | |
| 3261 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1856 }, | |
| 3262 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1857 }, | |
| 3263 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1858 }, | |
| 3264 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1859 }, | |
| 3265 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 1860 }, | |
| 3266 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1861 }, | |
| 3261 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1855 }, | |
| 3262 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1856 }, | |
| 3263 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1857 }, | |
| 3264 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1858 }, | |
| 3265 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1859 }, | |
| 3266 | .{ .char = 'g', .end_of_word = true, .end_of_list = true, .number = 3, .child_index = 1860 }, | |
| 3267 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1861 }, | |
| 3268 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 1862 }, | |
| 3269 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1863 }, | |
| 3267 | 3270 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 448 }, |
| 3268 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1862 }, | |
| 3269 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 7, .child_index = 1863 }, | |
| 3270 | .{ .char = 'l', .end_of_word = false, .end_of_list = false, .number = 4, .child_index = 1864 }, | |
| 3271 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 1865 }, | |
| 3272 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 13, .child_index = 1866 }, | |
| 3273 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 25, .child_index = 1872 }, | |
| 3274 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 40, .child_index = 1883 }, | |
| 3275 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 1884 }, | |
| 3276 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 1885 }, | |
| 3271 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1864 }, | |
| 3272 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 7, .child_index = 1865 }, | |
| 3273 | .{ .char = 'l', .end_of_word = false, .end_of_list = false, .number = 4, .child_index = 1866 }, | |
| 3274 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 1867 }, | |
| 3275 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 13, .child_index = 1868 }, | |
| 3276 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 25, .child_index = 1874 }, | |
| 3277 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 40, .child_index = 1885 }, | |
| 3277 | 3278 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 1886 }, |
| 3278 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1887 }, | |
| 3279 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 1888 }, | |
| 3280 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1889 }, | |
| 3279 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 1887 }, | |
| 3280 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 1888 }, | |
| 3281 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1889 }, | |
| 3282 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 1890 }, | |
| 3283 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1891 }, | |
| 3281 | 3284 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 657 }, |
| 3282 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 1890 }, | |
| 3283 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 16, .child_index = 1891 }, | |
| 3285 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 1892 }, | |
| 3286 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 16, .child_index = 1893 }, | |
| 3284 | 3287 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 571 }, |
| 3285 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1892 }, | |
| 3286 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 1893 }, | |
| 3287 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 1894 }, | |
| 3288 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 10, .child_index = 1895 }, | |
| 3289 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 1896 }, | |
| 3288 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1894 }, | |
| 3289 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 1895 }, | |
| 3290 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 1896 }, | |
| 3291 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 10, .child_index = 1897 }, | |
| 3292 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 1898 }, | |
| 3290 | 3293 | .{ .char = 'd', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 448 }, |
| 3291 | 3294 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 448 }, |
| 3292 | 3295 | .{ .char = 'a', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 453 }, |
| 3293 | 3296 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 447 }, |
| 3294 | 3297 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 510 }, |
| 3295 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1897 }, | |
| 3296 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1898 }, | |
| 3297 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1899 }, | |
| 3298 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1900 }, | |
| 3299 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1901 }, | |
| 3300 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 1902 }, | |
| 3301 | .{ .char = 'c', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 1774 }, | |
| 3302 | .{ .char = 'p', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1903 }, | |
| 3303 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1904 }, | |
| 3304 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1774 }, | |
| 3305 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1905 }, | |
| 3306 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1906 }, | |
| 3307 | .{ .char = 'p', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1903 }, | |
| 3308 | .{ .char = 'a', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 1905 }, | |
| 3309 | .{ .char = 'p', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1903 }, | |
| 3310 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 1775 }, | |
| 3298 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1899 }, | |
| 3299 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1900 }, | |
| 3300 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1901 }, | |
| 3301 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1902 }, | |
| 3302 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1903 }, | |
| 3303 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 1904 }, | |
| 3304 | .{ .char = 'c', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 1775 }, | |
| 3305 | .{ .char = 'p', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1905 }, | |
| 3306 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1906 }, | |
| 3307 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1775 }, | |
| 3311 | 3308 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1907 }, |
| 3312 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1835 }, | |
| 3313 | .{ .char = 'd', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 1908 }, | |
| 3309 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1908 }, | |
| 3310 | .{ .char = 'p', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1905 }, | |
| 3311 | .{ .char = 'a', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 1907 }, | |
| 3312 | .{ .char = 'p', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1905 }, | |
| 3313 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 1776 }, | |
| 3314 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1909 }, | |
| 3315 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1836 }, | |
| 3316 | .{ .char = 'd', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 1910 }, | |
| 3314 | 3317 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 281 }, |
| 3315 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 3, .child_index = 1909 }, | |
| 3316 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1911 }, | |
| 3317 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 3, .child_index = 1912 }, | |
| 3318 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 3, .child_index = 1911 }, | |
| 3319 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1913 }, | |
| 3320 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 3, .child_index = 1914 }, | |
| 3318 | 3321 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 301 }, |
| 3319 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 1915 }, | |
| 3322 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 1917 }, | |
| 3320 | 3323 | .{ .char = '2', .end_of_word = true, .end_of_list = true, .number = 1, .child_index = 0 }, |
| 3321 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1916 }, | |
| 3322 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 1917 }, | |
| 3323 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1918 }, | |
| 3324 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1919 }, | |
| 3325 | .{ .char = 'f', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1920 }, | |
| 3326 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1921 }, | |
| 3327 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1922 }, | |
| 3328 | .{ .char = 'g', .end_of_word = false, .end_of_list = true, .number = 5, .child_index = 1923 }, | |
| 3324 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1918 }, | |
| 3325 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 1919 }, | |
| 3326 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1920 }, | |
| 3327 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1921 }, | |
| 3328 | .{ .char = 'f', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1922 }, | |
| 3329 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1923 }, | |
| 3330 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1924 }, | |
| 3331 | .{ .char = 'g', .end_of_word = false, .end_of_list = true, .number = 5, .child_index = 1925 }, | |
| 3329 | 3332 | .{ .char = '8', .end_of_word = true, .end_of_list = true, .number = 1, .child_index = 0 }, |
| 3330 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1924 }, | |
| 3331 | .{ .char = 'p', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1925 }, | |
| 3332 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1926 }, | |
| 3333 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1927 }, | |
| 3334 | .{ .char = 'c', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 1928 }, | |
| 3335 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1929 }, | |
| 3336 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1930 }, | |
| 3337 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 1931 }, | |
| 3338 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 40, .child_index = 1932 }, | |
| 3339 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1933 }, | |
| 3340 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1934 }, | |
| 3333 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1926 }, | |
| 3334 | .{ .char = 'p', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1927 }, | |
| 3335 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1928 }, | |
| 3336 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1929 }, | |
| 3337 | .{ .char = 'c', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 1930 }, | |
| 3338 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1931 }, | |
| 3339 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1932 }, | |
| 3340 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 1933 }, | |
| 3341 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 40, .child_index = 1934 }, | |
| 3342 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1935 }, | |
| 3343 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1936 }, | |
| 3341 | 3344 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1513 }, |
| 3342 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1935 }, | |
| 3343 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 5, .child_index = 1936 }, | |
| 3344 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1937 }, | |
| 3345 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1937 }, | |
| 3346 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 5, .child_index = 1938 }, | |
| 3347 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1939 }, | |
| 3345 | 3348 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 698 }, |
| 3346 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1938 }, | |
| 3347 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1939 }, | |
| 3349 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1940 }, | |
| 3350 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1941 }, | |
| 3348 | 3351 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 5, .child_index = 1241 }, |
| 3349 | .{ .char = 'w', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1940 }, | |
| 3350 | .{ .char = 'g', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1941 }, | |
| 3352 | .{ .char = 'w', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1942 }, | |
| 3353 | .{ .char = 'g', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1943 }, | |
| 3351 | 3354 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 998 }, |
| 3352 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 1942 }, | |
| 3353 | .{ .char = 'e', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 1943 }, | |
| 3354 | .{ .char = 'g', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1944 }, | |
| 3355 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 1944 }, | |
| 3356 | .{ .char = 'e', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 1945 }, | |
| 3357 | .{ .char = 'g', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1946 }, | |
| 3355 | 3358 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 640 }, |
| 3356 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1945 }, | |
| 3359 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1947 }, | |
| 3357 | 3360 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1525 }, |
| 3358 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1946 }, | |
| 3359 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 3, .child_index = 1947 }, | |
| 3360 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1949 }, | |
| 3361 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1948 }, | |
| 3362 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 3, .child_index = 1949 }, | |
| 3363 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1951 }, | |
| 3361 | 3364 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 1318 }, |
| 3362 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 1950 }, | |
| 3363 | .{ .char = 'w', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 1951 }, | |
| 3364 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1952 }, | |
| 3365 | .{ .char = 'p', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 1953 }, | |
| 3365 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 1952 }, | |
| 3366 | .{ .char = 'w', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 1953 }, | |
| 3366 | 3367 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1954 }, |
| 3367 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1955 }, | |
| 3368 | .{ .char = 'p', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 1955 }, | |
| 3369 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1956 }, | |
| 3370 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1957 }, | |
| 3368 | 3371 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 486 }, |
| 3369 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 1956 }, | |
| 3370 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 1957 }, | |
| 3371 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 1958 }, | |
| 3372 | .{ .char = 'v', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1959 }, | |
| 3373 | .{ .char = 'h', .end_of_word = false, .end_of_list = true, .number = 8, .child_index = 1960 }, | |
| 3374 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1961 }, | |
| 3375 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1962 }, | |
| 3376 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 9, .child_index = 1963 }, | |
| 3377 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 1950 }, | |
| 3378 | .{ .char = 'l', .end_of_word = false, .end_of_list = false, .number = 4, .child_index = 1967 }, | |
| 3379 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 1968 }, | |
| 3380 | .{ .char = 'v', .end_of_word = false, .end_of_list = true, .number = 5, .child_index = 1969 }, | |
| 3372 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 1958 }, | |
| 3373 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 1959 }, | |
| 3374 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 1960 }, | |
| 3375 | .{ .char = 'v', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1961 }, | |
| 3376 | .{ .char = 'h', .end_of_word = false, .end_of_list = true, .number = 8, .child_index = 1962 }, | |
| 3377 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1963 }, | |
| 3378 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1964 }, | |
| 3379 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 9, .child_index = 1965 }, | |
| 3380 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 1952 }, | |
| 3381 | .{ .char = 'l', .end_of_word = false, .end_of_list = false, .number = 4, .child_index = 1969 }, | |
| 3382 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 1970 }, | |
| 3383 | .{ .char = 'v', .end_of_word = false, .end_of_list = true, .number = 5, .child_index = 1971 }, | |
| 3381 | 3384 | .{ .char = 'n', .end_of_word = true, .end_of_list = true, .number = 4, .child_index = 1479 }, |
| 3382 | 3385 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1280 }, |
| 3383 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1922 }, | |
| 3386 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1924 }, | |
| 3384 | 3387 | .{ .char = 'f', .end_of_word = true, .end_of_list = false, .number = 3, .child_index = 1489 }, |
| 3385 | 3388 | .{ .char = 'l', .end_of_word = true, .end_of_list = false, .number = 1, .child_index = 0 }, |
| 3386 | .{ .char = 'p', .end_of_word = false, .end_of_list = true, .number = 3, .child_index = 1970 }, | |
| 3387 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1971 }, | |
| 3388 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1972 }, | |
| 3389 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1973 }, | |
| 3390 | .{ .char = 'h', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1974 }, | |
| 3391 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1975 }, | |
| 3392 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1976 }, | |
| 3393 | .{ .char = 'p', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 1977 }, | |
| 3394 | .{ .char = 'h', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1978 }, | |
| 3389 | .{ .char = 'p', .end_of_word = false, .end_of_list = true, .number = 3, .child_index = 1972 }, | |
| 3390 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1973 }, | |
| 3391 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1974 }, | |
| 3392 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1975 }, | |
| 3393 | .{ .char = 'h', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1976 }, | |
| 3394 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1977 }, | |
| 3395 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 1978 }, | |
| 3396 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1979 }, | |
| 3397 | .{ .char = 'p', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 1980 }, | |
| 3398 | .{ .char = 'h', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1981 }, | |
| 3395 | 3399 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 559 }, |
| 3396 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 7, .child_index = 1979 }, | |
| 3397 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 1980 }, | |
| 3398 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 1981 }, | |
| 3400 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 7, .child_index = 1982 }, | |
| 3401 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 1983 }, | |
| 3402 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 1984 }, | |
| 3399 | 3403 | .{ .char = 'c', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 1579 }, |
| 3400 | 3404 | .{ .char = 'e', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 1580 }, |
| 3401 | 3405 | .{ .char = 'f', .end_of_word = false, .end_of_list = false, .number = 7, .child_index = 1587 }, |
| 3402 | .{ .char = 'i', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 1982 }, | |
| 3406 | .{ .char = 'i', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 1985 }, | |
| 3403 | 3407 | .{ .char = 'l', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 1583 }, |
| 3404 | 3408 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1588 }, |
| 3405 | .{ .char = 'a', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 1983 }, | |
| 3406 | .{ .char = 'c', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 1985 }, | |
| 3409 | .{ .char = 'a', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 1986 }, | |
| 3410 | .{ .char = 'c', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 1988 }, | |
| 3407 | 3411 | .{ .char = 'e', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 791 }, |
| 3408 | 3412 | .{ .char = 'f', .end_of_word = false, .end_of_list = false, .number = 8, .child_index = 792 }, |
| 3409 | 3413 | .{ .char = 'l', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 794 }, |
| 3410 | 3414 | .{ .char = 'm', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 795 }, |
| 3411 | 3415 | .{ .char = 'n', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 797 }, |
| 3412 | 3416 | .{ .char = 'o', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 798 }, |
| 3413 | .{ .char = 's', .end_of_word = false, .end_of_list = false, .number = 3, .child_index = 1986 }, | |
| 3417 | .{ .char = 's', .end_of_word = false, .end_of_list = false, .number = 3, .child_index = 1989 }, | |
| 3414 | 3418 | .{ .char = 't', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 1586 }, |
| 3415 | 3419 | .{ .char = 'x', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 804 }, |
| 3416 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 40, .child_index = 1988 }, | |
| 3417 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 1995 }, | |
| 3418 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 1996 }, | |
| 3419 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 1997 }, | |
| 3420 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 40, .child_index = 1991 }, | |
| 3421 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 1998 }, | |
| 3422 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 1999 }, | |
| 3423 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2000 }, | |
| 3420 | 3424 | .{ .char = 'z', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 559 }, |
| 3421 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 1998 }, | |
| 3422 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1999 }, | |
| 3423 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2000 }, | |
| 3424 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 16, .child_index = 2001 }, | |
| 3425 | .{ .char = 'p', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2002 }, | |
| 3426 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2003 }, | |
| 3427 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2004 }, | |
| 3428 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 10, .child_index = 2005 }, | |
| 3425 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2001 }, | |
| 3426 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2002 }, | |
| 3427 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2003 }, | |
| 3428 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 16, .child_index = 2004 }, | |
| 3429 | .{ .char = 'p', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2005 }, | |
| 3430 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2006 }, | |
| 3431 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2007 }, | |
| 3432 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 10, .child_index = 2008 }, | |
| 3429 | 3433 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 791 }, |
| 3430 | 3434 | .{ .char = 'b', .end_of_word = true, .end_of_list = true, .number = 1, .child_index = 0 }, |
| 3431 | .{ .char = 'f', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2006 }, | |
| 3432 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2007 }, | |
| 3433 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2008 }, | |
| 3434 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2009 }, | |
| 3435 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2010 }, | |
| 3436 | .{ .char = 'y', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2011 }, | |
| 3437 | .{ .char = 'v', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2012 }, | |
| 3438 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2011 }, | |
| 3439 | .{ .char = 'f', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2011 }, | |
| 3440 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2013 }, | |
| 3441 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2014 }, | |
| 3442 | .{ .char = 'u', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 2015 }, | |
| 3443 | .{ .char = 'w', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2016 }, | |
| 3444 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2017 }, | |
| 3435 | .{ .char = 'f', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2009 }, | |
| 3436 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2010 }, | |
| 3437 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2011 }, | |
| 3438 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2012 }, | |
| 3439 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2013 }, | |
| 3440 | .{ .char = 'y', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2014 }, | |
| 3441 | .{ .char = 'v', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2015 }, | |
| 3442 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2014 }, | |
| 3443 | .{ .char = 'f', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2014 }, | |
| 3444 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2016 }, | |
| 3445 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2017 }, | |
| 3446 | .{ .char = 'u', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 2018 }, | |
| 3447 | .{ .char = 'w', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2019 }, | |
| 3448 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2020 }, | |
| 3445 | 3449 | .{ .char = 'a', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 1519 }, |
| 3446 | .{ .char = 'd', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 2018 }, | |
| 3447 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2019 }, | |
| 3448 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2020 }, | |
| 3449 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2021 }, | |
| 3450 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2022 }, | |
| 3450 | .{ .char = 'd', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 2021 }, | |
| 3451 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2022 }, | |
| 3452 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2023 }, | |
| 3453 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2024 }, | |
| 3454 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2025 }, | |
| 3451 | 3455 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 503 }, |
| 3452 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2023 }, | |
| 3453 | .{ .char = 'y', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2024 }, | |
| 3454 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2025 }, | |
| 3455 | .{ .char = 'v', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2026 }, | |
| 3456 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2026 }, | |
| 3457 | .{ .char = 'y', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2027 }, | |
| 3458 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2028 }, | |
| 3459 | .{ .char = 'v', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2029 }, | |
| 3456 | 3460 | .{ .char = 'n', .end_of_word = true, .end_of_list = true, .number = 5, .child_index = 1295 }, |
| 3457 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2027 }, | |
| 3458 | .{ .char = 'p', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2028 }, | |
| 3461 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2030 }, | |
| 3462 | .{ .char = 'p', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2031 }, | |
| 3459 | 3463 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 281 }, |
| 3460 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2029 }, | |
| 3464 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2032 }, | |
| 3461 | 3465 | .{ .char = 'f', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 554 }, |
| 3462 | .{ .char = 'p', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2030 }, | |
| 3463 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2031 }, | |
| 3464 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2032 }, | |
| 3465 | .{ .char = 'w', .end_of_word = false, .end_of_list = true, .number = 40, .child_index = 2033 }, | |
| 3466 | .{ .char = 'w', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2034 }, | |
| 3467 | .{ .char = 'p', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2035 }, | |
| 3468 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2036 }, | |
| 3469 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 5, .child_index = 2037 }, | |
| 3470 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2038 }, | |
| 3471 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2039 }, | |
| 3466 | .{ .char = 'p', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2033 }, | |
| 3467 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2034 }, | |
| 3468 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2035 }, | |
| 3469 | .{ .char = 'w', .end_of_word = false, .end_of_list = true, .number = 40, .child_index = 2036 }, | |
| 3470 | .{ .char = 'w', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2037 }, | |
| 3471 | .{ .char = 'p', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2038 }, | |
| 3472 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2039 }, | |
| 3473 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 5, .child_index = 2040 }, | |
| 3474 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2041 }, | |
| 3475 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2042 }, | |
| 3472 | 3476 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 419 }, |
| 3473 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2040 }, | |
| 3474 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2041 }, | |
| 3475 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2042 }, | |
| 3476 | .{ .char = 'q', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2043 }, | |
| 3477 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2044 }, | |
| 3478 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2045 }, | |
| 3479 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2046 }, | |
| 3480 | .{ .char = 'c', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 2047 }, | |
| 3481 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2048 }, | |
| 3482 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2049 }, | |
| 3483 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2050 }, | |
| 3484 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2051 }, | |
| 3485 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2052 }, | |
| 3486 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2053 }, | |
| 3487 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2054 }, | |
| 3488 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1745 }, | |
| 3489 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2055 }, | |
| 3490 | .{ .char = 'f', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2056 }, | |
| 3491 | .{ .char = 't', .end_of_word = true, .end_of_list = true, .number = 4, .child_index = 2057 }, | |
| 3492 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2059 }, | |
| 3493 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 8, .child_index = 2060 }, | |
| 3494 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2063 }, | |
| 3495 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2064 }, | |
| 3496 | .{ .char = 'a', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 1757 }, | |
| 3497 | .{ .char = 'm', .end_of_word = false, .end_of_list = false, .number = 5, .child_index = 2065 }, | |
| 3477 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2043 }, | |
| 3478 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2044 }, | |
| 3479 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2045 }, | |
| 3480 | .{ .char = 'q', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2046 }, | |
| 3481 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2047 }, | |
| 3482 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2048 }, | |
| 3483 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2049 }, | |
| 3484 | .{ .char = 'c', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 2050 }, | |
| 3485 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2051 }, | |
| 3486 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2052 }, | |
| 3487 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2053 }, | |
| 3488 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2054 }, | |
| 3489 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2055 }, | |
| 3490 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2056 }, | |
| 3491 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2057 }, | |
| 3492 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1746 }, | |
| 3493 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2058 }, | |
| 3494 | .{ .char = 'f', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2059 }, | |
| 3495 | .{ .char = 't', .end_of_word = true, .end_of_list = true, .number = 4, .child_index = 2060 }, | |
| 3496 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2062 }, | |
| 3497 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 8, .child_index = 2063 }, | |
| 3498 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2066 }, | |
| 3499 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2067 }, | |
| 3500 | .{ .char = 'a', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 1758 }, | |
| 3501 | .{ .char = 'm', .end_of_word = false, .end_of_list = false, .number = 5, .child_index = 2068 }, | |
| 3498 | 3502 | .{ .char = 'o', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 572 }, |
| 3499 | 3503 | .{ .char = 'x', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 649 }, |
| 3500 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2068 }, | |
| 3501 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2069 }, | |
| 3502 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 5, .child_index = 1923 }, | |
| 3504 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2071 }, | |
| 3505 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2072 }, | |
| 3506 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 5, .child_index = 1925 }, | |
| 3503 | 3507 | .{ .char = 'i', .end_of_word = true, .end_of_list = true, .number = 3, .child_index = 352 }, |
| 3504 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2070 }, | |
| 3505 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2071 }, | |
| 3506 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2072 }, | |
| 3507 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2073 }, | |
| 3508 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1982 }, | |
| 3508 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2073 }, | |
| 3509 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2074 }, | |
| 3510 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2075 }, | |
| 3511 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2076 }, | |
| 3512 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1985 }, | |
| 3513 | .{ .char = 'p', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2077 }, | |
| 3509 | 3514 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1661 }, |
| 3510 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2074 }, | |
| 3511 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2075 }, | |
| 3512 | .{ .char = 'h', .end_of_word = false, .end_of_list = true, .number = 7, .child_index = 2076 }, | |
| 3513 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2077 }, | |
| 3514 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2078 }, | |
| 3515 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2078 }, | |
| 3516 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2079 }, | |
| 3517 | .{ .char = 'h', .end_of_word = false, .end_of_list = true, .number = 7, .child_index = 2080 }, | |
| 3518 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2081 }, | |
| 3519 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2082 }, | |
| 3515 | 3520 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 236 }, |
| 3516 | 3521 | .{ .char = 'd', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 851 }, |
| 3517 | 3522 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 851 }, |
| 3518 | 3523 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 854 }, |
| 3519 | 3524 | .{ .char = 't', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 864 }, |
| 3520 | 3525 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 865 }, |
| 3521 | .{ .char = 'a', .end_of_word = false, .end_of_list = false, .number = 12, .child_index = 2079 }, | |
| 3522 | .{ .char = 'm', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 1759 }, | |
| 3523 | .{ .char = 'n', .end_of_word = false, .end_of_list = false, .number = 6, .child_index = 2081 }, | |
| 3524 | .{ .char = 'o', .end_of_word = false, .end_of_list = false, .number = 6, .child_index = 2082 }, | |
| 3525 | .{ .char = 's', .end_of_word = false, .end_of_list = false, .number = 6, .child_index = 2083 }, | |
| 3526 | .{ .char = 'u', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 2084 }, | |
| 3527 | .{ .char = 'x', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2085 }, | |
| 3528 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2086 }, | |
| 3529 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2087 }, | |
| 3530 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2088 }, | |
| 3531 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2089 }, | |
| 3532 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2090 }, | |
| 3533 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2091 }, | |
| 3534 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 16, .child_index = 2092 }, | |
| 3535 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2093 }, | |
| 3536 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2094 }, | |
| 3537 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2095 }, | |
| 3538 | .{ .char = 'g', .end_of_word = false, .end_of_list = true, .number = 10, .child_index = 2096 }, | |
| 3539 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2097 }, | |
| 3526 | .{ .char = 'a', .end_of_word = false, .end_of_list = false, .number = 12, .child_index = 2083 }, | |
| 3527 | .{ .char = 'm', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 1760 }, | |
| 3528 | .{ .char = 'n', .end_of_word = false, .end_of_list = false, .number = 6, .child_index = 2085 }, | |
| 3529 | .{ .char = 'o', .end_of_word = false, .end_of_list = false, .number = 6, .child_index = 2086 }, | |
| 3530 | .{ .char = 's', .end_of_word = false, .end_of_list = false, .number = 6, .child_index = 2087 }, | |
| 3531 | .{ .char = 'u', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 2088 }, | |
| 3532 | .{ .char = 'x', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2089 }, | |
| 3533 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2090 }, | |
| 3534 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2091 }, | |
| 3535 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2092 }, | |
| 3536 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2093 }, | |
| 3537 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2094 }, | |
| 3538 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2095 }, | |
| 3539 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 16, .child_index = 2096 }, | |
| 3540 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2097 }, | |
| 3541 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2098 }, | |
| 3542 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2099 }, | |
| 3543 | .{ .char = 'g', .end_of_word = false, .end_of_list = true, .number = 10, .child_index = 2100 }, | |
| 3544 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2101 }, | |
| 3540 | 3545 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 476 }, |
| 3541 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2098 }, | |
| 3542 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2099 }, | |
| 3543 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2100 }, | |
| 3544 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2101 }, | |
| 3545 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2011 }, | |
| 3546 | .{ .char = 'f', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2102 }, | |
| 3546 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2102 }, | |
| 3547 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2103 }, | |
| 3548 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2104 }, | |
| 3549 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2105 }, | |
| 3550 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2014 }, | |
| 3551 | .{ .char = 'f', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2106 }, | |
| 3547 | 3552 | .{ .char = 'w', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 447 }, |
| 3548 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2103 }, | |
| 3549 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2104 }, | |
| 3550 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2105 }, | |
| 3551 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2106 }, | |
| 3552 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2107 }, | |
| 3553 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2108 }, | |
| 3554 | .{ .char = 'h', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2109 }, | |
| 3555 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2110 }, | |
| 3556 | .{ .char = 'x', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2111 }, | |
| 3557 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2112 }, | |
| 3553 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2107 }, | |
| 3554 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2108 }, | |
| 3555 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2109 }, | |
| 3556 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2110 }, | |
| 3557 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2111 }, | |
| 3558 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2112 }, | |
| 3559 | .{ .char = 'h', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2113 }, | |
| 3560 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2114 }, | |
| 3561 | .{ .char = 'x', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2115 }, | |
| 3562 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2116 }, | |
| 3558 | 3563 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 281 }, |
| 3559 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2113 }, | |
| 3560 | .{ .char = 'b', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2114 }, | |
| 3561 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2115 }, | |
| 3564 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2117 }, | |
| 3565 | .{ .char = 'b', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2118 }, | |
| 3566 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2119 }, | |
| 3562 | 3567 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 568 }, |
| 3563 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2116 }, | |
| 3564 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2117 }, | |
| 3565 | .{ .char = 'n', .end_of_word = true, .end_of_list = true, .number = 2, .child_index = 2118 }, | |
| 3566 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 40, .child_index = 2119 }, | |
| 3567 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2120 }, | |
| 3568 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2120 }, | |
| 3568 | 3569 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2121 }, |
| 3570 | .{ .char = 'n', .end_of_word = true, .end_of_list = true, .number = 2, .child_index = 2122 }, | |
| 3571 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 40, .child_index = 2123 }, | |
| 3572 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2124 }, | |
| 3573 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2125 }, | |
| 3569 | 3574 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 335 }, |
| 3570 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 5, .child_index = 2122 }, | |
| 3575 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 5, .child_index = 2126 }, | |
| 3571 | 3576 | .{ .char = 'f', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 437 }, |
| 3572 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2123 }, | |
| 3573 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2124 }, | |
| 3577 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2127 }, | |
| 3578 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2128 }, | |
| 3574 | 3579 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 448 }, |
| 3575 | .{ .char = 'r', .end_of_word = true, .end_of_list = true, .number = 2, .child_index = 2125 }, | |
| 3576 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1822 }, | |
| 3577 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2126 }, | |
| 3580 | .{ .char = 'r', .end_of_word = true, .end_of_list = true, .number = 2, .child_index = 2129 }, | |
| 3581 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1823 }, | |
| 3582 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2130 }, | |
| 3578 | 3583 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1423 }, |
| 3579 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2041 }, | |
| 3580 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2127 }, | |
| 3581 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2128 }, | |
| 3582 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2129 }, | |
| 3584 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2044 }, | |
| 3585 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2131 }, | |
| 3586 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2132 }, | |
| 3587 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2133 }, | |
| 3583 | 3588 | .{ .char = 'r', .end_of_word = true, .end_of_list = true, .number = 4, .child_index = 1479 }, |
| 3584 | 3589 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 1689 }, |
| 3585 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2130 }, | |
| 3586 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2131 }, | |
| 3587 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2132 }, | |
| 3588 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2133 }, | |
| 3589 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2135 }, | |
| 3590 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2134 }, | |
| 3591 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2135 }, | |
| 3592 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2136 }, | |
| 3593 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2137 }, | |
| 3594 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2139 }, | |
| 3590 | 3595 | .{ .char = 'g', .end_of_word = true, .end_of_list = false, .number = 1, .child_index = 0 }, |
| 3591 | 3596 | .{ .char = 'l', .end_of_word = true, .end_of_list = true, .number = 2, .child_index = 695 }, |
| 3592 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2136 }, | |
| 3593 | .{ .char = 'a', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 2137 }, | |
| 3594 | .{ .char = 'b', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 2138 }, | |
| 3595 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 5, .child_index = 2139 }, | |
| 3596 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2141 }, | |
| 3597 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2142 }, | |
| 3598 | .{ .char = 'a', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 2143 }, | |
| 3599 | .{ .char = 'i', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 2144 }, | |
| 3597 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2140 }, | |
| 3598 | .{ .char = 'a', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 2141 }, | |
| 3599 | .{ .char = 'b', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 2142 }, | |
| 3600 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 5, .child_index = 2143 }, | |
| 3601 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2145 }, | |
| 3602 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2146 }, | |
| 3603 | .{ .char = 'a', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 2147 }, | |
| 3604 | .{ .char = 'i', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 2148 }, | |
| 3600 | 3605 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 640 }, |
| 3601 | .{ .char = 'f', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2145 }, | |
| 3602 | .{ .char = 'g', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2146 }, | |
| 3603 | .{ .char = 'y', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2147 }, | |
| 3604 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2148 }, | |
| 3605 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1974 }, | |
| 3606 | .{ .char = 'b', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2149 }, | |
| 3607 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2150 }, | |
| 3608 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2151 }, | |
| 3609 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 7, .child_index = 2152 }, | |
| 3610 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2157 }, | |
| 3611 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2108 }, | |
| 3612 | .{ .char = 'd', .end_of_word = false, .end_of_list = false, .number = 6, .child_index = 2161 }, | |
| 3613 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2161 }, | |
| 3614 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2162 }, | |
| 3606 | .{ .char = 'f', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2149 }, | |
| 3607 | .{ .char = 'g', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2150 }, | |
| 3608 | .{ .char = 'y', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2151 }, | |
| 3609 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2152 }, | |
| 3610 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1976 }, | |
| 3611 | .{ .char = 'b', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2153 }, | |
| 3612 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2154 }, | |
| 3613 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2155 }, | |
| 3614 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2156 }, | |
| 3615 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 7, .child_index = 2157 }, | |
| 3616 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2162 }, | |
| 3617 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2112 }, | |
| 3618 | .{ .char = 'd', .end_of_word = false, .end_of_list = false, .number = 6, .child_index = 2166 }, | |
| 3619 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2166 }, | |
| 3620 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2167 }, | |
| 3615 | 3621 | .{ .char = 'r', .end_of_word = true, .end_of_list = true, .number = 6, .child_index = 974 }, |
| 3616 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2163 }, | |
| 3617 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 1759 }, | |
| 3618 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2082 }, | |
| 3622 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2168 }, | |
| 3623 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 1760 }, | |
| 3624 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2086 }, | |
| 3619 | 3625 | .{ .char = 'e', .end_of_word = true, .end_of_list = true, .number = 6, .child_index = 974 }, |
| 3620 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2164 }, | |
| 3626 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2169 }, | |
| 3621 | 3627 | .{ .char = 'h', .end_of_word = true, .end_of_list = true, .number = 6, .child_index = 974 }, |
| 3622 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2165 }, | |
| 3623 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2166 }, | |
| 3624 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2167 }, | |
| 3625 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 16, .child_index = 2168 }, | |
| 3628 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2170 }, | |
| 3629 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2171 }, | |
| 3630 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2172 }, | |
| 3631 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 16, .child_index = 2173 }, | |
| 3626 | 3632 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 559 }, |
| 3627 | .{ .char = 'E', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2169 }, | |
| 3628 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2170 }, | |
| 3629 | .{ .char = 'e', .end_of_word = true, .end_of_list = true, .number = 10, .child_index = 2171 }, | |
| 3633 | .{ .char = 'E', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2174 }, | |
| 3634 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2175 }, | |
| 3635 | .{ .char = 'e', .end_of_word = true, .end_of_list = true, .number = 10, .child_index = 2176 }, | |
| 3630 | 3636 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 559 }, |
| 3631 | .{ .char = 'g', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2176 }, | |
| 3632 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2177 }, | |
| 3633 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2178 }, | |
| 3634 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2179 }, | |
| 3635 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2180 }, | |
| 3636 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2181 }, | |
| 3637 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2182 }, | |
| 3638 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2183 }, | |
| 3639 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2184 }, | |
| 3640 | .{ .char = 'p', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2185 }, | |
| 3641 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2157 }, | |
| 3642 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2186 }, | |
| 3643 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2187 }, | |
| 3644 | .{ .char = 'p', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 572 }, | |
| 3637 | .{ .char = 'g', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2181 }, | |
| 3638 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2182 }, | |
| 3639 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2183 }, | |
| 3640 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2184 }, | |
| 3641 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2185 }, | |
| 3642 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2186 }, | |
| 3643 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2187 }, | |
| 3645 | 3644 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2188 }, |
| 3646 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2189 }, | |
| 3647 | .{ .char = 'y', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2190 }, | |
| 3648 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2191 }, | |
| 3649 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2192 }, | |
| 3650 | .{ .char = 'b', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2193 }, | |
| 3651 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2194 }, | |
| 3652 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 40, .child_index = 2195 }, | |
| 3653 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2196 }, | |
| 3654 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2197 }, | |
| 3655 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 5, .child_index = 2198 }, | |
| 3656 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2199 }, | |
| 3657 | .{ .char = 'f', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2200 }, | |
| 3658 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1943 }, | |
| 3659 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2201 }, | |
| 3660 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2202 }, | |
| 3661 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2203 }, | |
| 3662 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2204 }, | |
| 3663 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2205 }, | |
| 3664 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2206 }, | |
| 3665 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2207 }, | |
| 3666 | .{ .char = 'd', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 2208 }, | |
| 3667 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2209 }, | |
| 3668 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2210 }, | |
| 3669 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2211 }, | |
| 3670 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2212 }, | |
| 3671 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2213 }, | |
| 3672 | .{ .char = 'i', .end_of_word = false, .end_of_list = false, .number = 3, .child_index = 2214 }, | |
| 3673 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2215 }, | |
| 3674 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2216 }, | |
| 3675 | .{ .char = 'y', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2141 }, | |
| 3676 | .{ .char = 'x', .end_of_word = true, .end_of_list = true, .number = 2, .child_index = 2217 }, | |
| 3677 | .{ .char = 'n', .end_of_word = true, .end_of_list = true, .number = 2, .child_index = 2217 }, | |
| 3678 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2157 }, | |
| 3679 | .{ .char = 'h', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2145 }, | |
| 3680 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2218 }, | |
| 3681 | .{ .char = 'p', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2219 }, | |
| 3645 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2189 }, | |
| 3646 | .{ .char = 'p', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2190 }, | |
| 3647 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2162 }, | |
| 3648 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2191 }, | |
| 3649 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2192 }, | |
| 3650 | .{ .char = 'p', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 572 }, | |
| 3651 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2193 }, | |
| 3652 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2194 }, | |
| 3653 | .{ .char = 'y', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2195 }, | |
| 3654 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2196 }, | |
| 3655 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2197 }, | |
| 3656 | .{ .char = 'b', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2198 }, | |
| 3657 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2199 }, | |
| 3658 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 40, .child_index = 2200 }, | |
| 3659 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2201 }, | |
| 3660 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2202 }, | |
| 3661 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 5, .child_index = 2203 }, | |
| 3662 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2204 }, | |
| 3663 | .{ .char = 'f', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2205 }, | |
| 3664 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1945 }, | |
| 3665 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2206 }, | |
| 3666 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2207 }, | |
| 3667 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2208 }, | |
| 3668 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2209 }, | |
| 3669 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2210 }, | |
| 3670 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2211 }, | |
| 3671 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2212 }, | |
| 3672 | .{ .char = 'd', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 2213 }, | |
| 3673 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2214 }, | |
| 3674 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2215 }, | |
| 3675 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2216 }, | |
| 3676 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2217 }, | |
| 3677 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2218 }, | |
| 3678 | .{ .char = 'i', .end_of_word = false, .end_of_list = false, .number = 3, .child_index = 2219 }, | |
| 3679 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2220 }, | |
| 3680 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2221 }, | |
| 3681 | .{ .char = 'y', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2145 }, | |
| 3682 | .{ .char = 'x', .end_of_word = true, .end_of_list = true, .number = 2, .child_index = 2222 }, | |
| 3683 | .{ .char = 'n', .end_of_word = true, .end_of_list = true, .number = 2, .child_index = 2222 }, | |
| 3684 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2162 }, | |
| 3685 | .{ .char = 'h', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2149 }, | |
| 3686 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2223 }, | |
| 3687 | .{ .char = 'p', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2224 }, | |
| 3682 | 3688 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 559 }, |
| 3683 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2220 }, | |
| 3689 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2225 }, | |
| 3690 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2226 }, | |
| 3684 | 3691 | .{ .char = 'g', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 559 }, |
| 3685 | .{ .char = 'a', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 1757 }, | |
| 3686 | .{ .char = 'm', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 1759 }, | |
| 3692 | .{ .char = 'a', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 1758 }, | |
| 3693 | .{ .char = 'm', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 1760 }, | |
| 3687 | 3694 | .{ .char = 'o', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 572 }, |
| 3688 | .{ .char = 's', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 1762 }, | |
| 3695 | .{ .char = 's', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 1763 }, | |
| 3689 | 3696 | .{ .char = 'x', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 649 }, |
| 3690 | 3697 | .{ .char = '1', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 632 }, |
| 3691 | .{ .char = '3', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 1787 }, | |
| 3698 | .{ .char = '3', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 1788 }, | |
| 3692 | 3699 | .{ .char = '6', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 633 }, |
| 3693 | 3700 | .{ .char = '8', .end_of_word = true, .end_of_list = true, .number = 1, .child_index = 0 }, |
| 3694 | 3701 | .{ .char = 'd', .end_of_word = true, .end_of_list = true, .number = 6, .child_index = 974 }, |
| 3695 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2161 }, | |
| 3702 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2166 }, | |
| 3696 | 3703 | .{ .char = 'b', .end_of_word = true, .end_of_list = true, .number = 6, .child_index = 974 }, |
| 3697 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2221 }, | |
| 3698 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2222 }, | |
| 3704 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2227 }, | |
| 3705 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2228 }, | |
| 3699 | 3706 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 314 }, |
| 3700 | 3707 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 1421 }, |
| 3701 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 16, .child_index = 2223 }, | |
| 3702 | .{ .char = 'x', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2224 }, | |
| 3703 | .{ .char = 't', .end_of_word = true, .end_of_list = true, .number = 2, .child_index = 2225 }, | |
| 3708 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 16, .child_index = 2229 }, | |
| 3709 | .{ .char = 'x', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2230 }, | |
| 3710 | .{ .char = 't', .end_of_word = true, .end_of_list = true, .number = 2, .child_index = 2231 }, | |
| 3704 | 3711 | .{ .char = '1', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 632 }, |
| 3705 | 3712 | .{ .char = '8', .end_of_word = true, .end_of_list = false, .number = 1, .child_index = 0 }, |
| 3706 | .{ .char = 'A', .end_of_word = false, .end_of_list = false, .number = 3, .child_index = 2226 }, | |
| 3707 | .{ .char = 'P', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 2035 }, | |
| 3708 | .{ .char = 'S', .end_of_word = false, .end_of_list = true, .number = 3, .child_index = 2227 }, | |
| 3709 | .{ .char = 'M', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2228 }, | |
| 3710 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2229 }, | |
| 3711 | .{ .char = 'f', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2230 }, | |
| 3713 | .{ .char = 'A', .end_of_word = false, .end_of_list = false, .number = 3, .child_index = 2232 }, | |
| 3714 | .{ .char = 'P', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 2038 }, | |
| 3715 | .{ .char = 'S', .end_of_word = false, .end_of_list = true, .number = 3, .child_index = 2233 }, | |
| 3716 | .{ .char = 'M', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2234 }, | |
| 3717 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2235 }, | |
| 3718 | .{ .char = 'f', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2236 }, | |
| 3712 | 3719 | .{ .char = 'h', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 512 }, |
| 3713 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2231 }, | |
| 3714 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2232 }, | |
| 3715 | .{ .char = 'h', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2233 }, | |
| 3716 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2234 }, | |
| 3717 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2235 }, | |
| 3718 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2236 }, | |
| 3719 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2237 }, | |
| 3720 | .{ .char = 'z', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2238 }, | |
| 3721 | .{ .char = 'y', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2239 }, | |
| 3720 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2237 }, | |
| 3721 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2238 }, | |
| 3722 | .{ .char = 'h', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2239 }, | |
| 3723 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2240 }, | |
| 3724 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2241 }, | |
| 3725 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2242 }, | |
| 3726 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2243 }, | |
| 3727 | .{ .char = 'z', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2244 }, | |
| 3728 | .{ .char = 'y', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2245 }, | |
| 3722 | 3729 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 649 }, |
| 3723 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2240 }, | |
| 3730 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2246 }, | |
| 3724 | 3731 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 335 }, |
| 3725 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2241 }, | |
| 3726 | .{ .char = 'j', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2242 }, | |
| 3727 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2243 }, | |
| 3728 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 40, .child_index = 2244 }, | |
| 3729 | .{ .char = 'h', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2245 }, | |
| 3730 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2201 }, | |
| 3731 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 5, .child_index = 2246 }, | |
| 3732 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2247 }, | |
| 3733 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2248 }, | |
| 3732 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2247 }, | |
| 3733 | .{ .char = 'j', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2248 }, | |
| 3734 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2249 }, | |
| 3735 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 40, .child_index = 2250 }, | |
| 3736 | .{ .char = 'h', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2251 }, | |
| 3737 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2206 }, | |
| 3738 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 5, .child_index = 2252 }, | |
| 3739 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2253 }, | |
| 3740 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2254 }, | |
| 3734 | 3741 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 566 }, |
| 3735 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2249 }, | |
| 3736 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1752 }, | |
| 3737 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2250 }, | |
| 3738 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2251 }, | |
| 3739 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2252 }, | |
| 3740 | .{ .char = 'v', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2253 }, | |
| 3741 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2254 }, | |
| 3742 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2231 }, | |
| 3743 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2255 }, | |
| 3744 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2256 }, | |
| 3745 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2257 }, | |
| 3746 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2258 }, | |
| 3747 | .{ .char = 'g', .end_of_word = false, .end_of_list = true, .number = 3, .child_index = 2259 }, | |
| 3748 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2260 }, | |
| 3749 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2261 }, | |
| 3750 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2262 }, | |
| 3751 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2263 }, | |
| 3752 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2264 }, | |
| 3753 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2265 }, | |
| 3754 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2266 }, | |
| 3755 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2267 }, | |
| 3756 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 16, .child_index = 2268 }, | |
| 3757 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2269 }, | |
| 3742 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2255 }, | |
| 3743 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1753 }, | |
| 3744 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2256 }, | |
| 3745 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2257 }, | |
| 3746 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2258 }, | |
| 3747 | .{ .char = 'v', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2259 }, | |
| 3748 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2260 }, | |
| 3749 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2237 }, | |
| 3750 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2261 }, | |
| 3751 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2262 }, | |
| 3752 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2263 }, | |
| 3753 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2264 }, | |
| 3754 | .{ .char = 'g', .end_of_word = false, .end_of_list = true, .number = 3, .child_index = 2265 }, | |
| 3755 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2266 }, | |
| 3756 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2267 }, | |
| 3757 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2268 }, | |
| 3758 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2269 }, | |
| 3759 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2270 }, | |
| 3760 | .{ .char = 'k', .end_of_word = true, .end_of_list = true, .number = 2, .child_index = 2271 }, | |
| 3761 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2272 }, | |
| 3762 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2273 }, | |
| 3763 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2274 }, | |
| 3764 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 16, .child_index = 2275 }, | |
| 3765 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2276 }, | |
| 3758 | 3766 | .{ .char = '1', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 632 }, |
| 3759 | 3767 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 3, .child_index = 1430 }, |
| 3760 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 3, .child_index = 2270 }, | |
| 3761 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2271 }, | |
| 3768 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 3, .child_index = 2277 }, | |
| 3769 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2278 }, | |
| 3762 | 3770 | .{ .char = 'h', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 559 }, |
| 3763 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2272 }, | |
| 3771 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2279 }, | |
| 3764 | 3772 | .{ .char = 'w', .end_of_word = true, .end_of_list = true, .number = 1, .child_index = 0 }, |
| 3765 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2273 }, | |
| 3766 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2274 }, | |
| 3767 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2275 }, | |
| 3768 | .{ .char = 'f', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2276 }, | |
| 3769 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2277 }, | |
| 3770 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2278 }, | |
| 3771 | .{ .char = 'e', .end_of_word = true, .end_of_list = true, .number = 4, .child_index = 2279 }, | |
| 3773 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2280 }, | |
| 3774 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2281 }, | |
| 3775 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2282 }, | |
| 3776 | .{ .char = 'f', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2283 }, | |
| 3777 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2284 }, | |
| 3778 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2285 }, | |
| 3779 | .{ .char = 'e', .end_of_word = true, .end_of_list = true, .number = 4, .child_index = 2286 }, | |
| 3772 | 3780 | .{ .char = 'p', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 559 }, |
| 3773 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2281 }, | |
| 3774 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2282 }, | |
| 3781 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2288 }, | |
| 3782 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2289 }, | |
| 3775 | 3783 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1546 }, |
| 3776 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2283 }, | |
| 3777 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 40, .child_index = 2284 }, | |
| 3778 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2296 }, | |
| 3784 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2290 }, | |
| 3785 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 40, .child_index = 2291 }, | |
| 3786 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2303 }, | |
| 3779 | 3787 | .{ .char = 'm', .end_of_word = true, .end_of_list = true, .number = 5, .child_index = 1295 }, |
| 3780 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2297 }, | |
| 3781 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2298 }, | |
| 3782 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2299 }, | |
| 3788 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2304 }, | |
| 3789 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2305 }, | |
| 3790 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2306 }, | |
| 3783 | 3791 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 559 }, |
| 3784 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2300 }, | |
| 3785 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2301 }, | |
| 3786 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2303 }, | |
| 3787 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2304 }, | |
| 3788 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2305 }, | |
| 3789 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2306 }, | |
| 3790 | .{ .char = 'h', .end_of_word = true, .end_of_list = true, .number = 2, .child_index = 2307 }, | |
| 3791 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2308 }, | |
| 3792 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 3, .child_index = 2309 }, | |
| 3793 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2310 }, | |
| 3794 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2197 }, | |
| 3792 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2307 }, | |
| 3793 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2308 }, | |
| 3794 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2310 }, | |
| 3795 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2311 }, | |
| 3796 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2312 }, | |
| 3797 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2313 }, | |
| 3798 | .{ .char = 'h', .end_of_word = true, .end_of_list = true, .number = 2, .child_index = 2314 }, | |
| 3799 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2315 }, | |
| 3800 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 3, .child_index = 2316 }, | |
| 3801 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2317 }, | |
| 3802 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2202 }, | |
| 3795 | 3803 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 561 }, |
| 3796 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2312 }, | |
| 3797 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2313 }, | |
| 3798 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2314 }, | |
| 3799 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2315 }, | |
| 3800 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2316 }, | |
| 3801 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 16, .child_index = 2317 }, | |
| 3802 | .{ .char = 'h', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2319 }, | |
| 3804 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2319 }, | |
| 3805 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2320 }, | |
| 3806 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2171 }, | |
| 3807 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2321 }, | |
| 3808 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2322 }, | |
| 3809 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2323 }, | |
| 3810 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 16, .child_index = 2324 }, | |
| 3811 | .{ .char = 'h', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2326 }, | |
| 3803 | 3812 | .{ .char = 'b', .end_of_word = true, .end_of_list = true, .number = 3, .child_index = 1434 }, |
| 3804 | .{ .char = 'k', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2320 }, | |
| 3805 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2321 }, | |
| 3806 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2322 }, | |
| 3807 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2323 }, | |
| 3808 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2324 }, | |
| 3809 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2325 }, | |
| 3810 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2326 }, | |
| 3811 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2327 }, | |
| 3812 | .{ .char = 'f', .end_of_word = true, .end_of_list = false, .number = 2, .child_index = 2225 }, | |
| 3813 | .{ .char = 'k', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2327 }, | |
| 3814 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2328 }, | |
| 3815 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2329 }, | |
| 3816 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2330 }, | |
| 3817 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2331 }, | |
| 3818 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2332 }, | |
| 3819 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2333 }, | |
| 3820 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2334 }, | |
| 3821 | .{ .char = 'f', .end_of_word = true, .end_of_list = false, .number = 2, .child_index = 2231 }, | |
| 3813 | 3822 | .{ .char = 'l', .end_of_word = true, .end_of_list = true, .number = 1, .child_index = 0 }, |
| 3814 | 3823 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 486 }, |
| 3815 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2328 }, | |
| 3816 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2329 }, | |
| 3817 | .{ .char = 'a', .end_of_word = false, .end_of_list = false, .number = 6, .child_index = 2330 }, | |
| 3818 | .{ .char = 'b', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 2335 }, | |
| 3819 | .{ .char = 'c', .end_of_word = false, .end_of_list = false, .number = 5, .child_index = 2336 }, | |
| 3820 | .{ .char = 'e', .end_of_word = false, .end_of_list = false, .number = 3, .child_index = 2339 }, | |
| 3821 | .{ .char = 'f', .end_of_word = false, .end_of_list = false, .number = 3, .child_index = 2340 }, | |
| 3822 | .{ .char = 'l', .end_of_word = false, .end_of_list = false, .number = 3, .child_index = 2342 }, | |
| 3823 | .{ .char = 'm', .end_of_word = false, .end_of_list = false, .number = 6, .child_index = 2343 }, | |
| 3824 | .{ .char = 'n', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 2345 }, | |
| 3825 | .{ .char = 'p', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 2346 }, | |
| 3826 | .{ .char = 'r', .end_of_word = false, .end_of_list = false, .number = 3, .child_index = 2347 }, | |
| 3827 | .{ .char = 's', .end_of_word = false, .end_of_list = false, .number = 4, .child_index = 2349 }, | |
| 3828 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 3, .child_index = 2352 }, | |
| 3829 | .{ .char = 'p', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2354 }, | |
| 3830 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2355 }, | |
| 3831 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2356 }, | |
| 3832 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2357 }, | |
| 3833 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2358 }, | |
| 3824 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2335 }, | |
| 3825 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2336 }, | |
| 3826 | .{ .char = 'a', .end_of_word = false, .end_of_list = false, .number = 6, .child_index = 2337 }, | |
| 3827 | .{ .char = 'b', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 2342 }, | |
| 3828 | .{ .char = 'c', .end_of_word = false, .end_of_list = false, .number = 5, .child_index = 2343 }, | |
| 3829 | .{ .char = 'e', .end_of_word = false, .end_of_list = false, .number = 3, .child_index = 2346 }, | |
| 3830 | .{ .char = 'f', .end_of_word = false, .end_of_list = false, .number = 3, .child_index = 2347 }, | |
| 3831 | .{ .char = 'l', .end_of_word = false, .end_of_list = false, .number = 3, .child_index = 2349 }, | |
| 3832 | .{ .char = 'm', .end_of_word = false, .end_of_list = false, .number = 6, .child_index = 2350 }, | |
| 3833 | .{ .char = 'n', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 2352 }, | |
| 3834 | .{ .char = 'p', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 2353 }, | |
| 3835 | .{ .char = 'r', .end_of_word = false, .end_of_list = false, .number = 3, .child_index = 2354 }, | |
| 3836 | .{ .char = 's', .end_of_word = false, .end_of_list = false, .number = 4, .child_index = 2356 }, | |
| 3837 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 3, .child_index = 2359 }, | |
| 3838 | .{ .char = 'p', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2361 }, | |
| 3839 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2362 }, | |
| 3840 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2363 }, | |
| 3841 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2364 }, | |
| 3842 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2365 }, | |
| 3834 | 3843 | .{ .char = 'l', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 1583 }, |
| 3835 | 3844 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1588 }, |
| 3836 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2359 }, | |
| 3845 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2366 }, | |
| 3837 | 3846 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 450 }, |
| 3838 | .{ .char = 't', .end_of_word = true, .end_of_list = true, .number = 2, .child_index = 2360 }, | |
| 3839 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2361 }, | |
| 3840 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2362 }, | |
| 3841 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2363 }, | |
| 3842 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 3, .child_index = 2364 }, | |
| 3843 | .{ .char = 'n', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 2367 }, | |
| 3847 | .{ .char = 't', .end_of_word = true, .end_of_list = true, .number = 2, .child_index = 2367 }, | |
| 3848 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2368 }, | |
| 3849 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2369 }, | |
| 3850 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2370 }, | |
| 3851 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 3, .child_index = 2371 }, | |
| 3852 | .{ .char = 'n', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 2374 }, | |
| 3844 | 3853 | .{ .char = 'p', .end_of_word = true, .end_of_list = true, .number = 1, .child_index = 0 }, |
| 3845 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2368 }, | |
| 3846 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2369 }, | |
| 3847 | .{ .char = 'x', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2370 }, | |
| 3848 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2371 }, | |
| 3849 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2372 }, | |
| 3850 | .{ .char = 'r', .end_of_word = false, .end_of_list = false, .number = 8, .child_index = 2373 }, | |
| 3851 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 8, .child_index = 2374 }, | |
| 3852 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2375 }, | |
| 3853 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2376 }, | |
| 3854 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2377 }, | |
| 3855 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2378 }, | |
| 3856 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2379 }, | |
| 3857 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2380 }, | |
| 3858 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2381 }, | |
| 3859 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2382 }, | |
| 3860 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2383 }, | |
| 3854 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2375 }, | |
| 3855 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2376 }, | |
| 3856 | .{ .char = 'x', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2377 }, | |
| 3857 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2378 }, | |
| 3858 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2379 }, | |
| 3859 | .{ .char = 'r', .end_of_word = false, .end_of_list = false, .number = 8, .child_index = 2380 }, | |
| 3860 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 8, .child_index = 2381 }, | |
| 3861 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2382 }, | |
| 3862 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2383 }, | |
| 3863 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2384 }, | |
| 3864 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2385 }, | |
| 3865 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2386 }, | |
| 3866 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2387 }, | |
| 3867 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2388 }, | |
| 3868 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2389 }, | |
| 3869 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2390 }, | |
| 3861 | 3870 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 447 }, |
| 3862 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2384 }, | |
| 3871 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2391 }, | |
| 3863 | 3872 | .{ .char = 'b', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 335 }, |
| 3864 | .{ .char = 'c', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 2385 }, | |
| 3865 | .{ .char = 'd', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 2386 }, | |
| 3866 | .{ .char = 's', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 2387 }, | |
| 3867 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2388 }, | |
| 3868 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2389 }, | |
| 3869 | .{ .char = 'a', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 2390 }, | |
| 3873 | .{ .char = 'c', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 2392 }, | |
| 3874 | .{ .char = 'd', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 2393 }, | |
| 3875 | .{ .char = 's', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 2394 }, | |
| 3876 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2395 }, | |
| 3877 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2396 }, | |
| 3878 | .{ .char = 'a', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 2397 }, | |
| 3870 | 3879 | .{ .char = 'e', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 706 }, |
| 3871 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 3, .child_index = 2391 }, | |
| 3872 | .{ .char = 'x', .end_of_word = false, .end_of_list = true, .number = 3, .child_index = 2393 }, | |
| 3873 | .{ .char = 'l', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 2394 }, | |
| 3874 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2395 }, | |
| 3875 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 3, .child_index = 2397 }, | |
| 3876 | .{ .char = 'a', .end_of_word = false, .end_of_list = false, .number = 3, .child_index = 2398 }, | |
| 3877 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 3, .child_index = 2399 }, | |
| 3878 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2400 }, | |
| 3879 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2401 }, | |
| 3880 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 3, .child_index = 2398 }, | |
| 3881 | .{ .char = 'x', .end_of_word = false, .end_of_list = true, .number = 3, .child_index = 2400 }, | |
| 3882 | .{ .char = 'l', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 2401 }, | |
| 3883 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2402 }, | |
| 3884 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 3, .child_index = 2404 }, | |
| 3885 | .{ .char = 'a', .end_of_word = false, .end_of_list = false, .number = 3, .child_index = 2405 }, | |
| 3886 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 3, .child_index = 2406 }, | |
| 3887 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2407 }, | |
| 3888 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2408 }, | |
| 3880 | 3889 | .{ .char = 'i', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 567 }, |
| 3881 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2403 }, | |
| 3882 | .{ .char = 'i', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 2404 }, | |
| 3890 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2410 }, | |
| 3891 | .{ .char = 'i', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 2411 }, | |
| 3883 | 3892 | .{ .char = 'q', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 276 }, |
| 3884 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2405 }, | |
| 3885 | .{ .char = 'a', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 2404 }, | |
| 3886 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2406 }, | |
| 3887 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2407 }, | |
| 3888 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2408 }, | |
| 3889 | .{ .char = 'g', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2409 }, | |
| 3890 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2410 }, | |
| 3891 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2411 }, | |
| 3892 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2412 }, | |
| 3893 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2413 }, | |
| 3894 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2414 }, | |
| 3895 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2415 }, | |
| 3896 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2416 }, | |
| 3897 | .{ .char = 'c', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 2417 }, | |
| 3898 | .{ .char = 'g', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 2418 }, | |
| 3899 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2419 }, | |
| 3900 | .{ .char = 'g', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2363 }, | |
| 3901 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2420 }, | |
| 3902 | .{ .char = 'b', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2421 }, | |
| 3903 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2422 }, | |
| 3893 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2412 }, | |
| 3894 | .{ .char = 'a', .end_of_word = false, .end_of_list = false, .number = 2, .child_index = 2411 }, | |
| 3895 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2413 }, | |
| 3896 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2414 }, | |
| 3897 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2415 }, | |
| 3898 | .{ .char = 'g', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2416 }, | |
| 3899 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2417 }, | |
| 3900 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2418 }, | |
| 3901 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2419 }, | |
| 3902 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2420 }, | |
| 3903 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2421 }, | |
| 3904 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2422 }, | |
| 3905 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2423 }, | |
| 3906 | .{ .char = 'c', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 2424 }, | |
| 3907 | .{ .char = 'g', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 2425 }, | |
| 3908 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2426 }, | |
| 3909 | .{ .char = 'g', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2370 }, | |
| 3910 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2427 }, | |
| 3911 | .{ .char = 'b', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2428 }, | |
| 3912 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2429 }, | |
| 3904 | 3913 | .{ .char = 't', .end_of_word = true, .end_of_list = true, .number = 6, .child_index = 974 }, |
| 3905 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2423 }, | |
| 3906 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 8, .child_index = 2424 }, | |
| 3907 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 8, .child_index = 2425 }, | |
| 3908 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2426 }, | |
| 3909 | .{ .char = 'C', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2427 }, | |
| 3910 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2428 }, | |
| 3911 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2429 }, | |
| 3912 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2430 }, | |
| 3913 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2431 }, | |
| 3914 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2432 }, | |
| 3915 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2433 }, | |
| 3916 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2434 }, | |
| 3917 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2435 }, | |
| 3914 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2430 }, | |
| 3915 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 8, .child_index = 2431 }, | |
| 3916 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 8, .child_index = 2432 }, | |
| 3917 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2433 }, | |
| 3918 | .{ .char = 'C', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2434 }, | |
| 3919 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2435 }, | |
| 3920 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2436 }, | |
| 3921 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2437 }, | |
| 3922 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2438 }, | |
| 3923 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2439 }, | |
| 3924 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2440 }, | |
| 3925 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2441 }, | |
| 3926 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2442 }, | |
| 3918 | 3927 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 335 }, |
| 3919 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2436 }, | |
| 3928 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2443 }, | |
| 3920 | 3929 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 447 }, |
| 3921 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2437 }, | |
| 3922 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2438 }, | |
| 3923 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2439 }, | |
| 3924 | .{ .char = 'p', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 2440 }, | |
| 3925 | .{ .char = 's', .end_of_word = true, .end_of_list = true, .number = 2, .child_index = 2441 }, | |
| 3926 | .{ .char = 'p', .end_of_word = true, .end_of_list = true, .number = 3, .child_index = 2442 }, | |
| 3930 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2444 }, | |
| 3931 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2445 }, | |
| 3932 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2446 }, | |
| 3933 | .{ .char = 'p', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 2447 }, | |
| 3934 | .{ .char = 's', .end_of_word = true, .end_of_list = true, .number = 2, .child_index = 2448 }, | |
| 3935 | .{ .char = 'p', .end_of_word = true, .end_of_list = true, .number = 3, .child_index = 2449 }, | |
| 3927 | 3936 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 649 }, |
| 3928 | 3937 | .{ .char = 'a', .end_of_word = true, .end_of_list = false, .number = 1, .child_index = 0 }, |
| 3929 | 3938 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 448 }, |
| 3930 | .{ .char = 'g', .end_of_word = true, .end_of_list = true, .number = 3, .child_index = 2442 }, | |
| 3931 | .{ .char = 'x', .end_of_word = true, .end_of_list = true, .number = 3, .child_index = 2444 }, | |
| 3932 | .{ .char = 'n', .end_of_word = true, .end_of_list = true, .number = 3, .child_index = 2444 }, | |
| 3933 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2446 }, | |
| 3934 | .{ .char = 'p', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 2447 }, | |
| 3939 | .{ .char = 'g', .end_of_word = true, .end_of_list = true, .number = 3, .child_index = 2449 }, | |
| 3940 | .{ .char = 'x', .end_of_word = true, .end_of_list = true, .number = 3, .child_index = 2451 }, | |
| 3941 | .{ .char = 'n', .end_of_word = true, .end_of_list = true, .number = 3, .child_index = 2451 }, | |
| 3942 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2453 }, | |
| 3943 | .{ .char = 'p', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 2454 }, | |
| 3935 | 3944 | .{ .char = 'w', .end_of_word = true, .end_of_list = true, .number = 1, .child_index = 0 }, |
| 3936 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2448 }, | |
| 3937 | .{ .char = 'n', .end_of_word = true, .end_of_list = true, .number = 2, .child_index = 2441 }, | |
| 3938 | .{ .char = 'b', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2436 }, | |
| 3939 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2449 }, | |
| 3940 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2450 }, | |
| 3945 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2455 }, | |
| 3946 | .{ .char = 'n', .end_of_word = true, .end_of_list = true, .number = 2, .child_index = 2448 }, | |
| 3947 | .{ .char = 'b', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2443 }, | |
| 3948 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2456 }, | |
| 3949 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2457 }, | |
| 3941 | 3950 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 572 }, |
| 3942 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2451 }, | |
| 3943 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2452 }, | |
| 3944 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2453 }, | |
| 3945 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2454 }, | |
| 3946 | .{ .char = 'b', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2455 }, | |
| 3947 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2456 }, | |
| 3948 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2457 }, | |
| 3949 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2458 }, | |
| 3950 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2459 }, | |
| 3951 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2460 }, | |
| 3952 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2461 }, | |
| 3953 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2462 }, | |
| 3954 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2463 }, | |
| 3955 | .{ .char = 'h', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2464 }, | |
| 3956 | .{ .char = 'w', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 768 }, | |
| 3957 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 8, .child_index = 2374 }, | |
| 3958 | .{ .char = 't', .end_of_word = true, .end_of_list = true, .number = 8, .child_index = 2465 }, | |
| 3959 | .{ .char = 'g', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2467 }, | |
| 3960 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2468 }, | |
| 3961 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2469 }, | |
| 3951 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2458 }, | |
| 3952 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2459 }, | |
| 3953 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2460 }, | |
| 3954 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2461 }, | |
| 3955 | .{ .char = 'b', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2462 }, | |
| 3956 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2463 }, | |
| 3957 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2464 }, | |
| 3958 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2465 }, | |
| 3959 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2466 }, | |
| 3960 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2467 }, | |
| 3961 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2468 }, | |
| 3962 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2469 }, | |
| 3962 | 3963 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2470 }, |
| 3963 | .{ .char = 'g', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2471 }, | |
| 3964 | .{ .char = 'h', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2472 }, | |
| 3965 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2473 }, | |
| 3966 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2474 }, | |
| 3967 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2475 }, | |
| 3968 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2476 }, | |
| 3969 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2477 }, | |
| 3970 | .{ .char = 'n', .end_of_word = true, .end_of_list = true, .number = 2, .child_index = 2478 }, | |
| 3971 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2479 }, | |
| 3972 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2480 }, | |
| 3973 | .{ .char = 'y', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1751 }, | |
| 3964 | .{ .char = 'h', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2471 }, | |
| 3965 | .{ .char = 'w', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 768 }, | |
| 3966 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 8, .child_index = 2381 }, | |
| 3967 | .{ .char = 't', .end_of_word = true, .end_of_list = true, .number = 8, .child_index = 2472 }, | |
| 3968 | .{ .char = 'g', .end_of_word = false, .end_of_list = true, .number = 6, .child_index = 2474 }, | |
| 3969 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2475 }, | |
| 3970 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2476 }, | |
| 3971 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2477 }, | |
| 3972 | .{ .char = 'g', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2478 }, | |
| 3973 | .{ .char = 'h', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2479 }, | |
| 3974 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2480 }, | |
| 3975 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2481 }, | |
| 3976 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2482 }, | |
| 3977 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2483 }, | |
| 3978 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2484 }, | |
| 3979 | .{ .char = 'n', .end_of_word = true, .end_of_list = true, .number = 2, .child_index = 2485 }, | |
| 3980 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2486 }, | |
| 3981 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2487 }, | |
| 3982 | .{ .char = 'y', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1752 }, | |
| 3974 | 3983 | .{ .char = 'h', .end_of_word = true, .end_of_list = true, .number = 1, .child_index = 0 }, |
| 3975 | .{ .char = '1', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 2481 }, | |
| 3984 | .{ .char = '1', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 2488 }, | |
| 3976 | 3985 | .{ .char = '2', .end_of_word = true, .end_of_list = true, .number = 1, .child_index = 0 }, |
| 3977 | .{ .char = 'i', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 2262 }, | |
| 3986 | .{ .char = 'i', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 2268 }, | |
| 3978 | 3987 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 561 }, |
| 3979 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2482 }, | |
| 3980 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2483 }, | |
| 3981 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2484 }, | |
| 3988 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2489 }, | |
| 3989 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2490 }, | |
| 3990 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2491 }, | |
| 3982 | 3991 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 555 }, |
| 3983 | .{ .char = 'b', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2485 }, | |
| 3984 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2486 }, | |
| 3985 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2487 }, | |
| 3986 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2488 }, | |
| 3987 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2489 }, | |
| 3988 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2490 }, | |
| 3989 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2491 }, | |
| 3990 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2492 }, | |
| 3991 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2493 }, | |
| 3992 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2494 }, | |
| 3993 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2495 }, | |
| 3994 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2496 }, | |
| 3992 | .{ .char = 'b', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2492 }, | |
| 3993 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2493 }, | |
| 3994 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2494 }, | |
| 3995 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2495 }, | |
| 3996 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2496 }, | |
| 3997 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2497 }, | |
| 3998 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2498 }, | |
| 3999 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2499 }, | |
| 4000 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2500 }, | |
| 4001 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2501 }, | |
| 4002 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2502 }, | |
| 4003 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2503 }, | |
| 3995 | 4004 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 450 }, |
| 3996 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2025 }, | |
| 3997 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2497 }, | |
| 3998 | .{ .char = '6', .end_of_word = false, .end_of_list = false, .number = 4, .child_index = 2498 }, | |
| 3999 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 3, .child_index = 2499 }, | |
| 4000 | .{ .char = 'e', .end_of_word = true, .end_of_list = true, .number = 6, .child_index = 2502 }, | |
| 4001 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2506 }, | |
| 4002 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2507 }, | |
| 4003 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2508 }, | |
| 4004 | .{ .char = 'n', .end_of_word = true, .end_of_list = true, .number = 2, .child_index = 2509 }, | |
| 4005 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2510 }, | |
| 4006 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2511 }, | |
| 4007 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2512 }, | |
| 4008 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2513 }, | |
| 4009 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2514 }, | |
| 4010 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2515 }, | |
| 4005 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2028 }, | |
| 4006 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2504 }, | |
| 4007 | .{ .char = '6', .end_of_word = false, .end_of_list = false, .number = 4, .child_index = 2505 }, | |
| 4008 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 3, .child_index = 2506 }, | |
| 4009 | .{ .char = 'e', .end_of_word = true, .end_of_list = true, .number = 6, .child_index = 2509 }, | |
| 4010 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2513 }, | |
| 4011 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2514 }, | |
| 4012 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2515 }, | |
| 4013 | .{ .char = 'n', .end_of_word = true, .end_of_list = true, .number = 2, .child_index = 2516 }, | |
| 4014 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2517 }, | |
| 4015 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2518 }, | |
| 4016 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2519 }, | |
| 4017 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2520 }, | |
| 4018 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2521 }, | |
| 4019 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2522 }, | |
| 4011 | 4020 | .{ .char = '2', .end_of_word = true, .end_of_list = true, .number = 1, .child_index = 0 }, |
| 4012 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2516 }, | |
| 4013 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2517 }, | |
| 4021 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2523 }, | |
| 4022 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2524 }, | |
| 4014 | 4023 | .{ .char = '0', .end_of_word = true, .end_of_list = true, .number = 1, .child_index = 0 }, |
| 4015 | .{ .char = 'b', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2518 }, | |
| 4016 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2519 }, | |
| 4017 | .{ .char = 'd', .end_of_word = true, .end_of_list = true, .number = 2, .child_index = 2520 }, | |
| 4018 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2521 }, | |
| 4019 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2522 }, | |
| 4020 | .{ .char = 'j', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2523 }, | |
| 4021 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2524 }, | |
| 4022 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2525 }, | |
| 4023 | .{ .char = 'f', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2526 }, | |
| 4024 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2527 }, | |
| 4025 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2528 }, | |
| 4026 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2529 }, | |
| 4027 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2530 }, | |
| 4028 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2531 }, | |
| 4029 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2532 }, | |
| 4030 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2533 }, | |
| 4031 | .{ .char = '4', .end_of_word = true, .end_of_list = true, .number = 4, .child_index = 2534 }, | |
| 4032 | .{ .char = 'a', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 2535 }, | |
| 4024 | .{ .char = 'b', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2525 }, | |
| 4025 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2526 }, | |
| 4026 | .{ .char = 'd', .end_of_word = true, .end_of_list = true, .number = 2, .child_index = 2527 }, | |
| 4027 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2528 }, | |
| 4028 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2529 }, | |
| 4029 | .{ .char = 'j', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2530 }, | |
| 4030 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2531 }, | |
| 4031 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2532 }, | |
| 4032 | .{ .char = 'f', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2533 }, | |
| 4033 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2534 }, | |
| 4034 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2535 }, | |
| 4035 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2536 }, | |
| 4036 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2537 }, | |
| 4037 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2538 }, | |
| 4038 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2539 }, | |
| 4039 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2540 }, | |
| 4040 | .{ .char = '4', .end_of_word = true, .end_of_list = true, .number = 4, .child_index = 2541 }, | |
| 4041 | .{ .char = 'a', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 2542 }, | |
| 4033 | 4042 | .{ .char = 'n', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 486 }, |
| 4034 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2536 }, | |
| 4043 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2543 }, | |
| 4035 | 4044 | .{ .char = '1', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 632 }, |
| 4036 | 4045 | .{ .char = '6', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 633 }, |
| 4037 | 4046 | .{ .char = '8', .end_of_word = true, .end_of_list = false, .number = 1, .child_index = 0 }, |
| 4038 | .{ .char = 'P', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2537 }, | |
| 4039 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2538 }, | |
| 4040 | .{ .char = 'k', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2539 }, | |
| 4041 | .{ .char = 'z', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2041 }, | |
| 4042 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2540 }, | |
| 4047 | .{ .char = 'P', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2544 }, | |
| 4048 | .{ .char = 's', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2545 }, | |
| 4049 | .{ .char = 'k', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2546 }, | |
| 4050 | .{ .char = 'z', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2044 }, | |
| 4051 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2547 }, | |
| 4043 | 4052 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 512 }, |
| 4044 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1974 }, | |
| 4045 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2541 }, | |
| 4046 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2542 }, | |
| 4047 | .{ .char = 'g', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2543 }, | |
| 4053 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1976 }, | |
| 4054 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2548 }, | |
| 4055 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2549 }, | |
| 4056 | .{ .char = 'g', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2550 }, | |
| 4048 | 4057 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 301 }, |
| 4049 | .{ .char = 'v', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2544 }, | |
| 4050 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2545 }, | |
| 4058 | .{ .char = 'v', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2551 }, | |
| 4059 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2552 }, | |
| 4051 | 4060 | .{ .char = 'y', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 461 }, |
| 4052 | 4061 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 567 }, |
| 4053 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2546 }, | |
| 4054 | .{ .char = 'b', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2547 }, | |
| 4055 | .{ .char = 'z', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2548 }, | |
| 4056 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2549 }, | |
| 4057 | .{ .char = 'v', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2550 }, | |
| 4058 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1973 }, | |
| 4059 | .{ .char = 'f', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2551 }, | |
| 4062 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2553 }, | |
| 4063 | .{ .char = 'b', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2554 }, | |
| 4064 | .{ .char = 'z', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2555 }, | |
| 4065 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2556 }, | |
| 4066 | .{ .char = 'v', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2557 }, | |
| 4067 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1975 }, | |
| 4068 | .{ .char = 'f', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2558 }, | |
| 4060 | 4069 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 181 }, |
| 4061 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2552 }, | |
| 4062 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2553 }, | |
| 4063 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2554 }, | |
| 4064 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2555 }, | |
| 4065 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2556 }, | |
| 4066 | .{ .char = 'g', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2557 }, | |
| 4067 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 3, .child_index = 2499 }, | |
| 4068 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2558 }, | |
| 4070 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2559 }, | |
| 4071 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2560 }, | |
| 4072 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2561 }, | |
| 4073 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2562 }, | |
| 4074 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2563 }, | |
| 4075 | .{ .char = 'g', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2564 }, | |
| 4076 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 3, .child_index = 2506 }, | |
| 4077 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2565 }, | |
| 4069 | 4078 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 640 }, |
| 4070 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2559 }, | |
| 4071 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2560 }, | |
| 4072 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2561 }, | |
| 4073 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2015 }, | |
| 4074 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2565 }, | |
| 4075 | .{ .char = 'h', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2566 }, | |
| 4079 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2566 }, | |
| 4080 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2567 }, | |
| 4081 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 4, .child_index = 2568 }, | |
| 4082 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2018 }, | |
| 4083 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2572 }, | |
| 4084 | .{ .char = 'h', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2573 }, | |
| 4076 | 4085 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 438 }, |
| 4077 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2567 }, | |
| 4078 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2568 }, | |
| 4086 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2574 }, | |
| 4087 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2575 }, | |
| 4079 | 4088 | .{ .char = 'v', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 314 }, |
| 4080 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2569 }, | |
| 4081 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2570 }, | |
| 4082 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2252 }, | |
| 4083 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2571 }, | |
| 4084 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2572 }, | |
| 4085 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1751 }, | |
| 4086 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2573 }, | |
| 4089 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2576 }, | |
| 4090 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2577 }, | |
| 4091 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2258 }, | |
| 4092 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2578 }, | |
| 4093 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2579 }, | |
| 4094 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1752 }, | |
| 4095 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2580 }, | |
| 4087 | 4096 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 567 }, |
| 4088 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2574 }, | |
| 4089 | .{ .char = 'h', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2575 }, | |
| 4090 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2576 }, | |
| 4097 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2581 }, | |
| 4098 | .{ .char = 'h', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2582 }, | |
| 4099 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2583 }, | |
| 4091 | 4100 | .{ .char = 'q', .end_of_word = true, .end_of_list = true, .number = 1, .child_index = 0 }, |
| 4092 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2577 }, | |
| 4093 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2578 }, | |
| 4094 | .{ .char = 'b', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 2579 }, | |
| 4095 | .{ .char = 'p', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 2580 }, | |
| 4101 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2584 }, | |
| 4102 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2585 }, | |
| 4103 | .{ .char = 'b', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 2586 }, | |
| 4104 | .{ .char = 'p', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 2587 }, | |
| 4096 | 4105 | .{ .char = 's', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 511 }, |
| 4097 | 4106 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 411 }, |
| 4098 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2581 }, | |
| 4099 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2387 }, | |
| 4100 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2093 }, | |
| 4101 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2582 }, | |
| 4102 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2583 }, | |
| 4103 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2072 }, | |
| 4104 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2584 }, | |
| 4105 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1834 }, | |
| 4106 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2585 }, | |
| 4107 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2586 }, | |
| 4108 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2587 }, | |
| 4109 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2588 }, | |
| 4110 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2590 }, | |
| 4111 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2591 }, | |
| 4112 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2592 }, | |
| 4107 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2588 }, | |
| 4108 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2394 }, | |
| 4109 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2097 }, | |
| 4110 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2589 }, | |
| 4111 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2590 }, | |
| 4112 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2075 }, | |
| 4113 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2591 }, | |
| 4114 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1835 }, | |
| 4115 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2592 }, | |
| 4116 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2593 }, | |
| 4117 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2594 }, | |
| 4118 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2595 }, | |
| 4119 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2597 }, | |
| 4120 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2598 }, | |
| 4121 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2599 }, | |
| 4113 | 4122 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 572 }, |
| 4114 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2151 }, | |
| 4115 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1745 }, | |
| 4116 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2593 }, | |
| 4123 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2156 }, | |
| 4124 | .{ .char = 'l', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1746 }, | |
| 4125 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2600 }, | |
| 4117 | 4126 | .{ .char = 'u', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 559 }, |
| 4118 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2594 }, | |
| 4119 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2595 }, | |
| 4120 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2596 }, | |
| 4121 | .{ .char = 's', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 2597 }, | |
| 4127 | .{ .char = 'm', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2601 }, | |
| 4128 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2602 }, | |
| 4129 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2603 }, | |
| 4130 | .{ .char = 's', .end_of_word = false, .end_of_list = false, .number = 1, .child_index = 2604 }, | |
| 4122 | 4131 | .{ .char = 'w', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 756 }, |
| 4123 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2598 }, | |
| 4124 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2599 }, | |
| 4125 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2600 }, | |
| 4126 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 437 }, | |
| 4127 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2601 }, | |
| 4128 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2602 }, | |
| 4129 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2603 }, | |
| 4130 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2604 }, | |
| 4131 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2605 }, | |
| 4132 | .{ .char = 'S', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2606 }, | |
| 4132 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2605 }, | |
| 4133 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2606 }, | |
| 4133 | 4134 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2607 }, |
| 4134 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2608 }, | |
| 4135 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2609 }, | |
| 4136 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2610 }, | |
| 4135 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 437 }, | |
| 4136 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2608 }, | |
| 4137 | .{ .char = 'd', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2609 }, | |
| 4138 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2610 }, | |
| 4139 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2611 }, | |
| 4140 | .{ .char = 'e', .end_of_word = false, .end_of_list = true, .number = 2, .child_index = 2612 }, | |
| 4141 | .{ .char = 'S', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2613 }, | |
| 4142 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2614 }, | |
| 4143 | .{ .char = 'n', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2615 }, | |
| 4144 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2616 }, | |
| 4145 | .{ .char = 'i', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2617 }, | |
| 4137 | 4146 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 1185 }, |
| 4138 | .{ .char = 'r', .end_of_word = true, .end_of_list = true, .number = 2, .child_index = 2611 }, | |
| 4139 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2612 }, | |
| 4147 | .{ .char = 'r', .end_of_word = true, .end_of_list = true, .number = 2, .child_index = 2618 }, | |
| 4148 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2619 }, | |
| 4140 | 4149 | .{ .char = 'o', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 639 }, |
| 4141 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2189 }, | |
| 4150 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2194 }, | |
| 4142 | 4151 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 554 }, |
| 4143 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2613 }, | |
| 4152 | .{ .char = 'c', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2620 }, | |
| 4144 | 4153 | .{ .char = '_', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 449 }, |
| 4145 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2045 }, | |
| 4146 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2614 }, | |
| 4147 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2041 }, | |
| 4154 | .{ .char = 'r', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2048 }, | |
| 4155 | .{ .char = 'a', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2621 }, | |
| 4156 | .{ .char = 't', .end_of_word = false, .end_of_list = true, .number = 1, .child_index = 2044 }, | |
| 4148 | 4157 | }; |
| 4149 | 4158 | pub const data = blk: { |
| 4150 | @setEvalBranchQuota(12348); | |
| 4159 | @setEvalBranchQuota(12366); | |
| 4151 | 4160 | break :blk [_]Properties{ |
| 4152 | 4161 | .{ .param_str = "vv*vC*iC", .header = .blocks, .language = .all_languages, .attributes = .{ .lib_function_without_prefix = true } }, |
| 4153 | 4162 | .{ .param_str = "vvC*iC", .header = .blocks, .language = .all_languages, .attributes = .{ .lib_function_without_prefix = true } }, |
| ... | ... | @@ -4892,6 +4901,8 @@ pub const data = blk: { |
| 4892 | 4901 | .{ .param_str = "bULiCULiCULi*", .attributes = .{ .const_evaluable = true } }, |
| 4893 | 4902 | .{ .param_str = "bULLiCULLiCULLi*", .attributes = .{ .const_evaluable = true } }, |
| 4894 | 4903 | .{ .param_str = "v.", .attributes = .{ .custom_typecheck = true } }, |
| 4904 | .{ .param_str = "v", .attributes = .{ .custom_typecheck = true } }, | |
| 4905 | .{ .param_str = "i", .attributes = .{ .custom_typecheck = true } }, | |
| 4895 | 4906 | .{ .param_str = "vAA", .attributes = .{ .lib_function_with_builtin_prefix = true } }, |
| 4896 | 4907 | .{ .param_str = "vA", .attributes = .{ .lib_function_with_builtin_prefix = true } }, |
| 4897 | 4908 | .{ .param_str = "vA.", .attributes = .{ .custom_typecheck = true } }, |
lib/compiler/aro/aro/Builtins/eval.zig+15-7| ... | ... | @@ -1,16 +1,19 @@ |
| 1 | 1 | const std = @import("std"); |
| 2 | const assert = std.debug.assert; | |
| 3 | ||
| 2 | 4 | const backend = @import("../../backend.zig"); |
| 3 | 5 | const Interner = backend.Interner; |
| 6 | ||
| 4 | 7 | const Builtins = @import("../Builtins.zig"); |
| 5 | 8 | const Parser = @import("../Parser.zig"); |
| 6 | 9 | const Tree = @import("../Tree.zig"); |
| 7 | 10 | const TypeStore = @import("../TypeStore.zig"); |
| 8 | const Type = TypeStore.Type; | |
| 9 | 11 | const QualType = TypeStore.QualType; |
| 12 | const Type = TypeStore.Type; | |
| 10 | 13 | const Value = @import("../Value.zig"); |
| 11 | 14 | |
| 12 | 15 | fn makeNan(comptime T: type, str: []const u8) T { |
| 13 | const UnsignedSameSize = std.meta.Int(.unsigned, @bitSizeOf(T)); | |
| 16 | const UnsignedSameSize = @Int(.unsigned, @bitSizeOf(T)); | |
| 14 | 17 | const parsed = std.fmt.parseUnsigned(UnsignedSameSize, str[0 .. str.len - 1], 0) catch 0; |
| 15 | 18 | const bits: switch (T) { |
| 16 | 19 | f32 => u23, |
| ... | ... | @@ -24,7 +27,6 @@ fn makeNan(comptime T: type, str: []const u8) T { |
| 24 | 27 | |
| 25 | 28 | pub fn eval(expanded: Builtins.Expanded, p: *Parser, args: []const Tree.Node.Index) !Value { |
| 26 | 29 | if (!expanded.attributes.const_evaluable) return .{}; |
| 27 | ||
| 28 | 30 | switch (expanded.tag) { |
| 29 | 31 | .common => |tag| switch (tag) { |
| 30 | 32 | .__builtin_inff, |
| ... | ... | @@ -47,12 +49,12 @@ pub fn eval(expanded: Builtins.Expanded, p: *Parser, args: []const Tree.Node.Ind |
| 47 | 49 | return Value.intern(p.comp, .{ .float = f }); |
| 48 | 50 | }, |
| 49 | 51 | .__builtin_isinf => blk: { |
| 50 | if (args.len == 0) break :blk; | |
| 52 | assert(args.len == 1); | |
| 51 | 53 | const val = p.tree.value_map.get(args[0]) orelse break :blk; |
| 52 | 54 | return Value.fromBool(val.isInf(p.comp)); |
| 53 | 55 | }, |
| 54 | 56 | .__builtin_isinf_sign => blk: { |
| 55 | if (args.len == 0) break :blk; | |
| 57 | assert(args.len == 1); | |
| 56 | 58 | const val = p.tree.value_map.get(args[0]) orelse break :blk; |
| 57 | 59 | switch (val.isInfSign(p.comp)) { |
| 58 | 60 | .unknown => {}, |
| ... | ... | @@ -62,12 +64,12 @@ pub fn eval(expanded: Builtins.Expanded, p: *Parser, args: []const Tree.Node.Ind |
| 62 | 64 | } |
| 63 | 65 | }, |
| 64 | 66 | .__builtin_isnan => blk: { |
| 65 | if (args.len == 0) break :blk; | |
| 67 | assert(args.len == 1); | |
| 66 | 68 | const val = p.tree.value_map.get(args[0]) orelse break :blk; |
| 67 | 69 | return Value.fromBool(val.isNan(p.comp)); |
| 68 | 70 | }, |
| 69 | 71 | .__builtin_nan => blk: { |
| 70 | if (args.len == 0) break :blk; | |
| 72 | assert(args.len == 1); | |
| 71 | 73 | const val = p.getDecayedStringLiteral(args[0]) orelse break :blk; |
| 72 | 74 | const bytes = p.comp.interner.get(val.ref()).bytes; |
| 73 | 75 | |
| ... | ... | @@ -80,6 +82,12 @@ pub fn eval(expanded: Builtins.Expanded, p: *Parser, args: []const Tree.Node.Ind |
| 80 | 82 | }; |
| 81 | 83 | return Value.intern(p.comp, .{ .float = f }); |
| 82 | 84 | }, |
| 85 | .__builtin_constant_p => { | |
| 86 | assert(args.len == 1); | |
| 87 | const arg = args[0]; | |
| 88 | const val = p.tree.value_map.get(arg) orelse return Value.fromBool(p.isAddressOfStringLiteral(arg)); | |
| 89 | return Value.fromBool(!val.isPointer(p.comp)); | |
| 90 | }, | |
| 83 | 91 | else => {}, |
| 84 | 92 | }, |
| 85 | 93 | else => {}, |
lib/compiler/aro/aro/CodeGen.zig+3-1| ... | ... | @@ -2,7 +2,7 @@ const std = @import("std"); |
| 2 | 2 | const Allocator = std.mem.Allocator; |
| 3 | 3 | const assert = std.debug.assert; |
| 4 | 4 | |
| 5 | const backend = @import("backend"); | |
| 5 | const backend = @import("../backend.zig"); | |
| 6 | 6 | const Interner = backend.Interner; |
| 7 | 7 | const Ir = backend.Ir; |
| 8 | 8 | const Builder = Ir.Builder; |
| ... | ... | @@ -867,6 +867,8 @@ fn genExpr(c: *CodeGen, node_index: Node.Index) Error!Ir.Ref { |
| 867 | 867 | .imag_expr, |
| 868 | 868 | .real_expr, |
| 869 | 869 | .sizeof_expr, |
| 870 | .builtin_va_arg_pack, | |
| 871 | .builtin_va_arg_pack_len, | |
| 870 | 872 | => return c.fail("TODO CodeGen.genExpr {s}\n", .{@tagName(node)}), |
| 871 | 873 | else => unreachable, // Not an expression. |
| 872 | 874 | } |
lib/compiler/aro/aro/Compilation.zig+120-97| ... | ... | @@ -71,34 +71,23 @@ pub const Environment = struct { |
| 71 | 71 | /// used for __DATE__, __TIME__, and __TIMESTAMP__ |
| 72 | 72 | provided: u64, |
| 73 | 73 | |
| 74 | pub const default: @This() = .{ .provided = 0 }; | |
| 74 | pub const default: SourceEpoch = .{ .provided = 0 }; | |
| 75 | 75 | }; |
| 76 | 76 | |
| 77 | pub fn loadAll(allocator: std.mem.Allocator, environ_map: *const std.process.Environ.Map) !Environment { | |
| 77 | /// Load all of the environment variables from an environ map. Does not copy values. | |
| 78 | pub fn loadAll(environ_map: *const std.process.Environ.Map) Environment { | |
| 78 | 79 | var env: Environment = .{}; |
| 79 | errdefer env.deinit(allocator); | |
| 80 | 80 | |
| 81 | 81 | inline for (@typeInfo(@TypeOf(env)).@"struct".fields) |field| { |
| 82 | 82 | std.debug.assert(@field(env, field.name) == null); |
| 83 | 83 | |
| 84 | 84 | var env_var_buf: [field.name.len]u8 = undefined; |
| 85 | 85 | const env_var_name = std.ascii.upperString(&env_var_buf, field.name); |
| 86 | const val: ?[]const u8 = if (environ_map.get(env_var_name)) |v| try allocator.dupe(u8, v) else null; | |
| 87 | @field(env, field.name) = val; | |
| 86 | @field(env, field.name) = environ_map.get(env_var_name); | |
| 88 | 87 | } |
| 89 | 88 | return env; |
| 90 | 89 | } |
| 91 | 90 | |
| 92 | /// Use this only if environment slices were allocated with `allocator` (such as via `loadAll`) | |
| 93 | pub fn deinit(self: *Environment, allocator: std.mem.Allocator) void { | |
| 94 | inline for (@typeInfo(@TypeOf(self.*)).@"struct".fields) |field| { | |
| 95 | if (@field(self, field.name)) |slice| { | |
| 96 | allocator.free(slice); | |
| 97 | } | |
| 98 | } | |
| 99 | self.* = undefined; | |
| 100 | } | |
| 101 | ||
| 102 | 91 | pub fn sourceEpoch(self: *const Environment, io: Io) !SourceEpoch { |
| 103 | 92 | const max_timestamp = 253402300799; // Dec 31 9999 23:59:59 |
| 104 | 93 | |
| ... | ... | @@ -148,7 +137,7 @@ gpa: Allocator, |
| 148 | 137 | /// Allocations in this arena live all the way until `Compilation.deinit`. |
| 149 | 138 | arena: Allocator, |
| 150 | 139 | io: Io, |
| 151 | cwd: Io.Dir, | |
| 140 | cwd: std.Io.Dir, | |
| 152 | 141 | diagnostics: *Diagnostics, |
| 153 | 142 | |
| 154 | 143 | sources: std.StringArrayHashMapUnmanaged(Source) = .empty, |
| ... | ... | @@ -175,37 +164,48 @@ pragma_handlers: std.StringArrayHashMapUnmanaged(*Pragma) = .empty, |
| 175 | 164 | /// Used by MS extensions which allow searching for includes relative to the directory of the main source file. |
| 176 | 165 | ms_cwd_source_id: ?Source.Id = null, |
| 177 | 166 | |
| 178 | pub fn init(gpa: Allocator, arena: Allocator, io: Io, diagnostics: *Diagnostics, cwd: Io.Dir) Compilation { | |
| 179 | return .{ | |
| 180 | .gpa = gpa, | |
| 181 | .arena = arena, | |
| 182 | .io = io, | |
| 183 | .diagnostics = diagnostics, | |
| 184 | .cwd = cwd, | |
| 185 | }; | |
| 186 | } | |
| 187 | ||
| 188 | /// Initialize Compilation with default environment, | |
| 189 | /// pragma handlers and emulation mode set to target. | |
| 190 | pub fn initDefault( | |
| 167 | pub const InitOptions = struct { | |
| 191 | 168 | gpa: Allocator, |
| 192 | 169 | arena: Allocator, |
| 193 | 170 | io: Io, |
| 194 | 171 | diagnostics: *Diagnostics, |
| 195 | cwd: Io.Dir, | |
| 196 | environ_map: *const std.process.Environ.Map, | |
| 197 | ) !Compilation { | |
| 172 | ||
| 173 | /// Used to initiate `Compilation.Environment`, values are not copied. | |
| 174 | environ_map: ?*const std.process.Environ.Map, | |
| 175 | /// Defaults to `std.Io.Dir.cwd()` | |
| 176 | cwd: ?std.Io.Dir = null, | |
| 177 | ||
| 178 | add_default_pragma_handlers: bool = true, | |
| 179 | ||
| 180 | pub const testing: InitOptions = .{ | |
| 181 | .gpa = std.testing.allocator, | |
| 182 | .arena = undefined, | |
| 183 | .io = std.testing.io, | |
| 184 | .diagnostics = undefined, | |
| 185 | .environ_map = null, | |
| 186 | .add_default_pragma_handlers = false, | |
| 187 | }; | |
| 188 | }; | |
| 189 | ||
| 190 | /// Initialize Compilation with default environment, | |
| 191 | /// pragma handlers and emulation mode set to target. | |
| 192 | pub fn init(options: InitOptions) !Compilation { | |
| 198 | 193 | var comp: Compilation = .{ |
| 199 | .gpa = gpa, | |
| 200 | .arena = arena, | |
| 201 | .io = io, | |
| 202 | .diagnostics = diagnostics, | |
| 203 | .environment = try Environment.loadAll(gpa, environ_map), | |
| 204 | .cwd = cwd, | |
| 194 | .gpa = options.gpa, | |
| 195 | .arena = options.arena, | |
| 196 | .io = options.io, | |
| 197 | .diagnostics = options.diagnostics, | |
| 198 | .cwd = options.cwd orelse .cwd(), | |
| 205 | 199 | }; |
| 206 | 200 | errdefer comp.deinit(); |
| 207 | try comp.addDefaultPragmaHandlers(); | |
| 208 | comp.langopts.setEmulatedCompiler(comp.target.systemCompiler()); | |
| 201 | ||
| 202 | if (options.environ_map) |map| { | |
| 203 | comp.environment = .loadAll(map); | |
| 204 | } | |
| 205 | ||
| 206 | if (options.add_default_pragma_handlers) { | |
| 207 | try comp.addDefaultPragmaHandlers(); | |
| 208 | } | |
| 209 | 209 | return comp; |
| 210 | 210 | } |
| 211 | 211 | |
| ... | ... | @@ -228,7 +228,6 @@ pub fn deinit(comp: *Compilation) void { |
| 228 | 228 | comp.builtins.deinit(gpa); |
| 229 | 229 | comp.string_interner.deinit(gpa); |
| 230 | 230 | comp.interner.deinit(gpa); |
| 231 | comp.environment.deinit(gpa); | |
| 232 | 231 | comp.type_store.deinit(gpa); |
| 233 | 232 | comp.* = undefined; |
| 234 | 233 | } |
| ... | ... | @@ -275,17 +274,18 @@ fn generateSystemDefines(comp: *Compilation, w: *Io.Writer) !void { |
| 275 | 274 | } |
| 276 | 275 | |
| 277 | 276 | try w.writeAll( |
| 277 | \\#define __ARO_EMULATE_NO__ 0 | |
| 278 | 278 | \\#define __ARO_EMULATE_CLANG__ 1 |
| 279 | 279 | \\#define __ARO_EMULATE_GCC__ 2 |
| 280 | 280 | \\#define __ARO_EMULATE_MSVC__ 3 |
| 281 | 281 | \\ |
| 282 | 282 | ); |
| 283 | const emulated = switch (comp.langopts.emulate) { | |
| 283 | try w.print("#define __ARO_EMULATE__ {s}\n", .{switch (comp.langopts.emulate) { | |
| 284 | .no => "__ARO_EMULATE_NO__", | |
| 284 | 285 | .clang => "__ARO_EMULATE_CLANG__", |
| 285 | 286 | .gcc => "__ARO_EMULATE_GCC__", |
| 286 | 287 | .msvc => "__ARO_EMULATE_MSVC__", |
| 287 | }; | |
| 288 | try w.print("#define __ARO_EMULATE__ {s}\n", .{emulated}); | |
| 288 | }}); | |
| 289 | 289 | |
| 290 | 290 | if (comp.langopts.emulate == .msvc) { |
| 291 | 291 | try w.writeAll("#define _MSC_VER 1933\n"); |
| ... | ... | @@ -375,6 +375,7 @@ fn generateSystemDefines(comp: *Compilation, w: *Io.Writer) !void { |
| 375 | 375 | .watchos, |
| 376 | 376 | => { |
| 377 | 377 | try define(w, "__APPLE__"); |
| 378 | try w.writeAll("#define __APPLE_CC__ 6000\n"); | |
| 378 | 379 | |
| 379 | 380 | const version = target.os.version_range.semver.min; |
| 380 | 381 | var version_buf: [8]u8 = undefined; |
| ... | ... | @@ -647,6 +648,7 @@ fn generateSystemDefines(comp: *Compilation, w: *Io.Writer) !void { |
| 647 | 648 | try define(w, "__ppc__"); |
| 648 | 649 | try define(w, "__PPC__"); |
| 649 | 650 | try define(w, "_ARCH_PPC"); |
| 651 | try w.print("#define _CALL_ELF {d}\n", .{target.ppcElfVersion()}); | |
| 650 | 652 | }, |
| 651 | 653 | .powerpc64, |
| 652 | 654 | .powerpc64le, |
| ... | ... | @@ -661,7 +663,7 @@ fn generateSystemDefines(comp: *Compilation, w: *Io.Writer) !void { |
| 661 | 663 | try define(w, "__PPC64__"); |
| 662 | 664 | try define(w, "_ARCH_PPC"); |
| 663 | 665 | try define(w, "_ARCH_PPC64"); |
| 664 | try w.writeAll("#define _CALL_ELF 2\n"); | |
| 666 | try w.print("#define _CALL_ELF {d}\n", .{target.ppcElfVersion()}); | |
| 665 | 667 | }, |
| 666 | 668 | .sparc64 => { |
| 667 | 669 | try defineStd(w, "sparc", is_gnu); |
| ... | ... | @@ -686,8 +688,19 @@ fn generateSystemDefines(comp: *Compilation, w: *Io.Writer) !void { |
| 686 | 688 | try define(w, "__thumb__"); |
| 687 | 689 | } |
| 688 | 690 | }, |
| 689 | .aarch64, .aarch64_be => { | |
| 691 | .aarch64, .aarch64_be => |arch| { | |
| 690 | 692 | try define(w, "__aarch64__"); |
| 693 | switch (arch) { | |
| 694 | .aarch64 => { | |
| 695 | try define(w, "__AARCH64EL__"); | |
| 696 | }, | |
| 697 | .aarch64_be => { | |
| 698 | try define(w, "__AARCH64EB__"); | |
| 699 | try define(w, "__AARCH_BIG_ENDIAN"); | |
| 700 | try define(w, "__ARM_BIG_ENDIAN"); | |
| 701 | }, | |
| 702 | else => unreachable, | |
| 703 | } | |
| 691 | 704 | if (target.os.tag.isDarwin()) { |
| 692 | 705 | try define(w, "__AARCH64_SIMD__"); |
| 693 | 706 | if (ptr_width == 32) { |
| ... | ... | @@ -839,6 +852,7 @@ fn generateSystemDefines(comp: *Compilation, w: *Io.Writer) !void { |
| 839 | 852 | } |
| 840 | 853 | }, |
| 841 | 854 | .riscv32, .riscv32be, .riscv64, .riscv64be => { |
| 855 | try define(w, "__riscv"); | |
| 842 | 856 | try w.print("#define __riscv_xlen {d}\n", .{ptr_width}); |
| 843 | 857 | }, |
| 844 | 858 | else => {}, |
| ... | ... | @@ -910,6 +924,7 @@ fn generateSystemDefines(comp: *Compilation, w: *Io.Writer) !void { |
| 910 | 924 | \\#define __ATOMIC_CHAR16_T_LOCK_FREE 1 |
| 911 | 925 | \\#define __ATOMIC_CHAR32_T_LOCK_FREE 1 |
| 912 | 926 | \\#define __ATOMIC_WCHAR_T_LOCK_FREE 1 |
| 927 | \\#define __ATOMIC_WINT_T_LOCK_FREE 1 | |
| 913 | 928 | \\#define __ATOMIC_SHORT_LOCK_FREE 1 |
| 914 | 929 | \\#define __ATOMIC_INT_LOCK_FREE 1 |
| 915 | 930 | \\#define __ATOMIC_LONG_LOCK_FREE 1 |
| ... | ... | @@ -922,7 +937,15 @@ fn generateSystemDefines(comp: *Compilation, w: *Io.Writer) !void { |
| 922 | 937 | } |
| 923 | 938 | |
| 924 | 939 | // types |
| 925 | if (comp.getCharSignedness() == .unsigned) try w.writeAll("#define __CHAR_UNSIGNED__ 1\n"); | |
| 940 | if (comp.getCharSignedness() == .unsigned) { | |
| 941 | try w.writeAll("#define __CHAR_UNSIGNED__ 1\n"); | |
| 942 | } | |
| 943 | if (comp.type_store.wchar.signedness(comp) == .unsigned) { | |
| 944 | try w.writeAll("#define __WCHAR_UNSIGNED__ 1\n"); | |
| 945 | } | |
| 946 | if (comp.type_store.wint.signedness(comp) == .unsigned) { | |
| 947 | try w.writeAll("#define __WINT_UNSIGNED__ 1\n"); | |
| 948 | } | |
| 926 | 949 | try w.writeAll("#define __CHAR_BIT__ 8\n"); |
| 927 | 950 | |
| 928 | 951 | // int maxs |
| ... | ... | @@ -933,7 +956,7 @@ fn generateSystemDefines(comp: *Compilation, w: *Io.Writer) !void { |
| 933 | 956 | try comp.generateIntMaxAndWidth(w, "LONG", .long); |
| 934 | 957 | try comp.generateIntMaxAndWidth(w, "LONG_LONG", .long_long); |
| 935 | 958 | try comp.generateIntMaxAndWidth(w, "WCHAR", comp.type_store.wchar); |
| 936 | // try comp.generateIntMax(w, "WINT", comp.type_store.wchar); | |
| 959 | try comp.generateIntMaxAndWidth(w, "WINT", comp.type_store.wint); | |
| 937 | 960 | try comp.generateIntMaxAndWidth(w, "INTMAX", comp.type_store.intmax); |
| 938 | 961 | try comp.generateIntMaxAndWidth(w, "SIZE", comp.type_store.size); |
| 939 | 962 | try comp.generateIntMaxAndWidth(w, "UINTMAX", try comp.type_store.intmax.makeIntUnsigned(comp)); |
| ... | ... | @@ -957,7 +980,7 @@ fn generateSystemDefines(comp: *Compilation, w: *Io.Writer) !void { |
| 957 | 980 | try comp.generateSizeofType(w, "__SIZEOF_PTRDIFF_T__", comp.type_store.ptrdiff); |
| 958 | 981 | try comp.generateSizeofType(w, "__SIZEOF_SIZE_T__", comp.type_store.size); |
| 959 | 982 | try comp.generateSizeofType(w, "__SIZEOF_WCHAR_T__", comp.type_store.wchar); |
| 960 | // try comp.generateSizeofType(w, "__SIZEOF_WINT_T__", .void_pointer); | |
| 983 | try comp.generateSizeofType(w, "__SIZEOF_WINT_T__", comp.type_store.wint); | |
| 961 | 984 | |
| 962 | 985 | if (target.hasInt128()) { |
| 963 | 986 | try comp.generateSizeofType(w, "__SIZEOF_INT128__", .int128); |
| ... | ... | @@ -968,14 +991,15 @@ fn generateSystemDefines(comp: *Compilation, w: *Io.Writer) !void { |
| 968 | 991 | try comp.generateTypeMacro(w, "__UINTPTR_TYPE__", try comp.type_store.intptr.makeIntUnsigned(comp)); |
| 969 | 992 | |
| 970 | 993 | try comp.generateTypeMacro(w, "__INTMAX_TYPE__", comp.type_store.intmax); |
| 971 | try comp.generateSuffixMacro("__INTMAX", w, comp.type_store.intptr); | |
| 994 | try comp.generateIntLiteralMacros("__INTMAX", w, comp.type_store.intptr); | |
| 972 | 995 | |
| 973 | 996 | try comp.generateTypeMacro(w, "__UINTMAX_TYPE__", try comp.type_store.intmax.makeIntUnsigned(comp)); |
| 974 | try comp.generateSuffixMacro("__UINTMAX", w, try comp.type_store.intptr.makeIntUnsigned(comp)); | |
| 997 | try comp.generateIntLiteralMacros("__UINTMAX", w, try comp.type_store.intptr.makeIntUnsigned(comp)); | |
| 975 | 998 | |
| 976 | 999 | try comp.generateTypeMacro(w, "__PTRDIFF_TYPE__", comp.type_store.ptrdiff); |
| 977 | 1000 | try comp.generateTypeMacro(w, "__SIZE_TYPE__", comp.type_store.size); |
| 978 | 1001 | try comp.generateTypeMacro(w, "__WCHAR_TYPE__", comp.type_store.wchar); |
| 1002 | try comp.generateTypeMacro(w, "__WINT_TYPE__", comp.type_store.wint); | |
| 979 | 1003 | try comp.generateTypeMacro(w, "__CHAR16_TYPE__", comp.type_store.uint_least16_t); |
| 980 | 1004 | try comp.generateTypeMacro(w, "__CHAR32_TYPE__", comp.type_store.uint_least32_t); |
| 981 | 1005 | |
| ... | ... | @@ -1167,8 +1191,10 @@ fn generateTypeMacro(comp: *const Compilation, w: *Io.Writer, name: []const u8, |
| 1167 | 1191 | } |
| 1168 | 1192 | |
| 1169 | 1193 | pub fn float80Type(comp: *const Compilation) ?QualType { |
| 1170 | if (comp.langopts.emulate != .gcc) return null; | |
| 1171 | return comp.target.float80Type(); | |
| 1194 | return switch (comp.langopts.emulate) { | |
| 1195 | .no, .gcc => comp.target.float80Type(), | |
| 1196 | .msvc, .clang => null, | |
| 1197 | }; | |
| 1172 | 1198 | } |
| 1173 | 1199 | |
| 1174 | 1200 | /// Smallest integer type with at least N bits |
| ... | ... | @@ -1292,8 +1318,14 @@ fn generateFmt(comp: *const Compilation, prefix: []const u8, w: *Io.Writer, qt: |
| 1292 | 1318 | } |
| 1293 | 1319 | } |
| 1294 | 1320 | |
| 1295 | fn generateSuffixMacro(comp: *const Compilation, prefix: []const u8, w: *Io.Writer, qt: QualType) !void { | |
| 1296 | return w.print("#define {s}_C_SUFFIX__ {s}\n", .{ prefix, qt.intValueSuffix(comp) }); | |
| 1321 | fn generateIntLiteralMacros(comp: *const Compilation, prefix: []const u8, w: *Io.Writer, qt: QualType) !void { | |
| 1322 | const suffix = qt.intValueSuffix(comp); | |
| 1323 | try w.print("#define {s}_C_SUFFIX__ {s}\n", .{ prefix, suffix }); | |
| 1324 | if (suffix.len == 0) { | |
| 1325 | try w.print("#define {s}_C(c) c\n", .{prefix}); | |
| 1326 | } else { | |
| 1327 | try w.print("#define {s}_C(c) c##{s}\n", .{ prefix, suffix }); | |
| 1328 | } | |
| 1297 | 1329 | } |
| 1298 | 1330 | |
| 1299 | 1331 | /// Generate the following for a type: |
| ... | ... | @@ -1322,7 +1354,7 @@ fn generateExactWidthType(comp: *Compilation, w: *Io.Writer, original_qt: QualTy |
| 1322 | 1354 | const prefix = full[0 .. full.len - suffix.len]; // remove "_TYPE__" |
| 1323 | 1355 | |
| 1324 | 1356 | try comp.generateFmt(prefix, w, qt); |
| 1325 | try comp.generateSuffixMacro(prefix, w, qt); | |
| 1357 | try comp.generateIntLiteralMacros(prefix, w, qt); | |
| 1326 | 1358 | } |
| 1327 | 1359 | |
| 1328 | 1360 | pub fn hasFloat128(comp: *const Compilation) bool { |
| ... | ... | @@ -1414,7 +1446,7 @@ pub fn maxArrayBytes(comp: *const Compilation) u64 { |
| 1414 | 1446 | pub fn fixedEnumTagType(comp: *const Compilation) ?QualType { |
| 1415 | 1447 | switch (comp.langopts.emulate) { |
| 1416 | 1448 | .msvc => return .int, |
| 1417 | .clang => if (comp.target.os.tag == .windows and comp.target.abi == .msvc) return .int, | |
| 1449 | .no, .clang => if (comp.target.os.tag == .windows and comp.target.abi == .msvc) return .int, | |
| 1418 | 1450 | .gcc => {}, |
| 1419 | 1451 | } |
| 1420 | 1452 | return null; |
| ... | ... | @@ -1424,6 +1456,10 @@ pub fn getCharSignedness(comp: *const Compilation) std.builtin.Signedness { |
| 1424 | 1456 | return comp.langopts.char_signedness_override orelse comp.target.cCharSignedness(); |
| 1425 | 1457 | } |
| 1426 | 1458 | |
| 1459 | pub fn hasClangStyleBoundsSafety(comp: *const Compilation) bool { | |
| 1460 | return comp.langopts.bounds_safety == .clang; | |
| 1461 | } | |
| 1462 | ||
| 1427 | 1463 | pub fn getSource(comp: *const Compilation, id: Source.Id) Source { |
| 1428 | 1464 | if (id.alias) { |
| 1429 | 1465 | return comp.source_aliases.items[@intFromEnum(id.index)]; |
| ... | ... | @@ -1643,14 +1679,12 @@ fn addSourceFromPathExtra(comp: *Compilation, path: []const u8, kind: Source.Kin |
| 1643 | 1679 | return error.FileNotFound; |
| 1644 | 1680 | } |
| 1645 | 1681 | |
| 1646 | const io = comp.io; | |
| 1647 | ||
| 1648 | const file = try comp.cwd.openFile(io, path, .{}); | |
| 1649 | defer file.close(io); | |
| 1682 | const file = try comp.cwd.openFile(comp.io, path, .{}); | |
| 1683 | defer file.close(comp.io); | |
| 1650 | 1684 | return comp.addSourceFromFile(file, path, kind); |
| 1651 | 1685 | } |
| 1652 | 1686 | |
| 1653 | pub fn addSourceFromFile(comp: *Compilation, file: Io.File, path: []const u8, kind: Source.Kind) !Source { | |
| 1687 | pub fn addSourceFromFile(comp: *Compilation, file: std.Io.File, path: []const u8, kind: Source.Kind) !Source { | |
| 1654 | 1688 | const contents = try comp.getFileContents(file, .unlimited); |
| 1655 | 1689 | errdefer comp.gpa.free(contents); |
| 1656 | 1690 | return comp.addSourceFromOwnedBuffer(path, contents, kind); |
| ... | ... | @@ -1718,8 +1752,7 @@ pub fn initSearchPath(comp: *Compilation, includes: []const Include, verbose: bo |
| 1718 | 1752 | } |
| 1719 | 1753 | } |
| 1720 | 1754 | fn addToSearchPath(comp: *Compilation, include: Include, verbose: bool) !void { |
| 1721 | const io = comp.io; | |
| 1722 | comp.cwd.access(io, include.path, .{}) catch { | |
| 1755 | comp.cwd.access(comp.io, include.path, .{}) catch { | |
| 1723 | 1756 | if (verbose) { |
| 1724 | 1757 | std.debug.print("ignoring nonexistent directory \"{s}\"\n", .{include.path}); |
| 1725 | 1758 | return; |
| ... | ... | @@ -1979,14 +2012,12 @@ fn getPathContents(comp: *Compilation, path: []const u8, limit: Io.Limit) ![]u8 |
| 1979 | 2012 | return error.FileNotFound; |
| 1980 | 2013 | } |
| 1981 | 2014 | |
| 1982 | const io = comp.io; | |
| 1983 | ||
| 1984 | const file = try comp.cwd.openFile(io, path, .{}); | |
| 1985 | defer file.close(io); | |
| 2015 | const file = try comp.cwd.openFile(comp.io, path, .{}); | |
| 2016 | defer file.close(comp.io); | |
| 1986 | 2017 | return comp.getFileContents(file, limit); |
| 1987 | 2018 | } |
| 1988 | 2019 | |
| 1989 | fn getFileContents(comp: *Compilation, file: Io.File, limit: Io.Limit) ![]u8 { | |
| 2020 | fn getFileContents(comp: *Compilation, file: std.Io.File, limit: Io.Limit) ![]u8 { | |
| 1990 | 2021 | var file_buf: [4096]u8 = undefined; |
| 1991 | 2022 | var file_reader = file.reader(comp.io, &file_buf); |
| 1992 | 2023 | |
| ... | ... | @@ -2168,9 +2199,8 @@ pub fn locSlice(comp: *const Compilation, loc: Source.Location) []const u8 { |
| 2168 | 2199 | } |
| 2169 | 2200 | |
| 2170 | 2201 | pub fn getSourceMTimeUncached(comp: *const Compilation, source_id: Source.Id) ?u64 { |
| 2171 | const io = comp.io; | |
| 2172 | 2202 | const source = comp.getSource(source_id); |
| 2173 | if (comp.cwd.statFile(io, source.path, .{})) |stat| { | |
| 2203 | if (comp.cwd.statFile(comp.io, source.path, .{})) |stat| { | |
| 2174 | 2204 | return std.math.cast(u64, stat.mtime.toSeconds()); |
| 2175 | 2205 | } else |_| { |
| 2176 | 2206 | return null; |
| ... | ... | @@ -2257,10 +2287,9 @@ pub const Diagnostic = struct { |
| 2257 | 2287 | test "addSourceFromBuffer" { |
| 2258 | 2288 | const Test = struct { |
| 2259 | 2289 | fn addSourceFromBuffer(str: []const u8, expected: []const u8, warning_count: u32, splices: []const u32) !void { |
| 2260 | var arena: std.heap.ArenaAllocator = .init(std.testing.allocator); | |
| 2261 | defer arena.deinit(); | |
| 2262 | 2290 | var diagnostics: Diagnostics = .{ .output = .ignore }; |
| 2263 | var comp = Compilation.init(std.testing.allocator, arena.allocator(), std.testing.io, &diagnostics, Io.Dir.cwd()); | |
| 2291 | var comp = try Compilation.init(.testing); | |
| 2292 | comp.diagnostics = &diagnostics; | |
| 2264 | 2293 | defer comp.deinit(); |
| 2265 | 2294 | |
| 2266 | 2295 | const source = try comp.addSourceFromBuffer("path", str); |
| ... | ... | @@ -2271,10 +2300,8 @@ test "addSourceFromBuffer" { |
| 2271 | 2300 | } |
| 2272 | 2301 | |
| 2273 | 2302 | fn withAllocationFailures(allocator: std.mem.Allocator) !void { |
| 2274 | var arena: std.heap.ArenaAllocator = .init(allocator); | |
| 2275 | defer arena.deinit(); | |
| 2276 | var diagnostics: Diagnostics = .{ .output = .ignore }; | |
| 2277 | var comp = Compilation.init(allocator, arena.allocator(), std.testing.io, &diagnostics, Io.Dir.cwd()); | |
| 2303 | var comp = try Compilation.init(.testing); | |
| 2304 | comp.gpa = allocator; | |
| 2278 | 2305 | defer comp.deinit(); |
| 2279 | 2306 | |
| 2280 | 2307 | _ = try comp.addSourceFromBuffer("path", "spliced\\\nbuffer\n"); |
| ... | ... | @@ -2320,7 +2347,8 @@ test "addSourceFromBuffer - exhaustive check for carriage return elimination" { |
| 2320 | 2347 | var buf: [alphabet.len]u8 = @splat(alphabet[0]); |
| 2321 | 2348 | |
| 2322 | 2349 | var diagnostics: Diagnostics = .{ .output = .ignore }; |
| 2323 | var comp = Compilation.init(std.testing.allocator, arena.allocator(), std.testing.io, &diagnostics, Io.Dir.cwd()); | |
| 2350 | var comp = try Compilation.init(.testing); | |
| 2351 | comp.diagnostics = &diagnostics; | |
| 2324 | 2352 | defer comp.deinit(); |
| 2325 | 2353 | |
| 2326 | 2354 | var source_count: u32 = 0; |
| ... | ... | @@ -2346,9 +2374,8 @@ test "addSourceFromBuffer - exhaustive check for carriage return elimination" { |
| 2346 | 2374 | test "ignore BOM at beginning of file" { |
| 2347 | 2375 | const BOM = "\xEF\xBB\xBF"; |
| 2348 | 2376 | const Test = struct { |
| 2349 | fn run(arena: Allocator, buf: []const u8) !void { | |
| 2350 | var diagnostics: Diagnostics = .{ .output = .ignore }; | |
| 2351 | var comp = Compilation.init(std.testing.allocator, arena, std.testing.io, &diagnostics, Io.Dir.cwd()); | |
| 2377 | fn run(buf: []const u8) !void { | |
| 2378 | var comp = try Compilation.init(.testing); | |
| 2352 | 2379 | defer comp.deinit(); |
| 2353 | 2380 | |
| 2354 | 2381 | const source = try comp.addSourceFromBuffer("file.c", buf); |
| ... | ... | @@ -2357,19 +2384,15 @@ test "ignore BOM at beginning of file" { |
| 2357 | 2384 | } |
| 2358 | 2385 | }; |
| 2359 | 2386 | |
| 2360 | var arena_state: std.heap.ArenaAllocator = .init(std.testing.allocator); | |
| 2361 | defer arena_state.deinit(); | |
| 2362 | const arena = arena_state.allocator(); | |
| 2363 | ||
| 2364 | try Test.run(arena, BOM); | |
| 2365 | try Test.run(arena, BOM ++ "x"); | |
| 2366 | try Test.run(arena, "x" ++ BOM); | |
| 2367 | try Test.run(arena, BOM ++ " "); | |
| 2368 | try Test.run(arena, BOM ++ "\n"); | |
| 2369 | try Test.run(arena, BOM ++ "\\"); | |
| 2370 | ||
| 2371 | try Test.run(arena, BOM[0..1] ++ "x"); | |
| 2372 | try Test.run(arena, BOM[0..2] ++ "x"); | |
| 2373 | try Test.run(arena, BOM[1..] ++ "x"); | |
| 2374 | try Test.run(arena, BOM[2..] ++ "x"); | |
| 2387 | try Test.run(BOM); | |
| 2388 | try Test.run(BOM ++ "x"); | |
| 2389 | try Test.run("x" ++ BOM); | |
| 2390 | try Test.run(BOM ++ " "); | |
| 2391 | try Test.run(BOM ++ "\n"); | |
| 2392 | try Test.run(BOM ++ "\\"); | |
| 2393 | ||
| 2394 | try Test.run(BOM[0..1] ++ "x"); | |
| 2395 | try Test.run(BOM[0..2] ++ "x"); | |
| 2396 | try Test.run(BOM[1..] ++ "x"); | |
| 2397 | try Test.run(BOM[2..] ++ "x"); | |
| 2375 | 2398 | } |
lib/compiler/aro/aro/Diagnostics.zig+21-17| ... | ... | @@ -24,21 +24,21 @@ pub const Message = struct { |
| 24 | 24 | @"fatal error", |
| 25 | 25 | }; |
| 26 | 26 | |
| 27 | pub fn write(msg: Message, t: std.Io.Terminal, details: bool) std.Io.Terminal.SetColorError!void { | |
| 28 | const w = t.writer; | |
| 29 | try t.setColor(.bold); | |
| 27 | pub fn write(msg: Message, term: std.Io.Terminal, details: bool) std.Io.Terminal.SetColorError!void { | |
| 28 | const w = term.writer; | |
| 29 | try term.setColor(.bold); | |
| 30 | 30 | if (msg.location) |loc| { |
| 31 | 31 | try w.print("{s}:{d}:{d}: ", .{ loc.path, loc.line_no, loc.col }); |
| 32 | 32 | } |
| 33 | 33 | switch (msg.effective_kind) { |
| 34 | .@"fatal error", .@"error" => try t.setColor(.bright_red), | |
| 35 | .note => try t.setColor(.bright_cyan), | |
| 36 | .warning => try t.setColor(.bright_magenta), | |
| 34 | .@"fatal error", .@"error" => try term.setColor(.bright_red), | |
| 35 | .note => try term.setColor(.bright_cyan), | |
| 36 | .warning => try term.setColor(.bright_magenta), | |
| 37 | 37 | .off => unreachable, |
| 38 | 38 | } |
| 39 | 39 | try w.print("{s}: ", .{@tagName(msg.effective_kind)}); |
| 40 | 40 | |
| 41 | try t.setColor(.white); | |
| 41 | try term.setColor(.white); | |
| 42 | 42 | try w.writeAll(msg.text); |
| 43 | 43 | if (msg.opt) |some| { |
| 44 | 44 | if (msg.effective_kind == .@"error" and msg.kind != .@"error") { |
| ... | ... | @@ -56,17 +56,17 @@ pub const Message = struct { |
| 56 | 56 | |
| 57 | 57 | if (!details or msg.location == null) { |
| 58 | 58 | try w.writeAll("\n"); |
| 59 | try t.setColor(.reset); | |
| 59 | try term.setColor(.reset); | |
| 60 | 60 | } else { |
| 61 | 61 | const loc = msg.location.?; |
| 62 | 62 | const trailer = if (loc.end_with_splice) "\\ " else ""; |
| 63 | try t.setColor(.reset); | |
| 63 | try term.setColor(.reset); | |
| 64 | 64 | try w.print("\n{s}{s}\n", .{ loc.line, trailer }); |
| 65 | 65 | try w.splatByteAll(' ', loc.width); |
| 66 | try t.setColor(.bold); | |
| 67 | try t.setColor(.bright_green); | |
| 66 | try term.setColor(.bold); | |
| 67 | try term.setColor(.bright_green); | |
| 68 | 68 | try w.writeAll("^\n"); |
| 69 | try t.setColor(.reset); | |
| 69 | try term.setColor(.reset); | |
| 70 | 70 | } |
| 71 | 71 | try w.flush(); |
| 72 | 72 | } |
| ... | ... | @@ -199,6 +199,10 @@ pub const Option = enum { |
| 199 | 199 | @"pragma-once-outside-header", |
| 200 | 200 | @"underlying-atomic-qualifier-ignored", |
| 201 | 201 | @"underlying-cv-qualifier-ignored", |
| 202 | @"bounds-attributes-redundant", | |
| 203 | @"file-name-extension", | |
| 204 | @"base-file-extension", | |
| 205 | @"include-level-extension", | |
| 202 | 206 | |
| 203 | 207 | /// GNU extensions |
| 204 | 208 | pub const gnu = [_]Option{ |
| ... | ... | @@ -541,11 +545,11 @@ fn addMessage(d: *Diagnostics, msg: Message) Compilation.Error!void { |
| 541 | 545 | |
| 542 | 546 | switch (d.output) { |
| 543 | 547 | .ignore => {}, |
| 544 | .to_writer => |t| { | |
| 545 | var new_mode = t.mode; | |
| 546 | if (d.color == false) new_mode = .no_color; | |
| 547 | if (d.color == true and new_mode == .no_color) new_mode = .escape_codes; | |
| 548 | msg.write(.{ .writer = t.writer, .mode = new_mode }, d.details) catch { | |
| 548 | .to_writer => |terminal| { | |
| 549 | var mode = terminal.mode; | |
| 550 | if (d.color == false) mode = .no_color; | |
| 551 | if (d.color == true and mode == .no_color) mode = .escape_codes; | |
| 552 | msg.write(.{ .mode = mode, .writer = terminal.writer }, d.details) catch { | |
| 549 | 553 | return error.FatalError; |
| 550 | 554 | }; |
| 551 | 555 | }, |
lib/compiler/aro/aro/Driver.zig+124-50| ... | ... | @@ -1,5 +1,4 @@ |
| 1 | 1 | const std = @import("std"); |
| 2 | const Io = std.Io; | |
| 3 | 2 | const mem = std.mem; |
| 4 | 3 | const Allocator = mem.Allocator; |
| 5 | 4 | const process = std.process; |
| ... | ... | @@ -9,6 +8,7 @@ const Assembly = backend.Assembly; |
| 9 | 8 | const Ir = backend.Ir; |
| 10 | 9 | const Object = backend.Object; |
| 11 | 10 | |
| 11 | const Attribute = @import("Attribute.zig"); | |
| 12 | 12 | const Compilation = @import("Compilation.zig"); |
| 13 | 13 | const Diagnostics = @import("Diagnostics.zig"); |
| 14 | 14 | const DepFile = @import("DepFile.zig"); |
| ... | ... | @@ -52,6 +52,7 @@ implicit_includes: std.ArrayList(Source) = .empty, |
| 52 | 52 | /// List of includes that will be used to construct the compilation's search path |
| 53 | 53 | includes: std.ArrayList(Compilation.Include) = .empty, |
| 54 | 54 | link_objects: std.ArrayList([]const u8) = .empty, |
| 55 | macro_prefix_map: std.ArrayList(struct { []const u8, []const u8 }) = .empty, | |
| 55 | 56 | output_name: ?[]const u8 = null, |
| 56 | 57 | sysroot: ?[]const u8 = null, |
| 57 | 58 | resource_dir: ?[]const u8 = null, |
| ... | ... | @@ -134,9 +135,8 @@ strip: bool = false, |
| 134 | 135 | unwindlib: ?[]const u8 = null, |
| 135 | 136 | |
| 136 | 137 | pub fn deinit(d: *Driver) void { |
| 137 | const io = d.comp.io; | |
| 138 | 138 | for (d.link_objects.items[d.link_objects.items.len - d.temp_file_count ..]) |obj| { |
| 139 | Io.Dir.deleteFileAbsolute(io, obj) catch {}; | |
| 139 | std.Io.Dir.deleteFileAbsolute(d.comp.io, obj) catch {}; | |
| 140 | 140 | d.comp.gpa.free(obj); |
| 141 | 141 | } |
| 142 | 142 | d.inputs.deinit(d.comp.gpa); |
| ... | ... | @@ -144,6 +144,7 @@ pub fn deinit(d: *Driver) void { |
| 144 | 144 | d.implicit_includes.deinit(d.comp.gpa); |
| 145 | 145 | d.includes.deinit(d.comp.gpa); |
| 146 | 146 | d.link_objects.deinit(d.comp.gpa); |
| 147 | d.macro_prefix_map.deinit(d.comp.gpa); | |
| 147 | 148 | d.* = undefined; |
| 148 | 149 | } |
| 149 | 150 | |
| ... | ... | @@ -177,6 +178,10 @@ pub const usage = |
| 177 | 178 | \\ -darwin-target-variant-triple |
| 178 | 179 | \\ Specify the darwin target variant triple |
| 179 | 180 | \\ -fapple-kext Use Apple's kernel extensions ABI |
| 181 | \\ -fexperimental-bounds-safety | |
| 182 | \\ Enable experimental clang-style bounds safety attributes (INCOMPLETE) | |
| 183 | \\ -fno-experimental-bounds-safety | |
| 184 | \\ Disable experimental clang-style bounds safety attributes | |
| 180 | 185 | \\ -fchar8_t Enable char8_t (enabled by default in C23 and later) |
| 181 | 186 | \\ -fno-char8_t Disable char8_t (disabled by default for pre-C23) |
| 182 | 187 | \\ -fcolor-diagnostics Enable colors in diagnostics |
| ... | ... | @@ -218,6 +223,8 @@ pub const usage = |
| 218 | 223 | \\ -fuse-line-directives Use `#line <num>` linemarkers in preprocessed output |
| 219 | 224 | \\ -fno-use-line-directives |
| 220 | 225 | \\ Use `# <num>` linemarkers in preprocessed output |
| 226 | \\ -fvisibility=[default|hidden|internal|protected] | |
| 227 | \\ Set the default ELF image symbol visibility to the specified option—all symbols are marked with this unless overridden within the code | |
| 221 | 228 | \\ -iquote <dir> Add directory to QUOTE include search path |
| 222 | 229 | \\ -I <dir> Add directory to include search path |
| 223 | 230 | \\ -idirafter <dir> Add directory to AFTER include search path |
| ... | ... | @@ -375,6 +382,17 @@ pub fn parseArgs( |
| 375 | 382 | d.use_line_directives = false; |
| 376 | 383 | } else if (mem.eql(u8, arg, "-fapple-kext")) { |
| 377 | 384 | d.apple_kext = true; |
| 385 | } else if (option(arg, "-fvisibility=")) |visibility| { | |
| 386 | d.comp.langopts.default_symbol_visibility = Attribute.visibilityFromString(visibility) orelse | |
| 387 | return d.fatal("unsupported value '{s}'' in '{s}'", .{ visibility, arg }); | |
| 388 | } else if (option(arg, "-frandom-seed=")) |_| { | |
| 389 | // Ignore | |
| 390 | } else if (option(arg, "-fmacro-prefix-map=")) |kv| { | |
| 391 | const pair = mem.cutScalar(u8, kv, '=') orelse { | |
| 392 | try d.err("invalid argument '{s}' to '-fmacro-prefix-map=", .{kv}); | |
| 393 | continue; | |
| 394 | }; | |
| 395 | try d.macro_prefix_map.append(gpa, pair); | |
| 378 | 396 | } else if (option(arg, "-mcmodel=")) |cmodel| { |
| 379 | 397 | d.comp.cmodel = std.meta.stringToEnum(std.builtin.CodeModel, cmodel) orelse |
| 380 | 398 | return d.fatal("unsupported machine code model: '{s}'", .{arg}); |
| ... | ... | @@ -415,6 +433,10 @@ pub fn parseArgs( |
| 415 | 433 | d.dependencies.file = path; |
| 416 | 434 | } else if (mem.eql(u8, arg, "-MV")) { |
| 417 | 435 | d.dependencies.format = .nmake; |
| 436 | } else if (mem.eql(u8, arg, "-fexperimental-bounds-safety")) { | |
| 437 | d.comp.langopts.bounds_safety = .clang; | |
| 438 | } else if (mem.eql(u8, arg, "-fno-experimental-bounds-safety")) { | |
| 439 | d.comp.langopts.bounds_safety = .none; | |
| 418 | 440 | } else if (mem.eql(u8, arg, "-fchar8_t")) { |
| 419 | 441 | d.comp.langopts.has_char8_t_override = true; |
| 420 | 442 | } else if (mem.eql(u8, arg, "-fno-char8_t")) { |
| ... | ... | @@ -635,6 +657,42 @@ pub fn parseArgs( |
| 635 | 657 | d.output_name = file; |
| 636 | 658 | } else if (option(arg, "--sysroot=")) |sysroot| { |
| 637 | 659 | d.sysroot = sysroot; |
| 660 | } else if (mem.eql(u8, arg, "--sysroot")) { | |
| 661 | i += 1; | |
| 662 | if (i >= args.len) { | |
| 663 | try d.err("expected argument after --sysroot", .{}); | |
| 664 | continue; | |
| 665 | } | |
| 666 | d.sysroot = args[i]; | |
| 667 | } else if (mem.startsWith(u8, arg, "-isysroot")) { | |
| 668 | var path = arg["-isysroot".len..]; | |
| 669 | if (path.len == 0) { | |
| 670 | i += 1; | |
| 671 | if (i >= args.len) { | |
| 672 | try d.err("expected argument after -isysroot", .{}); | |
| 673 | continue; | |
| 674 | } | |
| 675 | path = args[i]; | |
| 676 | } | |
| 677 | d.sysroot = path; | |
| 678 | } else if (mem.eql(u8, arg, "-rpath")) { | |
| 679 | i += 1; | |
| 680 | if (i >= args.len) { | |
| 681 | try d.err("expected argument after -rpath", .{}); | |
| 682 | continue; | |
| 683 | } | |
| 684 | // ignore for now | |
| 685 | } else if (mem.startsWith(u8, arg, "-L")) { | |
| 686 | var path = arg["-L".len..]; | |
| 687 | if (path.len == 0) { | |
| 688 | i += 1; | |
| 689 | if (i >= args.len) { | |
| 690 | try d.err("expected argument after -L", .{}); | |
| 691 | continue; | |
| 692 | } | |
| 693 | path = args[i]; | |
| 694 | } | |
| 695 | // ignore for now | |
| 638 | 696 | } else if (mem.eql(u8, arg, "-Wp,-v")) { |
| 639 | 697 | // TODO this is not how this argument should work |
| 640 | 698 | d.verbose_search_path = true; |
| ... | ... | @@ -706,6 +764,10 @@ pub fn parseArgs( |
| 706 | 764 | d.comp.langopts.preserve_comments = true; |
| 707 | 765 | d.comp.langopts.preserve_comments_in_macros = true; |
| 708 | 766 | comment_arg = arg; |
| 767 | } else if (option(arg, "-fuse-ld=")) |linker_name| { | |
| 768 | d.use_linker = linker_name; | |
| 769 | } else if (mem.eql(u8, arg, "-fuse-ld=")) { | |
| 770 | d.use_linker = null; | |
| 709 | 771 | } else if (option(arg, "--ld-path=")) |linker_path| { |
| 710 | 772 | d.linker_path = linker_path; |
| 711 | 773 | } else if (mem.eql(u8, arg, "-r")) { |
| ... | ... | @@ -810,6 +872,7 @@ pub fn parseArgs( |
| 810 | 872 | .clang => try d.diagnostics.set("clang", .off), |
| 811 | 873 | .gcc => try d.diagnostics.set("gnu", .off), |
| 812 | 874 | .msvc => try d.diagnostics.set("microsoft", .off), |
| 875 | .no => {}, | |
| 813 | 876 | } |
| 814 | 877 | } |
| 815 | 878 | if (d.comp.langopts.preserve_comments and !d.only_preprocess) { |
| ... | ... | @@ -1063,20 +1126,22 @@ pub fn printDiagnosticsStats(d: *Driver) void { |
| 1063 | 1126 | } |
| 1064 | 1127 | } |
| 1065 | 1128 | |
| 1066 | pub fn detectConfig(d: *Driver, file: Io.File) std.Io.tty.Config { | |
| 1129 | pub fn detectMode(d: *Driver, file: std.Io.File) std.Io.Cancelable!std.Io.Terminal.Mode { | |
| 1067 | 1130 | if (d.diagnostics.color == false) return .no_color; |
| 1068 | 1131 | const force_color = d.diagnostics.color == true; |
| 1069 | 1132 | |
| 1070 | if (file.supportsAnsiEscapeCodes()) return .escape_codes; | |
| 1071 | if (@import("builtin").os.tag == .windows and file.isTty()) { | |
| 1072 | var info: std.os.windows.CONSOLE_SCREEN_BUFFER_INFO = undefined; | |
| 1073 | if (std.os.windows.kernel32.GetConsoleScreenBufferInfo(file.handle, &info) == std.os.windows.FALSE) { | |
| 1074 | return if (force_color) .escape_codes else .no_color; | |
| 1133 | const io = d.comp.io; | |
| 1134 | if (try file.supportsAnsiEscapeCodes(io)) return .escape_codes; | |
| 1135 | if (@import("builtin").os.tag == .windows and try file.isTty(io)) { | |
| 1136 | var get_console_info = std.os.windows.CONSOLE.USER_IO.GET_SCREEN_BUFFER_INFO; | |
| 1137 | switch (try get_console_info.operate(io, file)) { | |
| 1138 | .SUCCESS => return .{ .windows_api = .{ | |
| 1139 | .io = io, | |
| 1140 | .file = file, | |
| 1141 | .reset_attributes = get_console_info.Data.wAttributes, | |
| 1142 | } }, | |
| 1143 | else => {}, | |
| 1075 | 1144 | } |
| 1076 | return .{ .windows_api = .{ | |
| 1077 | .handle = file.handle, | |
| 1078 | .reset_attributes = info.wAttributes, | |
| 1079 | } }; | |
| 1080 | 1145 | } |
| 1081 | 1146 | |
| 1082 | 1147 | return if (force_color) .escape_codes else .no_color; |
| ... | ... | @@ -1105,13 +1170,13 @@ pub fn errorDescription(e: anyerror) []const u8 { |
| 1105 | 1170 | |
| 1106 | 1171 | /// The entry point of the Aro compiler. |
| 1107 | 1172 | /// **MAY call `exit` if `fast_exit` is set.** |
| 1108 | pub fn main(d: *Driver, tc: *Toolchain, args: []const []const u8, comptime fast_exit: bool, asm_gen_fn: ?AsmCodeGenFn) Compilation.Error!void { | |
| 1173 | pub fn main(d: *Driver, tc: *Toolchain, args: []const []const u8, comptime fast_exit: bool, asm_gen_fn: ?AsmCodeGenFn) (Compilation.Error || std.Io.Cancelable)!void { | |
| 1109 | 1174 | const user_macros = macros: { |
| 1110 | 1175 | var macro_buf: std.ArrayList(u8) = .empty; |
| 1111 | 1176 | defer macro_buf.deinit(d.comp.gpa); |
| 1112 | 1177 | |
| 1113 | 1178 | var stdout_buf: [256]u8 = undefined; |
| 1114 | var stdout = Io.File.stdout().writer(&stdout_buf); | |
| 1179 | var stdout = std.Io.File.stdout().writer(d.comp.io, &stdout_buf); | |
| 1115 | 1180 | if (parseArgs(d, &stdout.interface, &macro_buf, args) catch |er| switch (er) { |
| 1116 | 1181 | error.WriteFailed => return d.fatal("failed to write to stdout: {s}", .{errorDescription(er)}), |
| 1117 | 1182 | error.OutOfMemory => return error.OutOfMemory, |
| ... | ... | @@ -1217,14 +1282,13 @@ pub fn getDepFileName(d: *Driver, source: Source, buf: *[std.fs.max_name_bytes]u |
| 1217 | 1282 | } |
| 1218 | 1283 | |
| 1219 | 1284 | fn getRandomFilename(d: *Driver, buf: *[std.fs.max_name_bytes]u8, extension: []const u8) ![]const u8 { |
| 1220 | const io = d.comp.io; | |
| 1221 | 1285 | const random_bytes_count = 12; |
| 1222 | const sub_path_len = comptime std.base64.url_safe.Encoder.calcSize(random_bytes_count); | |
| 1286 | const sub_path_len = comptime std.fs.base64_encoder.calcSize(random_bytes_count); | |
| 1223 | 1287 | |
| 1224 | 1288 | var random_bytes: [random_bytes_count]u8 = undefined; |
| 1225 | io.random(&random_bytes); | |
| 1289 | d.comp.io.random(&random_bytes); | |
| 1226 | 1290 | var random_name: [sub_path_len]u8 = undefined; |
| 1227 | _ = std.base64.url_safe.Encoder.encode(&random_name, &random_bytes); | |
| 1291 | _ = std.fs.base64_encoder.encode(&random_name, &random_bytes); | |
| 1228 | 1292 | |
| 1229 | 1293 | const fmt_template = "/tmp/{s}{s}"; |
| 1230 | 1294 | const fmt_args = .{ |
| ... | ... | @@ -1251,12 +1315,11 @@ fn getOutFileName(d: *Driver, source: Source, buf: *[std.fs.max_name_bytes]u8) ! |
| 1251 | 1315 | } |
| 1252 | 1316 | |
| 1253 | 1317 | fn invokeAssembler(d: *Driver, tc: *Toolchain, input_path: []const u8, output_path: []const u8) !void { |
| 1254 | const io = d.comp.io; | |
| 1255 | 1318 | var assembler_path_buf: [std.fs.max_path_bytes]u8 = undefined; |
| 1256 | 1319 | const assembler_path = try tc.getAssemblerPath(&assembler_path_buf); |
| 1257 | 1320 | const argv = [_][]const u8{ assembler_path, input_path, "-o", output_path }; |
| 1258 | 1321 | |
| 1259 | var child = std.process.spawn(io, .{ | |
| 1322 | var child = std.process.spawn(d.comp.io, .{ | |
| 1260 | 1323 | .argv = &argv, |
| 1261 | 1324 | // TODO handle better |
| 1262 | 1325 | .stdin = .inherit, |
| ... | ... | @@ -1265,8 +1328,8 @@ fn invokeAssembler(d: *Driver, tc: *Toolchain, input_path: []const u8, output_pa |
| 1265 | 1328 | }) catch |er| { |
| 1266 | 1329 | return d.fatal("unable to spawn linker: {s}", .{errorDescription(er)}); |
| 1267 | 1330 | }; |
| 1268 | const term = child.wait(io) catch |er| { | |
| 1269 | return d.fatal("unable to wait linker: {s}", .{errorDescription(er)}); | |
| 1331 | const term = child.wait(d.comp.io) catch |er| { | |
| 1332 | return d.fatal("error waiting for linker: {s}", .{errorDescription(er)}); | |
| 1270 | 1333 | }; |
| 1271 | 1334 | switch (term) { |
| 1272 | 1335 | .exited => |code| if (code != 0) { |
| ... | ... | @@ -1289,13 +1352,16 @@ fn processSource( |
| 1289 | 1352 | comptime fast_exit: bool, |
| 1290 | 1353 | asm_gen_fn: ?AsmCodeGenFn, |
| 1291 | 1354 | ) !void { |
| 1292 | const gpa = d.comp.gpa; | |
| 1293 | d.comp.generated_buf.items.len = 0; | |
| 1355 | const comp = d.comp; | |
| 1356 | const io = comp.io; | |
| 1357 | const gpa = comp.gpa; | |
| 1358 | comp.generated_buf.items.len = 0; | |
| 1294 | 1359 | const prev_total = d.diagnostics.errors; |
| 1295 | 1360 | |
| 1296 | const io = d.comp.io; | |
| 1297 | ||
| 1298 | var pp = try Preprocessor.initDefault(d.comp); | |
| 1361 | var pp = try Preprocessor.init(comp, .{ | |
| 1362 | .base_file = source.id, | |
| 1363 | .path_replacements = d.macro_prefix_map.items, | |
| 1364 | }); | |
| 1299 | 1365 | defer pp.deinit(); |
| 1300 | 1366 | |
| 1301 | 1367 | var name_buf: [std.fs.max_name_bytes]u8 = undefined; |
| ... | ... | @@ -1304,8 +1370,8 @@ fn processSource( |
| 1304 | 1370 | |
| 1305 | 1371 | if (opt_dep_file) |*dep_file| pp.dep_file = dep_file; |
| 1306 | 1372 | |
| 1307 | if (d.comp.langopts.ms_extensions) { | |
| 1308 | d.comp.ms_cwd_source_id = source.id; | |
| 1373 | if (comp.langopts.ms_extensions) { | |
| 1374 | comp.ms_cwd_source_id = source.id; | |
| 1309 | 1375 | } |
| 1310 | 1376 | const dump_mode = d.debug_dump_letters.getPreprocessorDumpMode(); |
| 1311 | 1377 | if (d.verbose_pp) pp.verbose = true; |
| ... | ... | @@ -1333,10 +1399,10 @@ fn processSource( |
| 1333 | 1399 | const dep_file_name = try d.getDepFileName(source, writer_buf[0..std.fs.max_name_bytes]); |
| 1334 | 1400 | |
| 1335 | 1401 | const file = if (dep_file_name) |path| |
| 1336 | d.comp.cwd.createFile(io, path, .{}) catch |er| | |
| 1402 | comp.cwd.createFile(io, path, .{}) catch |er| | |
| 1337 | 1403 | return d.fatal("unable to create dependency file '{s}': {s}", .{ path, errorDescription(er) }) |
| 1338 | 1404 | else |
| 1339 | Io.File.stdout(); | |
| 1405 | std.Io.File.stdout(); | |
| 1340 | 1406 | defer if (dep_file_name != null) file.close(io); |
| 1341 | 1407 | |
| 1342 | 1408 | var file_writer = file.writer(io, &writer_buf); |
| ... | ... | @@ -1358,10 +1424,10 @@ fn processSource( |
| 1358 | 1424 | } |
| 1359 | 1425 | |
| 1360 | 1426 | const file = if (d.output_name) |some| |
| 1361 | d.comp.cwd.createFile(io, some, .{}) catch |er| | |
| 1427 | comp.cwd.createFile(io, some, .{}) catch |er| | |
| 1362 | 1428 | return d.fatal("unable to create output file '{s}': {s}", .{ some, errorDescription(er) }) |
| 1363 | 1429 | else |
| 1364 | Io.File.stdout(); | |
| 1430 | std.Io.File.stdout(); | |
| 1365 | 1431 | defer if (d.output_name != null) file.close(io); |
| 1366 | 1432 | |
| 1367 | 1433 | var file_writer = file.writer(io, &writer_buf); |
| ... | ... | @@ -1376,8 +1442,11 @@ fn processSource( |
| 1376 | 1442 | defer tree.deinit(); |
| 1377 | 1443 | |
| 1378 | 1444 | if (d.verbose_ast) { |
| 1379 | var stdout = Io.File.stdout().writer(&writer_buf); | |
| 1380 | tree.dump(d.detectConfig(stdout.file), &stdout.interface) catch {}; | |
| 1445 | var stdout = std.Io.File.stdout().writer(io, &writer_buf); | |
| 1446 | tree.dump(.{ | |
| 1447 | .mode = try d.detectMode(stdout.file), | |
| 1448 | .writer = &stdout.interface, | |
| 1449 | }) catch {}; | |
| 1381 | 1450 | } |
| 1382 | 1451 | |
| 1383 | 1452 | d.printDiagnosticsStats(); |
| ... | ... | @@ -1392,10 +1461,10 @@ fn processSource( |
| 1392 | 1461 | return; |
| 1393 | 1462 | } |
| 1394 | 1463 | |
| 1395 | if (d.comp.target.ofmt != .elf or d.comp.target.cpu.arch != .x86_64) { | |
| 1464 | if (comp.target.ofmt != .elf or comp.target.cpu.arch != .x86_64) { | |
| 1396 | 1465 | return d.fatal( |
| 1397 | 1466 | "unsupported target {s}-{s}-{s}, currently only x86-64 elf is supported", |
| 1398 | .{ @tagName(d.comp.target.cpu.arch), @tagName(d.comp.target.os.tag), @tagName(d.comp.target.abi) }, | |
| 1467 | .{ @tagName(comp.target.cpu.arch), @tagName(comp.target.os.tag), @tagName(comp.target.abi) }, | |
| 1399 | 1468 | ); |
| 1400 | 1469 | } |
| 1401 | 1470 | |
| ... | ... | @@ -1407,15 +1476,15 @@ fn processSource( |
| 1407 | 1476 | .{}, |
| 1408 | 1477 | ); |
| 1409 | 1478 | |
| 1410 | const assembly = try asm_fn(d.comp.target.toZigTarget(), &tree); | |
| 1479 | const assembly = try asm_fn(comp.target.toZigTarget(), &tree); | |
| 1411 | 1480 | defer assembly.deinit(gpa); |
| 1412 | 1481 | |
| 1413 | 1482 | if (d.only_preprocess_and_compile) { |
| 1414 | const out_file = d.comp.cwd.createFile(io, out_file_name, .{}) catch |er| | |
| 1483 | const out_file = comp.cwd.createFile(io, out_file_name, .{}) catch |er| | |
| 1415 | 1484 | return d.fatal("unable to create output file '{s}': {s}", .{ out_file_name, errorDescription(er) }); |
| 1416 | 1485 | defer out_file.close(io); |
| 1417 | 1486 | |
| 1418 | assembly.writeToFile(out_file) catch |er| | |
| 1487 | assembly.writeToFile(io, out_file) catch |er| | |
| 1419 | 1488 | return d.fatal("unable to write to output file '{s}': {s}", .{ out_file_name, errorDescription(er) }); |
| 1420 | 1489 | if (fast_exit) std.process.exit(0); // Not linking, no need for cleanup. |
| 1421 | 1490 | return; |
| ... | ... | @@ -1425,10 +1494,10 @@ fn processSource( |
| 1425 | 1494 | // then assemble to out_file_name |
| 1426 | 1495 | var assembly_name_buf: [std.fs.max_name_bytes]u8 = undefined; |
| 1427 | 1496 | const assembly_out_file_name = try d.getRandomFilename(&assembly_name_buf, ".s"); |
| 1428 | const out_file = d.comp.cwd.createFile(io, assembly_out_file_name, .{}) catch |er| | |
| 1497 | const out_file = comp.cwd.createFile(io, assembly_out_file_name, .{}) catch |er| | |
| 1429 | 1498 | return d.fatal("unable to create output file '{s}': {s}", .{ assembly_out_file_name, errorDescription(er) }); |
| 1430 | 1499 | defer out_file.close(io); |
| 1431 | assembly.writeToFile(out_file) catch |er| | |
| 1500 | assembly.writeToFile(io, out_file) catch |er| | |
| 1432 | 1501 | return d.fatal("unable to write to output file '{s}': {s}", .{ assembly_out_file_name, errorDescription(er) }); |
| 1433 | 1502 | try d.invokeAssembler(tc, assembly_out_file_name, out_file_name); |
| 1434 | 1503 | if (d.only_compile) { |
| ... | ... | @@ -1440,8 +1509,11 @@ fn processSource( |
| 1440 | 1509 | defer ir.deinit(gpa); |
| 1441 | 1510 | |
| 1442 | 1511 | if (d.verbose_ir) { |
| 1443 | var stdout = Io.File.stdout().writer(&writer_buf); | |
| 1444 | ir.dump(gpa, d.detectConfig(stdout.file), &stdout.interface) catch {}; | |
| 1512 | var stdout = std.Io.File.stdout().writer(io, &writer_buf); | |
| 1513 | ir.dump(gpa, .{ | |
| 1514 | .mode = try d.detectMode(stdout.file), | |
| 1515 | .writer = &stdout.interface, | |
| 1516 | }) catch {}; | |
| 1445 | 1517 | } |
| 1446 | 1518 | |
| 1447 | 1519 | var render_errors: Ir.Renderer.ErrorList = .{}; |
| ... | ... | @@ -1494,8 +1566,9 @@ fn dumpLinkerArgs(w: *std.Io.Writer, items: []const []const u8) !void { |
| 1494 | 1566 | /// The entry point of the Aro compiler. |
| 1495 | 1567 | /// **MAY call `exit` if `fast_exit` is set.** |
| 1496 | 1568 | pub fn invokeLinker(d: *Driver, tc: *Toolchain, comptime fast_exit: bool) Compilation.Error!void { |
| 1497 | const gpa = d.comp.gpa; | |
| 1498 | const io = d.comp.io; | |
| 1569 | const comp = d.comp; | |
| 1570 | const io = comp.io; | |
| 1571 | const gpa = comp.gpa; | |
| 1499 | 1572 | var argv: std.ArrayList([]const u8) = .empty; |
| 1500 | 1573 | defer argv.deinit(gpa); |
| 1501 | 1574 | |
| ... | ... | @@ -1507,7 +1580,7 @@ pub fn invokeLinker(d: *Driver, tc: *Toolchain, comptime fast_exit: bool) Compil |
| 1507 | 1580 | |
| 1508 | 1581 | if (d.verbose_linker_args) { |
| 1509 | 1582 | var stdout_buf: [4096]u8 = undefined; |
| 1510 | var stdout = Io.File.stdout().writer(&stdout_buf); | |
| 1583 | var stdout = std.Io.File.stdout().writer(io, &stdout_buf); | |
| 1511 | 1584 | dumpLinkerArgs(&stdout.interface, argv.items) catch { |
| 1512 | 1585 | return d.fatal("unable to dump linker args: {s}", .{errorDescription(stdout.err.?)}); |
| 1513 | 1586 | }; |
| ... | ... | @@ -1521,8 +1594,9 @@ pub fn invokeLinker(d: *Driver, tc: *Toolchain, comptime fast_exit: bool) Compil |
| 1521 | 1594 | }) catch |er| { |
| 1522 | 1595 | return d.fatal("unable to spawn linker: {s}", .{errorDescription(er)}); |
| 1523 | 1596 | }; |
| 1597 | ||
| 1524 | 1598 | const term = child.wait(io) catch |er| { |
| 1525 | return d.fatal("unable to wait linker: {s}", .{errorDescription(er)}); | |
| 1599 | return d.fatal("error waiting for linker: {s}", .{errorDescription(er)}); | |
| 1526 | 1600 | }; |
| 1527 | 1601 | switch (term) { |
| 1528 | 1602 | .exited => |code| if (code != 0) { |
| ... | ... | @@ -1541,7 +1615,7 @@ pub fn invokeLinker(d: *Driver, tc: *Toolchain, comptime fast_exit: bool) Compil |
| 1541 | 1615 | |
| 1542 | 1616 | fn exitWithCleanup(d: *Driver, code: u8) noreturn { |
| 1543 | 1617 | for (d.link_objects.items[d.link_objects.items.len - d.temp_file_count ..]) |obj| { |
| 1544 | std.fs.deleteFileAbsolute(obj) catch {}; | |
| 1618 | std.Io.Dir.deleteFileAbsolute(d.comp.io, obj) catch {}; | |
| 1545 | 1619 | } |
| 1546 | 1620 | std.process.exit(code); |
| 1547 | 1621 | } |
lib/compiler/aro/aro/Driver/Filesystem.zig deleted-241| ... | ... | @@ -1,241 +0,0 @@ |
| 1 | const builtin = @import("builtin"); | |
| 2 | const is_windows = builtin.os.tag == .windows; | |
| 3 | ||
| 4 | const std = @import("std"); | |
| 5 | const Io = std.Io; | |
| 6 | const mem = std.std.mem; | |
| 7 | ||
| 8 | fn readFileFake(entries: []const Filesystem.Entry, path: []const u8, buf: []u8) ?[]const u8 { | |
| 9 | @branchHint(.cold); | |
| 10 | for (entries) |entry| { | |
| 11 | if (mem.eql(u8, entry.path, path)) { | |
| 12 | const len = @min(entry.contents.len, buf.len); | |
| 13 | @memcpy(buf[0..len], entry.contents[0..len]); | |
| 14 | return buf[0..len]; | |
| 15 | } | |
| 16 | } | |
| 17 | return null; | |
| 18 | } | |
| 19 | ||
| 20 | fn findProgramByNameFake(entries: []const Filesystem.Entry, name: []const u8, path: ?[]const u8, buf: []u8) ?[]const u8 { | |
| 21 | @branchHint(.cold); | |
| 22 | if (mem.indexOfScalar(u8, name, '/') != null) { | |
| 23 | @memcpy(buf[0..name.len], name); | |
| 24 | return buf[0..name.len]; | |
| 25 | } | |
| 26 | const path_env = path orelse return null; | |
| 27 | var fib = std.heap.FixedBufferAllocator.init(buf); | |
| 28 | ||
| 29 | var it = mem.tokenizeScalar(u8, path_env, std.fs.path.delimiter); | |
| 30 | while (it.next()) |path_dir| { | |
| 31 | defer fib.reset(); | |
| 32 | const full_path = std.fs.path.join(fib.allocator(), &.{ path_dir, name }) catch continue; | |
| 33 | if (canExecuteFake(entries, full_path)) return full_path; | |
| 34 | } | |
| 35 | ||
| 36 | return null; | |
| 37 | } | |
| 38 | ||
| 39 | fn canExecuteFake(entries: []const Filesystem.Entry, path: []const u8) bool { | |
| 40 | @branchHint(.cold); | |
| 41 | for (entries) |entry| { | |
| 42 | if (mem.eql(u8, entry.path, path)) { | |
| 43 | return entry.executable; | |
| 44 | } | |
| 45 | } | |
| 46 | return false; | |
| 47 | } | |
| 48 | ||
| 49 | fn existsFake(entries: []const Filesystem.Entry, path: []const u8) bool { | |
| 50 | @branchHint(.cold); | |
| 51 | var buf: [std.fs.max_path_bytes]u8 = undefined; | |
| 52 | var fib = std.heap.FixedBufferAllocator.init(&buf); | |
| 53 | const resolved = std.fs.path.resolvePosix(fib.allocator(), &.{path}) catch return false; | |
| 54 | for (entries) |entry| { | |
| 55 | if (mem.eql(u8, entry.path, resolved)) return true; | |
| 56 | } | |
| 57 | return false; | |
| 58 | } | |
| 59 | ||
| 60 | fn canExecutePosix(io: Io, path: []const u8) bool { | |
| 61 | Io.Dir.accessAbsolute(io, path, .{ .execute = true }) catch return false; | |
| 62 | // Todo: ensure path is not a directory | |
| 63 | return true; | |
| 64 | } | |
| 65 | ||
| 66 | /// TODO | |
| 67 | fn canExecuteWindows(path: []const u8) bool { | |
| 68 | _ = path; | |
| 69 | return true; | |
| 70 | } | |
| 71 | ||
| 72 | /// TODO | |
| 73 | fn findProgramByNameWindows(allocator: std.mem.Allocator, name: []const u8, path: ?[]const u8, buf: []u8) ?[]const u8 { | |
| 74 | _ = path; | |
| 75 | _ = buf; | |
| 76 | _ = name; | |
| 77 | _ = allocator; | |
| 78 | return null; | |
| 79 | } | |
| 80 | ||
| 81 | /// TODO: does WASI need special handling? | |
| 82 | fn findProgramByNamePosix(name: []const u8, path: ?[]const u8, buf: []u8) ?[]const u8 { | |
| 83 | if (mem.indexOfScalar(u8, name, '/') != null) { | |
| 84 | @memcpy(buf[0..name.len], name); | |
| 85 | return buf[0..name.len]; | |
| 86 | } | |
| 87 | const path_env = path orelse return null; | |
| 88 | var fib = std.heap.FixedBufferAllocator.init(buf); | |
| 89 | ||
| 90 | var it = mem.tokenizeScalar(u8, path_env, std.fs.path.delimiter); | |
| 91 | while (it.next()) |path_dir| { | |
| 92 | defer fib.reset(); | |
| 93 | const full_path = std.fs.path.join(fib.allocator(), &.{ path_dir, name }) catch continue; | |
| 94 | if (canExecutePosix(full_path)) return full_path; | |
| 95 | } | |
| 96 | ||
| 97 | return null; | |
| 98 | } | |
| 99 | ||
| 100 | pub const Filesystem = union(enum) { | |
| 101 | real: std.Io.Dir, | |
| 102 | fake: []const Entry, | |
| 103 | ||
| 104 | const Entry = struct { | |
| 105 | path: []const u8, | |
| 106 | contents: []const u8 = "", | |
| 107 | executable: bool = false, | |
| 108 | }; | |
| 109 | ||
| 110 | const FakeDir = struct { | |
| 111 | entries: []const Entry, | |
| 112 | path: []const u8, | |
| 113 | ||
| 114 | fn iterate(self: FakeDir) FakeDir.Iterator { | |
| 115 | return .{ | |
| 116 | .entries = self.entries, | |
| 117 | .base = self.path, | |
| 118 | }; | |
| 119 | } | |
| 120 | ||
| 121 | const Iterator = struct { | |
| 122 | entries: []const Entry, | |
| 123 | base: []const u8, | |
| 124 | i: usize = 0, | |
| 125 | ||
| 126 | fn next(self: *@This()) !?std.Io.Dir.Entry { | |
| 127 | while (self.i < self.entries.len) { | |
| 128 | const entry = self.entries[self.i]; | |
| 129 | self.i += 1; | |
| 130 | if (entry.path.len == self.base.len) continue; | |
| 131 | if (std.mem.startsWith(u8, entry.path, self.base)) { | |
| 132 | const remaining = entry.path[self.base.len + 1 ..]; | |
| 133 | if (std.mem.indexOfScalar(u8, remaining, std.fs.path.sep) != null) continue; | |
| 134 | const extension = std.fs.path.extension(remaining); | |
| 135 | const kind: std.Io.Dir.Entry.Kind = if (extension.len == 0) .directory else .file; | |
| 136 | return .{ .name = remaining, .kind = kind }; | |
| 137 | } | |
| 138 | } | |
| 139 | return null; | |
| 140 | } | |
| 141 | }; | |
| 142 | }; | |
| 143 | ||
| 144 | const Dir = union(enum) { | |
| 145 | dir: std.Io.Dir, | |
| 146 | fake: FakeDir, | |
| 147 | ||
| 148 | pub fn iterate(self: Dir) Iterator { | |
| 149 | return switch (self) { | |
| 150 | .dir => |dir| .{ .iterator = dir.iterate() }, | |
| 151 | .fake => |fake| .{ .fake = fake.iterate() }, | |
| 152 | }; | |
| 153 | } | |
| 154 | ||
| 155 | pub fn close(self: *Dir, io: Io) void { | |
| 156 | switch (self.*) { | |
| 157 | .dir => |*d| d.close(io), | |
| 158 | .fake => {}, | |
| 159 | } | |
| 160 | } | |
| 161 | }; | |
| 162 | ||
| 163 | const Iterator = union(enum) { | |
| 164 | iterator: std.Io.Dir.Iterator, | |
| 165 | fake: FakeDir.Iterator, | |
| 166 | ||
| 167 | pub fn next(self: *Iterator) std.Io.Dir.Iterator.Error!?std.Io.Dir.Entry { | |
| 168 | return switch (self.*) { | |
| 169 | .iterator => |*it| it.next(), | |
| 170 | .fake => |*it| it.next(), | |
| 171 | }; | |
| 172 | } | |
| 173 | }; | |
| 174 | ||
| 175 | pub fn exists(fs: Filesystem, io: Io, path: []const u8) bool { | |
| 176 | switch (fs) { | |
| 177 | .real => |cwd| { | |
| 178 | cwd.access(io, path, .{}) catch return false; | |
| 179 | return true; | |
| 180 | }, | |
| 181 | .fake => |paths| return existsFake(paths, path), | |
| 182 | } | |
| 183 | } | |
| 184 | ||
| 185 | pub fn joinedExists(fs: Filesystem, parts: []const []const u8) bool { | |
| 186 | var buf: [std.fs.max_path_bytes]u8 = undefined; | |
| 187 | var fib = std.heap.FixedBufferAllocator.init(&buf); | |
| 188 | const joined = std.fs.path.join(fib.allocator(), parts) catch return false; | |
| 189 | return fs.exists(joined); | |
| 190 | } | |
| 191 | ||
| 192 | pub fn canExecute(fs: Filesystem, path: []const u8) bool { | |
| 193 | return switch (fs) { | |
| 194 | .real => if (is_windows) canExecuteWindows(path) else canExecutePosix(path), | |
| 195 | .fake => |entries| canExecuteFake(entries, path), | |
| 196 | }; | |
| 197 | } | |
| 198 | ||
| 199 | /// Search for an executable named `name` using platform-specific logic | |
| 200 | /// If it's found, write the full path to `buf` and return a slice of it | |
| 201 | /// Otherwise retun null | |
| 202 | pub fn findProgramByName(fs: Filesystem, allocator: std.mem.Allocator, name: []const u8, path: ?[]const u8, buf: []u8) ?[]const u8 { | |
| 203 | std.debug.assert(name.len > 0); | |
| 204 | return switch (fs) { | |
| 205 | .real => if (is_windows) findProgramByNameWindows(allocator, name, path, buf) else findProgramByNamePosix(name, path, buf), | |
| 206 | .fake => |entries| findProgramByNameFake(entries, name, path, buf), | |
| 207 | }; | |
| 208 | } | |
| 209 | ||
| 210 | /// Read the file at `path` into `buf`. | |
| 211 | /// Returns null if any errors are encountered | |
| 212 | /// Otherwise returns a slice of `buf`. If the file is larger than `buf` partial contents are returned | |
| 213 | pub fn readFile(fs: Filesystem, io: Io, path: []const u8, buf: []u8) ?[]const u8 { | |
| 214 | return switch (fs) { | |
| 215 | .real => |cwd| { | |
| 216 | const file = cwd.openFile(io, path, .{}) catch return null; | |
| 217 | defer file.close(io); | |
| 218 | ||
| 219 | const bytes_read = file.readAll(buf) catch return null; | |
| 220 | return buf[0..bytes_read]; | |
| 221 | }, | |
| 222 | .fake => |entries| readFileFake(entries, path, buf), | |
| 223 | }; | |
| 224 | } | |
| 225 | ||
| 226 | pub fn openDir(fs: Filesystem, io: Io, dir_name: []const u8) std.Io.Dir.OpenError!Dir { | |
| 227 | return switch (fs) { | |
| 228 | .real => |cwd| .{ .dir = try cwd.openDir(io, dir_name, .{ .access_sub_paths = false, .iterate = true }) }, | |
| 229 | .fake => |entries| .{ .fake = .{ .entries = entries, .path = dir_name } }, | |
| 230 | }; | |
| 231 | } | |
| 232 | }; | |
| 233 | ||
| 234 | test "Fake filesystem" { | |
| 235 | const fs: Filesystem = .{ .fake = &.{ | |
| 236 | .{ .path = "/usr/bin" }, | |
| 237 | } }; | |
| 238 | try std.testing.expect(fs.exists("/usr/bin")); | |
| 239 | try std.testing.expect(fs.exists("/usr/bin/foo/..")); | |
| 240 | try std.testing.expect(!fs.exists("/usr/bin/bar")); | |
| 241 | } |
lib/compiler/aro/aro/Driver/GCCDetector.zig created+635| ... | ... | @@ -0,0 +1,635 @@ |
| 1 | const std = @import("std"); | |
| 2 | ||
| 3 | const system_defaults = @import("system_defaults"); | |
| 4 | ||
| 5 | const GCCVersion = @import("GCCVersion.zig"); | |
| 6 | const Multilib = @import("Multilib.zig"); | |
| 7 | const Target = @import("../Target.zig"); | |
| 8 | const Toolchain = @import("../Toolchain.zig"); | |
| 9 | ||
| 10 | const GCCDetector = @This(); | |
| 11 | ||
| 12 | is_valid: bool = false, | |
| 13 | install_path: []const u8 = "", | |
| 14 | parent_lib_path: []const u8 = "", | |
| 15 | version: GCCVersion = .{}, | |
| 16 | gcc_triple: []const u8 = "", | |
| 17 | selected: Multilib = .{}, | |
| 18 | biarch_sibling: ?Multilib = null, | |
| 19 | ||
| 20 | pub fn deinit(self: *GCCDetector) void { | |
| 21 | if (!self.is_valid) return; | |
| 22 | } | |
| 23 | ||
| 24 | pub fn appendToolPath(self: *const GCCDetector, tc: *Toolchain) !void { | |
| 25 | if (!self.is_valid) return; | |
| 26 | return tc.addPathFromComponents(&.{ | |
| 27 | self.parent_lib_path, | |
| 28 | "..", | |
| 29 | self.gcc_triple, | |
| 30 | "bin", | |
| 31 | }, .program); | |
| 32 | } | |
| 33 | ||
| 34 | fn addDefaultGCCPrefixes(prefixes: *std.ArrayList([]const u8), tc: *const Toolchain) !void { | |
| 35 | const sysroot = tc.getSysroot(); | |
| 36 | const target = tc.getTarget(); | |
| 37 | if (sysroot.len == 0 and target.os.tag == .linux and tc.exists("/opt/rh")) { | |
| 38 | prefixes.appendAssumeCapacity("/opt/rh/gcc-toolset-12/root/usr"); | |
| 39 | prefixes.appendAssumeCapacity("/opt/rh/gcc-toolset-11/root/usr"); | |
| 40 | prefixes.appendAssumeCapacity("/opt/rh/gcc-toolset-10/root/usr"); | |
| 41 | prefixes.appendAssumeCapacity("/opt/rh/devtoolset-12/root/usr"); | |
| 42 | prefixes.appendAssumeCapacity("/opt/rh/devtoolset-11/root/usr"); | |
| 43 | prefixes.appendAssumeCapacity("/opt/rh/devtoolset-10/root/usr"); | |
| 44 | prefixes.appendAssumeCapacity("/opt/rh/devtoolset-9/root/usr"); | |
| 45 | prefixes.appendAssumeCapacity("/opt/rh/devtoolset-8/root/usr"); | |
| 46 | prefixes.appendAssumeCapacity("/opt/rh/devtoolset-7/root/usr"); | |
| 47 | prefixes.appendAssumeCapacity("/opt/rh/devtoolset-6/root/usr"); | |
| 48 | prefixes.appendAssumeCapacity("/opt/rh/devtoolset-4/root/usr"); | |
| 49 | prefixes.appendAssumeCapacity("/opt/rh/devtoolset-3/root/usr"); | |
| 50 | prefixes.appendAssumeCapacity("/opt/rh/devtoolset-2/root/usr"); | |
| 51 | } | |
| 52 | if (sysroot.len == 0) { | |
| 53 | prefixes.appendAssumeCapacity("/usr"); | |
| 54 | } else { | |
| 55 | var usr_path = try tc.driver.comp.arena.alloc(u8, 4 + sysroot.len); | |
| 56 | @memcpy(usr_path[0..4], "/usr"); | |
| 57 | @memcpy(usr_path[4..], sysroot); | |
| 58 | prefixes.appendAssumeCapacity(usr_path); | |
| 59 | } | |
| 60 | } | |
| 61 | ||
| 62 | fn collectLibDirsAndTriples( | |
| 63 | tc: *Toolchain, | |
| 64 | lib_dirs: *std.ArrayList([]const u8), | |
| 65 | triple_aliases: *std.ArrayList([]const u8), | |
| 66 | biarch_libdirs: *std.ArrayList([]const u8), | |
| 67 | biarch_triple_aliases: *std.ArrayList([]const u8), | |
| 68 | ) !void { | |
| 69 | const AArch64LibDirs: [2][]const u8 = .{ "/lib64", "/lib" }; | |
| 70 | const AArch64Triples: [4][]const u8 = .{ "aarch64-none-linux-gnu", "aarch64-linux-gnu", "aarch64-redhat-linux", "aarch64-suse-linux" }; | |
| 71 | const AArch64beLibDirs: [1][]const u8 = .{"/lib"}; | |
| 72 | const AArch64beTriples: [2][]const u8 = .{ "aarch64_be-none-linux-gnu", "aarch64_be-linux-gnu" }; | |
| 73 | ||
| 74 | const ARMLibDirs: [1][]const u8 = .{"/lib"}; | |
| 75 | const ARMTriples: [1][]const u8 = .{"arm-linux-gnueabi"}; | |
| 76 | const ARMHFTriples: [4][]const u8 = .{ "arm-linux-gnueabihf", "armv7hl-redhat-linux-gnueabi", "armv6hl-suse-linux-gnueabi", "armv7hl-suse-linux-gnueabi" }; | |
| 77 | ||
| 78 | const ARMebLibDirs: [1][]const u8 = .{"/lib"}; | |
| 79 | const ARMebTriples: [1][]const u8 = .{"armeb-linux-gnueabi"}; | |
| 80 | const ARMebHFTriples: [2][]const u8 = .{ "armeb-linux-gnueabihf", "armebv7hl-redhat-linux-gnueabi" }; | |
| 81 | ||
| 82 | const AVRLibDirs: [1][]const u8 = .{"/lib"}; | |
| 83 | const AVRTriples: [1][]const u8 = .{"avr"}; | |
| 84 | ||
| 85 | const CSKYLibDirs: [1][]const u8 = .{"/lib"}; | |
| 86 | const CSKYTriples: [3][]const u8 = .{ "csky-linux-gnuabiv2", "csky-linux-uclibcabiv2", "csky-elf-noneabiv2" }; | |
| 87 | ||
| 88 | const X86_64LibDirs: [2][]const u8 = .{ "/lib64", "/lib" }; | |
| 89 | const X86_64Triples: [11][]const u8 = .{ | |
| 90 | "x86_64-linux-gnu", "x86_64-unknown-linux-gnu", | |
| 91 | "x86_64-pc-linux-gnu", "x86_64-redhat-linux6E", | |
| 92 | "x86_64-redhat-linux", "x86_64-suse-linux", | |
| 93 | "x86_64-manbo-linux-gnu", "x86_64-linux-gnu", | |
| 94 | "x86_64-slackware-linux", "x86_64-unknown-linux", | |
| 95 | "x86_64-amazon-linux", | |
| 96 | }; | |
| 97 | const X32Triples: [2][]const u8 = .{ "x86_64-linux-gnux32", "x86_64-pc-linux-gnux32" }; | |
| 98 | const X32LibDirs: [2][]const u8 = .{ "/libx32", "/lib" }; | |
| 99 | const X86LibDirs: [2][]const u8 = .{ "/lib32", "/lib" }; | |
| 100 | const X86Triples: [9][]const u8 = .{ | |
| 101 | "i586-linux-gnu", "i686-linux-gnu", "i686-pc-linux-gnu", | |
| 102 | "i386-redhat-linux6E", "i686-redhat-linux", "i386-redhat-linux", | |
| 103 | "i586-suse-linux", "i686-montavista-linux", "i686-gnu", | |
| 104 | }; | |
| 105 | ||
| 106 | const LoongArch64LibDirs: [2][]const u8 = .{ "/lib64", "/lib" }; | |
| 107 | const LoongArch64Triples: [2][]const u8 = .{ "loongarch64-linux-gnu", "loongarch64-unknown-linux-gnu" }; | |
| 108 | ||
| 109 | const M68kLibDirs: [1][]const u8 = .{"/lib"}; | |
| 110 | const M68kTriples: [3][]const u8 = .{ "m68k-linux-gnu", "m68k-unknown-linux-gnu", "m68k-suse-linux" }; | |
| 111 | ||
| 112 | const MIPSLibDirs: [2][]const u8 = .{ "/libo32", "/lib" }; | |
| 113 | const MIPSTriples: [5][]const u8 = .{ | |
| 114 | "mips-linux-gnu", "mips-mti-linux", | |
| 115 | "mips-mti-linux-gnu", "mips-img-linux-gnu", | |
| 116 | "mipsisa32r6-linux-gnu", | |
| 117 | }; | |
| 118 | const MIPSELLibDirs: [2][]const u8 = .{ "/libo32", "/lib" }; | |
| 119 | const MIPSELTriples: [3][]const u8 = .{ "mipsel-linux-gnu", "mips-img-linux-gnu", "mipsisa32r6el-linux-gnu" }; | |
| 120 | ||
| 121 | const MIPS64LibDirs: [2][]const u8 = .{ "/lib64", "/lib" }; | |
| 122 | const MIPS64Triples: [6][]const u8 = .{ | |
| 123 | "mips64-linux-gnu", "mips-mti-linux-gnu", | |
| 124 | "mips-img-linux-gnu", "mips64-linux-gnuabi64", | |
| 125 | "mipsisa64r6-linux-gnu", "mipsisa64r6-linux-gnuabi64", | |
| 126 | }; | |
| 127 | const MIPS64ELLibDirs: [2][]const u8 = .{ "/lib64", "/lib" }; | |
| 128 | const MIPS64ELTriples: [6][]const u8 = .{ | |
| 129 | "mips64el-linux-gnu", "mips-mti-linux-gnu", | |
| 130 | "mips-img-linux-gnu", "mips64el-linux-gnuabi64", | |
| 131 | "mipsisa64r6el-linux-gnu", "mipsisa64r6el-linux-gnuabi64", | |
| 132 | }; | |
| 133 | ||
| 134 | const MIPSN32LibDirs: [1][]const u8 = .{"/lib32"}; | |
| 135 | const MIPSN32Triples: [2][]const u8 = .{ "mips64-linux-gnuabin32", "mipsisa64r6-linux-gnuabin32" }; | |
| 136 | const MIPSN32ELLibDirs: [1][]const u8 = .{"/lib32"}; | |
| 137 | const MIPSN32ELTriples: [2][]const u8 = .{ "mips64el-linux-gnuabin32", "mipsisa64r6el-linux-gnuabin32" }; | |
| 138 | ||
| 139 | const MSP430LibDirs: [1][]const u8 = .{"/lib"}; | |
| 140 | const MSP430Triples: [1][]const u8 = .{"msp430-elf"}; | |
| 141 | ||
| 142 | const PPCLibDirs: [2][]const u8 = .{ "/lib32", "/lib" }; | |
| 143 | const PPCTriples: [5][]const u8 = .{ | |
| 144 | "powerpc-linux-gnu", "powerpc-unknown-linux-gnu", "powerpc-linux-gnuspe", | |
| 145 | // On 32-bit PowerPC systems running SUSE Linux, gcc is configured as a | |
| 146 | // 64-bit compiler which defaults to "-m32", hence "powerpc64-suse-linux". | |
| 147 | "powerpc64-suse-linux", "powerpc-montavista-linuxspe", | |
| 148 | }; | |
| 149 | const PPCLELibDirs: [2][]const u8 = .{ "/lib32", "/lib" }; | |
| 150 | const PPCLETriples: [3][]const u8 = .{ "powerpcle-linux-gnu", "powerpcle-unknown-linux-gnu", "powerpcle-linux-musl" }; | |
| 151 | ||
| 152 | const PPC64LibDirs: [2][]const u8 = .{ "/lib64", "/lib" }; | |
| 153 | const PPC64Triples: [4][]const u8 = .{ | |
| 154 | "powerpc64-linux-gnu", "powerpc64-unknown-linux-gnu", | |
| 155 | "powerpc64-suse-linux", "ppc64-redhat-linux", | |
| 156 | }; | |
| 157 | const PPC64LELibDirs: [2][]const u8 = .{ "/lib64", "/lib" }; | |
| 158 | const PPC64LETriples: [5][]const u8 = .{ | |
| 159 | "powerpc64le-linux-gnu", "powerpc64le-unknown-linux-gnu", | |
| 160 | "powerpc64le-none-linux-gnu", "powerpc64le-suse-linux", | |
| 161 | "ppc64le-redhat-linux", | |
| 162 | }; | |
| 163 | ||
| 164 | const RISCV32LibDirs: [2][]const u8 = .{ "/lib32", "/lib" }; | |
| 165 | const RISCV32Triples: [3][]const u8 = .{ "riscv32-unknown-linux-gnu", "riscv32-linux-gnu", "riscv32-unknown-elf" }; | |
| 166 | const RISCV64LibDirs: [2][]const u8 = .{ "/lib64", "/lib" }; | |
| 167 | const RISCV64Triples: [3][]const u8 = .{ | |
| 168 | "riscv64-unknown-linux-gnu", | |
| 169 | "riscv64-linux-gnu", | |
| 170 | "riscv64-unknown-elf", | |
| 171 | }; | |
| 172 | ||
| 173 | const SPARCv8LibDirs: [2][]const u8 = .{ "/lib32", "/lib" }; | |
| 174 | const SPARCv8Triples: [2][]const u8 = .{ "sparc-linux-gnu", "sparcv8-linux-gnu" }; | |
| 175 | const SPARCv9LibDirs: [2][]const u8 = .{ "/lib64", "/lib" }; | |
| 176 | const SPARCv9Triples: [2][]const u8 = .{ "sparc64-linux-gnu", "sparcv9-linux-gnu" }; | |
| 177 | ||
| 178 | const SystemZLibDirs: [2][]const u8 = .{ "/lib64", "/lib" }; | |
| 179 | const SystemZTriples: [5][]const u8 = .{ | |
| 180 | "s390x-linux-gnu", "s390x-unknown-linux-gnu", "s390x-ibm-linux-gnu", | |
| 181 | "s390x-suse-linux", "s390x-redhat-linux", | |
| 182 | }; | |
| 183 | const target = tc.getTarget(); | |
| 184 | if (target.os.tag == .illumos) { | |
| 185 | // TODO | |
| 186 | return; | |
| 187 | } | |
| 188 | if (target.abi.isAndroid()) { | |
| 189 | const AArch64AndroidTriples: [1][]const u8 = .{"aarch64-linux-android"}; | |
| 190 | const ARMAndroidTriples: [1][]const u8 = .{"arm-linux-androideabi"}; | |
| 191 | const MIPSELAndroidTriples: [1][]const u8 = .{"mipsel-linux-android"}; | |
| 192 | const MIPS64ELAndroidTriples: [1][]const u8 = .{"mips64el-linux-android"}; | |
| 193 | const X86AndroidTriples: [1][]const u8 = .{"i686-linux-android"}; | |
| 194 | const X86_64AndroidTriples: [1][]const u8 = .{"x86_64-linux-android"}; | |
| 195 | ||
| 196 | switch (target.cpu.arch) { | |
| 197 | .aarch64 => { | |
| 198 | lib_dirs.appendSliceAssumeCapacity(&AArch64LibDirs); | |
| 199 | triple_aliases.appendSliceAssumeCapacity(&AArch64AndroidTriples); | |
| 200 | }, | |
| 201 | .arm, | |
| 202 | .thumb, | |
| 203 | => { | |
| 204 | lib_dirs.appendSliceAssumeCapacity(&ARMLibDirs); | |
| 205 | triple_aliases.appendSliceAssumeCapacity(&ARMAndroidTriples); | |
| 206 | }, | |
| 207 | .mipsel => { | |
| 208 | lib_dirs.appendSliceAssumeCapacity(&MIPSELLibDirs); | |
| 209 | triple_aliases.appendSliceAssumeCapacity(&MIPSELAndroidTriples); | |
| 210 | biarch_libdirs.appendSliceAssumeCapacity(&MIPS64ELLibDirs); | |
| 211 | biarch_triple_aliases.appendSliceAssumeCapacity(&MIPS64ELAndroidTriples); | |
| 212 | }, | |
| 213 | .mips64el => { | |
| 214 | lib_dirs.appendSliceAssumeCapacity(&MIPS64ELLibDirs); | |
| 215 | triple_aliases.appendSliceAssumeCapacity(&MIPS64ELAndroidTriples); | |
| 216 | biarch_libdirs.appendSliceAssumeCapacity(&MIPSELLibDirs); | |
| 217 | biarch_triple_aliases.appendSliceAssumeCapacity(&MIPSELAndroidTriples); | |
| 218 | }, | |
| 219 | .x86_64 => { | |
| 220 | lib_dirs.appendSliceAssumeCapacity(&X86_64LibDirs); | |
| 221 | triple_aliases.appendSliceAssumeCapacity(&X86_64AndroidTriples); | |
| 222 | biarch_libdirs.appendSliceAssumeCapacity(&X86LibDirs); | |
| 223 | biarch_triple_aliases.appendSliceAssumeCapacity(&X86AndroidTriples); | |
| 224 | }, | |
| 225 | .x86 => { | |
| 226 | lib_dirs.appendSliceAssumeCapacity(&X86LibDirs); | |
| 227 | triple_aliases.appendSliceAssumeCapacity(&X86AndroidTriples); | |
| 228 | biarch_libdirs.appendSliceAssumeCapacity(&X86_64LibDirs); | |
| 229 | biarch_triple_aliases.appendSliceAssumeCapacity(&X86_64AndroidTriples); | |
| 230 | }, | |
| 231 | else => {}, | |
| 232 | } | |
| 233 | return; | |
| 234 | } | |
| 235 | switch (target.cpu.arch) { | |
| 236 | .aarch64 => { | |
| 237 | lib_dirs.appendSliceAssumeCapacity(&AArch64LibDirs); | |
| 238 | triple_aliases.appendSliceAssumeCapacity(&AArch64Triples); | |
| 239 | biarch_libdirs.appendSliceAssumeCapacity(&AArch64LibDirs); | |
| 240 | biarch_triple_aliases.appendSliceAssumeCapacity(&AArch64Triples); | |
| 241 | }, | |
| 242 | .aarch64_be => { | |
| 243 | lib_dirs.appendSliceAssumeCapacity(&AArch64beLibDirs); | |
| 244 | triple_aliases.appendSliceAssumeCapacity(&AArch64beTriples); | |
| 245 | biarch_libdirs.appendSliceAssumeCapacity(&AArch64beLibDirs); | |
| 246 | biarch_triple_aliases.appendSliceAssumeCapacity(&AArch64beTriples); | |
| 247 | }, | |
| 248 | .arm, .thumb => { | |
| 249 | lib_dirs.appendSliceAssumeCapacity(&ARMLibDirs); | |
| 250 | if (target.abi == .gnueabihf) { | |
| 251 | triple_aliases.appendSliceAssumeCapacity(&ARMHFTriples); | |
| 252 | } else { | |
| 253 | triple_aliases.appendSliceAssumeCapacity(&ARMTriples); | |
| 254 | } | |
| 255 | }, | |
| 256 | .armeb, .thumbeb => { | |
| 257 | lib_dirs.appendSliceAssumeCapacity(&ARMebLibDirs); | |
| 258 | if (target.abi == .gnueabihf) { | |
| 259 | triple_aliases.appendSliceAssumeCapacity(&ARMebHFTriples); | |
| 260 | } else { | |
| 261 | triple_aliases.appendSliceAssumeCapacity(&ARMebTriples); | |
| 262 | } | |
| 263 | }, | |
| 264 | .avr => { | |
| 265 | lib_dirs.appendSliceAssumeCapacity(&AVRLibDirs); | |
| 266 | triple_aliases.appendSliceAssumeCapacity(&AVRTriples); | |
| 267 | }, | |
| 268 | .csky => { | |
| 269 | lib_dirs.appendSliceAssumeCapacity(&CSKYLibDirs); | |
| 270 | triple_aliases.appendSliceAssumeCapacity(&CSKYTriples); | |
| 271 | }, | |
| 272 | .x86_64 => { | |
| 273 | if (target.abi == .gnux32 or target.abi == .muslx32) { | |
| 274 | lib_dirs.appendSliceAssumeCapacity(&X32LibDirs); | |
| 275 | triple_aliases.appendSliceAssumeCapacity(&X32Triples); | |
| 276 | biarch_libdirs.appendSliceAssumeCapacity(&X86_64LibDirs); | |
| 277 | biarch_triple_aliases.appendSliceAssumeCapacity(&X86_64Triples); | |
| 278 | } else { | |
| 279 | lib_dirs.appendSliceAssumeCapacity(&X86_64LibDirs); | |
| 280 | triple_aliases.appendSliceAssumeCapacity(&X86_64Triples); | |
| 281 | biarch_libdirs.appendSliceAssumeCapacity(&X32LibDirs); | |
| 282 | biarch_triple_aliases.appendSliceAssumeCapacity(&X32Triples); | |
| 283 | } | |
| 284 | biarch_libdirs.appendSliceAssumeCapacity(&X86LibDirs); | |
| 285 | biarch_triple_aliases.appendSliceAssumeCapacity(&X86Triples); | |
| 286 | }, | |
| 287 | .x86 => { | |
| 288 | lib_dirs.appendSliceAssumeCapacity(&X86LibDirs); | |
| 289 | }, | |
| 290 | .loongarch64 => { | |
| 291 | lib_dirs.appendSliceAssumeCapacity(&LoongArch64LibDirs); | |
| 292 | triple_aliases.appendSliceAssumeCapacity(&LoongArch64Triples); | |
| 293 | }, | |
| 294 | .m68k => { | |
| 295 | lib_dirs.appendSliceAssumeCapacity(&M68kLibDirs); | |
| 296 | triple_aliases.appendSliceAssumeCapacity(&M68kTriples); | |
| 297 | }, | |
| 298 | .mips => { | |
| 299 | lib_dirs.appendSliceAssumeCapacity(&MIPSLibDirs); | |
| 300 | triple_aliases.appendSliceAssumeCapacity(&MIPSTriples); | |
| 301 | biarch_libdirs.appendSliceAssumeCapacity(&MIPS64LibDirs); | |
| 302 | biarch_triple_aliases.appendSliceAssumeCapacity(&MIPS64Triples); | |
| 303 | biarch_libdirs.appendSliceAssumeCapacity(&MIPSN32LibDirs); | |
| 304 | biarch_triple_aliases.appendSliceAssumeCapacity(&MIPSN32Triples); | |
| 305 | }, | |
| 306 | .mipsel => { | |
| 307 | lib_dirs.appendSliceAssumeCapacity(&MIPSELLibDirs); | |
| 308 | triple_aliases.appendSliceAssumeCapacity(&MIPSELTriples); | |
| 309 | triple_aliases.appendSliceAssumeCapacity(&MIPSTriples); | |
| 310 | biarch_libdirs.appendSliceAssumeCapacity(&MIPS64ELLibDirs); | |
| 311 | biarch_triple_aliases.appendSliceAssumeCapacity(&MIPS64ELTriples); | |
| 312 | biarch_libdirs.appendSliceAssumeCapacity(&MIPSN32ELLibDirs); | |
| 313 | biarch_triple_aliases.appendSliceAssumeCapacity(&MIPSN32ELTriples); | |
| 314 | }, | |
| 315 | .mips64 => { | |
| 316 | lib_dirs.appendSliceAssumeCapacity(&MIPS64LibDirs); | |
| 317 | triple_aliases.appendSliceAssumeCapacity(&MIPS64Triples); | |
| 318 | biarch_libdirs.appendSliceAssumeCapacity(&MIPSLibDirs); | |
| 319 | biarch_triple_aliases.appendSliceAssumeCapacity(&MIPSTriples); | |
| 320 | biarch_libdirs.appendSliceAssumeCapacity(&MIPSN32LibDirs); | |
| 321 | biarch_triple_aliases.appendSliceAssumeCapacity(&MIPSN32Triples); | |
| 322 | }, | |
| 323 | .mips64el => { | |
| 324 | lib_dirs.appendSliceAssumeCapacity(&MIPS64ELLibDirs); | |
| 325 | triple_aliases.appendSliceAssumeCapacity(&MIPS64ELTriples); | |
| 326 | biarch_libdirs.appendSliceAssumeCapacity(&MIPSELLibDirs); | |
| 327 | biarch_triple_aliases.appendSliceAssumeCapacity(&MIPSELTriples); | |
| 328 | biarch_libdirs.appendSliceAssumeCapacity(&MIPSN32ELLibDirs); | |
| 329 | biarch_triple_aliases.appendSliceAssumeCapacity(&MIPSN32ELTriples); | |
| 330 | biarch_triple_aliases.appendSliceAssumeCapacity(&MIPSTriples); | |
| 331 | }, | |
| 332 | .msp430 => { | |
| 333 | lib_dirs.appendSliceAssumeCapacity(&MSP430LibDirs); | |
| 334 | triple_aliases.appendSliceAssumeCapacity(&MSP430Triples); | |
| 335 | }, | |
| 336 | .powerpc => { | |
| 337 | lib_dirs.appendSliceAssumeCapacity(&PPCLibDirs); | |
| 338 | triple_aliases.appendSliceAssumeCapacity(&PPCTriples); | |
| 339 | biarch_libdirs.appendSliceAssumeCapacity(&PPC64LibDirs); | |
| 340 | biarch_triple_aliases.appendSliceAssumeCapacity(&PPC64Triples); | |
| 341 | }, | |
| 342 | .powerpcle => { | |
| 343 | lib_dirs.appendSliceAssumeCapacity(&PPCLELibDirs); | |
| 344 | triple_aliases.appendSliceAssumeCapacity(&PPCLETriples); | |
| 345 | biarch_libdirs.appendSliceAssumeCapacity(&PPC64LELibDirs); | |
| 346 | biarch_triple_aliases.appendSliceAssumeCapacity(&PPC64LETriples); | |
| 347 | }, | |
| 348 | .powerpc64 => { | |
| 349 | lib_dirs.appendSliceAssumeCapacity(&PPC64LibDirs); | |
| 350 | triple_aliases.appendSliceAssumeCapacity(&PPC64Triples); | |
| 351 | biarch_libdirs.appendSliceAssumeCapacity(&PPCLibDirs); | |
| 352 | biarch_triple_aliases.appendSliceAssumeCapacity(&PPCTriples); | |
| 353 | }, | |
| 354 | .powerpc64le => { | |
| 355 | lib_dirs.appendSliceAssumeCapacity(&PPC64LELibDirs); | |
| 356 | triple_aliases.appendSliceAssumeCapacity(&PPC64LETriples); | |
| 357 | biarch_libdirs.appendSliceAssumeCapacity(&PPCLELibDirs); | |
| 358 | biarch_triple_aliases.appendSliceAssumeCapacity(&PPCLETriples); | |
| 359 | }, | |
| 360 | .riscv32 => { | |
| 361 | lib_dirs.appendSliceAssumeCapacity(&RISCV32LibDirs); | |
| 362 | triple_aliases.appendSliceAssumeCapacity(&RISCV32Triples); | |
| 363 | biarch_libdirs.appendSliceAssumeCapacity(&RISCV64LibDirs); | |
| 364 | biarch_triple_aliases.appendSliceAssumeCapacity(&RISCV64Triples); | |
| 365 | }, | |
| 366 | .riscv64 => { | |
| 367 | lib_dirs.appendSliceAssumeCapacity(&RISCV64LibDirs); | |
| 368 | triple_aliases.appendSliceAssumeCapacity(&RISCV64Triples); | |
| 369 | biarch_libdirs.appendSliceAssumeCapacity(&RISCV32LibDirs); | |
| 370 | biarch_triple_aliases.appendSliceAssumeCapacity(&RISCV32Triples); | |
| 371 | }, | |
| 372 | .sparc => { | |
| 373 | lib_dirs.appendSliceAssumeCapacity(&SPARCv8LibDirs); | |
| 374 | triple_aliases.appendSliceAssumeCapacity(&SPARCv8Triples); | |
| 375 | biarch_libdirs.appendSliceAssumeCapacity(&SPARCv9LibDirs); | |
| 376 | biarch_triple_aliases.appendSliceAssumeCapacity(&SPARCv9Triples); | |
| 377 | }, | |
| 378 | .sparc64 => { | |
| 379 | lib_dirs.appendSliceAssumeCapacity(&SPARCv9LibDirs); | |
| 380 | triple_aliases.appendSliceAssumeCapacity(&SPARCv9Triples); | |
| 381 | biarch_libdirs.appendSliceAssumeCapacity(&SPARCv8LibDirs); | |
| 382 | biarch_triple_aliases.appendSliceAssumeCapacity(&SPARCv8Triples); | |
| 383 | }, | |
| 384 | .s390x => { | |
| 385 | lib_dirs.appendSliceAssumeCapacity(&SystemZLibDirs); | |
| 386 | triple_aliases.appendSliceAssumeCapacity(&SystemZTriples); | |
| 387 | }, | |
| 388 | else => {}, | |
| 389 | } | |
| 390 | } | |
| 391 | ||
| 392 | pub fn discover(self: *GCCDetector, tc: *Toolchain) !void { | |
| 393 | var path_buf: [std.fs.max_path_bytes]u8 = undefined; | |
| 394 | var fib = std.heap.FixedBufferAllocator.init(&path_buf); | |
| 395 | ||
| 396 | const target = tc.getTarget(); | |
| 397 | const biarch_variant_target = if (target.ptrBitWidth() == 32) | |
| 398 | target.get64BitArchVariant() | |
| 399 | else | |
| 400 | target.get32BitArchVariant(); | |
| 401 | ||
| 402 | var candidate_lib_dirs_buffer: [16][]const u8 = undefined; | |
| 403 | var candidate_lib_dirs = std.ArrayList([]const u8).initBuffer(&candidate_lib_dirs_buffer); | |
| 404 | ||
| 405 | var candidate_triple_aliases_buffer: [16][]const u8 = undefined; | |
| 406 | var candidate_triple_aliases = std.ArrayList([]const u8).initBuffer(&candidate_triple_aliases_buffer); | |
| 407 | ||
| 408 | var candidate_biarch_lib_dirs_buffer: [16][]const u8 = undefined; | |
| 409 | var candidate_biarch_lib_dirs = std.ArrayList([]const u8).initBuffer(&candidate_biarch_lib_dirs_buffer); | |
| 410 | ||
| 411 | var candidate_biarch_triple_aliases_buffer: [20][]const u8 = undefined; | |
| 412 | var candidate_biarch_triple_aliases = std.ArrayList([]const u8).initBuffer(&candidate_biarch_triple_aliases_buffer); | |
| 413 | ||
| 414 | try collectLibDirsAndTriples( | |
| 415 | tc, | |
| 416 | &candidate_lib_dirs, | |
| 417 | &candidate_triple_aliases, | |
| 418 | &candidate_biarch_lib_dirs, | |
| 419 | &candidate_biarch_triple_aliases, | |
| 420 | ); | |
| 421 | ||
| 422 | var target_buf: [64]u8 = undefined; | |
| 423 | const triple_str = target.toLLVMTriple(&target_buf); | |
| 424 | candidate_triple_aliases.appendAssumeCapacity(triple_str); | |
| 425 | ||
| 426 | // Also include the multiarch variant if it's different. | |
| 427 | var biarch_buf: [64]u8 = undefined; | |
| 428 | if (biarch_variant_target) |*biarch_target| { | |
| 429 | const biarch_triple_str = biarch_target.toLLVMTriple(&biarch_buf); | |
| 430 | if (!std.mem.eql(u8, biarch_triple_str, triple_str)) { | |
| 431 | candidate_triple_aliases.appendAssumeCapacity(biarch_triple_str); | |
| 432 | } | |
| 433 | } | |
| 434 | ||
| 435 | var prefixes_buf: [16][]const u8 = undefined; | |
| 436 | var prefixes = std.ArrayList([]const u8).initBuffer(&prefixes_buf); | |
| 437 | const gcc_toolchain_dir = gccToolchainDir(tc); | |
| 438 | if (gcc_toolchain_dir.len != 0) { | |
| 439 | const adjusted = if (gcc_toolchain_dir[gcc_toolchain_dir.len - 1] == '/') | |
| 440 | gcc_toolchain_dir[0 .. gcc_toolchain_dir.len - 1] | |
| 441 | else | |
| 442 | gcc_toolchain_dir; | |
| 443 | prefixes.appendAssumeCapacity(adjusted); | |
| 444 | } else { | |
| 445 | const sysroot = tc.getSysroot(); | |
| 446 | if (sysroot.len > 0) { | |
| 447 | prefixes.appendAssumeCapacity(sysroot); | |
| 448 | try addDefaultGCCPrefixes(&prefixes, tc); | |
| 449 | } | |
| 450 | ||
| 451 | if (sysroot.len == 0) { | |
| 452 | try addDefaultGCCPrefixes(&prefixes, tc); | |
| 453 | } | |
| 454 | // TODO: Special-case handling for Gentoo | |
| 455 | } | |
| 456 | ||
| 457 | const v0 = GCCVersion.parse("0.0.0"); | |
| 458 | for (prefixes.items) |prefix| { | |
| 459 | if (!tc.exists(prefix)) continue; | |
| 460 | ||
| 461 | for (candidate_lib_dirs.items) |suffix| { | |
| 462 | defer fib.reset(); | |
| 463 | const lib_dir = std.fs.path.join(fib.allocator(), &.{ prefix, suffix }) catch continue; | |
| 464 | if (!tc.exists(lib_dir)) continue; | |
| 465 | ||
| 466 | const gcc_dir_exists = tc.joinedExists(&.{ lib_dir, "/gcc" }); | |
| 467 | const gcc_cross_dir_exists = tc.joinedExists(&.{ lib_dir, "/gcc-cross" }); | |
| 468 | ||
| 469 | try self.scanLibDirForGCCTriple(tc, target, lib_dir, triple_str, false, gcc_dir_exists, gcc_cross_dir_exists); | |
| 470 | for (candidate_triple_aliases.items) |candidate| { | |
| 471 | try self.scanLibDirForGCCTriple(tc, target, lib_dir, candidate, false, gcc_dir_exists, gcc_cross_dir_exists); | |
| 472 | } | |
| 473 | } | |
| 474 | for (candidate_biarch_lib_dirs.items) |suffix| { | |
| 475 | const lib_dir = std.fs.path.join(fib.allocator(), &.{ prefix, suffix }) catch continue; | |
| 476 | if (!tc.exists(lib_dir)) continue; | |
| 477 | ||
| 478 | const gcc_dir_exists = tc.joinedExists(&.{ lib_dir, "/gcc" }); | |
| 479 | const gcc_cross_dir_exists = tc.joinedExists(&.{ lib_dir, "/gcc-cross" }); | |
| 480 | for (candidate_biarch_triple_aliases.items) |candidate| { | |
| 481 | try self.scanLibDirForGCCTriple(tc, target, lib_dir, candidate, true, gcc_dir_exists, gcc_cross_dir_exists); | |
| 482 | } | |
| 483 | } | |
| 484 | if (self.version.order(v0) == .gt) break; | |
| 485 | } | |
| 486 | } | |
| 487 | ||
| 488 | fn findBiarchMultilibs( | |
| 489 | tc: *const Toolchain, | |
| 490 | result: *Multilib.Detected, | |
| 491 | target: *const Target, | |
| 492 | path: [2][]const u8, | |
| 493 | needs_biarch_suffix: bool, | |
| 494 | ) !bool { | |
| 495 | const suff64 = if (target.os.tag == .illumos) switch (target.cpu.arch) { | |
| 496 | .x86, .x86_64 => "/amd64", | |
| 497 | .sparc => "/sparcv9", | |
| 498 | else => "/64", | |
| 499 | } else "/64"; | |
| 500 | ||
| 501 | const alt_64 = Multilib.init(suff64, suff64, &.{ "-m32", "+m64", "-mx32" }); | |
| 502 | const alt_32 = Multilib.init("/32", "/32", &.{ "+m32", "-m64", "-mx32" }); | |
| 503 | const alt_x32 = Multilib.init("/x32", "/x32", &.{ "-m32", "-m64", "+mx32" }); | |
| 504 | ||
| 505 | const multilib_filter = Multilib.Filter{ | |
| 506 | .base = path, | |
| 507 | .file = "crtbegin.o", | |
| 508 | }; | |
| 509 | ||
| 510 | const Want = enum { | |
| 511 | want32, | |
| 512 | want64, | |
| 513 | wantx32, | |
| 514 | }; | |
| 515 | const is_x32 = target.abi == .gnux32 or target.abi == .muslx32; | |
| 516 | const target_ptr_width = target.ptrBitWidth(); | |
| 517 | const want: Want = if (target_ptr_width == 32 and multilib_filter.exists(alt_32, tc)) | |
| 518 | .want64 | |
| 519 | else if (target_ptr_width == 64 and is_x32 and multilib_filter.exists(alt_x32, tc)) | |
| 520 | .want64 | |
| 521 | else if (target_ptr_width == 64 and !is_x32 and multilib_filter.exists(alt_64, tc)) | |
| 522 | .want32 | |
| 523 | else if (target_ptr_width == 32) | |
| 524 | if (needs_biarch_suffix) .want64 else .want32 | |
| 525 | else if (is_x32) | |
| 526 | if (needs_biarch_suffix) .want64 else .wantx32 | |
| 527 | else if (needs_biarch_suffix) .want32 else .want64; | |
| 528 | ||
| 529 | const default = switch (want) { | |
| 530 | .want32 => Multilib.init("", "", &.{ "+m32", "-m64", "-mx32" }), | |
| 531 | .want64 => Multilib.init("", "", &.{ "-m32", "+m64", "-mx32" }), | |
| 532 | .wantx32 => Multilib.init("", "", &.{ "-m32", "-m64", "+mx32" }), | |
| 533 | }; | |
| 534 | result.multilib_buf[result.multilib_count..][0..4].* = .{ | |
| 535 | default, | |
| 536 | alt_64, | |
| 537 | alt_32, | |
| 538 | alt_x32, | |
| 539 | }; | |
| 540 | result.multilib_count += 4; | |
| 541 | ||
| 542 | result.filter(multilib_filter, tc); | |
| 543 | return result.select(&.{ | |
| 544 | if (target_ptr_width == 64 and !is_x32) "+m64" else "-m64", | |
| 545 | if (target_ptr_width == 32) "+m32" else "-m32", | |
| 546 | if (target_ptr_width == 64 and is_x32) "+mx32" else "-mx32", | |
| 547 | }); | |
| 548 | } | |
| 549 | ||
| 550 | fn scanGCCForMultilibs( | |
| 551 | self: *GCCDetector, | |
| 552 | tc: *const Toolchain, | |
| 553 | target: *const Target, | |
| 554 | path: [2][]const u8, | |
| 555 | needs_biarch_suffix: bool, | |
| 556 | ) !bool { | |
| 557 | var detected: Multilib.Detected = .{}; | |
| 558 | if (target.cpu.arch == .csky) { | |
| 559 | // TODO | |
| 560 | } else if (target.cpu.arch.isMIPS()) { | |
| 561 | // TODO | |
| 562 | } else if (target.cpu.arch.isRISCV()) { | |
| 563 | // TODO | |
| 564 | } else if (target.cpu.arch == .msp430) { | |
| 565 | // TODO | |
| 566 | } else if (target.cpu.arch == .avr) { | |
| 567 | // No multilibs | |
| 568 | } else if (!try findBiarchMultilibs(tc, &detected, target, path, needs_biarch_suffix)) { | |
| 569 | return false; | |
| 570 | } | |
| 571 | self.selected = detected.selected; | |
| 572 | self.biarch_sibling = detected.biarch_sibling; | |
| 573 | return true; | |
| 574 | } | |
| 575 | ||
| 576 | fn scanLibDirForGCCTriple( | |
| 577 | self: *GCCDetector, | |
| 578 | tc: *const Toolchain, | |
| 579 | target: *const Target, | |
| 580 | lib_dir: []const u8, | |
| 581 | candidate_triple: []const u8, | |
| 582 | needs_biarch_suffix: bool, | |
| 583 | gcc_dir_exists: bool, | |
| 584 | gcc_cross_dir_exists: bool, | |
| 585 | ) !void { | |
| 586 | var path_buf: [std.fs.max_path_bytes]u8 = undefined; | |
| 587 | var fib = std.heap.FixedBufferAllocator.init(&path_buf); | |
| 588 | const comp = tc.driver.comp; | |
| 589 | const arena = comp.arena; | |
| 590 | const io = comp.io; | |
| 591 | for (0..2) |i| { | |
| 592 | if (i == 0 and !gcc_dir_exists) continue; | |
| 593 | if (i == 1 and !gcc_cross_dir_exists) continue; | |
| 594 | defer fib.reset(); | |
| 595 | ||
| 596 | const base: []const u8 = if (i == 0) "gcc" else "gcc-cross"; | |
| 597 | var lib_suffix_buf: [64]u8 = undefined; | |
| 598 | var suffix_buf_fib = std.heap.FixedBufferAllocator.init(&lib_suffix_buf); | |
| 599 | const lib_suffix = std.fs.path.join(suffix_buf_fib.allocator(), &.{ base, candidate_triple }) catch continue; | |
| 600 | ||
| 601 | const dir_name = std.fs.path.join(fib.allocator(), &.{ lib_dir, lib_suffix }) catch continue; | |
| 602 | var parent_dir = comp.cwd.openDir(io, dir_name, .{ .access_sub_paths = false, .iterate = true }) catch continue; | |
| 603 | defer parent_dir.close(io); | |
| 604 | ||
| 605 | var it = parent_dir.iterate(); | |
| 606 | while (it.next(io) catch continue) |entry| { | |
| 607 | if (entry.kind != .directory) continue; | |
| 608 | ||
| 609 | const version_text = entry.name; | |
| 610 | const candidate_version = GCCVersion.parse(version_text); | |
| 611 | if (candidate_version.major != -1) { | |
| 612 | // TODO: cache path so we're not repeatedly scanning | |
| 613 | } | |
| 614 | if (candidate_version.isLessThan(4, 1, 1, "")) continue; | |
| 615 | switch (candidate_version.order(self.version)) { | |
| 616 | .lt, .eq => continue, | |
| 617 | .gt => {}, | |
| 618 | } | |
| 619 | ||
| 620 | if (!try self.scanGCCForMultilibs(tc, target, .{ dir_name, version_text }, needs_biarch_suffix)) continue; | |
| 621 | ||
| 622 | self.version = candidate_version; | |
| 623 | self.gcc_triple = try arena.dupe(u8, candidate_triple); | |
| 624 | self.install_path = try std.fs.path.join(arena, &.{ lib_dir, lib_suffix, version_text }); | |
| 625 | self.parent_lib_path = try std.fs.path.join(arena, &.{ self.install_path, "..", "..", ".." }); | |
| 626 | self.is_valid = true; | |
| 627 | } | |
| 628 | } | |
| 629 | } | |
| 630 | ||
| 631 | fn gccToolchainDir(tc: *const Toolchain) []const u8 { | |
| 632 | const sysroot = tc.getSysroot(); | |
| 633 | if (sysroot.len != 0) return ""; | |
| 634 | return system_defaults.gcc_install_prefix; | |
| 635 | } |
lib/compiler/aro/aro/LangOpts.zig+12-2| ... | ... | @@ -7,16 +7,22 @@ pub const Compiler = enum { |
| 7 | 7 | clang, |
| 8 | 8 | gcc, |
| 9 | 9 | msvc, |
| 10 | no, | |
| 10 | 11 | |
| 11 | 12 | pub fn defaultGccVersion(self: Compiler) u32 { |
| 12 | 13 | return switch (self) { |
| 13 | 14 | .clang => 4 * 10_000 + 2 * 100 + 1, |
| 14 | .gcc => 7 * 10_000 + 1 * 100 + 0, | |
| 15 | .no, .gcc => 7 * 10_000 + 1 * 100 + 0, | |
| 15 | 16 | .msvc => 0, |
| 16 | 17 | }; |
| 17 | 18 | } |
| 18 | 19 | }; |
| 19 | 20 | |
| 21 | pub const BoundsSafety = enum { | |
| 22 | none, | |
| 23 | clang, | |
| 24 | }; | |
| 25 | ||
| 20 | 26 | /// The floating-point evaluation method for intermediate results within a single expression |
| 21 | 27 | pub const FPEvalMethod = enum(i8) { |
| 22 | 28 | /// The evaluation method cannot be determined or is inconsistent for this target. |
| ... | ... | @@ -116,7 +122,7 @@ pub const Standard = enum { |
| 116 | 122 | |
| 117 | 123 | const LangOpts = @This(); |
| 118 | 124 | |
| 119 | emulate: Compiler = .clang, | |
| 125 | emulate: Compiler = .no, | |
| 120 | 126 | standard: Standard = .default, |
| 121 | 127 | /// -fshort-enums option, makes enums only take up as much space as they need to hold all the values. |
| 122 | 128 | short_enums: bool = false, |
| ... | ... | @@ -149,6 +155,10 @@ preserve_comments_in_macros: bool = false, |
| 149 | 155 | /// e.g. 4.2.1 == 40201 |
| 150 | 156 | gnuc_version: ?u32 = null, |
| 151 | 157 | |
| 158 | bounds_safety: BoundsSafety = .none, | |
| 159 | ||
| 160 | default_symbol_visibility: std.builtin.SymbolVisibility = .default, | |
| 161 | ||
| 152 | 162 | pub fn setStandard(self: *LangOpts, name: []const u8) error{InvalidStandard}!void { |
| 153 | 163 | self.standard = Standard.NameMap.get(name) orelse return error.InvalidStandard; |
| 154 | 164 | } |
lib/compiler/aro/aro/Parser.zig+336-142| ... | ... | @@ -1,5 +1,4 @@ |
| 1 | 1 | const std = @import("std"); |
| 2 | const Io = std.Io; | |
| 3 | 2 | const mem = std.mem; |
| 4 | 3 | const Allocator = mem.Allocator; |
| 5 | 4 | const assert = std.debug.assert; |
| ... | ... | @@ -204,6 +203,11 @@ string_ids: struct { |
| 204 | 203 | sigjmp_buf: StringId, |
| 205 | 204 | ucontext_t: StringId, |
| 206 | 205 | }, |
| 206 | va_arg_pack_ctx: packed struct { | |
| 207 | valid: bool = false, | |
| 208 | variadic: bool = false, | |
| 209 | typed: bool = false, | |
| 210 | } = .{}, | |
| 207 | 211 | |
| 208 | 212 | /// Checks codepoint for various pedantic warnings |
| 209 | 213 | /// Returns true if diagnostic issued |
| ... | ... | @@ -212,7 +216,7 @@ fn checkIdentifierCodepointWarnings(p: *Parser, codepoint: u21, loc: Source.Loca |
| 212 | 216 | |
| 213 | 217 | const prev_total = p.diagnostics.total; |
| 214 | 218 | var sf = std.heap.stackFallback(1024, p.comp.gpa); |
| 215 | var allocating: Io.Writer.Allocating = .init(sf.get()); | |
| 219 | var allocating: std.Io.Writer.Allocating = .init(sf.get()); | |
| 216 | 220 | defer allocating.deinit(); |
| 217 | 221 | |
| 218 | 222 | if (!char_info.isC99IdChar(codepoint)) { |
| ... | ... | @@ -426,7 +430,7 @@ pub fn err(p: *Parser, tok_i: TokenIndex, diagnostic: Diagnostic, args: anytype) |
| 426 | 430 | if (p.diagnostics.effectiveKind(diagnostic) == .off) return; |
| 427 | 431 | |
| 428 | 432 | var sf = std.heap.stackFallback(1024, p.comp.gpa); |
| 429 | var allocating: Io.Writer.Allocating = .init(sf.get()); | |
| 433 | var allocating: std.Io.Writer.Allocating = .init(sf.get()); | |
| 430 | 434 | defer allocating.deinit(); |
| 431 | 435 | |
| 432 | 436 | p.formatArgs(&allocating.writer, diagnostic.fmt, args) catch return error.OutOfMemory; |
| ... | ... | @@ -448,7 +452,7 @@ pub fn err(p: *Parser, tok_i: TokenIndex, diagnostic: Diagnostic, args: anytype) |
| 448 | 452 | }, p.pp.expansionSlice(tok_i), true); |
| 449 | 453 | } |
| 450 | 454 | |
| 451 | fn formatArgs(p: *Parser, w: *Io.Writer, fmt: []const u8, args: anytype) !void { | |
| 455 | fn formatArgs(p: *Parser, w: *std.Io.Writer, fmt: []const u8, args: anytype) !void { | |
| 452 | 456 | var i: usize = 0; |
| 453 | 457 | inline for (std.meta.fields(@TypeOf(args))) |arg_info| { |
| 454 | 458 | const arg = @field(args, arg_info.name); |
| ... | ... | @@ -477,13 +481,13 @@ fn formatArgs(p: *Parser, w: *Io.Writer, fmt: []const u8, args: anytype) !void { |
| 477 | 481 | try w.writeAll(fmt[i..]); |
| 478 | 482 | } |
| 479 | 483 | |
| 480 | fn formatTokenId(w: *Io.Writer, fmt: []const u8, tok_id: Tree.Token.Id) !usize { | |
| 484 | fn formatTokenId(w: *std.Io.Writer, fmt: []const u8, tok_id: Tree.Token.Id) !usize { | |
| 481 | 485 | const i = Diagnostics.templateIndex(w, fmt, "{tok_id}"); |
| 482 | 486 | try w.writeAll(tok_id.symbol()); |
| 483 | 487 | return i; |
| 484 | 488 | } |
| 485 | 489 | |
| 486 | fn formatQualType(p: *Parser, w: *Io.Writer, fmt: []const u8, qt: QualType) !usize { | |
| 490 | fn formatQualType(p: *Parser, w: *std.Io.Writer, fmt: []const u8, qt: QualType) !usize { | |
| 487 | 491 | const i = Diagnostics.templateIndex(w, fmt, "{qt}"); |
| 488 | 492 | try w.writeByte('\''); |
| 489 | 493 | try qt.print(p.comp, w); |
| ... | ... | @@ -502,7 +506,7 @@ fn formatQualType(p: *Parser, w: *Io.Writer, fmt: []const u8, qt: QualType) !usi |
| 502 | 506 | return i; |
| 503 | 507 | } |
| 504 | 508 | |
| 505 | fn formatResult(p: *Parser, w: *Io.Writer, fmt: []const u8, res: Result) !usize { | |
| 509 | fn formatResult(p: *Parser, w: *std.Io.Writer, fmt: []const u8, res: Result) !usize { | |
| 506 | 510 | const i = Diagnostics.templateIndex(w, fmt, "{value}"); |
| 507 | 511 | switch (res.val.opt_ref) { |
| 508 | 512 | .none => try w.writeAll("(none)"), |
| ... | ... | @@ -525,7 +529,7 @@ const Normalized = struct { |
| 525 | 529 | return .{ .str = str }; |
| 526 | 530 | } |
| 527 | 531 | |
| 528 | pub fn format(ctx: Normalized, w: *Io.Writer, fmt: []const u8) !usize { | |
| 532 | pub fn format(ctx: Normalized, w: *std.Io.Writer, fmt: []const u8) !usize { | |
| 529 | 533 | const i = Diagnostics.templateIndex(w, fmt, "{normalized}"); |
| 530 | 534 | var it: std.unicode.Utf8Iterator = .{ |
| 531 | 535 | .bytes = ctx.str, |
| ... | ... | @@ -559,7 +563,7 @@ const Codepoint = struct { |
| 559 | 563 | return .{ .codepoint = codepoint }; |
| 560 | 564 | } |
| 561 | 565 | |
| 562 | pub fn format(ctx: Codepoint, w: *Io.Writer, fmt: []const u8) !usize { | |
| 566 | pub fn format(ctx: Codepoint, w: *std.Io.Writer, fmt: []const u8) !usize { | |
| 563 | 567 | const i = Diagnostics.templateIndex(w, fmt, "{codepoint}"); |
| 564 | 568 | try w.print("{X:0>4}", .{ctx.codepoint}); |
| 565 | 569 | return i; |
| ... | ... | @@ -573,7 +577,7 @@ const Escaped = struct { |
| 573 | 577 | return .{ .str = str }; |
| 574 | 578 | } |
| 575 | 579 | |
| 576 | pub fn format(ctx: Escaped, w: *Io.Writer, fmt: []const u8) !usize { | |
| 580 | pub fn format(ctx: Escaped, w: *std.Io.Writer, fmt: []const u8) !usize { | |
| 577 | 581 | const i = Diagnostics.templateIndex(w, fmt, "{s}"); |
| 578 | 582 | try std.zig.stringEscape(ctx.str, w); |
| 579 | 583 | return i; |
| ... | ... | @@ -740,6 +744,11 @@ fn getNode(p: *Parser, node: Node.Index, comptime tag: std.meta.Tag(Tree.Node)) |
| 740 | 744 | } |
| 741 | 745 | } |
| 742 | 746 | |
| 747 | pub fn isAddressOfStringLiteral(p: *Parser, node: Node.Index) bool { | |
| 748 | const addr_of = p.getNode(node, .addr_of_expr) orelse return false; | |
| 749 | return p.nodeIs(addr_of.operand, .string_literal_expr); | |
| 750 | } | |
| 751 | ||
| 743 | 752 | fn pragma(p: *Parser) Compilation.Error!bool { |
| 744 | 753 | var found_pragma = false; |
| 745 | 754 | while (p.eatToken(.keyword_pragma)) |_| { |
| ... | ... | @@ -1070,14 +1079,15 @@ fn decl(p: *Parser) Error!bool { |
| 1070 | 1079 | |
| 1071 | 1080 | try p.attributeSpecifier(); |
| 1072 | 1081 | |
| 1082 | const decl_spec_start = p.tok_i; | |
| 1073 | 1083 | var decl_spec = (try p.declSpec()) orelse blk: { |
| 1074 | 1084 | if (p.func.qt != null) { |
| 1075 | 1085 | p.tok_i = first_tok; |
| 1076 | 1086 | return false; |
| 1077 | 1087 | } |
| 1078 | switch (p.tok_ids[first_tok]) { | |
| 1088 | switch (p.tok_ids[decl_spec_start]) { | |
| 1079 | 1089 | .asterisk, .l_paren => {}, |
| 1080 | .identifier, .extended_identifier => switch (p.tok_ids[first_tok + 1]) { | |
| 1090 | .identifier, .extended_identifier => switch (p.tok_ids[decl_spec_start + 1]) { | |
| 1081 | 1091 | .identifier, .extended_identifier => { |
| 1082 | 1092 | // The most likely reason for `identifier identifier` is |
| 1083 | 1093 | // an unknown type name. |
| ... | ... | @@ -1087,7 +1097,7 @@ fn decl(p: *Parser) Error!bool { |
| 1087 | 1097 | }, |
| 1088 | 1098 | else => {}, |
| 1089 | 1099 | }, |
| 1090 | else => if (p.tok_i != first_tok) { | |
| 1100 | else => if (p.tok_i != decl_spec_start) { | |
| 1091 | 1101 | try p.err(p.tok_i, .expected_ident_or_l_paren, .{}); |
| 1092 | 1102 | return error.ParsingFailed; |
| 1093 | 1103 | } else return false, |
| ... | ... | @@ -1167,6 +1177,7 @@ fn decl(p: *Parser) Error!bool { |
| 1167 | 1177 | |
| 1168 | 1178 | // Collect old style parameter declarations. |
| 1169 | 1179 | if (init_d.d.old_style_func != null) { |
| 1180 | try p.err(init_d.d.name, .def_no_proto_deprecated, .{}); | |
| 1170 | 1181 | const param_buf_top = p.param_buf.items.len; |
| 1171 | 1182 | defer p.param_buf.items.len = param_buf_top; |
| 1172 | 1183 | |
| ... | ... | @@ -1340,7 +1351,7 @@ fn decl(p: *Parser) Error!bool { |
| 1340 | 1351 | if (init_d.d.old_style_func) |tok_i| try p.err(tok_i, .invalid_old_style_params, .{}); |
| 1341 | 1352 | |
| 1342 | 1353 | if (decl_spec.storage_class == .typedef) { |
| 1343 | try decl_spec.validateDecl(p); | |
| 1354 | try decl_spec.validateDecl(p, init_d.asm_label); | |
| 1344 | 1355 | try p.tree.setNode(.{ .typedef = .{ |
| 1345 | 1356 | .name_tok = init_d.d.name, |
| 1346 | 1357 | .qt = init_d.d.qt, |
| ... | ... | @@ -1357,7 +1368,7 @@ fn decl(p: *Parser) Error!bool { |
| 1357 | 1368 | .definition = null, |
| 1358 | 1369 | } }, @intFromEnum(decl_node)); |
| 1359 | 1370 | } else { |
| 1360 | try decl_spec.validateDecl(p); | |
| 1371 | try decl_spec.validateDecl(p, init_d.asm_label); | |
| 1361 | 1372 | var node_qt = init_d.d.qt; |
| 1362 | 1373 | if (p.func.qt == null and decl_spec.storage_class != .@"extern") { |
| 1363 | 1374 | if (node_qt.get(p.comp, .array)) |array_ty| { |
| ... | ... | @@ -1454,7 +1465,7 @@ fn decl(p: *Parser) Error!bool { |
| 1454 | 1465 | return true; |
| 1455 | 1466 | } |
| 1456 | 1467 | |
| 1457 | fn staticAssertMessage(p: *Parser, cond_node: Node.Index, maybe_message: ?Result, allocating: *Io.Writer.Allocating) !?[]const u8 { | |
| 1468 | fn staticAssertMessage(p: *Parser, cond_node: Node.Index, maybe_message: ?Result, allocating: *std.Io.Writer.Allocating) !?[]const u8 { | |
| 1458 | 1469 | const w = &allocating.writer; |
| 1459 | 1470 | |
| 1460 | 1471 | const cond = cond_node.get(&p.tree); |
| ... | ... | @@ -1527,7 +1538,7 @@ fn staticAssert(p: *Parser) Error!bool { |
| 1527 | 1538 | } else { |
| 1528 | 1539 | if (!res.val.toBool(p.comp)) { |
| 1529 | 1540 | var sf = std.heap.stackFallback(1024, gpa); |
| 1530 | var allocating: Io.Writer.Allocating = .init(sf.get()); | |
| 1541 | var allocating: std.Io.Writer.Allocating = .init(sf.get()); | |
| 1531 | 1542 | defer allocating.deinit(); |
| 1532 | 1543 | |
| 1533 | 1544 | if (p.staticAssertMessage(res_node, str, &allocating) catch return error.OutOfMemory) |message| { |
| ... | ... | @@ -1597,13 +1608,16 @@ pub const DeclSpec = struct { |
| 1597 | 1608 | if (d.constexpr) |tok_i| try p.err(tok_i, .illegal_storage_on_func, .{}); |
| 1598 | 1609 | } |
| 1599 | 1610 | |
| 1600 | fn validateDecl(d: DeclSpec, p: *Parser) Error!void { | |
| 1611 | fn validateDecl(d: DeclSpec, p: *Parser, asm_label: ?Node.Index) Error!void { | |
| 1601 | 1612 | if (d.@"inline") |tok_i| try p.err(tok_i, .func_spec_non_func, .{"inline"}); |
| 1602 | 1613 | // TODO move to attribute validation |
| 1603 | 1614 | if (d.noreturn) |tok_i| try p.err(tok_i, .func_spec_non_func, .{"_Noreturn"}); |
| 1604 | 1615 | switch (d.storage_class) { |
| 1605 | .auto => std.debug.assert(!p.comp.langopts.standard.atLeast(.c23)), | |
| 1606 | .register => if (p.func.qt == null) try p.err(p.tok_i, .illegal_storage_on_global, .{}), | |
| 1616 | .auto => { | |
| 1617 | std.debug.assert(!p.comp.langopts.standard.atLeast(.c23)); | |
| 1618 | try p.err(p.tok_i, .auto_on_global, .{}); | |
| 1619 | }, | |
| 1620 | .register => if (p.func.qt == null and asm_label == null) try p.err(p.tok_i, .register_on_global, .{}), | |
| 1607 | 1621 | else => {}, |
| 1608 | 1622 | } |
| 1609 | 1623 | } |
| ... | ... | @@ -1787,7 +1801,11 @@ fn storageClassSpec(p: *Parser, d: *DeclSpec) Error!bool { |
| 1787 | 1801 | return p.tok_i != start; |
| 1788 | 1802 | } |
| 1789 | 1803 | |
| 1790 | const InitDeclarator = struct { d: Declarator, initializer: ?Result = null }; | |
| 1804 | const InitDeclarator = struct { | |
| 1805 | d: Declarator, | |
| 1806 | initializer: ?Result = null, | |
| 1807 | asm_label: ?Node.Index = null, | |
| 1808 | }; | |
| 1791 | 1809 | |
| 1792 | 1810 | /// attribute |
| 1793 | 1811 | /// : attrIdentifier |
| ... | ... | @@ -1829,18 +1847,18 @@ fn attribute(p: *Parser, kind: Attribute.Kind, namespace: ?[]const u8) Error!?Te |
| 1829 | 1847 | if (try p.eatIdentifier()) |ident| { |
| 1830 | 1848 | if (try Attribute.diagnoseIdent(attr, &arguments, ident, p)) { |
| 1831 | 1849 | p.skipTo(.r_paren); |
| 1832 | return error.ParsingFailed; | |
| 1850 | return null; | |
| 1833 | 1851 | } |
| 1834 | 1852 | } else { |
| 1835 | 1853 | try p.err(name_tok, .attribute_requires_identifier, .{name}); |
| 1836 | return error.ParsingFailed; | |
| 1854 | return null; | |
| 1837 | 1855 | } |
| 1838 | 1856 | } else { |
| 1839 | 1857 | const arg_start = p.tok_i; |
| 1840 | 1858 | const first_expr = try p.expect(assignExpr); |
| 1841 | 1859 | if (try p.diagnose(attr, &arguments, arg_idx, first_expr, arg_start)) { |
| 1842 | 1860 | p.skipTo(.r_paren); |
| 1843 | return error.ParsingFailed; | |
| 1861 | return null; | |
| 1844 | 1862 | } |
| 1845 | 1863 | } |
| 1846 | 1864 | arg_idx += 1; |
| ... | ... | @@ -1851,7 +1869,7 @@ fn attribute(p: *Parser, kind: Attribute.Kind, namespace: ?[]const u8) Error!?Te |
| 1851 | 1869 | const arg_expr = try p.expect(assignExpr); |
| 1852 | 1870 | if (try p.diagnose(attr, &arguments, arg_idx, arg_expr, arg_start)) { |
| 1853 | 1871 | p.skipTo(.r_paren); |
| 1854 | return error.ParsingFailed; | |
| 1872 | return null; | |
| 1855 | 1873 | } |
| 1856 | 1874 | } |
| 1857 | 1875 | }, |
| ... | ... | @@ -1861,9 +1879,9 @@ fn attribute(p: *Parser, kind: Attribute.Kind, namespace: ?[]const u8) Error!?Te |
| 1861 | 1879 | try p.err(name_tok, .attribute_not_enough_args, .{ |
| 1862 | 1880 | @tagName(attr), required_count, |
| 1863 | 1881 | }); |
| 1864 | return error.ParsingFailed; | |
| 1882 | return null; | |
| 1865 | 1883 | } |
| 1866 | return TentativeAttribute{ .attr = .{ .tag = attr, .args = arguments, .syntax = kind.toSyntax() }, .tok = name_tok }; | |
| 1884 | return .{ .attr = .{ .tag = attr, .args = arguments, .syntax = kind.toSyntax() }, .tok = name_tok }; | |
| 1867 | 1885 | } |
| 1868 | 1886 | |
| 1869 | 1887 | fn diagnose(p: *Parser, attr: Attribute.Tag, arguments: *Attribute.Arguments, arg_idx: u32, res: Result, arg_start: TokenIndex) !bool { |
| ... | ... | @@ -1995,12 +2013,12 @@ fn initDeclarator(p: *Parser, decl_spec: *DeclSpec, attr_buf_top: usize, decl_no |
| 1995 | 2013 | defer p.attr_buf.len = this_attr_buf_top; |
| 1996 | 2014 | const gpa = p.comp.gpa; |
| 1997 | 2015 | |
| 1998 | var init_d = InitDeclarator{ | |
| 2016 | var init_d: InitDeclarator = .{ | |
| 1999 | 2017 | .d = (try p.declarator(decl_spec.qt, .normal)) orelse return null, |
| 2000 | 2018 | }; |
| 2001 | 2019 | |
| 2002 | 2020 | try p.attributeSpecifierExtra(init_d.d.name); |
| 2003 | _ = try p.assembly(.decl_label); | |
| 2021 | init_d.asm_label = try p.assembly(.decl_label); | |
| 2004 | 2022 | try p.attributeSpecifierExtra(init_d.d.name); |
| 2005 | 2023 | |
| 2006 | 2024 | switch (init_d.d.declarator_type) { |
| ... | ... | @@ -2276,14 +2294,13 @@ fn typeSpec(p: *Parser, builder: *TypeStore.Builder) Error!bool { |
| 2276 | 2294 | }, .syntax = .keyword }, |
| 2277 | 2295 | .tok = align_tok, |
| 2278 | 2296 | }); |
| 2279 | } else { | |
| 2297 | } else check: { | |
| 2280 | 2298 | const arg_start = p.tok_i; |
| 2281 | 2299 | const res = try p.integerConstExpr(.no_const_decl_folding); |
| 2282 | 2300 | if (!res.val.isZero(p.comp)) { |
| 2283 | 2301 | var args = Attribute.initArguments(.aligned, align_tok); |
| 2284 | 2302 | if (try p.diagnose(.aligned, &args, 0, res, arg_start)) { |
| 2285 | p.skipTo(.r_paren); | |
| 2286 | return error.ParsingFailed; | |
| 2303 | break :check; | |
| 2287 | 2304 | } |
| 2288 | 2305 | args.aligned.alignment.?.node = .pack(res.node); |
| 2289 | 2306 | try p.attr_buf.append(gpa, .{ |
| ... | ... | @@ -2562,7 +2579,7 @@ fn recordSpec(p: *Parser) Error!QualType { |
| 2562 | 2579 | |
| 2563 | 2580 | if (!any_incomplete) { |
| 2564 | 2581 | const pragma_pack_value = switch (p.comp.langopts.emulate) { |
| 2565 | .clang => starting_pragma_pack, | |
| 2582 | .clang, .no => starting_pragma_pack, | |
| 2566 | 2583 | .gcc => p.pragma_pack, |
| 2567 | 2584 | // TODO: msvc considers `#pragma pack` on a per-field basis |
| 2568 | 2585 | .msvc => p.pragma_pack, |
| ... | ... | @@ -3542,7 +3559,6 @@ fn declarator( |
| 3542 | 3559 | |
| 3543 | 3560 | const pointer_qt = try p.comp.type_store.put(p.comp.gpa, .{ .pointer = .{ |
| 3544 | 3561 | .child = d.qt, |
| 3545 | .decayed = null, | |
| 3546 | 3562 | } }); |
| 3547 | 3563 | d.qt = try builder.finishQuals(pointer_qt); |
| 3548 | 3564 | } |
| ... | ... | @@ -4141,7 +4157,10 @@ fn designation(p: *Parser, il: *InitList, init_qt: QualType, index_list: *IndexL |
| 4141 | 4157 | const field = record_ty.fields[field_index]; |
| 4142 | 4158 | if (field.name_tok == 0) if (field.qt.getRecord(p.comp)) |field_record_ty| { |
| 4143 | 4159 | // Recurse into anonymous field if it has a field by the name. |
| 4144 | if (!field_record_ty.hasField(p.comp, target_name)) continue; | |
| 4160 | if (!field_record_ty.hasField(p.comp, target_name)) { | |
| 4161 | field_index += 1; | |
| 4162 | continue; | |
| 4163 | } | |
| 4145 | 4164 | try index_list.append(gpa, field_index); |
| 4146 | 4165 | cur_il = try il.find(gpa, field_index); |
| 4147 | 4166 | record_ty = field_record_ty; |
| ... | ... | @@ -4983,31 +5002,31 @@ fn assembly(p: *Parser, kind: enum { global, decl_label, stmt }) Error!?Node.Ind |
| 4983 | 5002 | }; |
| 4984 | 5003 | |
| 4985 | 5004 | const l_paren = try p.expectToken(.l_paren); |
| 4986 | var result_node: ?Node.Index = null; | |
| 4987 | switch (kind) { | |
| 4988 | .decl_label => { | |
| 5005 | const res = switch (kind) { | |
| 5006 | .decl_label => blk: { | |
| 4989 | 5007 | const asm_str = try p.asmStr(); |
| 4990 | 5008 | const str = try p.removeNull(asm_str.val); |
| 4991 | 5009 | |
| 4992 | 5010 | const attr = Attribute{ .tag = .asm_label, .args = .{ .asm_label = .{ .name = str } }, .syntax = .keyword }; |
| 4993 | 5011 | try p.attr_buf.append(p.comp.gpa, .{ .attr = attr, .tok = asm_tok }); |
| 5012 | break :blk asm_str.node; | |
| 4994 | 5013 | }, |
| 4995 | .global => { | |
| 5014 | .global => blk: { | |
| 4996 | 5015 | const asm_str = try p.asmStr(); |
| 4997 | 5016 | try p.checkAsmStr(asm_str.val, l_paren); |
| 4998 | result_node = try p.addNode(.{ | |
| 5017 | break :blk try p.addNode(.{ | |
| 4999 | 5018 | .global_asm = .{ |
| 5000 | 5019 | .asm_tok = asm_tok, |
| 5001 | 5020 | .asm_str = asm_str.node, |
| 5002 | 5021 | }, |
| 5003 | 5022 | }); |
| 5004 | 5023 | }, |
| 5005 | .stmt => result_node = try p.gnuAsmStmt(quals, asm_tok, l_paren), | |
| 5006 | } | |
| 5024 | .stmt => try p.gnuAsmStmt(quals, asm_tok, l_paren), | |
| 5025 | }; | |
| 5007 | 5026 | try p.expectClosing(l_paren, .r_paren); |
| 5008 | 5027 | |
| 5009 | 5028 | if (kind != .decl_label) _ = try p.expectToken(.semicolon); |
| 5010 | return result_node; | |
| 5029 | return res; | |
| 5011 | 5030 | } |
| 5012 | 5031 | |
| 5013 | 5032 | /// Same as stringLiteral but errors on unicode and wide string literals |
| ... | ... | @@ -5253,7 +5272,6 @@ fn stmt(p: *Parser) Error!Node.Index { |
| 5253 | 5272 | if (!goto_expr.qt.isInvalid() and !goto_expr.qt.isPointer(p.comp)) { |
| 5254 | 5273 | const result_qt = try p.comp.type_store.put(gpa, .{ .pointer = .{ |
| 5255 | 5274 | .child = .{ .@"const" = true, ._index = .void }, |
| 5256 | .decayed = null, | |
| 5257 | 5275 | } }); |
| 5258 | 5276 | if (!goto_expr.qt.isRealInt(p.comp)) { |
| 5259 | 5277 | try p.err(expr_tok, .incompatible_arg, .{ goto_expr.qt, result_qt }); |
| ... | ... | @@ -5905,6 +5923,7 @@ const CallExpr = union(enum) { |
| 5905 | 5923 | .__builtin_reduce_xor, |
| 5906 | 5924 | .__builtin_reduce_max, |
| 5907 | 5925 | .__builtin_reduce_min, |
| 5926 | .__builtin_constant_p, | |
| 5908 | 5927 | => 1, |
| 5909 | 5928 | |
| 5910 | 5929 | .__builtin_complex, |
| ... | ... | @@ -5922,13 +5941,15 @@ const CallExpr = union(enum) { |
| 5922 | 5941 | |
| 5923 | 5942 | .__c11_atomic_store, |
| 5924 | 5943 | .__atomic_store, |
| 5944 | .__atomic_store_n, | |
| 5945 | .__atomic_load, | |
| 5925 | 5946 | .__c11_atomic_exchange, |
| 5926 | .__atomic_exchange, | |
| 5927 | 5947 | .__c11_atomic_fetch_add, |
| 5928 | 5948 | .__c11_atomic_fetch_sub, |
| 5929 | 5949 | .__c11_atomic_fetch_or, |
| 5930 | 5950 | .__c11_atomic_fetch_xor, |
| 5931 | 5951 | .__c11_atomic_fetch_and, |
| 5952 | .__c11_atomic_fetch_nand, | |
| 5932 | 5953 | .__atomic_fetch_add, |
| 5933 | 5954 | .__atomic_fetch_sub, |
| 5934 | 5955 | .__atomic_fetch_and, |
| ... | ... | @@ -5948,6 +5969,9 @@ const CallExpr = union(enum) { |
| 5948 | 5969 | .__atomic_exchange_n, |
| 5949 | 5970 | => 3, |
| 5950 | 5971 | |
| 5972 | .__atomic_exchange, | |
| 5973 | => 4, | |
| 5974 | ||
| 5951 | 5975 | .__c11_atomic_compare_exchange_strong, |
| 5952 | 5976 | .__c11_atomic_compare_exchange_weak, |
| 5953 | 5977 | => 5, |
| ... | ... | @@ -5964,25 +5988,13 @@ const CallExpr = union(enum) { |
| 5964 | 5988 | |
| 5965 | 5989 | fn returnType(self: CallExpr, p: *Parser, args: []const Node.Index, func_qt: QualType) !QualType { |
| 5966 | 5990 | if (self == .standard) { |
| 5991 | if (func_qt.isInvalid()) return .invalid; | |
| 5967 | 5992 | return if (func_qt.get(p.comp, .func)) |func_ty| func_ty.return_type else .invalid; |
| 5968 | 5993 | } |
| 5969 | 5994 | const builtin = self.builtin; |
| 5970 | 5995 | const func_ty = func_qt.get(p.comp, .func).?; |
| 5971 | 5996 | return switch (builtin.expanded.tag) { |
| 5972 | 5997 | .common => |tag| switch (tag) { |
| 5973 | .__c11_atomic_exchange => { | |
| 5974 | if (args.len != 4) return .invalid; // wrong number of arguments; already an error | |
| 5975 | const second_param = args[2]; | |
| 5976 | return second_param.qt(&p.tree); | |
| 5977 | }, | |
| 5978 | .__c11_atomic_load => { | |
| 5979 | if (args.len != 3) return .invalid; // wrong number of arguments; already an error | |
| 5980 | const first_param = args[1]; | |
| 5981 | const qt = first_param.qt(&p.tree); | |
| 5982 | if (!qt.isPointer(p.comp)) return .invalid; | |
| 5983 | return qt.childType(p.comp); | |
| 5984 | }, | |
| 5985 | ||
| 5986 | 5998 | .__atomic_fetch_add, |
| 5987 | 5999 | .__atomic_add_fetch, |
| 5988 | 6000 | .__c11_atomic_fetch_add, |
| ... | ... | @@ -6008,15 +6020,38 @@ const CallExpr = union(enum) { |
| 6008 | 6020 | .__c11_atomic_fetch_nand, |
| 6009 | 6021 | |
| 6010 | 6022 | .__atomic_exchange_n, |
| 6023 | .__c11_atomic_exchange, | |
| 6024 | => { | |
| 6025 | const second_param = args[1].qt(&p.tree); | |
| 6026 | return second_param; | |
| 6027 | }, | |
| 6028 | ||
| 6029 | .__sync_fetch_and_add, | |
| 6030 | .__sync_fetch_and_and, | |
| 6031 | .__sync_fetch_and_nand, | |
| 6032 | .__sync_fetch_and_or, | |
| 6033 | .__sync_fetch_and_sub, | |
| 6034 | .__sync_fetch_and_xor, | |
| 6035 | ||
| 6036 | .__sync_add_and_fetch, | |
| 6037 | .__sync_and_and_fetch, | |
| 6038 | .__sync_nand_and_fetch, | |
| 6039 | .__sync_or_and_fetch, | |
| 6040 | .__sync_sub_and_fetch, | |
| 6041 | .__sync_xor_and_fetch, | |
| 6042 | ||
| 6043 | .__sync_swap, | |
| 6044 | .__sync_lock_test_and_set, | |
| 6045 | .__sync_val_compare_and_swap, | |
| 6011 | 6046 | => { |
| 6012 | if (args.len != 3) return .invalid; // wrong number of arguments; already an error | |
| 6013 | const second_param = args[2]; | |
| 6014 | return second_param.qt(&p.tree); | |
| 6047 | if (args.len < 2) return .invalid; | |
| 6048 | const second_param = args[1].qt(&p.tree); | |
| 6049 | return second_param; | |
| 6015 | 6050 | }, |
| 6016 | 6051 | .__builtin_complex => { |
| 6017 | if (args.len < 1) return .invalid; // not enough arguments; already an error | |
| 6018 | const last_param = args[args.len - 1]; | |
| 6019 | return try last_param.qt(&p.tree).toComplex(p.comp); | |
| 6052 | const last_param = args[args.len - 1].qt(&p.tree); | |
| 6053 | if (last_param.isInvalid()) return .invalid; | |
| 6054 | return try last_param.toComplex(p.comp); | |
| 6020 | 6055 | }, |
| 6021 | 6056 | .__atomic_compare_exchange, |
| 6022 | 6057 | .__atomic_compare_exchange_n, |
| ... | ... | @@ -6027,9 +6062,8 @@ const CallExpr = union(enum) { |
| 6027 | 6062 | .__c11_atomic_compare_exchange_strong, |
| 6028 | 6063 | .__c11_atomic_compare_exchange_weak, |
| 6029 | 6064 | => { |
| 6030 | if (args.len != 6) return .invalid; // wrong number of arguments | |
| 6031 | const third_param = args[3]; | |
| 6032 | return third_param.qt(&p.tree); | |
| 6065 | const third_param = args[2].qt(&p.tree); | |
| 6066 | return third_param; | |
| 6033 | 6067 | }, |
| 6034 | 6068 | |
| 6035 | 6069 | .__builtin_elementwise_abs, |
| ... | ... | @@ -6058,13 +6092,12 @@ const CallExpr = union(enum) { |
| 6058 | 6092 | .__builtin_elementwise_sub_sat, |
| 6059 | 6093 | .__builtin_elementwise_fma, |
| 6060 | 6094 | .__builtin_elementwise_popcount, |
| 6095 | ||
| 6061 | 6096 | .__builtin_nondeterministic_value, |
| 6062 | 6097 | => { |
| 6063 | if (args.len < 1) return .invalid; // not enough arguments; already an error | |
| 6064 | const last_param = args[args.len - 1]; | |
| 6065 | return last_param.qt(&p.tree); | |
| 6098 | const first_param = args[0].qt(&p.tree); | |
| 6099 | return first_param; | |
| 6066 | 6100 | }, |
| 6067 | .__builtin_nontemporal_load, | |
| 6068 | 6101 | .__builtin_reduce_add, |
| 6069 | 6102 | .__builtin_reduce_mul, |
| 6070 | 6103 | .__builtin_reduce_and, |
| ... | ... | @@ -6073,30 +6106,19 @@ const CallExpr = union(enum) { |
| 6073 | 6106 | .__builtin_reduce_max, |
| 6074 | 6107 | .__builtin_reduce_min, |
| 6075 | 6108 | => { |
| 6076 | if (args.len < 1) return .invalid; // not enough arguments; already an error | |
| 6077 | const last_param = args[args.len - 1]; | |
| 6078 | return last_param.qt(&p.tree).childType(p.comp); | |
| 6109 | const first_param = args[0].qt(&p.tree); | |
| 6110 | if (first_param.isInvalid()) return .invalid; | |
| 6111 | const vector_ty = first_param.get(p.comp, .vector) orelse return .invalid; | |
| 6112 | return vector_ty.elem; | |
| 6079 | 6113 | }, |
| 6080 | .__sync_add_and_fetch, | |
| 6081 | .__sync_and_and_fetch, | |
| 6082 | .__sync_fetch_and_add, | |
| 6083 | .__sync_fetch_and_and, | |
| 6084 | .__sync_fetch_and_nand, | |
| 6085 | .__sync_fetch_and_or, | |
| 6086 | .__sync_fetch_and_sub, | |
| 6087 | .__sync_fetch_and_xor, | |
| 6088 | .__sync_lock_test_and_set, | |
| 6089 | .__sync_nand_and_fetch, | |
| 6090 | .__sync_or_and_fetch, | |
| 6091 | .__sync_sub_and_fetch, | |
| 6092 | .__sync_swap, | |
| 6093 | .__sync_xor_and_fetch, | |
| 6094 | .__sync_val_compare_and_swap, | |
| 6095 | 6114 | .__atomic_load_n, |
| 6115 | .__c11_atomic_load, | |
| 6116 | .__builtin_nontemporal_load, | |
| 6096 | 6117 | => { |
| 6097 | if (args.len < 1) return .invalid; // not enough arguments; already an error | |
| 6098 | const first_param = args[0]; | |
| 6099 | return first_param.qt(&p.tree).childType(p.comp); | |
| 6118 | const first_param = args[0].qt(&p.tree); | |
| 6119 | if (first_param.isInvalid()) return .invalid; | |
| 6120 | if (!first_param.isPointer(p.comp)) return .invalid; | |
| 6121 | return first_param.childType(p.comp); | |
| 6100 | 6122 | }, |
| 6101 | 6123 | else => func_ty.return_type, |
| 6102 | 6124 | }, |
| ... | ... | @@ -6104,9 +6126,16 @@ const CallExpr = union(enum) { |
| 6104 | 6126 | }; |
| 6105 | 6127 | } |
| 6106 | 6128 | |
| 6107 | fn finish(self: CallExpr, p: *Parser, func_qt: QualType, list_buf_top: usize, l_paren: TokenIndex) Error!Result { | |
| 6129 | fn finish( | |
| 6130 | self: CallExpr, | |
| 6131 | p: *Parser, | |
| 6132 | func_qt: QualType, | |
| 6133 | list_buf_top: usize, | |
| 6134 | l_paren: TokenIndex, | |
| 6135 | args_ok: bool, | |
| 6136 | ) Error!Result { | |
| 6108 | 6137 | const args = p.list_buf.items[list_buf_top..]; |
| 6109 | const return_qt = try self.returnType(p, args, func_qt); | |
| 6138 | const return_qt: QualType = if (args_ok) try self.returnType(p, args, func_qt) else .invalid; | |
| 6110 | 6139 | switch (self) { |
| 6111 | 6140 | .standard => |func_node| return .{ |
| 6112 | 6141 | .qt = return_qt, |
| ... | ... | @@ -6118,7 +6147,7 @@ const CallExpr = union(enum) { |
| 6118 | 6147 | } }), |
| 6119 | 6148 | }, |
| 6120 | 6149 | .builtin => |builtin| return .{ |
| 6121 | .val = try evalBuiltin(builtin.expanded, p, args), | |
| 6150 | .val = if (args_ok) try evalBuiltin(builtin.expanded, p, args) else .{}, | |
| 6122 | 6151 | .qt = return_qt, |
| 6123 | 6152 | .node = try p.addNode(.{ .builtin_call_expr = .{ |
| 6124 | 6153 | .builtin_tok = builtin.builtin_tok, |
| ... | ... | @@ -6283,14 +6312,12 @@ pub const Result = struct { |
| 6283 | 6312 | if (!adjusted_elem_qt.eqlQualified(a_elem, p.comp)) { |
| 6284 | 6313 | a.qt = try p.comp.type_store.put(gpa, .{ .pointer = .{ |
| 6285 | 6314 | .child = adjusted_elem_qt, |
| 6286 | .decayed = null, | |
| 6287 | 6315 | } }); |
| 6288 | 6316 | try a.implicitCast(p, .bitcast, tok); |
| 6289 | 6317 | } |
| 6290 | 6318 | if (!adjusted_elem_qt.eqlQualified(b_elem, p.comp)) { |
| 6291 | 6319 | b.qt = try p.comp.type_store.put(gpa, .{ .pointer = .{ |
| 6292 | 6320 | .child = adjusted_elem_qt, |
| 6293 | .decayed = null, | |
| 6294 | 6321 | } }); |
| 6295 | 6322 | try b.implicitCast(p, .bitcast, tok); |
| 6296 | 6323 | } |
| ... | ... | @@ -6478,6 +6505,7 @@ pub const Result = struct { |
| 6478 | 6505 | .add => { |
| 6479 | 6506 | // if both aren't arithmetic one should be pointer and the other an integer |
| 6480 | 6507 | if (a_sk.isPointer() == b_sk.isPointer() or a_sk.isInt() == b_sk.isInt()) return a.invalidBinTy(tok, b, p); |
| 6508 | try p.boundsSafetyCheckPointerArithmetic(a.qt, b.qt, tok, a.node); | |
| 6481 | 6509 | |
| 6482 | 6510 | if (a_sk == .void_pointer or b_sk == .void_pointer) |
| 6483 | 6511 | try p.err(tok, .gnu_pointer_arith, .{}); |
| ... | ... | @@ -6496,6 +6524,7 @@ pub const Result = struct { |
| 6496 | 6524 | .sub => { |
| 6497 | 6525 | // if both aren't arithmetic then either both should be pointers or just the left one. |
| 6498 | 6526 | if (!a_sk.isPointer() or !(b_sk.isPointer() or b_sk.isInt())) return a.invalidBinTy(tok, b, p); |
| 6527 | try p.boundsSafetyCheckPointerArithmetic(a.qt, b.qt, tok, a.node); | |
| 6499 | 6528 | |
| 6500 | 6529 | if (a_sk == .void_pointer) |
| 6501 | 6530 | try p.err(tok, .gnu_pointer_arith, .{}); |
| ... | ... | @@ -7087,14 +7116,14 @@ pub const Result = struct { |
| 7087 | 7116 | } else if (dest_sk.isPointer()) { |
| 7088 | 7117 | if (src_sk.isPointer()) { |
| 7089 | 7118 | cast_kind = .bitcast; |
| 7119 | } else if (src_sk == .bool) { | |
| 7120 | cast_kind = .bool_to_pointer; | |
| 7090 | 7121 | } else if (src_sk.isInt()) { |
| 7091 | 7122 | if (!src_sk.isReal()) { |
| 7092 | 7123 | res.qt = res.qt.toReal(p.comp); |
| 7093 | 7124 | try res.implicitCast(p, .complex_int_to_real, l_paren); |
| 7094 | 7125 | } |
| 7095 | 7126 | cast_kind = .int_to_pointer; |
| 7096 | } else if (src_sk == .bool) { | |
| 7097 | cast_kind = .bool_to_pointer; | |
| 7098 | 7127 | } else if (res.qt.is(p.comp, .array)) { |
| 7099 | 7128 | cast_kind = .array_to_pointer; |
| 7100 | 7129 | } else if (res.qt.is(p.comp, .func)) { |
| ... | ... | @@ -7497,7 +7526,16 @@ fn issueDeclaredConstHereNote(p: *Parser, decl_ref: Tree.Node.DeclRef, var_name: |
| 7497 | 7526 | try p.err(location, .declared_const_here, .{var_name}); |
| 7498 | 7527 | } |
| 7499 | 7528 | |
| 7500 | fn issueConstAssignmetDiagnostics(p: *Parser, node_idx: Node.Index, tok: TokenIndex) Compilation.Error!void { | |
| 7529 | fn issueBoundsDeclaredHereNote(p: *Parser, decl_ref: Tree.Node.DeclRef, var_name: []const u8, bounds: Type.Pointer.Bounds) Compilation.Error!void { | |
| 7530 | const location = switch (decl_ref.decl.get(&p.tree)) { | |
| 7531 | .variable => |variable| variable.name_tok, | |
| 7532 | .param => |param| param.name_tok, | |
| 7533 | else => return, | |
| 7534 | }; | |
| 7535 | try p.err(location, .pointer_bounds_declared_here, .{ var_name, @tagName(bounds) }); | |
| 7536 | } | |
| 7537 | ||
| 7538 | fn issueConstAssignmentDiagnostics(p: *Parser, node_idx: Node.Index, tok: TokenIndex) Compilation.Error!void { | |
| 7501 | 7539 | if (p.unwrapNestedOperation(node_idx)) |unwrapped| { |
| 7502 | 7540 | const name = p.tokSlice(unwrapped.name_tok); |
| 7503 | 7541 | try p.err(tok, .const_var_assignment, .{ name, unwrapped.qt }); |
| ... | ... | @@ -7530,7 +7568,7 @@ fn assignExpr(p: *Parser) Error!?Result { |
| 7530 | 7568 | |
| 7531 | 7569 | var is_const: bool = undefined; |
| 7532 | 7570 | if (!p.tree.isLvalExtra(lhs.node, &is_const) or is_const) { |
| 7533 | try p.issueConstAssignmetDiagnostics(lhs.node, tok); | |
| 7571 | try p.issueConstAssignmentDiagnostics(lhs.node, tok); | |
| 7534 | 7572 | lhs.qt = .invalid; |
| 7535 | 7573 | } |
| 7536 | 7574 | |
| ... | ... | @@ -8226,7 +8264,7 @@ fn builtinChooseExpr(p: *Parser) Error!Result { |
| 8226 | 8264 | return cond; |
| 8227 | 8265 | } |
| 8228 | 8266 | |
| 8229 | /// vaStart : __builtin_va_arg '(' assignExpr ',' typeName ')' | |
| 8267 | /// vaArg : __builtin_va_arg '(' assignExpr ',' typeName ')' | |
| 8230 | 8268 | fn builtinVaArg(p: *Parser, builtin_tok: TokenIndex) Error!Result { |
| 8231 | 8269 | const l_paren = try p.expectToken(.l_paren); |
| 8232 | 8270 | const va_list_tok = p.tok_i; |
| ... | ... | @@ -8258,6 +8296,62 @@ fn builtinVaArg(p: *Parser, builtin_tok: TokenIndex) Error!Result { |
| 8258 | 8296 | }; |
| 8259 | 8297 | } |
| 8260 | 8298 | |
| 8299 | /// vaArgPack : __builtin_va_arg_pack '(' ')' | |
| 8300 | fn builtinVaArgPack(p: *Parser, builtin_tok: TokenIndex) Error!Result { | |
| 8301 | const l_paren = try p.expectToken(.l_paren); | |
| 8302 | try p.expectClosing(l_paren, .r_paren); | |
| 8303 | ||
| 8304 | var res_qt: QualType = .invalid; | |
| 8305 | if (!try p.checkVaPackFunc(builtin_tok, "__builtin_va_arg_pack")) { | |
| 8306 | // Only add one error. | |
| 8307 | } else if (!p.va_arg_pack_ctx.valid) { | |
| 8308 | try p.err(builtin_tok, .va_pack_non_call, .{}); | |
| 8309 | } else if (!p.va_arg_pack_ctx.variadic) { | |
| 8310 | try p.err(builtin_tok, .va_pack_non_variadic_call, .{}); | |
| 8311 | } else if (p.va_arg_pack_ctx.typed) { | |
| 8312 | try p.err(builtin_tok, .va_pack_non_variadic_arg, .{}); | |
| 8313 | } else { | |
| 8314 | res_qt = .void; | |
| 8315 | } | |
| 8316 | return .{ | |
| 8317 | .qt = res_qt, | |
| 8318 | .node = try p.addNode(.{ | |
| 8319 | .builtin_va_arg_pack = .{ .builtin_tok = builtin_tok }, | |
| 8320 | }), | |
| 8321 | }; | |
| 8322 | } | |
| 8323 | ||
| 8324 | /// vaArgPackLen : __builtin_va_arg_pack_len '(' ')' | |
| 8325 | fn builtinVaArgPackLen(p: *Parser, builtin_tok: TokenIndex) Error!Result { | |
| 8326 | const l_paren = try p.expectToken(.l_paren); | |
| 8327 | try p.expectClosing(l_paren, .r_paren); | |
| 8328 | ||
| 8329 | _ = try p.checkVaPackFunc(builtin_tok, "__builtin_va_arg_pack_len"); | |
| 8330 | ||
| 8331 | return .{ | |
| 8332 | .qt = .int, | |
| 8333 | .node = try p.addNode(.{ | |
| 8334 | .builtin_va_arg_pack_len = .{ | |
| 8335 | .builtin_tok = builtin_tok, | |
| 8336 | }, | |
| 8337 | }), | |
| 8338 | }; | |
| 8339 | } | |
| 8340 | ||
| 8341 | fn checkVaPackFunc(p: *Parser, builtin_tok: TokenIndex, va_func_name: []const u8) !bool { | |
| 8342 | const func_qt, _ = (try p.checkVaFunc(builtin_tok, va_func_name)) orelse return false; | |
| 8343 | ||
| 8344 | var it = Attribute.Iterator.initType(func_qt, p.comp); | |
| 8345 | while (it.next()) |item| switch (item[0].tag) { | |
| 8346 | .always_inline, .gnu_inline => break, | |
| 8347 | else => {}, | |
| 8348 | } else { | |
| 8349 | try p.err(builtin_tok, .va_func_not_always_inline, .{va_func_name}); | |
| 8350 | return false; | |
| 8351 | } | |
| 8352 | return true; | |
| 8353 | } | |
| 8354 | ||
| 8261 | 8355 | const OffsetKind = enum { bits, bytes }; |
| 8262 | 8356 | |
| 8263 | 8357 | /// offsetof |
| ... | ... | @@ -8504,7 +8598,6 @@ fn unExpr(p: *Parser) Error!?Result { |
| 8504 | 8598 | |
| 8505 | 8599 | operand.qt = try p.comp.type_store.put(gpa, .{ .pointer = .{ |
| 8506 | 8600 | .child = operand.qt, |
| 8507 | .decayed = null, | |
| 8508 | 8601 | } }); |
| 8509 | 8602 | } |
| 8510 | 8603 | if (p.getNode(operand.node, .decl_ref_expr)) |decl_ref| { |
| ... | ... | @@ -8596,6 +8689,9 @@ fn unExpr(p: *Parser) Error!?Result { |
| 8596 | 8689 | try p.err(tok, .not_assignable, .{}); |
| 8597 | 8690 | return error.ParsingFailed; |
| 8598 | 8691 | } |
| 8692 | if (operand.qt.get(p.comp, .pointer)) |pointer| { | |
| 8693 | try p.checkPtrArithmeticAllowed(pointer, p.tok_i, operand.node); | |
| 8694 | } | |
| 8599 | 8695 | try operand.usualUnaryConversion(p, tok); |
| 8600 | 8696 | |
| 8601 | 8697 | if (operand.val.is(.int, p.comp) or operand.val.is(.int, p.comp)) { |
| ... | ... | @@ -8624,6 +8720,9 @@ fn unExpr(p: *Parser) Error!?Result { |
| 8624 | 8720 | try p.err(tok, .not_assignable, .{}); |
| 8625 | 8721 | return error.ParsingFailed; |
| 8626 | 8722 | } |
| 8723 | if (operand.qt.get(p.comp, .pointer)) |pointer| { | |
| 8724 | try p.checkPtrArithmeticAllowed(pointer, p.tok_i, operand.node); | |
| 8725 | } | |
| 8627 | 8726 | try operand.usualUnaryConversion(p, tok); |
| 8628 | 8727 | |
| 8629 | 8728 | if (operand.val.is(.int, p.comp) or operand.val.is(.int, p.comp)) { |
| ... | ... | @@ -8826,7 +8925,7 @@ fn unExpr(p: *Parser) Error!?Result { |
| 8826 | 8925 | } else switch (p.comp.langopts.emulate) { |
| 8827 | 8926 | .msvc => {}, // Doesn't support `_Complex` or `__imag` in the first place |
| 8828 | 8927 | .gcc => operand.val = .zero, |
| 8829 | .clang => { | |
| 8928 | .clang, .no => { | |
| 8830 | 8929 | if (operand.val.is(.int, p.comp) or operand.val.is(.float, p.comp)) { |
| 8831 | 8930 | operand.val = .zero; |
| 8832 | 8931 | } else { |
| ... | ... | @@ -8886,7 +8985,7 @@ fn compoundLiteral(p: *Parser, qt_opt: ?QualType, opt_l_paren: ?TokenIndex) Erro |
| 8886 | 8985 | try p.err(tok, .invalid_compound_literal_storage_class, .{@tagName(d.storage_class)}); |
| 8887 | 8986 | d.storage_class = .none; |
| 8888 | 8987 | }, |
| 8889 | .register => if (p.func.qt == null) try p.err(p.tok_i, .illegal_storage_on_global, .{}), | |
| 8988 | .register => if (p.func.qt == null) try p.err(p.tok_i, .register_on_global_compound_literal, .{}), | |
| 8890 | 8989 | else => {}, |
| 8891 | 8990 | } |
| 8892 | 8991 | |
| ... | ... | @@ -8968,6 +9067,9 @@ fn suffixExpr(p: *Parser, lhs: Result) Error!?Result { |
| 8968 | 9067 | try p.err(p.tok_i, .not_assignable, .{}); |
| 8969 | 9068 | return error.ParsingFailed; |
| 8970 | 9069 | } |
| 9070 | if (operand.qt.get(p.comp, .pointer)) |pointer| { | |
| 9071 | try p.checkPtrArithmeticAllowed(pointer, p.tok_i, operand.node); | |
| 9072 | } | |
| 8971 | 9073 | try operand.usualUnaryConversion(p, p.tok_i); |
| 8972 | 9074 | |
| 8973 | 9075 | try operand.un(p, .post_inc_expr, p.tok_i); |
| ... | ... | @@ -8989,6 +9091,9 @@ fn suffixExpr(p: *Parser, lhs: Result) Error!?Result { |
| 8989 | 9091 | try p.err(p.tok_i, .not_assignable, .{}); |
| 8990 | 9092 | return error.ParsingFailed; |
| 8991 | 9093 | } |
| 9094 | if (operand.qt.get(p.comp, .pointer)) |pointer| { | |
| 9095 | try p.checkPtrArithmeticAllowed(pointer, p.tok_i, operand.node); | |
| 9096 | } | |
| 8992 | 9097 | try operand.usualUnaryConversion(p, p.tok_i); |
| 8993 | 9098 | |
| 8994 | 9099 | try operand.un(p, .post_dec_expr, p.tok_i); |
| ... | ... | @@ -9003,6 +9108,7 @@ fn suffixExpr(p: *Parser, lhs: Result) Error!?Result { |
| 9003 | 9108 | const array_before_conversion = lhs; |
| 9004 | 9109 | const index_before_conversion = index; |
| 9005 | 9110 | var ptr = lhs; |
| 9111 | ||
| 9006 | 9112 | try ptr.lvalConversion(p, l_bracket); |
| 9007 | 9113 | try index.lvalConversion(p, l_bracket); |
| 9008 | 9114 | if (ptr.qt.get(p.comp, .pointer)) |pointer_ty| { |
| ... | ... | @@ -9176,14 +9282,7 @@ fn checkVaStartArg(p: *Parser, builtin_tok: TokenIndex, first_after: TokenIndex, |
| 9176 | 9282 | return error.ParsingFailed; |
| 9177 | 9283 | } |
| 9178 | 9284 | |
| 9179 | const func_qt = p.func.qt orelse { | |
| 9180 | try p.err(builtin_tok, .va_start_not_in_func, .{}); | |
| 9181 | return; | |
| 9182 | }; | |
| 9183 | const func_ty = func_qt.get(p.comp, .func) orelse return; | |
| 9184 | if (func_ty.kind != .variadic or func_ty.params.len == 0) { | |
| 9185 | return p.err(builtin_tok, .va_start_fixed_args, .{}); | |
| 9186 | } | |
| 9285 | _, const func_ty = (try p.checkVaFunc(builtin_tok, "va_start")) orelse return; | |
| 9187 | 9286 | const last_param_name = func_ty.params[func_ty.params.len - 1].name; |
| 9188 | 9287 | const decl_ref = p.getNode(arg.node, .decl_ref_expr); |
| 9189 | 9288 | if (decl_ref == null or last_param_name != try p.comp.internString(p.tokSlice(decl_ref.?.name_tok))) { |
| ... | ... | @@ -9191,6 +9290,19 @@ fn checkVaStartArg(p: *Parser, builtin_tok: TokenIndex, first_after: TokenIndex, |
| 9191 | 9290 | } |
| 9192 | 9291 | } |
| 9193 | 9292 | |
| 9293 | fn checkVaFunc(p: *Parser, builtin_tok: TokenIndex, va_func_name: []const u8) !?struct { QualType, Type.Func } { | |
| 9294 | const func_qt = p.func.qt orelse { | |
| 9295 | try p.err(builtin_tok, .va_func_not_in_func, .{va_func_name}); | |
| 9296 | return null; | |
| 9297 | }; | |
| 9298 | const func_ty = func_qt.get(p.comp, .func) orelse return null; | |
| 9299 | if (func_ty.kind != .variadic or func_ty.params.len == 0) { | |
| 9300 | try p.err(builtin_tok, .va_func_fixed_args, .{va_func_name}); | |
| 9301 | return null; | |
| 9302 | } | |
| 9303 | return .{ func_qt, func_ty }; | |
| 9304 | } | |
| 9305 | ||
| 9194 | 9306 | fn checkArithOverflowArg(p: *Parser, builtin_tok: TokenIndex, first_after: TokenIndex, param_tok: TokenIndex, arg: *Result, idx: u32) !void { |
| 9195 | 9307 | _ = builtin_tok; |
| 9196 | 9308 | _ = first_after; |
| ... | ... | @@ -9320,7 +9432,7 @@ fn callExpr(p: *Parser, lhs: Result) Error!Result { |
| 9320 | 9432 | |
| 9321 | 9433 | // We cannot refer to the function type here because the pointer to |
| 9322 | 9434 | // type_store.extra might get invalidated while parsing args. |
| 9323 | const func_qt, const params_len, const func_kind = blk: { | |
| 9435 | const func_qt, const typed_params_len, const func_kind_base = blk: { | |
| 9324 | 9436 | var base_qt = lhs.qt; |
| 9325 | 9437 | if (base_qt.get(p.comp, .pointer)) |pointer_ty| base_qt = pointer_ty.child; |
| 9326 | 9438 | if (base_qt.isInvalid()) break :blk .{ base_qt, std.math.maxInt(usize), undefined }; |
| ... | ... | @@ -9343,9 +9455,44 @@ fn callExpr(p: *Parser, lhs: Result) Error!Result { |
| 9343 | 9455 | |
| 9344 | 9456 | const call_expr = CallExpr.init(p, lhs.node, func.node); |
| 9345 | 9457 | |
| 9458 | const param_len_override = call_expr.paramCountOverride(); | |
| 9459 | const params_len = param_len_override orelse typed_params_len; | |
| 9460 | const func_kind = if (param_len_override != null) .normal else func_kind_base; | |
| 9461 | ||
| 9346 | 9462 | while (p.eatToken(.r_paren) == null) { |
| 9347 | 9463 | const param_tok = p.tok_i; |
| 9348 | 9464 | if (arg_count == params_len) first_after = p.tok_i; |
| 9465 | ||
| 9466 | // Check for __builtin_va_arg_pack | |
| 9467 | { | |
| 9468 | var i = p.tok_i; | |
| 9469 | loop: switch (p.tok_ids[i]) { | |
| 9470 | .l_paren => { | |
| 9471 | i += 1; | |
| 9472 | continue :loop p.tok_ids[i]; | |
| 9473 | }, | |
| 9474 | .identifier => if (mem.eql(u8, p.tokSlice(i), "__builtin_va_arg_pack")) { | |
| 9475 | @branchHint(.cold); | |
| 9476 | p.va_arg_pack_ctx = .{ | |
| 9477 | .valid = true, | |
| 9478 | .variadic = func_kind != .normal, | |
| 9479 | .typed = arg_count < typed_params_len, | |
| 9480 | }; | |
| 9481 | defer p.va_arg_pack_ctx = .{}; | |
| 9482 | ||
| 9483 | const arg = try p.expect(assignExpr); | |
| 9484 | try p.list_buf.append(gpa, arg.node); | |
| 9485 | arg_count += 1; | |
| 9486 | if (p.eatToken(.comma)) |_| { | |
| 9487 | try p.err(i, .va_pack_non_final_arg, .{}); | |
| 9488 | continue; | |
| 9489 | } | |
| 9490 | try p.expectClosing(l_paren, .r_paren); | |
| 9491 | break; | |
| 9492 | }, | |
| 9493 | else => {}, | |
| 9494 | } | |
| 9495 | } | |
| 9349 | 9496 | var arg = try p.expect(assignExpr); |
| 9350 | 9497 | |
| 9351 | 9498 | if (call_expr.shouldPerformLvalConversion(arg_count)) { |
| ... | ... | @@ -9353,7 +9500,7 @@ fn callExpr(p: *Parser, lhs: Result) Error!Result { |
| 9353 | 9500 | } |
| 9354 | 9501 | if ((arg.qt.hasIncompleteSize(p.comp) and !arg.qt.is(p.comp, .void)) or arg.qt.isInvalid()) return error.ParsingFailed; |
| 9355 | 9502 | |
| 9356 | if (arg_count >= params_len) { | |
| 9503 | if (arg_count >= typed_params_len) { | |
| 9357 | 9504 | if (call_expr.shouldPromoteVarArg(arg_count)) switch (arg.qt.base(p.comp).type) { |
| 9358 | 9505 | .int => |int_ty| if (int_ty == .int) try arg.castToInt(p, arg.qt.promoteInt(p.comp), param_tok), |
| 9359 | 9506 | .float => |float_ty| if (float_ty == .double) try arg.castToFloat(p, .double, param_tok), |
| ... | ... | @@ -9407,19 +9554,23 @@ fn callExpr(p: *Parser, lhs: Result) Error!Result { |
| 9407 | 9554 | } |
| 9408 | 9555 | if (func_qt.isInvalid()) { |
| 9409 | 9556 | // Skip argument count checks. |
| 9410 | return try call_expr.finish(p, func_qt, list_buf_top, l_paren); | |
| 9557 | return try call_expr.finish(p, func_qt, list_buf_top, l_paren, false); | |
| 9411 | 9558 | } |
| 9412 | 9559 | |
| 9413 | if (call_expr.paramCountOverride()) |expected| { | |
| 9414 | if (expected != arg_count) { | |
| 9415 | try p.err(first_after, .expected_arguments, .{ expected, arg_count }); | |
| 9416 | } | |
| 9417 | } else switch (func_kind) { | |
| 9560 | const r_paren = p.tok_i - 1; | |
| 9561 | var args_ok = true; | |
| 9562 | switch (func_kind) { | |
| 9418 | 9563 | .normal => if (params_len != arg_count) { |
| 9419 | try p.err(first_after, .expected_arguments, .{ params_len, arg_count }); | |
| 9564 | try p.err( | |
| 9565 | if (arg_count < params_len) r_paren else first_after, | |
| 9566 | .expected_arguments, | |
| 9567 | .{ params_len, arg_count }, | |
| 9568 | ); | |
| 9569 | args_ok = false; | |
| 9420 | 9570 | }, |
| 9421 | 9571 | .variadic => if (arg_count < params_len) { |
| 9422 | try p.err(first_after, .expected_at_least_arguments, .{ params_len, arg_count }); | |
| 9572 | try p.err(r_paren, .expected_at_least_arguments, .{ params_len, arg_count }); | |
| 9573 | args_ok = false; | |
| 9423 | 9574 | }, |
| 9424 | 9575 | .old_style => if (params_len != arg_count) { |
| 9425 | 9576 | if (params_len == 0) |
| ... | ... | @@ -9429,10 +9580,60 @@ fn callExpr(p: *Parser, lhs: Result) Error!Result { |
| 9429 | 9580 | }, |
| 9430 | 9581 | } |
| 9431 | 9582 | |
| 9432 | return try call_expr.finish(p, func_qt, list_buf_top, l_paren); | |
| 9583 | return try call_expr.finish(p, func_qt, list_buf_top, l_paren, args_ok); | |
| 9584 | } | |
| 9585 | ||
| 9586 | fn boundsSafetyCheckArrayAccess(p: *Parser, lhs: Result, rhs: Result, l_bracket: TokenIndex) !void { | |
| 9587 | if (!p.comp.hasClangStyleBoundsSafety()) return; | |
| 9588 | ||
| 9589 | const ptr_res, const pointer, const index = if (lhs.qt.get(p.comp, .pointer)) |pointer| .{ lhs, pointer, rhs } else .{ rhs, rhs.qt.get(p.comp, .pointer).?, lhs }; | |
| 9590 | ||
| 9591 | switch (pointer.bounds) { | |
| 9592 | .c, .unsafe_indexable => {}, | |
| 9593 | .single => { | |
| 9594 | if (!index.val.isZero(p.comp)) { | |
| 9595 | try p.err(l_bracket, .single_requires_zero_index, .{}); | |
| 9596 | if (p.unwrapNestedOperation(ptr_res.node)) |unwrapped| { | |
| 9597 | const name = p.tokSlice(unwrapped.name_tok); | |
| 9598 | try p.issueBoundsDeclaredHereNote(unwrapped, name, pointer.bounds); | |
| 9599 | } | |
| 9600 | } | |
| 9601 | }, | |
| 9602 | } | |
| 9603 | } | |
| 9604 | ||
| 9605 | fn boundsSafetyCheckPointerArithmetic(p: *Parser, lhs: QualType, rhs: QualType, tok: TokenIndex, node: Tree.Node.Index) !void { | |
| 9606 | if (!p.comp.hasClangStyleBoundsSafety()) return; | |
| 9607 | ||
| 9608 | const pointer = if (rhs.isInt(p.comp)) | |
| 9609 | lhs.get(p.comp, .pointer) orelse return | |
| 9610 | else if (lhs.isInt(p.comp)) | |
| 9611 | rhs.get(p.comp, .pointer) orelse return | |
| 9612 | else | |
| 9613 | return; | |
| 9614 | ||
| 9615 | try p.checkPtrArithmeticAllowed(pointer, tok, node); | |
| 9616 | } | |
| 9617 | ||
| 9618 | fn checkPtrArithmeticAllowed(p: *Parser, pointer: Type.Pointer, tok: TokenIndex, node: Tree.Node.Index) !void { | |
| 9619 | if (!p.comp.hasClangStyleBoundsSafety()) return; | |
| 9620 | ||
| 9621 | switch (pointer.bounds) { | |
| 9622 | .c, .unsafe_indexable => {}, | |
| 9623 | .single => { | |
| 9624 | // clang issues this diagnostic even with a constant `0` operand | |
| 9625 | try p.err(tok, .pointer_arith_single, .{}); | |
| 9626 | if (p.unwrapNestedOperation(node)) |unwrapped| { | |
| 9627 | const name = p.tokSlice(unwrapped.name_tok); | |
| 9628 | try p.issueBoundsDeclaredHereNote(unwrapped, name, pointer.bounds); | |
| 9629 | } | |
| 9630 | }, | |
| 9631 | } | |
| 9433 | 9632 | } |
| 9434 | 9633 | |
| 9435 | 9634 | fn checkArrayBounds(p: *Parser, index: Result, array: Result, tok: TokenIndex) !void { |
| 9635 | try p.boundsSafetyCheckArrayAccess(array, index, tok); | |
| 9636 | ||
| 9436 | 9637 | if (index.val.opt_ref == .none) return; |
| 9437 | 9638 | |
| 9438 | 9639 | const array_len = array.qt.arrayLen(p.comp) orelse return; |
| ... | ... | @@ -9579,6 +9780,8 @@ fn primaryExpr(p: *Parser) Error!?Result { |
| 9579 | 9780 | .common => |tag| switch (tag) { |
| 9580 | 9781 | .__builtin_choose_expr => return try p.builtinChooseExpr(), |
| 9581 | 9782 | .__builtin_va_arg => return try p.builtinVaArg(name_tok), |
| 9783 | .__builtin_va_arg_pack => return try p.builtinVaArgPack(name_tok), | |
| 9784 | .__builtin_va_arg_pack_len => return try p.builtinVaArgPackLen(name_tok), | |
| 9582 | 9785 | .__builtin_offsetof => return try p.builtinOffsetof(name_tok, .bytes), |
| 9583 | 9786 | .__builtin_bitoffsetof => return try p.builtinOffsetof(name_tok, .bits), |
| 9584 | 9787 | .__builtin_types_compatible_p => return try p.typesCompatible(name_tok), |
| ... | ... | @@ -9720,7 +9923,7 @@ fn primaryExpr(p: *Parser) Error!?Result { |
| 9720 | 9923 | qt = some.qt; |
| 9721 | 9924 | } else if (p.func.qt) |func_qt| { |
| 9722 | 9925 | var sf = std.heap.stackFallback(1024, gpa); |
| 9723 | var allocating: Io.Writer.Allocating = .init(sf.get()); | |
| 9926 | var allocating: std.Io.Writer.Allocating = .init(sf.get()); | |
| 9724 | 9927 | defer allocating.deinit(); |
| 9725 | 9928 | |
| 9726 | 9929 | func_qt.printNamed(p.tokSlice(p.func.name), p.comp, &allocating.writer) catch return error.OutOfMemory; |
| ... | ... | @@ -10277,16 +10480,13 @@ fn fixedSizeInt(p: *Parser, base: u8, buf: []const u8, suffix: NumberSuffix, tok |
| 10277 | 10480 | if (res.qt.intRankOrder(suffix_qt, p.comp).compare(.lt)) continue; |
| 10278 | 10481 | const max_int = try Value.maxInt(res.qt, p.comp); |
| 10279 | 10482 | if (interned_val.compare(.lte, max_int, p.comp)) break; |
| 10280 | } else { | |
| 10281 | if (p.comp.langopts.emulate == .gcc) { | |
| 10282 | if (p.comp.target.hasInt128()) { | |
| 10283 | res.qt = .int128; | |
| 10284 | } else { | |
| 10285 | res.qt = .long_long; | |
| 10286 | } | |
| 10483 | } else switch (p.comp.langopts.emulate) { | |
| 10484 | .no, .gcc => if (p.comp.target.hasInt128()) { | |
| 10485 | res.qt = .int128; | |
| 10287 | 10486 | } else { |
| 10288 | res.qt = .ulong_long; | |
| 10289 | } | |
| 10487 | res.qt = .long_long; | |
| 10488 | }, | |
| 10489 | .msvc, .clang => res.qt = .ulong_long, | |
| 10290 | 10490 | } |
| 10291 | 10491 | |
| 10292 | 10492 | res.node = try p.addNode(.{ .int_literal = .{ .qt = res.qt, .literal_tok = tok_i } }); |
| ... | ... | @@ -10604,12 +10804,7 @@ fn genericSelection(p: *Parser) Error!?Result { |
| 10604 | 10804 | } |
| 10605 | 10805 | |
| 10606 | 10806 | test "Node locations" { |
| 10607 | var arena_state: std.heap.ArenaAllocator = .init(std.testing.allocator); | |
| 10608 | defer arena_state.deinit(); | |
| 10609 | const arena = arena_state.allocator(); | |
| 10610 | ||
| 10611 | var diagnostics: Diagnostics = .{ .output = .ignore }; | |
| 10612 | var comp = Compilation.init(std.testing.allocator, arena, std.testing.io, &diagnostics, Io.Dir.cwd()); | |
| 10807 | var comp = try Compilation.init(.testing); | |
| 10613 | 10808 | defer comp.deinit(); |
| 10614 | 10809 | |
| 10615 | 10810 | const file = try comp.addSourceFromBuffer("file.c", |
| ... | ... | @@ -10621,7 +10816,7 @@ test "Node locations" { |
| 10621 | 10816 | |
| 10622 | 10817 | const builtin_macros = try comp.generateBuiltinMacros(.no_system_defines); |
| 10623 | 10818 | |
| 10624 | var pp = Preprocessor.init(&comp, .default); | |
| 10819 | var pp = try Preprocessor.init(&comp, .testing); | |
| 10625 | 10820 | defer pp.deinit(); |
| 10626 | 10821 | try pp.addBuiltinMacros(); |
| 10627 | 10822 | |
| ... | ... | @@ -10633,7 +10828,6 @@ test "Node locations" { |
| 10633 | 10828 | var tree = try Parser.parse(&pp); |
| 10634 | 10829 | defer tree.deinit(); |
| 10635 | 10830 | |
| 10636 | try std.testing.expectEqual(0, comp.diagnostics.total); | |
| 10637 | 10831 | for (tree.root_decls.items[tree.root_decls.items.len - 3 ..], 0..) |node, i| { |
| 10638 | 10832 | const slice = tree.tokSlice(node.tok(&tree)); |
| 10639 | 10833 | const expected_slice = switch (i) { |
lib/compiler/aro/aro/Parser/Diagnostic.zig+79-19| ... | ... | @@ -79,9 +79,9 @@ pub const expected_integer_constant_expr: Diagnostic = .{ |
| 79 | 79 | }; |
| 80 | 80 | |
| 81 | 81 | pub const missing_type_specifier: Diagnostic = .{ |
| 82 | .fmt = "type specifier missing, defaults to 'int'", | |
| 82 | .fmt = "type specifier missing, defaults to 'int'; ISO C99 and later do not support implicit int", | |
| 83 | 83 | .opt = .@"implicit-int", |
| 84 | .kind = .warning, | |
| 84 | .kind = .@"error", | |
| 85 | 85 | }; |
| 86 | 86 | |
| 87 | 87 | pub const missing_type_specifier_c23: Diagnostic = .{ |
| ... | ... | @@ -90,9 +90,9 @@ pub const missing_type_specifier_c23: Diagnostic = .{ |
| 90 | 90 | }; |
| 91 | 91 | |
| 92 | 92 | pub const param_not_declared: Diagnostic = .{ |
| 93 | .fmt = "parameter '{s}' was not declared, defaults to 'int'", | |
| 93 | .fmt = "parameter '{s}' was not declared, defaults to 'int'; ISO C99 and later do not support implicit int", | |
| 94 | 94 | .opt = .@"implicit-int", |
| 95 | .kind = .warning, | |
| 95 | .kind = .@"error", | |
| 96 | 96 | .extension = true, |
| 97 | 97 | }; |
| 98 | 98 | |
| ... | ... | @@ -216,8 +216,13 @@ pub const illegal_storage_on_func: Diagnostic = .{ |
| 216 | 216 | .kind = .@"error", |
| 217 | 217 | }; |
| 218 | 218 | |
| 219 | pub const illegal_storage_on_global: Diagnostic = .{ | |
| 220 | .fmt = "illegal storage class on global variable", | |
| 219 | pub const auto_on_global: Diagnostic = .{ | |
| 220 | .fmt = "'auto' specified on global variable", | |
| 221 | .kind = .@"error", | |
| 222 | }; | |
| 223 | ||
| 224 | pub const register_on_global: Diagnostic = .{ | |
| 225 | .fmt = "register name not specified for global variable", | |
| 221 | 226 | .kind = .@"error", |
| 222 | 227 | }; |
| 223 | 228 | |
| ... | ... | @@ -1507,13 +1512,38 @@ pub const builtin_must_be_called: Diagnostic = .{ |
| 1507 | 1512 | .kind = .@"error", |
| 1508 | 1513 | }; |
| 1509 | 1514 | |
| 1510 | pub const va_start_not_in_func: Diagnostic = .{ | |
| 1511 | .fmt = "'va_start' cannot be used outside a function", | |
| 1515 | pub const va_func_not_in_func: Diagnostic = .{ | |
| 1516 | .fmt = "'{s}' cannot be used outside a function", | |
| 1517 | .kind = .@"error", | |
| 1518 | }; | |
| 1519 | ||
| 1520 | pub const va_func_fixed_args: Diagnostic = .{ | |
| 1521 | .fmt = "'{s}' used in a function with fixed args", | |
| 1522 | .kind = .@"error", | |
| 1523 | }; | |
| 1524 | ||
| 1525 | pub const va_func_not_always_inline: Diagnostic = .{ | |
| 1526 | .fmt = "'{s}' used in a function that is not always inlined", | |
| 1527 | .kind = .@"error", | |
| 1528 | }; | |
| 1529 | ||
| 1530 | pub const va_pack_non_call: Diagnostic = .{ | |
| 1531 | .fmt = "'__va_arg_pack' used outside a call", | |
| 1532 | .kind = .@"error", | |
| 1533 | }; | |
| 1534 | ||
| 1535 | pub const va_pack_non_variadic_call: Diagnostic = .{ | |
| 1536 | .fmt = "'__va_arg_pack' passed to non-variadic function", | |
| 1537 | .kind = .@"error", | |
| 1538 | }; | |
| 1539 | ||
| 1540 | pub const va_pack_non_variadic_arg: Diagnostic = .{ | |
| 1541 | .fmt = "'__va_arg_pack' passed as non-variadic argument", | |
| 1512 | 1542 | .kind = .@"error", |
| 1513 | 1543 | }; |
| 1514 | 1544 | |
| 1515 | pub const va_start_fixed_args: Diagnostic = .{ | |
| 1516 | .fmt = "'va_start' used in a function with fixed args", | |
| 1545 | pub const va_pack_non_final_arg: Diagnostic = .{ | |
| 1546 | .fmt = "'__va_arg_pack' is not the final argument", | |
| 1517 | 1547 | .kind = .@"error", |
| 1518 | 1548 | }; |
| 1519 | 1549 | |
| ... | ... | @@ -2258,11 +2288,11 @@ pub const unterminated_char_literal_error: Diagnostic = .{ |
| 2258 | 2288 | .kind = .@"error", |
| 2259 | 2289 | }; |
| 2260 | 2290 | |
| 2261 | // pub const def_no_proto_deprecated: Diagnostic = .{ | |
| 2262 | // .fmt = "a function definition without a prototype is deprecated in all versions of C and is not supported in C23", | |
| 2263 | // .kind = .warning, | |
| 2264 | // .opt = .@"deprecated-non-prototype", | |
| 2265 | // }; | |
| 2291 | pub const def_no_proto_deprecated: Diagnostic = .{ | |
| 2292 | .fmt = "a function definition without a prototype is deprecated in all versions of C and is not supported in C23", | |
| 2293 | .kind = .warning, | |
| 2294 | .opt = .@"deprecated-non-prototype", | |
| 2295 | }; | |
| 2266 | 2296 | |
| 2267 | 2297 | pub const passing_args_to_kr: Diagnostic = .{ |
| 2268 | 2298 | .fmt = "passing arguments to a function without a prototype is deprecated in all versions of C and is not supported in C23", |
| ... | ... | @@ -2296,6 +2326,11 @@ pub const invalid_compound_literal_storage_class: Diagnostic = .{ |
| 2296 | 2326 | .kind = .@"error", |
| 2297 | 2327 | }; |
| 2298 | 2328 | |
| 2329 | pub const register_on_global_compound_literal: Diagnostic = .{ | |
| 2330 | .fmt = "file scope compound literal specifies 'register'", | |
| 2331 | .kind = .@"error", | |
| 2332 | }; | |
| 2333 | ||
| 2299 | 2334 | pub const identifier_not_normalized: Diagnostic = .{ |
| 2300 | 2335 | .fmt = "'{normalized}' is not in NFC", |
| 2301 | 2336 | .kind = .warning, |
| ... | ... | @@ -2465,10 +2500,9 @@ pub const declared_const_here: Diagnostic = .{ |
| 2465 | 2500 | .kind = .note, |
| 2466 | 2501 | }; |
| 2467 | 2502 | |
| 2468 | pub const nonnull_not_applicable: Diagnostic = .{ | |
| 2469 | .fmt = "'nonnull' attribute only applies to functions, methods, and parameters", | |
| 2470 | .kind = .warning, | |
| 2471 | .opt = .@"ignored-attributes", | |
| 2503 | pub const pointer_bounds_declared_here: Diagnostic = .{ | |
| 2504 | .fmt = "pointer '{s}' declared {s} here", | |
| 2505 | .kind = .note, | |
| 2472 | 2506 | }; |
| 2473 | 2507 | |
| 2474 | 2508 | pub const mixing_decimal_floats: Diagnostic = .{ |
| ... | ... | @@ -2480,3 +2514,29 @@ pub const invalid_attribute_location: Diagnostic = .{ |
| 2480 | 2514 | .fmt = "{s} cannot appear here", |
| 2481 | 2515 | .kind = .@"error", |
| 2482 | 2516 | }; |
| 2517 | ||
| 2518 | pub const attribute_requires_pointer: Diagnostic = .{ | |
| 2519 | .fmt = "'{s}' attribute only applies to pointer arguments", | |
| 2520 | .kind = .@"error", | |
| 2521 | }; | |
| 2522 | ||
| 2523 | pub const single_requires_zero_index: Diagnostic = .{ | |
| 2524 | .fmt = "array subscript on single pointer must use a constant index of 0 to be in bounds", | |
| 2525 | .kind = .@"error", | |
| 2526 | }; | |
| 2527 | ||
| 2528 | pub const pointer_arith_single: Diagnostic = .{ | |
| 2529 | .fmt = "pointer arithmetic on single pointer is out of bounds; consider adding '__counted_by'", | |
| 2530 | .kind = .@"error", | |
| 2531 | }; | |
| 2532 | ||
| 2533 | pub const redundant_bounds_annotation: Diagnostic = .{ | |
| 2534 | .fmt = "pointer annotated with {s} multiple times. Annotate only once to remove this warning", | |
| 2535 | .kind = .warning, | |
| 2536 | .opt = .@"bounds-attributes-redundant", | |
| 2537 | }; | |
| 2538 | ||
| 2539 | pub const multiple_bounds_annotations: Diagnostic = .{ | |
| 2540 | .fmt = "pointer cannot have more than one bound attribute", | |
| 2541 | .kind = .@"error", | |
| 2542 | }; |
lib/compiler/aro/aro/Preprocessor.zig+127-56| ... | ... | @@ -1,6 +1,6 @@ |
| 1 | 1 | const std = @import("std"); |
| 2 | const Io = std.Io; | |
| 3 | 2 | const mem = std.mem; |
| 3 | const path = std.Io.Dir.path; | |
| 4 | 4 | const Allocator = mem.Allocator; |
| 5 | 5 | const assert = std.debug.assert; |
| 6 | 6 | |
| ... | ... | @@ -79,12 +79,15 @@ pub const Macro = struct { |
| 79 | 79 | }); |
| 80 | 80 | |
| 81 | 81 | const Object = enum { |
| 82 | base_file, | |
| 82 | 83 | file, |
| 84 | file_basename, | |
| 83 | 85 | line, |
| 84 | 86 | counter, |
| 85 | 87 | date, |
| 86 | 88 | time, |
| 87 | 89 | timestamp, |
| 90 | include_level, | |
| 88 | 91 | }; |
| 89 | 92 | |
| 90 | 93 | const Func = enum { |
| ... | ... | @@ -216,8 +219,6 @@ pub const Macro = struct { |
| 216 | 219 | } |
| 217 | 220 | }; |
| 218 | 221 | |
| 219 | const Preprocessor = @This(); | |
| 220 | ||
| 221 | 222 | const ExpansionEntry = struct { |
| 222 | 223 | idx: Tree.TokenIndex, |
| 223 | 224 | locs: [*]Source.Location, |
| ... | ... | @@ -228,6 +229,8 @@ const TokenState = struct { |
| 228 | 229 | expansion_entries_len: usize, |
| 229 | 230 | }; |
| 230 | 231 | |
| 232 | const Preprocessor = @This(); | |
| 233 | ||
| 231 | 234 | comp: *Compilation, |
| 232 | 235 | diagnostics: *Diagnostics, |
| 233 | 236 | |
| ... | ... | @@ -275,6 +278,12 @@ m_times: std.AutoHashMapUnmanaged(Source.Id, u64) = .empty, |
| 275 | 278 | /// The dependency file tracking all includes and embeds. |
| 276 | 279 | dep_file: ?*DepFile = null, |
| 277 | 280 | |
| 281 | /// Path prefixes to replace when expanding __FILE__ | |
| 282 | path_replacements: []const struct { []const u8, []const u8 } = &.{}, | |
| 283 | ||
| 284 | /// File used for __BASE_FILE__ macro. | |
| 285 | base_file: Source.Id, | |
| 286 | ||
| 278 | 287 | pub const parse = Parser.parse; |
| 279 | 288 | |
| 280 | 289 | pub const Linemarkers = enum { |
| ... | ... | @@ -286,21 +295,22 @@ pub const Linemarkers = enum { |
| 286 | 295 | numeric_directives, |
| 287 | 296 | }; |
| 288 | 297 | |
| 289 | pub fn init(comp: *Compilation, source_epoch: SourceEpoch) Preprocessor { | |
| 290 | const pp: Preprocessor = .{ | |
| 291 | .comp = comp, | |
| 292 | .diagnostics = comp.diagnostics, | |
| 293 | .arena = .init(comp.gpa), | |
| 294 | .hideset = .{ .comp = comp }, | |
| 295 | .source_epoch = source_epoch, | |
| 298 | pub const InitOptions = struct { | |
| 299 | base_file: Source.Id, | |
| 300 | ||
| 301 | source_epoch: ?SourceEpoch = null, | |
| 302 | add_builtin_macros: bool = true, | |
| 303 | path_replacements: []const struct { []const u8, []const u8 } = &.{}, | |
| 304 | ||
| 305 | pub const testing: InitOptions = .{ | |
| 306 | .base_file = undefined, | |
| 307 | .source_epoch = .default, | |
| 308 | .add_builtin_macros = false, | |
| 296 | 309 | }; |
| 297 | comp.pragmaEvent(.before_preprocess); | |
| 298 | return pp; | |
| 299 | } | |
| 310 | }; | |
| 300 | 311 | |
| 301 | /// Initialize Preprocessor with builtin macros. | |
| 302 | pub fn initDefault(comp: *Compilation) !Preprocessor { | |
| 303 | const source_epoch: SourceEpoch = comp.environment.sourceEpoch(comp.io) catch |er| switch (er) { | |
| 312 | pub fn init(comp: *Compilation, options: InitOptions) !Preprocessor { | |
| 313 | const source_epoch: SourceEpoch = options.source_epoch orelse comp.environment.sourceEpoch(comp.io) catch |er| switch (er) { | |
| 304 | 314 | error.InvalidEpoch => blk: { |
| 305 | 315 | const diagnostic: Diagnostic = .invalid_source_epoch; |
| 306 | 316 | try comp.diagnostics.add(.{ .text = diagnostic.fmt, .kind = diagnostic.kind, .opt = diagnostic.opt, .location = null }); |
| ... | ... | @@ -308,9 +318,18 @@ pub fn initDefault(comp: *Compilation) !Preprocessor { |
| 308 | 318 | }, |
| 309 | 319 | }; |
| 310 | 320 | |
| 311 | var pp = init(comp, source_epoch); | |
| 321 | var pp: Preprocessor = .{ | |
| 322 | .comp = comp, | |
| 323 | .diagnostics = comp.diagnostics, | |
| 324 | .arena = .init(comp.gpa), | |
| 325 | .hideset = .{ .comp = comp }, | |
| 326 | .source_epoch = source_epoch, | |
| 327 | .base_file = options.base_file, | |
| 328 | .path_replacements = options.path_replacements, | |
| 329 | }; | |
| 312 | 330 | errdefer pp.deinit(); |
| 313 | try pp.addBuiltinMacros(); | |
| 331 | comp.pragmaEvent(.before_preprocess); | |
| 332 | if (options.add_builtin_macros) try pp.addBuiltinMacros(); | |
| 314 | 333 | return pp; |
| 315 | 334 | } |
| 316 | 335 | |
| ... | ... | @@ -339,7 +358,7 @@ pub fn addBuiltinMacros(pp: *Preprocessor) !void { |
| 339 | 358 | try pp.addBuiltinMacro("__is_identifier", .{ .func = .is_identifier }); |
| 340 | 359 | try pp.addBuiltinMacro("_Pragma", .{ .func = .pragma_operator }); |
| 341 | 360 | |
| 342 | if (pp.comp.langopts.emulate == .clang) { | |
| 361 | if (pp.comp.langopts.emulate == .no or pp.comp.langopts.emulate == .clang) { | |
| 343 | 362 | try pp.addBuiltinMacro("__is_target_arch", .{ .func = .is_target_arch }); |
| 344 | 363 | try pp.addBuiltinMacro("__is_target_vendor", .{ .func = .is_target_vendor }); |
| 345 | 364 | try pp.addBuiltinMacro("__is_target_os", .{ .func = .is_target_os }); |
| ... | ... | @@ -359,6 +378,12 @@ pub fn addBuiltinMacros(pp: *Preprocessor) !void { |
| 359 | 378 | try pp.addBuiltinMacro("__DATE__", .{ .obj = .date }); |
| 360 | 379 | try pp.addBuiltinMacro("__TIME__", .{ .obj = .time }); |
| 361 | 380 | try pp.addBuiltinMacro("__TIMESTAMP__", .{ .obj = .timestamp }); |
| 381 | ||
| 382 | if (pp.comp.langopts.emulate == .no or pp.comp.langopts.emulate == .clang) { | |
| 383 | try pp.addBuiltinMacro("__BASE_FILE__", .{ .obj = .base_file }); | |
| 384 | try pp.addBuiltinMacro("__FILE_NAME__", .{ .obj = .file_basename }); | |
| 385 | try pp.addBuiltinMacro("__INCLUDE_LEVEL__", .{ .obj = .include_level }); | |
| 386 | } | |
| 362 | 387 | } |
| 363 | 388 | |
| 364 | 389 | pub fn deinit(pp: *Preprocessor) void { |
| ... | ... | @@ -395,7 +420,7 @@ fn mTime(pp: *Preprocessor, source_id: Source.Id) !u64 { |
| 395 | 420 | return gop.value_ptr.*; |
| 396 | 421 | } |
| 397 | 422 | |
| 398 | pub fn expansionSlice(pp: *Preprocessor, tok: Tree.TokenIndex) []Source.Location { | |
| 423 | pub fn expansionSlice(pp: *const Preprocessor, tok: Tree.TokenIndex) []Source.Location { | |
| 399 | 424 | const S = struct { |
| 400 | 425 | fn orderTokenIndex(context: Tree.TokenIndex, item: Tree.TokenIndex) std.math.Order { |
| 401 | 426 | return std.math.order(context, item); |
| ... | ... | @@ -1065,13 +1090,11 @@ fn fatalNotFound(pp: *Preprocessor, tok: TokenWithExpansionLocs, filename: []con |
| 1065 | 1090 | |
| 1066 | 1091 | fn verboseLog(pp: *Preprocessor, raw: RawToken, comptime fmt: []const u8, args: anytype) void { |
| 1067 | 1092 | @branchHint(.cold); |
| 1068 | const comp = pp.comp; | |
| 1069 | const io = comp.io; | |
| 1070 | const source = comp.getSource(raw.source); | |
| 1093 | const source = pp.comp.getSource(raw.source); | |
| 1071 | 1094 | const line_col = source.lineCol(.{ .id = raw.source, .line = raw.line, .byte_offset = raw.start }); |
| 1072 | 1095 | |
| 1073 | 1096 | var stderr_buf: [4096]u8 = undefined; |
| 1074 | var stderr = Io.File.stderr().writer(io, &stderr_buf); | |
| 1097 | var stderr = std.Io.File.stderr().writer(pp.comp.io, &stderr_buf); | |
| 1075 | 1098 | const w = &stderr.interface; |
| 1076 | 1099 | |
| 1077 | 1100 | w.print("{s}:{d}:{d}: ", .{ source.path, line_col.line_no, line_col.col }) catch return; |
| ... | ... | @@ -1435,7 +1458,37 @@ fn expandObjMacro(pp: *Preprocessor, simple_macro: *const Macro) Error!ExpandBuf |
| 1435 | 1458 | .file => { |
| 1436 | 1459 | const start = pp.comp.generated_buf.items.len; |
| 1437 | 1460 | const source = pp.comp.getSource(pp.expansion_source_loc.id); |
| 1438 | try pp.comp.generated_buf.print(gpa, "\"{f}\"\n", .{fmtEscapes(source.path)}); | |
| 1461 | for (pp.path_replacements) |replacement| { | |
| 1462 | if (mem.cutPrefix(u8, source.path, replacement[0])) |rest| { | |
| 1463 | try pp.comp.generated_buf.print(gpa, "\"{f}{f}\"", .{ fmtEscapes(replacement[1]), fmtEscapes(rest) }); | |
| 1464 | break; | |
| 1465 | } | |
| 1466 | } else { | |
| 1467 | try pp.comp.generated_buf.print(gpa, "\"{f}\"\n", .{fmtEscapes(source.path)}); | |
| 1468 | } | |
| 1469 | ||
| 1470 | buf.appendAssumeCapacity(try pp.makeGeneratedToken(start, .string_literal, tok)); | |
| 1471 | }, | |
| 1472 | .base_file => { | |
| 1473 | try pp.err(pp.expansion_source_loc, .base_file_is_clang_extension, .{}); | |
| 1474 | const start = pp.comp.generated_buf.items.len; | |
| 1475 | const base_file = pp.comp.getSource(pp.base_file); | |
| 1476 | for (pp.path_replacements) |replacement| { | |
| 1477 | if (mem.cutPrefix(u8, base_file.path, replacement[0])) |rest| { | |
| 1478 | try pp.comp.generated_buf.print(gpa, "\"{f}{f}\"", .{ fmtEscapes(replacement[1]), fmtEscapes(rest) }); | |
| 1479 | } | |
| 1480 | } else { | |
| 1481 | try pp.comp.generated_buf.print(gpa, "\"{f}\"", .{fmtEscapes(base_file.path)}); | |
| 1482 | } | |
| 1483 | ||
| 1484 | buf.appendAssumeCapacity(try pp.makeGeneratedToken(start, .string_literal, tok)); | |
| 1485 | }, | |
| 1486 | .file_basename => { | |
| 1487 | try pp.err(pp.expansion_source_loc, .file_name_is_clang_extension, .{}); | |
| 1488 | const start = pp.comp.generated_buf.items.len; | |
| 1489 | const source = pp.comp.getSource(pp.expansion_source_loc.id); | |
| 1490 | const basename = path.basename(source.path); | |
| 1491 | try pp.comp.generated_buf.print(gpa, "\"{f}\"", .{fmtEscapes(basename)}); | |
| 1439 | 1492 | |
| 1440 | 1493 | buf.appendAssumeCapacity(try pp.makeGeneratedToken(start, .string_literal, tok)); |
| 1441 | 1494 | }, |
| ... | ... | @@ -1472,6 +1525,13 @@ fn expandObjMacro(pp: *Preprocessor, simple_macro: *const Macro) Error!ExpandBuf |
| 1472 | 1525 | try pp.writeDateTimeStamp(.fromBuiltin(builtin_kind), timestamp); |
| 1473 | 1526 | buf.appendAssumeCapacity(try pp.makeGeneratedToken(start, .string_literal, tok)); |
| 1474 | 1527 | }, |
| 1528 | .include_level => { | |
| 1529 | try pp.err(pp.expansion_source_loc, .include_level_is_clang_extension, .{}); | |
| 1530 | const start = pp.comp.generated_buf.items.len; | |
| 1531 | try pp.comp.generated_buf.print(gpa, "{d}\n", .{pp.include_depth}); | |
| 1532 | ||
| 1533 | buf.appendAssumeCapacity(try pp.makeGeneratedToken(start, .pp_num, tok)); | |
| 1534 | }, | |
| 1475 | 1535 | }, |
| 1476 | 1536 | else => buf.appendAssumeCapacity(tok), |
| 1477 | 1537 | } |
| ... | ... | @@ -1828,7 +1888,11 @@ fn handleBuiltinMacro(pp: *Preprocessor, builtin: Macro.Builtin.Func, param_toks |
| 1828 | 1888 | features.hasFeature(pp.comp, ident_str) |
| 1829 | 1889 | else |
| 1830 | 1890 | features.hasExtension(pp.comp, ident_str), |
| 1831 | .has_builtin => Builtins.fromName(pp.comp, ident_str) != null or (pp.comp.langopts.emulate == .clang and Macro.Builtin.has_builtin_special_cases.has(ident_str)), | |
| 1891 | ||
| 1892 | .has_builtin => Builtins.fromName(pp.comp, ident_str) != null or | |
| 1893 | ((pp.comp.langopts.emulate == .no or pp.comp.langopts.emulate == .clang) and | |
| 1894 | Macro.Builtin.has_builtin_special_cases.has(ident_str)), | |
| 1895 | ||
| 1832 | 1896 | .is_target_arch => pp.comp.isTargetArch(ident_str), |
| 1833 | 1897 | .is_target_os => pp.comp.isTargetOs(ident_str), |
| 1834 | 1898 | .is_target_vendor => pp.comp.isTargetVendor(ident_str), |
| ... | ... | @@ -1972,7 +2036,7 @@ fn expandFuncMacro( |
| 1972 | 2036 | }, |
| 1973 | 2037 | .macro_param_no_expand => { |
| 1974 | 2038 | if (tok_i + 1 < func_macro.tokens.len and func_macro.tokens[tok_i + 1].id == .hash_hash) { |
| 1975 | hideset = pp.hideset.get(tokFromRaw(func_macro.tokens[tok_i + 1]).loc); | |
| 2039 | hideset = .none; | |
| 1976 | 2040 | } |
| 1977 | 2041 | const slice = getPasteArgs(args.items[raw.end]); |
| 1978 | 2042 | const raw_loc = Source.Location{ .id = raw.source, .byte_offset = raw.start, .line = raw.line }; |
| ... | ... | @@ -1980,7 +2044,7 @@ fn expandFuncMacro( |
| 1980 | 2044 | }, |
| 1981 | 2045 | .macro_param => { |
| 1982 | 2046 | if (tok_i + 1 < func_macro.tokens.len and func_macro.tokens[tok_i + 1].id == .hash_hash) { |
| 1983 | hideset = pp.hideset.get(tokFromRaw(func_macro.tokens[tok_i + 1]).loc); | |
| 2047 | hideset = .none; | |
| 1984 | 2048 | } |
| 1985 | 2049 | const arg = expanded_args.items[raw.end]; |
| 1986 | 2050 | const raw_loc = Source.Location{ .id = raw.source, .byte_offset = raw.start, .line = raw.line }; |
| ... | ... | @@ -2330,9 +2394,10 @@ fn expandFuncMacro( |
| 2330 | 2394 | for (buf.items) |*tok| { |
| 2331 | 2395 | try tok.addExpansionLocation(gpa, &.{macro_tok.loc}); |
| 2332 | 2396 | try tok.addExpansionLocation(gpa, macro_expansion_locs); |
| 2333 | const tok_hidelist = pp.hideset.get(tok.loc); | |
| 2334 | const new_hidelist = try pp.hideset.@"union"(tok_hidelist, hideset); | |
| 2335 | try pp.hideset.put(tok.loc, new_hidelist); | |
| 2397 | if (tok.id.shouldTrackHideset(.func)) { | |
| 2398 | const new_hideset = try pp.hideset.@"union"(pp.hideset.get(tok.loc), hideset); | |
| 2399 | try pp.hideset.put(tok.loc, new_hideset); | |
| 2400 | } | |
| 2336 | 2401 | } |
| 2337 | 2402 | |
| 2338 | 2403 | return buf; |
| ... | ... | @@ -2698,9 +2763,10 @@ fn expandMacroExhaustive( |
| 2698 | 2763 | try tok.addExpansionLocation(gpa, &.{macro_tok.loc}); |
| 2699 | 2764 | try tok.addExpansionLocation(gpa, macro_expansion_locs); |
| 2700 | 2765 | |
| 2701 | const tok_hidelist = pp.hideset.get(tok.loc); | |
| 2702 | const new_hidelist = try pp.hideset.@"union"(tok_hidelist, hs); | |
| 2703 | try pp.hideset.put(tok.loc, new_hidelist); | |
| 2766 | if (tok.id.shouldTrackHideset(.obj)) { | |
| 2767 | const new_hideset = try pp.hideset.@"union"(pp.hideset.get(tok.loc), hs); | |
| 2768 | try pp.hideset.put(tok.loc, new_hideset); | |
| 2769 | } | |
| 2704 | 2770 | |
| 2705 | 2771 | if (tok.id == .keyword_defined and eval_ctx == .expr) { |
| 2706 | 2772 | if (macro.is_func) { |
| ... | ... | @@ -2914,7 +2980,10 @@ fn pasteTokens(pp: *Preprocessor, lhs_toks: *ExpandBuf, rhs_toks: []const TokenW |
| 2914 | 2980 | .placemarker |
| 2915 | 2981 | else |
| 2916 | 2982 | pasted_token.id; |
| 2917 | try lhs_toks.append(gpa, try pp.makeGeneratedToken(start, pasted_id, lhs)); | |
| 2983 | ||
| 2984 | const hideset = try pp.hideset.intersection(pp.hideset.get(lhs.loc), pp.hideset.get(rhs.loc)); | |
| 2985 | const generated_token = try pp.makeGeneratedTokenExtra(start, pasted_id, lhs, hideset); | |
| 2986 | try lhs_toks.append(gpa, generated_token); | |
| 2918 | 2987 | |
| 2919 | 2988 | if (next.id != .nl and next.id != .eof) { |
| 2920 | 2989 | try pp.err(lhs, .pasting_formed_invalid, .{pp.comp.generated_buf.items[start..end]}); |
| ... | ... | @@ -2924,7 +2993,7 @@ fn pasteTokens(pp: *Preprocessor, lhs_toks: *ExpandBuf, rhs_toks: []const TokenW |
| 2924 | 2993 | try bufCopyTokens(gpa, lhs_toks, rhs_toks[rhs_rest..], &.{}); |
| 2925 | 2994 | } |
| 2926 | 2995 | |
| 2927 | fn makeGeneratedToken(pp: *Preprocessor, start: usize, id: Token.Id, source: TokenWithExpansionLocs) !TokenWithExpansionLocs { | |
| 2996 | fn makeGeneratedTokenExtra(pp: *Preprocessor, start: usize, id: Token.Id, source: TokenWithExpansionLocs, hideset: Hideset.Index) !TokenWithExpansionLocs { | |
| 2928 | 2997 | const gpa = pp.comp.gpa; |
| 2929 | 2998 | var pasted_token = TokenWithExpansionLocs{ .id = id, .loc = .{ |
| 2930 | 2999 | .id = .generated, |
| ... | ... | @@ -2934,9 +3003,15 @@ fn makeGeneratedToken(pp: *Preprocessor, start: usize, id: Token.Id, source: Tok |
| 2934 | 3003 | pp.generated_line += 1; |
| 2935 | 3004 | try pasted_token.addExpansionLocation(gpa, &.{source.loc}); |
| 2936 | 3005 | try pasted_token.addExpansionLocation(gpa, source.expansionSlice()); |
| 3006 | try pp.hideset.put(pasted_token.loc, hideset); | |
| 3007 | ||
| 2937 | 3008 | return pasted_token; |
| 2938 | 3009 | } |
| 2939 | 3010 | |
| 3011 | fn makeGeneratedToken(pp: *Preprocessor, start: usize, id: Token.Id, source: TokenWithExpansionLocs) !TokenWithExpansionLocs { | |
| 3012 | return pp.makeGeneratedTokenExtra(start, id, source, pp.hideset.get(source.loc)); | |
| 3013 | } | |
| 3014 | ||
| 2940 | 3015 | /// Defines a new macro and warns if it is a duplicate |
| 2941 | 3016 | fn defineMacro(pp: *Preprocessor, define_tok: RawToken, name_tok: TokenWithExpansionLocs, macro: Macro) Error!void { |
| 2942 | 3017 | const name_str = pp.expandedSlice(name_tok); |
| ... | ... | @@ -3898,16 +3973,14 @@ test "Preserve pragma tokens sometimes" { |
| 3898 | 3973 | const gpa = std.testing.allocator; |
| 3899 | 3974 | const Test = struct { |
| 3900 | 3975 | fn runPreprocessor(source_text: []const u8) ![]const u8 { |
| 3901 | var arena: std.heap.ArenaAllocator = .init(gpa); | |
| 3902 | defer arena.deinit(); | |
| 3903 | ||
| 3904 | 3976 | var diagnostics: Diagnostics = .{ .output = .ignore }; |
| 3905 | var comp = Compilation.init(gpa, arena.allocator(), std.testing.io, &diagnostics, Io.Dir.cwd()); | |
| 3977 | var comp = try Compilation.init(.testing); | |
| 3978 | comp.diagnostics = &diagnostics; | |
| 3906 | 3979 | defer comp.deinit(); |
| 3907 | 3980 | |
| 3908 | 3981 | try comp.addDefaultPragmaHandlers(); |
| 3909 | 3982 | |
| 3910 | var pp = Preprocessor.init(&comp, .default); | |
| 3983 | var pp = try Preprocessor.init(&comp, .testing); | |
| 3911 | 3984 | defer pp.deinit(); |
| 3912 | 3985 | |
| 3913 | 3986 | pp.preserve_whitespace = true; |
| ... | ... | @@ -3966,12 +4039,10 @@ test "destringify" { |
| 3966 | 4039 | try std.testing.expectEqualStrings(destringified, pp.char_buf.items); |
| 3967 | 4040 | } |
| 3968 | 4041 | }; |
| 3969 | var arena: std.heap.ArenaAllocator = .init(gpa); | |
| 3970 | defer arena.deinit(); | |
| 3971 | var diagnostics: Diagnostics = .{ .output = .ignore }; | |
| 3972 | var comp = Compilation.init(gpa, arena.allocator(), std.testing.io, &diagnostics, Io.Dir.cwd()); | |
| 4042 | var comp = try Compilation.init(.testing); | |
| 3973 | 4043 | defer comp.deinit(); |
| 3974 | var pp = Preprocessor.init(&comp, .default); | |
| 4044 | ||
| 4045 | var pp = try Preprocessor.init(&comp, .testing); | |
| 3975 | 4046 | defer pp.deinit(); |
| 3976 | 4047 | |
| 3977 | 4048 | try Test.testDestringify(&pp, "hello\tworld\n", "hello\tworld\n"); |
| ... | ... | @@ -4026,20 +4097,20 @@ test "Include guards" { |
| 4026 | 4097 | }; |
| 4027 | 4098 | } |
| 4028 | 4099 | |
| 4029 | fn testIncludeGuard(gpa: std.mem.Allocator, comptime template: []const u8, tok_id: RawToken.Id, expected_guards: u32) !void { | |
| 4030 | var arena_state: std.heap.ArenaAllocator = .init(gpa); | |
| 4031 | defer arena_state.deinit(); | |
| 4032 | const arena = arena_state.allocator(); | |
| 4100 | fn testIncludeGuard(comptime template: []const u8, tok_id: RawToken.Id, expected_guards: u32) !void { | |
| 4101 | const gpa = std.testing.allocator; | |
| 4033 | 4102 | |
| 4034 | 4103 | var diagnostics: Diagnostics = .{ .output = .ignore }; |
| 4035 | var comp = Compilation.init(gpa, arena, std.testing.io, &diagnostics, Io.Dir.cwd()); | |
| 4104 | var comp = try Compilation.init(.testing); | |
| 4105 | comp.diagnostics = &diagnostics; | |
| 4036 | 4106 | defer comp.deinit(); |
| 4037 | var pp = Preprocessor.init(&comp, .default); | |
| 4107 | var pp = try Preprocessor.init(&comp, .testing); | |
| 4038 | 4108 | defer pp.deinit(); |
| 4039 | 4109 | |
| 4040 | const path = try std.fs.path.join(arena, &.{ ".", "bar.h" }); | |
| 4110 | const file_path = try path.join(gpa, &.{ ".", "bar.h" }); | |
| 4111 | defer gpa.free(file_path); | |
| 4041 | 4112 | |
| 4042 | _ = try comp.addSourceFromBuffer(path, "int bar = 5;\n"); | |
| 4113 | _ = try comp.addSourceFromBuffer(file_path, "int bar = 5;\n"); | |
| 4043 | 4114 | |
| 4044 | 4115 | var buf: std.ArrayList(u8) = .empty; |
| 4045 | 4116 | defer buf.deinit(gpa); |
| ... | ... | @@ -4074,14 +4145,14 @@ test "Include guards" { |
| 4074 | 4145 | \\#endif |
| 4075 | 4146 | ; |
| 4076 | 4147 | const expected_guards: u32 = if (Test.pairsWithIfndef(tag)) 0 else 1; |
| 4077 | try Test.testIncludeGuard(std.testing.allocator, inside_ifndef_template, tag, expected_guards); | |
| 4148 | try Test.testIncludeGuard(inside_ifndef_template, tag, expected_guards); | |
| 4078 | 4149 | |
| 4079 | 4150 | const outside_ifndef_template = |
| 4080 | 4151 | \\#ifndef FOO |
| 4081 | 4152 | \\#endif |
| 4082 | 4153 | \\#{s}{s} |
| 4083 | 4154 | ; |
| 4084 | try Test.testIncludeGuard(std.testing.allocator, outside_ifndef_template, tag, 0); | |
| 4155 | try Test.testIncludeGuard(outside_ifndef_template, tag, 0); | |
| 4085 | 4156 | } |
| 4086 | 4157 | } |
| 4087 | 4158 | } |
lib/compiler/aro/aro/Preprocessor/Diagnostic.zig+21| ... | ... | @@ -472,3 +472,24 @@ pub const pragma_once_in_main_file: Diagnostic = .{ |
| 472 | 472 | .kind = .warning, |
| 473 | 473 | .opt = .@"pragma-once-outside-header", |
| 474 | 474 | }; |
| 475 | ||
| 476 | pub const file_name_is_clang_extension: Diagnostic = .{ | |
| 477 | .fmt = "__FILE_NAME__ is a clang extension", | |
| 478 | .opt = .@"file-name-extension", | |
| 479 | .kind = .off, | |
| 480 | .extension = true, | |
| 481 | }; | |
| 482 | ||
| 483 | pub const base_file_is_clang_extension: Diagnostic = .{ | |
| 484 | .fmt = "__BASE_FILE__ is a clang extension", | |
| 485 | .opt = .@"base-file-extension", | |
| 486 | .kind = .off, | |
| 487 | .extension = true, | |
| 488 | }; | |
| 489 | ||
| 490 | pub const include_level_is_clang_extension: Diagnostic = .{ | |
| 491 | .fmt = "__INCLUDE_LEVEL__ is a clang extension", | |
| 492 | .opt = .@"include-level-extension", | |
| 493 | .kind = .off, | |
| 494 | .extension = true, | |
| 495 | }; |
lib/compiler/aro/aro/Target.zig+17-12| ... | ... | @@ -229,7 +229,7 @@ pub fn intMaxType(target: *const Target) QualType { |
| 229 | 229 | => return .long, |
| 230 | 230 | |
| 231 | 231 | .x86_64 => switch (target.os.tag) { |
| 232 | .windows, .openbsd => {}, | |
| 232 | .windows, .openbsd, .uefi => {}, | |
| 233 | 233 | else => switch (target.abi) { |
| 234 | 234 | .gnux32, .muslx32 => {}, |
| 235 | 235 | else => return .long, |
| ... | ... | @@ -546,18 +546,10 @@ pub fn systemCompiler(target: *const Target) LangOpts.Compiler { |
| 546 | 546 | } |
| 547 | 547 | |
| 548 | 548 | pub fn hasFloat128(target: *const Target) bool { |
| 549 | if (target.cpu.arch.isWasm()) return true; | |
| 550 | 549 | if (target.os.tag.isDarwin()) return false; |
| 551 | if (target.cpu.arch.isPowerPC()) return std.Target.powerpc.featureSetHas(target.cpu.features, .float128); | |
| 552 | return switch (target.os.tag) { | |
| 553 | .dragonfly, | |
| 554 | .haiku, | |
| 555 | .linux, | |
| 556 | .openbsd, | |
| 557 | .illumos, | |
| 558 | => target.cpu.arch.isX86(), | |
| 559 | else => false, | |
| 560 | }; | |
| 550 | if (target.os.tag == .windows) return false; | |
| 551 | if (target.cpu.arch.isX86()) return true; | |
| 552 | return target.cTypeBitSize(.longdouble) == 128; | |
| 561 | 553 | } |
| 562 | 554 | |
| 563 | 555 | pub fn hasInt128(target: *const Target) bool { |
| ... | ... | @@ -1238,6 +1230,7 @@ pub fn toLLVMTriple(target: *const Target, buf: []u8) []const u8 { |
| 1238 | 1230 | .other, |
| 1239 | 1231 | .plan9, |
| 1240 | 1232 | .vita, |
| 1233 | .psp, | |
| 1241 | 1234 | => "unknown", |
| 1242 | 1235 | }; |
| 1243 | 1236 | writer.writeAll(llvm_os) catch unreachable; |
| ... | ... | @@ -1356,6 +1349,18 @@ pub fn isPIEDefault(target: *const Target) DefaultPIStatus { |
| 1356 | 1349 | }; |
| 1357 | 1350 | } |
| 1358 | 1351 | |
| 1352 | pub fn ppcElfVersion(target: *const Target) u32 { | |
| 1353 | std.debug.assert(target.cpu.arch.isPowerPC()); | |
| 1354 | return switch (target.cpu.arch) { | |
| 1355 | .powerpc64le => 2, | |
| 1356 | .powerpc64 => if ((target.os.isAtLeast(.freebsd, .{ .major = 13, .minor = 0, .patch = 0 }) orelse false) or target.os.tag == .openbsd or target.abi.isMusl()) | |
| 1357 | 2 | |
| 1358 | else | |
| 1359 | 1, | |
| 1360 | else => 1, | |
| 1361 | }; | |
| 1362 | } | |
| 1363 | ||
| 1359 | 1364 | pub fn isPICdefault(target: *const Target) DefaultPIStatus { |
| 1360 | 1365 | return switch (target.os.tag) { |
| 1361 | 1366 | .haiku, |
lib/compiler/aro/aro/Tokenizer.zig+31-14| ... | ... | @@ -1,5 +1,4 @@ |
| 1 | 1 | const std = @import("std"); |
| 2 | const Io = std.Io; | |
| 3 | 2 | const assert = std.debug.assert; |
| 4 | 3 | |
| 5 | 4 | const Compilation = @import("Compilation.zig"); |
| ... | ... | @@ -891,6 +890,14 @@ pub const Token = struct { |
| 891 | 890 | else => false, |
| 892 | 891 | }; |
| 893 | 892 | } |
| 893 | ||
| 894 | pub fn shouldTrackHideset(id: Id, context: enum { func, obj }) bool { | |
| 895 | return switch (id) { | |
| 896 | .identifier, .extended_identifier => true, | |
| 897 | .r_paren => context == .func, | |
| 898 | else => false, | |
| 899 | }; | |
| 900 | } | |
| 894 | 901 | }; |
| 895 | 902 | |
| 896 | 903 | /// double underscore and underscore + capital letter identifiers |
| ... | ... | @@ -938,6 +945,18 @@ pub const Token = struct { |
| 938 | 945 | .keyword_unaligned, |
| 939 | 946 | .keyword_unaligned2, |
| 940 | 947 | => if (langopts.ms_extensions) kw else .identifier, |
| 948 | ||
| 949 | .keyword_float32, | |
| 950 | .keyword_float64, | |
| 951 | .keyword_float128, | |
| 952 | .keyword_float32x, | |
| 953 | .keyword_float64x, | |
| 954 | .keyword_float128x, | |
| 955 | .keyword_dfloat32, | |
| 956 | .keyword_dfloat64, | |
| 957 | .keyword_dfloat128, | |
| 958 | .keyword_dfloat64x, | |
| 959 | => if (langopts.emulate == .clang) .identifier else kw, | |
| 941 | 960 | else => kw, |
| 942 | 961 | }; |
| 943 | 962 | } |
| ... | ... | @@ -2008,11 +2027,11 @@ test "operators" { |
| 2008 | 2027 | test "keywords" { |
| 2009 | 2028 | try expectTokens( |
| 2010 | 2029 | \\auto __auto_type break case char const continue default do |
| 2011 | \\double else enum extern float for goto if int | |
| 2012 | \\long register return short signed sizeof static | |
| 2013 | \\struct switch typedef union unsigned void volatile | |
| 2014 | \\while _Bool _Complex _Imaginary inline restrict _Alignas | |
| 2015 | \\_Alignof _Atomic _Generic _Noreturn _Static_assert _Thread_local | |
| 2030 | \\double else enum extern float for goto if int | |
| 2031 | \\long register return short signed sizeof static | |
| 2032 | \\struct switch typedef union unsigned void volatile | |
| 2033 | \\while _Bool _Complex _Imaginary inline restrict _Alignas | |
| 2034 | \\_Alignof _Atomic _Generic _Noreturn _Static_assert _Thread_local | |
| 2016 | 2035 | \\__attribute __attribute__ |
| 2017 | 2036 | \\ |
| 2018 | 2037 | , &.{ |
| ... | ... | @@ -2324,13 +2343,13 @@ test "Universal character names" { |
| 2324 | 2343 | |
| 2325 | 2344 | test "Tokenizer fuzz test" { |
| 2326 | 2345 | const Context = struct { |
| 2327 | fn testOne(_: @This(), input_bytes: []const u8) anyerror!void { | |
| 2328 | var arena: std.heap.ArenaAllocator = .init(std.testing.allocator); | |
| 2329 | defer arena.deinit(); | |
| 2330 | var comp = Compilation.init(std.testing.allocator, arena.allocator(), std.testing.io, undefined, Io.Dir.cwd()); | |
| 2346 | fn testOne(_: @This(), smith: *std.testing.Smith) anyerror!void { | |
| 2347 | var comp = try Compilation.init(.testing); | |
| 2331 | 2348 | defer comp.deinit(); |
| 2332 | 2349 | |
| 2333 | const source = try comp.addSourceFromBuffer("fuzz.c", input_bytes); | |
| 2350 | var buf: [256]u8 = undefined; | |
| 2351 | const contents_len = smith.slice(&buf); | |
| 2352 | const source = try comp.addSourceFromBuffer("fuzz.c", buf[0..contents_len]); | |
| 2334 | 2353 | |
| 2335 | 2354 | var tokenizer: Tokenizer = .{ |
| 2336 | 2355 | .buf = source.buf, |
| ... | ... | @@ -2350,9 +2369,7 @@ test "Tokenizer fuzz test" { |
| 2350 | 2369 | } |
| 2351 | 2370 | |
| 2352 | 2371 | fn expectTokensExtra(contents: []const u8, expected_tokens: []const Token.Id, langopts: ?LangOpts) !void { |
| 2353 | var arena: std.heap.ArenaAllocator = .init(std.testing.allocator); | |
| 2354 | defer arena.deinit(); | |
| 2355 | var comp = Compilation.init(std.testing.allocator, arena.allocator(), std.testing.io, undefined, Io.Dir.cwd()); | |
| 2372 | var comp = try Compilation.init(.testing); | |
| 2356 | 2373 | defer comp.deinit(); |
| 2357 | 2374 | if (langopts) |provided| { |
| 2358 | 2375 | comp.langopts = provided; |
lib/compiler/aro/aro/Toolchain.zig+4-7| ... | ... | @@ -495,9 +495,9 @@ pub fn addSystemIncludeDir(tc: *const Toolchain, path: []const u8) !void { |
| 495 | 495 | pub fn addBuiltinIncludeDir(tc: *const Toolchain) !void { |
| 496 | 496 | const d = tc.driver; |
| 497 | 497 | const comp = d.comp; |
| 498 | const io = comp.io; | |
| 498 | 499 | const gpa = comp.gpa; |
| 499 | 500 | const arena = comp.arena; |
| 500 | const io = comp.io; | |
| 501 | 501 | try d.includes.ensureUnusedCapacity(gpa, 1); |
| 502 | 502 | if (d.resource_dir) |resource_dir| { |
| 503 | 503 | const path = try std.fs.path.join(arena, &.{ resource_dir, "include" }); |
| ... | ... | @@ -524,14 +524,12 @@ pub fn addBuiltinIncludeDir(tc: *const Toolchain) !void { |
| 524 | 524 | /// Otherwise returns a slice of `buf`. If the file is larger than `buf` partial contents are returned |
| 525 | 525 | pub fn readFile(tc: *const Toolchain, path: []const u8, buf: []u8) ?[]const u8 { |
| 526 | 526 | const comp = tc.driver.comp; |
| 527 | const io = comp.io; | |
| 528 | return comp.cwd.readFile(io, path, buf) catch null; | |
| 527 | return comp.cwd.readFile(comp.io, path, buf) catch null; | |
| 529 | 528 | } |
| 530 | 529 | |
| 531 | 530 | pub fn exists(tc: *const Toolchain, path: []const u8) bool { |
| 532 | 531 | const comp = tc.driver.comp; |
| 533 | const io = comp.io; | |
| 534 | comp.cwd.access(io, path, .{}) catch return false; | |
| 532 | comp.cwd.access(comp.io, path, .{}) catch return false; | |
| 535 | 533 | return true; |
| 536 | 534 | } |
| 537 | 535 | |
| ... | ... | @@ -549,8 +547,7 @@ pub fn canExecute(tc: *const Toolchain, path: []const u8) bool { |
| 549 | 547 | } |
| 550 | 548 | |
| 551 | 549 | const comp = tc.driver.comp; |
| 552 | const io = comp.io; | |
| 553 | comp.cwd.access(io, path, .{ .execute = true }) catch return false; | |
| 550 | comp.cwd.access(comp.io, path, .{ .execute = true }) catch return false; | |
| 554 | 551 | // Todo: ensure path is not a directory |
| 555 | 552 | return true; |
| 556 | 553 | } |
lib/compiler/aro/aro/Tree.zig+178-148| ... | ... | @@ -34,7 +34,7 @@ pub const TokenWithExpansionLocs = struct { |
| 34 | 34 | expansion_locs: ?[*]Source.Location = null, |
| 35 | 35 | |
| 36 | 36 | pub fn expansionSlice(tok: TokenWithExpansionLocs) []const Source.Location { |
| 37 | const locs = tok.expansion_locs orelse return &[0]Source.Location{}; | |
| 37 | const locs = tok.expansion_locs orelse return &.{}; | |
| 38 | 38 | var i: usize = 0; |
| 39 | 39 | while (locs[i].id.index != .unused) : (i += 1) {} |
| 40 | 40 | return locs[0..i]; |
| ... | ... | @@ -243,6 +243,8 @@ pub const Node = union(enum) { |
| 243 | 243 | builtin_choose_expr: Conditional, |
| 244 | 244 | builtin_convertvector: Convertvector, |
| 245 | 245 | builtin_shufflevector: Shufflevector, |
| 246 | builtin_va_arg_pack: VaArgPack, | |
| 247 | builtin_va_arg_pack_len: VaArgPack, | |
| 246 | 248 | |
| 247 | 249 | /// C23 bool literal `true` / `false` |
| 248 | 250 | bool_literal: Literal, |
| ... | ... | @@ -633,6 +635,10 @@ pub const Node = union(enum) { |
| 633 | 635 | indexes: []const Node.Index, |
| 634 | 636 | }; |
| 635 | 637 | |
| 638 | pub const VaArgPack = struct { | |
| 639 | builtin_tok: TokenIndex, | |
| 640 | }; | |
| 641 | ||
| 636 | 642 | pub const Literal = struct { |
| 637 | 643 | literal_tok: TokenIndex, |
| 638 | 644 | qt: QualType, |
| ... | ... | @@ -1689,6 +1695,16 @@ pub const Node = union(enum) { |
| 1689 | 1695 | .indexes = @ptrCast(tree.extra.items[node_data[1] + 2 ..][0..node_data[2]]), |
| 1690 | 1696 | }, |
| 1691 | 1697 | }, |
| 1698 | .builtin_va_arg_pack => .{ | |
| 1699 | .builtin_va_arg_pack = .{ | |
| 1700 | .builtin_tok = node_tok, | |
| 1701 | }, | |
| 1702 | }, | |
| 1703 | .builtin_va_arg_pack_len => .{ | |
| 1704 | .builtin_va_arg_pack_len = .{ | |
| 1705 | .builtin_tok = node_tok, | |
| 1706 | }, | |
| 1707 | }, | |
| 1692 | 1708 | .array_init_expr_two => .{ |
| 1693 | 1709 | .array_init_expr = .{ |
| 1694 | 1710 | .l_brace_tok = node_tok, |
| ... | ... | @@ -1797,7 +1813,9 @@ pub const Node = union(enum) { |
| 1797 | 1813 | .global_asm, |
| 1798 | 1814 | .generic_association_expr, |
| 1799 | 1815 | .generic_default_expr, |
| 1816 | .builtin_va_arg_pack, | |
| 1800 | 1817 | => null, |
| 1818 | .builtin_va_arg_pack_len => .int, | |
| 1801 | 1819 | .builtin_types_compatible_p => .int, |
| 1802 | 1820 | else => { |
| 1803 | 1821 | // If a node is typed the type is stored in data[0]. |
| ... | ... | @@ -1963,6 +1981,8 @@ pub const Node = union(enum) { |
| 1963 | 1981 | builtin_types_compatible_p, |
| 1964 | 1982 | builtin_convertvector, |
| 1965 | 1983 | builtin_shufflevector, |
| 1984 | builtin_va_arg_pack, | |
| 1985 | builtin_va_arg_pack_len, | |
| 1966 | 1986 | array_init_expr, |
| 1967 | 1987 | array_init_expr_two, |
| 1968 | 1988 | struct_init_expr, |
| ... | ... | @@ -2789,6 +2809,14 @@ pub fn setNode(tree: *Tree, node: Node, index: usize) !void { |
| 2789 | 2809 | tree.extra.appendAssumeCapacity(@intFromEnum(builtin.rhs)); |
| 2790 | 2810 | tree.extra.appendSliceAssumeCapacity(@ptrCast(builtin.indexes)); |
| 2791 | 2811 | }, |
| 2812 | .builtin_va_arg_pack => |builtin| { | |
| 2813 | repr.tag = .builtin_va_arg_pack; | |
| 2814 | repr.tok = builtin.builtin_tok; | |
| 2815 | }, | |
| 2816 | .builtin_va_arg_pack_len => |builtin| { | |
| 2817 | repr.tag = .builtin_va_arg_pack_len; | |
| 2818 | repr.tok = builtin.builtin_tok; | |
| 2819 | }, | |
| 2792 | 2820 | .array_init_expr => |init| { |
| 2793 | 2821 | repr.data[0] = @bitCast(init.container_qt); |
| 2794 | 2822 | if (init.items.len > 2) { |
| ... | ... | @@ -3000,12 +3028,12 @@ pub fn tokSlice(tree: *const Tree, tok_i: TokenIndex) []const u8 { |
| 3000 | 3028 | return tree.comp.locSlice(loc); |
| 3001 | 3029 | } |
| 3002 | 3030 | |
| 3003 | pub fn dump(tree: *const Tree, config: std.Io.tty.Config, w: *std.Io.Writer) std.Io.tty.Config.SetColorError!void { | |
| 3031 | pub fn dump(tree: *const Tree, term: std.Io.Terminal) std.Io.Terminal.SetColorError!void { | |
| 3004 | 3032 | for (tree.root_decls.items) |i| { |
| 3005 | try tree.dumpNode(i, 0, config, w); | |
| 3006 | try w.writeByte('\n'); | |
| 3033 | try tree.dumpNode(i, 0, term); | |
| 3034 | try term.writer.writeByte('\n'); | |
| 3007 | 3035 | } |
| 3008 | try w.flush(); | |
| 3036 | try term.writer.flush(); | |
| 3009 | 3037 | } |
| 3010 | 3038 | |
| 3011 | 3039 | fn dumpFieldAttributes(tree: *const Tree, attributes: []const Attribute, level: u32, w: *std.Io.Writer) !void { |
| ... | ... | @@ -3052,25 +3080,26 @@ fn dumpNode( |
| 3052 | 3080 | tree: *const Tree, |
| 3053 | 3081 | node_index: Node.Index, |
| 3054 | 3082 | level: u32, |
| 3055 | config: std.Io.tty.Config, | |
| 3056 | w: *std.Io.Writer, | |
| 3083 | term: std.Io.Terminal, | |
| 3057 | 3084 | ) !void { |
| 3058 | 3085 | const delta = 2; |
| 3059 | 3086 | const half = delta / 2; |
| 3060 | const TYPE = std.Io.tty.Color.bright_magenta; | |
| 3061 | const TAG = std.Io.tty.Color.bright_cyan; | |
| 3062 | const IMPLICIT = std.Io.tty.Color.bright_blue; | |
| 3063 | const NAME = std.Io.tty.Color.bright_red; | |
| 3064 | const LITERAL = std.Io.tty.Color.bright_green; | |
| 3065 | const ATTRIBUTE = std.Io.tty.Color.bright_yellow; | |
| 3087 | const TYPE = std.Io.Terminal.Color.bright_magenta; | |
| 3088 | const TAG = std.Io.Terminal.Color.bright_cyan; | |
| 3089 | const IMPLICIT = std.Io.Terminal.Color.bright_blue; | |
| 3090 | const NAME = std.Io.Terminal.Color.bright_red; | |
| 3091 | const LITERAL = std.Io.Terminal.Color.bright_green; | |
| 3092 | const ATTRIBUTE = std.Io.Terminal.Color.bright_yellow; | |
| 3093 | ||
| 3094 | const w = term.writer; | |
| 3066 | 3095 | |
| 3067 | 3096 | const node = node_index.get(tree); |
| 3068 | 3097 | try w.splatByteAll(' ', level); |
| 3069 | 3098 | |
| 3070 | if (config == .no_color) { | |
| 3099 | if (term.mode == .no_color) { | |
| 3071 | 3100 | if (node.isImplicit()) try w.writeAll("implicit "); |
| 3072 | 3101 | } else { |
| 3073 | try config.setColor(w, if (node.isImplicit()) IMPLICIT else TAG); | |
| 3102 | try term.setColor(if (node.isImplicit()) IMPLICIT else TAG); | |
| 3074 | 3103 | } |
| 3075 | 3104 | try w.print("{s}", .{@tagName(node)}); |
| 3076 | 3105 | |
| ... | ... | @@ -3078,36 +3107,36 @@ fn dumpNode( |
| 3078 | 3107 | try w.writeAll(": "); |
| 3079 | 3108 | switch (node) { |
| 3080 | 3109 | .cast => |cast| { |
| 3081 | try config.setColor(w, .white); | |
| 3110 | try term.setColor(.white); | |
| 3082 | 3111 | try w.print("({s}) ", .{@tagName(cast.kind)}); |
| 3083 | 3112 | }, |
| 3084 | 3113 | else => {}, |
| 3085 | 3114 | } |
| 3086 | 3115 | |
| 3087 | try config.setColor(w, TYPE); | |
| 3116 | try term.setColor(TYPE); | |
| 3088 | 3117 | try w.writeByte('\''); |
| 3089 | 3118 | try qt.dump(tree.comp, w); |
| 3090 | 3119 | try w.writeByte('\''); |
| 3091 | 3120 | } |
| 3092 | 3121 | |
| 3093 | 3122 | if (tree.isLval(node_index)) { |
| 3094 | try config.setColor(w, ATTRIBUTE); | |
| 3123 | try term.setColor(ATTRIBUTE); | |
| 3095 | 3124 | try w.writeAll(" lvalue"); |
| 3096 | 3125 | } |
| 3097 | 3126 | if (tree.isBitfield(node_index)) { |
| 3098 | try config.setColor(w, ATTRIBUTE); | |
| 3127 | try term.setColor(ATTRIBUTE); | |
| 3099 | 3128 | try w.writeAll(" bitfield"); |
| 3100 | 3129 | } |
| 3101 | 3130 | if (node == .asm_stmt) { |
| 3102 | 3131 | const quals = node.asm_stmt.quals; |
| 3103 | try config.setColor(w, ATTRIBUTE); | |
| 3132 | try term.setColor(ATTRIBUTE); | |
| 3104 | 3133 | if (quals.@"inline") try w.writeAll(" inline"); |
| 3105 | 3134 | if (quals.@"volatile") try w.writeAll(" volatile"); |
| 3106 | 3135 | if (quals.goto) try w.writeAll(" goto"); |
| 3107 | 3136 | } |
| 3108 | 3137 | |
| 3109 | 3138 | if (tree.value_map.get(node_index)) |val| { |
| 3110 | try config.setColor(w, LITERAL); | |
| 3139 | try term.setColor(LITERAL); | |
| 3111 | 3140 | try w.writeAll(" (value: "); |
| 3112 | 3141 | if (try val.print(node_index.qt(tree), tree.comp, w)) |nested| switch (nested) { |
| 3113 | 3142 | .pointer => |ptr| { |
| ... | ... | @@ -3127,15 +3156,15 @@ fn dumpNode( |
| 3127 | 3156 | try w.writeByte(')'); |
| 3128 | 3157 | } |
| 3129 | 3158 | if (node == .return_stmt and node.return_stmt.operand == .implicit and node.return_stmt.operand.implicit) { |
| 3130 | try config.setColor(w, IMPLICIT); | |
| 3159 | try term.setColor(IMPLICIT); | |
| 3131 | 3160 | try w.writeAll(" (value: 0)"); |
| 3132 | 3161 | } |
| 3133 | 3162 | |
| 3134 | 3163 | try w.writeAll("\n"); |
| 3135 | try config.setColor(w, .reset); | |
| 3164 | try term.setColor(.reset); | |
| 3136 | 3165 | |
| 3137 | 3166 | if (node_index.qtOrNull(tree)) |qt| { |
| 3138 | try config.setColor(w, ATTRIBUTE); | |
| 3167 | try term.setColor(ATTRIBUTE); | |
| 3139 | 3168 | var it = Attribute.Iterator.initType(qt, tree.comp); |
| 3140 | 3169 | while (it.next()) |item| { |
| 3141 | 3170 | const attr, _ = item; |
| ... | ... | @@ -3143,56 +3172,56 @@ fn dumpNode( |
| 3143 | 3172 | try w.print("attr: {s}", .{@tagName(attr.tag)}); |
| 3144 | 3173 | try tree.dumpAttribute(attr, w); |
| 3145 | 3174 | } |
| 3146 | try config.setColor(w, .reset); | |
| 3175 | try term.setColor(.reset); | |
| 3147 | 3176 | } |
| 3148 | 3177 | |
| 3149 | 3178 | switch (node) { |
| 3150 | 3179 | .empty_decl => {}, |
| 3151 | 3180 | .global_asm => |@"asm"| { |
| 3152 | try tree.dumpNode(@"asm".asm_str, level + delta, config, w); | |
| 3181 | try tree.dumpNode(@"asm".asm_str, level + delta, term); | |
| 3153 | 3182 | }, |
| 3154 | 3183 | .static_assert => |assert| { |
| 3155 | 3184 | try w.splatByteAll(' ', level + 1); |
| 3156 | 3185 | try w.writeAll("condition:\n"); |
| 3157 | try tree.dumpNode(assert.cond, level + delta, config, w); | |
| 3186 | try tree.dumpNode(assert.cond, level + delta, term); | |
| 3158 | 3187 | if (assert.message) |some| { |
| 3159 | 3188 | try w.splatByteAll(' ', level + 1); |
| 3160 | 3189 | try w.writeAll("diagnostic:\n"); |
| 3161 | try tree.dumpNode(some, level + delta, config, w); | |
| 3190 | try tree.dumpNode(some, level + delta, term); | |
| 3162 | 3191 | } |
| 3163 | 3192 | }, |
| 3164 | 3193 | .function => |function| { |
| 3165 | 3194 | try w.splatByteAll(' ', level + half); |
| 3166 | 3195 | |
| 3167 | try config.setColor(w, ATTRIBUTE); | |
| 3196 | try term.setColor(ATTRIBUTE); | |
| 3168 | 3197 | if (function.static) try w.writeAll("static "); |
| 3169 | 3198 | if (function.@"inline") try w.writeAll("inline "); |
| 3170 | 3199 | |
| 3171 | try config.setColor(w, .reset); | |
| 3200 | try term.setColor(.reset); | |
| 3172 | 3201 | try w.writeAll("name: "); |
| 3173 | try config.setColor(w, NAME); | |
| 3202 | try term.setColor(NAME); | |
| 3174 | 3203 | try w.print("{s}\n", .{tree.tokSlice(function.name_tok)}); |
| 3175 | try config.setColor(w, .reset); | |
| 3204 | try term.setColor(.reset); | |
| 3176 | 3205 | |
| 3177 | 3206 | if (function.body) |body| { |
| 3178 | 3207 | try w.splatByteAll(' ', level + half); |
| 3179 | 3208 | try w.writeAll("body:\n"); |
| 3180 | try tree.dumpNode(body, level + delta, config, w); | |
| 3209 | try tree.dumpNode(body, level + delta, term); | |
| 3181 | 3210 | } |
| 3182 | 3211 | if (function.definition) |definition| { |
| 3183 | 3212 | try w.splatByteAll(' ', level + half); |
| 3184 | 3213 | try w.writeAll("definition: "); |
| 3185 | try config.setColor(w, NAME); | |
| 3214 | try term.setColor(NAME); | |
| 3186 | 3215 | try w.print("0x{X}\n", .{@intFromEnum(definition)}); |
| 3187 | try config.setColor(w, .reset); | |
| 3216 | try term.setColor(.reset); | |
| 3188 | 3217 | } |
| 3189 | 3218 | }, |
| 3190 | 3219 | .typedef => |typedef| { |
| 3191 | 3220 | try w.splatByteAll(' ', level + half); |
| 3192 | 3221 | try w.writeAll("name: "); |
| 3193 | try config.setColor(w, NAME); | |
| 3222 | try term.setColor(NAME); | |
| 3194 | 3223 | try w.print("{s}\n", .{tree.tokSlice(typedef.name_tok)}); |
| 3195 | try config.setColor(w, .reset); | |
| 3224 | try term.setColor(.reset); | |
| 3196 | 3225 | }, |
| 3197 | 3226 | .param => |param| { |
| 3198 | 3227 | try w.splatByteAll(' ', level + half); |
| ... | ... | @@ -3200,21 +3229,21 @@ fn dumpNode( |
| 3200 | 3229 | switch (param.storage_class) { |
| 3201 | 3230 | .auto => {}, |
| 3202 | 3231 | .register => { |
| 3203 | try config.setColor(w, ATTRIBUTE); | |
| 3232 | try term.setColor(ATTRIBUTE); | |
| 3204 | 3233 | try w.writeAll("register "); |
| 3205 | try config.setColor(w, .reset); | |
| 3234 | try term.setColor(.reset); | |
| 3206 | 3235 | }, |
| 3207 | 3236 | } |
| 3208 | 3237 | |
| 3209 | 3238 | try w.writeAll("name: "); |
| 3210 | try config.setColor(w, NAME); | |
| 3239 | try term.setColor(NAME); | |
| 3211 | 3240 | try w.print("{s}\n", .{tree.tokSlice(param.name_tok)}); |
| 3212 | try config.setColor(w, .reset); | |
| 3241 | try term.setColor(.reset); | |
| 3213 | 3242 | }, |
| 3214 | 3243 | .variable => |variable| { |
| 3215 | 3244 | try w.splatByteAll(' ', level + half); |
| 3216 | 3245 | |
| 3217 | try config.setColor(w, ATTRIBUTE); | |
| 3246 | try term.setColor(ATTRIBUTE); | |
| 3218 | 3247 | switch (variable.storage_class) { |
| 3219 | 3248 | .auto => {}, |
| 3220 | 3249 | .static => try w.writeAll("static "), |
| ... | ... | @@ -3222,37 +3251,37 @@ fn dumpNode( |
| 3222 | 3251 | .register => try w.writeAll("register "), |
| 3223 | 3252 | } |
| 3224 | 3253 | if (variable.thread_local) try w.writeAll("thread_local "); |
| 3225 | try config.setColor(w, .reset); | |
| 3254 | try term.setColor(.reset); | |
| 3226 | 3255 | |
| 3227 | 3256 | try w.writeAll("name: "); |
| 3228 | try config.setColor(w, NAME); | |
| 3257 | try term.setColor(NAME); | |
| 3229 | 3258 | try w.print("{s}\n", .{tree.tokSlice(variable.name_tok)}); |
| 3230 | try config.setColor(w, .reset); | |
| 3259 | try term.setColor(.reset); | |
| 3231 | 3260 | |
| 3232 | 3261 | if (variable.initializer) |some| { |
| 3233 | try config.setColor(w, .reset); | |
| 3262 | try term.setColor(.reset); | |
| 3234 | 3263 | try w.splatByteAll(' ', level + half); |
| 3235 | 3264 | try w.writeAll("init:\n"); |
| 3236 | try tree.dumpNode(some, level + delta, config, w); | |
| 3265 | try tree.dumpNode(some, level + delta, term); | |
| 3237 | 3266 | } |
| 3238 | 3267 | if (variable.definition) |definition| { |
| 3239 | 3268 | try w.splatByteAll(' ', level + half); |
| 3240 | 3269 | try w.writeAll("definition: "); |
| 3241 | try config.setColor(w, NAME); | |
| 3270 | try term.setColor(NAME); | |
| 3242 | 3271 | try w.print("0x{X}\n", .{@intFromEnum(definition)}); |
| 3243 | try config.setColor(w, .reset); | |
| 3272 | try term.setColor(.reset); | |
| 3244 | 3273 | } |
| 3245 | 3274 | }, |
| 3246 | 3275 | .enum_field => |field| { |
| 3247 | 3276 | try w.splatByteAll(' ', level + half); |
| 3248 | 3277 | try w.writeAll("name: "); |
| 3249 | try config.setColor(w, NAME); | |
| 3278 | try term.setColor(NAME); | |
| 3250 | 3279 | try w.print("{s}\n", .{tree.tokSlice(field.name_tok)}); |
| 3251 | try config.setColor(w, .reset); | |
| 3280 | try term.setColor(.reset); | |
| 3252 | 3281 | if (field.init) |some| { |
| 3253 | 3282 | try w.splatByteAll(' ', level + half); |
| 3254 | 3283 | try w.writeAll("init:\n"); |
| 3255 | try tree.dumpNode(some, level + delta, config, w); | |
| 3284 | try tree.dumpNode(some, level + delta, term); | |
| 3256 | 3285 | } |
| 3257 | 3286 | }, |
| 3258 | 3287 | .record_field => |field| { |
| ... | ... | @@ -3260,26 +3289,26 @@ fn dumpNode( |
| 3260 | 3289 | if (name_tok_id == .identifier or name_tok_id == .extended_identifier) { |
| 3261 | 3290 | try w.splatByteAll(' ', level + half); |
| 3262 | 3291 | try w.writeAll("name: "); |
| 3263 | try config.setColor(w, NAME); | |
| 3292 | try term.setColor(NAME); | |
| 3264 | 3293 | try w.print("{s}\n", .{tree.tokSlice(field.name_or_first_tok)}); |
| 3265 | try config.setColor(w, .reset); | |
| 3294 | try term.setColor(.reset); | |
| 3266 | 3295 | } |
| 3267 | 3296 | if (field.bit_width) |some| { |
| 3268 | 3297 | try w.splatByteAll(' ', level + half); |
| 3269 | 3298 | try w.writeAll("bits:\n"); |
| 3270 | try tree.dumpNode(some, level + delta, config, w); | |
| 3299 | try tree.dumpNode(some, level + delta, term); | |
| 3271 | 3300 | } |
| 3272 | 3301 | }, |
| 3273 | 3302 | .compound_stmt => |compound| { |
| 3274 | 3303 | for (compound.body, 0..) |stmt, i| { |
| 3275 | 3304 | if (i != 0) try w.writeByte('\n'); |
| 3276 | try tree.dumpNode(stmt, level + delta, config, w); | |
| 3305 | try tree.dumpNode(stmt, level + delta, term); | |
| 3277 | 3306 | } |
| 3278 | 3307 | }, |
| 3279 | 3308 | .enum_decl => |decl| { |
| 3280 | 3309 | for (decl.fields, 0..) |field, i| { |
| 3281 | 3310 | if (i != 0) try w.writeByte('\n'); |
| 3282 | try tree.dumpNode(field, level + delta, config, w); | |
| 3311 | try tree.dumpNode(field, level + delta, term); | |
| 3283 | 3312 | } |
| 3284 | 3313 | }, |
| 3285 | 3314 | .struct_decl, .union_decl => |decl| { |
| ... | ... | @@ -3291,7 +3320,7 @@ fn dumpNode( |
| 3291 | 3320 | var field_i: u32 = 0; |
| 3292 | 3321 | for (decl.fields, 0..) |field_node, i| { |
| 3293 | 3322 | if (i != 0) try w.writeByte('\n'); |
| 3294 | try tree.dumpNode(field_node, level + delta, config, w); | |
| 3323 | try tree.dumpNode(field_node, level + delta, term); | |
| 3295 | 3324 | |
| 3296 | 3325 | if (field_node.get(tree) != .record_field) continue; |
| 3297 | 3326 | if (fields.len == 0) continue; |
| ... | ... | @@ -3301,32 +3330,32 @@ fn dumpNode( |
| 3301 | 3330 | |
| 3302 | 3331 | if (field_attributes.len == 0) continue; |
| 3303 | 3332 | |
| 3304 | try config.setColor(w, ATTRIBUTE); | |
| 3333 | try term.setColor(ATTRIBUTE); | |
| 3305 | 3334 | try tree.dumpFieldAttributes(field_attributes, level + delta + half, w); |
| 3306 | try config.setColor(w, .reset); | |
| 3335 | try term.setColor(.reset); | |
| 3307 | 3336 | } |
| 3308 | 3337 | }, |
| 3309 | 3338 | .array_init_expr, .struct_init_expr => |init| { |
| 3310 | 3339 | for (init.items, 0..) |item, i| { |
| 3311 | 3340 | if (i != 0) try w.writeByte('\n'); |
| 3312 | try tree.dumpNode(item, level + delta, config, w); | |
| 3341 | try tree.dumpNode(item, level + delta, term); | |
| 3313 | 3342 | } |
| 3314 | 3343 | }, |
| 3315 | 3344 | .union_init_expr => |init| { |
| 3316 | 3345 | try w.splatByteAll(' ', level + half); |
| 3317 | 3346 | try w.writeAll("field index: "); |
| 3318 | try config.setColor(w, LITERAL); | |
| 3347 | try term.setColor(LITERAL); | |
| 3319 | 3348 | try w.print("{d}\n", .{init.field_index}); |
| 3320 | try config.setColor(w, .reset); | |
| 3349 | try term.setColor(.reset); | |
| 3321 | 3350 | if (init.initializer) |some| { |
| 3322 | try tree.dumpNode(some, level + delta, config, w); | |
| 3351 | try tree.dumpNode(some, level + delta, term); | |
| 3323 | 3352 | } |
| 3324 | 3353 | }, |
| 3325 | 3354 | .compound_literal_expr => |literal| { |
| 3326 | 3355 | if (literal.storage_class != .auto or literal.thread_local) { |
| 3327 | 3356 | try w.splatByteAll(' ', level + half - 1); |
| 3328 | 3357 | |
| 3329 | try config.setColor(w, ATTRIBUTE); | |
| 3358 | try term.setColor(ATTRIBUTE); | |
| 3330 | 3359 | switch (literal.storage_class) { |
| 3331 | 3360 | .auto => {}, |
| 3332 | 3361 | .static => try w.writeAll(" static"), |
| ... | ... | @@ -3334,137 +3363,138 @@ fn dumpNode( |
| 3334 | 3363 | } |
| 3335 | 3364 | if (literal.thread_local) try w.writeAll(" thread_local"); |
| 3336 | 3365 | try w.writeByte('\n'); |
| 3337 | try config.setColor(w, .reset); | |
| 3366 | try term.setColor(.reset); | |
| 3338 | 3367 | } |
| 3339 | 3368 | |
| 3340 | try tree.dumpNode(literal.initializer, level + half, config, w); | |
| 3369 | try tree.dumpNode(literal.initializer, level + half, term); | |
| 3341 | 3370 | }, |
| 3342 | 3371 | .labeled_stmt => |labeled| { |
| 3343 | 3372 | try w.splatByteAll(' ', level + half); |
| 3344 | 3373 | try w.writeAll("label: "); |
| 3345 | try config.setColor(w, LITERAL); | |
| 3374 | try term.setColor(LITERAL); | |
| 3346 | 3375 | try w.print("{s}\n", .{tree.tokSlice(labeled.label_tok)}); |
| 3347 | 3376 | |
| 3348 | try config.setColor(w, .reset); | |
| 3377 | try term.setColor(.reset); | |
| 3349 | 3378 | try w.splatByteAll(' ', level + half); |
| 3350 | 3379 | try w.writeAll("stmt:\n"); |
| 3351 | try tree.dumpNode(labeled.body, level + delta, config, w); | |
| 3380 | try tree.dumpNode(labeled.body, level + delta, term); | |
| 3352 | 3381 | }, |
| 3353 | 3382 | .case_stmt => |case| { |
| 3354 | 3383 | try w.splatByteAll(' ', level + half); |
| 3355 | 3384 | |
| 3356 | 3385 | if (case.end) |some| { |
| 3357 | 3386 | try w.writeAll("range start:\n"); |
| 3358 | try tree.dumpNode(case.start, level + delta, config, w); | |
| 3387 | try tree.dumpNode(case.start, level + delta, term); | |
| 3359 | 3388 | |
| 3360 | 3389 | try w.splatByteAll(' ', level + half); |
| 3361 | 3390 | try w.writeAll("range end:\n"); |
| 3362 | try tree.dumpNode(some, level + delta, config, w); | |
| 3391 | try tree.dumpNode(some, level + delta, term); | |
| 3363 | 3392 | } else { |
| 3364 | 3393 | try w.writeAll("value:\n"); |
| 3365 | try tree.dumpNode(case.start, level + delta, config, w); | |
| 3394 | try tree.dumpNode(case.start, level + delta, term); | |
| 3366 | 3395 | } |
| 3367 | 3396 | |
| 3368 | 3397 | try w.splatByteAll(' ', level + half); |
| 3369 | 3398 | try w.writeAll("stmt:\n"); |
| 3370 | try tree.dumpNode(case.body, level + delta, config, w); | |
| 3399 | try tree.dumpNode(case.body, level + delta, term); | |
| 3371 | 3400 | }, |
| 3372 | 3401 | .default_stmt => |default| { |
| 3373 | 3402 | try w.splatByteAll(' ', level + half); |
| 3374 | 3403 | try w.writeAll("stmt:\n"); |
| 3375 | try tree.dumpNode(default.body, level + delta, config, w); | |
| 3404 | try tree.dumpNode(default.body, level + delta, term); | |
| 3376 | 3405 | }, |
| 3377 | 3406 | .binary_cond_expr, .cond_expr, .builtin_choose_expr => |conditional| { |
| 3378 | 3407 | try w.splatByteAll(' ', level + half); |
| 3379 | 3408 | try w.writeAll("cond:\n"); |
| 3380 | try tree.dumpNode(conditional.cond, level + delta, config, w); | |
| 3409 | try tree.dumpNode(conditional.cond, level + delta, term); | |
| 3381 | 3410 | |
| 3382 | 3411 | try w.splatByteAll(' ', level + half); |
| 3383 | 3412 | try w.writeAll("then:\n"); |
| 3384 | try tree.dumpNode(conditional.then_expr, level + delta, config, w); | |
| 3413 | try tree.dumpNode(conditional.then_expr, level + delta, term); | |
| 3385 | 3414 | |
| 3386 | 3415 | try w.splatByteAll(' ', level + half); |
| 3387 | 3416 | try w.writeAll("else:\n"); |
| 3388 | try tree.dumpNode(conditional.else_expr, level + delta, config, w); | |
| 3417 | try tree.dumpNode(conditional.else_expr, level + delta, term); | |
| 3389 | 3418 | }, |
| 3390 | 3419 | .builtin_types_compatible_p => |call| { |
| 3391 | 3420 | try w.splatByteAll(' ', level + half); |
| 3392 | 3421 | try w.writeAll("lhs: "); |
| 3393 | try config.setColor(w, TYPE); | |
| 3422 | try term.setColor(TYPE); | |
| 3394 | 3423 | try call.lhs.dump(tree.comp, w); |
| 3395 | 3424 | try w.writeByte('\n'); |
| 3396 | try config.setColor(w, .reset); | |
| 3425 | try term.setColor(.reset); | |
| 3397 | 3426 | |
| 3398 | 3427 | try w.splatByteAll(' ', level + half); |
| 3399 | 3428 | try w.writeAll("rhs: "); |
| 3400 | try config.setColor(w, TYPE); | |
| 3429 | try term.setColor(TYPE); | |
| 3401 | 3430 | try call.rhs.dump(tree.comp, w); |
| 3402 | 3431 | try w.writeByte('\n'); |
| 3403 | try config.setColor(w, .reset); | |
| 3432 | try term.setColor(.reset); | |
| 3404 | 3433 | }, |
| 3405 | 3434 | .builtin_convertvector => |convert| { |
| 3406 | 3435 | try w.splatByteAll(' ', level + half); |
| 3407 | 3436 | try w.writeAll("operand:\n"); |
| 3408 | try tree.dumpNode(convert.operand, level + delta, config, w); | |
| 3437 | try tree.dumpNode(convert.operand, level + delta, term); | |
| 3409 | 3438 | }, |
| 3410 | 3439 | .builtin_shufflevector => |shuffle| { |
| 3411 | 3440 | try w.splatByteAll(' ', level + half); |
| 3412 | 3441 | try w.writeAll("lhs:\n"); |
| 3413 | try tree.dumpNode(shuffle.lhs, level + delta, config, w); | |
| 3442 | try tree.dumpNode(shuffle.lhs, level + delta, term); | |
| 3414 | 3443 | |
| 3415 | 3444 | try w.splatByteAll(' ', level + half); |
| 3416 | 3445 | try w.writeAll("rhs:\n"); |
| 3417 | try tree.dumpNode(shuffle.rhs, level + delta, config, w); | |
| 3446 | try tree.dumpNode(shuffle.rhs, level + delta, term); | |
| 3418 | 3447 | |
| 3419 | 3448 | if (shuffle.indexes.len > 0) { |
| 3420 | 3449 | try w.splatByteAll(' ', level + half); |
| 3421 | 3450 | try w.writeAll("indexes:\n"); |
| 3422 | 3451 | for (shuffle.indexes) |index| { |
| 3423 | try tree.dumpNode(index, level + delta, config, w); | |
| 3452 | try tree.dumpNode(index, level + delta, term); | |
| 3424 | 3453 | } |
| 3425 | 3454 | } |
| 3426 | 3455 | }, |
| 3456 | .builtin_va_arg_pack, .builtin_va_arg_pack_len => {}, | |
| 3427 | 3457 | .if_stmt => |@"if"| { |
| 3428 | 3458 | try w.splatByteAll(' ', level + half); |
| 3429 | 3459 | try w.writeAll("cond:\n"); |
| 3430 | try tree.dumpNode(@"if".cond, level + delta, config, w); | |
| 3460 | try tree.dumpNode(@"if".cond, level + delta, term); | |
| 3431 | 3461 | |
| 3432 | 3462 | try w.splatByteAll(' ', level + half); |
| 3433 | 3463 | try w.writeAll("then:\n"); |
| 3434 | try tree.dumpNode(@"if".then_body, level + delta, config, w); | |
| 3464 | try tree.dumpNode(@"if".then_body, level + delta, term); | |
| 3435 | 3465 | |
| 3436 | 3466 | if (@"if".else_body) |some| { |
| 3437 | 3467 | try w.splatByteAll(' ', level + half); |
| 3438 | 3468 | try w.writeAll("else:\n"); |
| 3439 | try tree.dumpNode(some, level + delta, config, w); | |
| 3469 | try tree.dumpNode(some, level + delta, term); | |
| 3440 | 3470 | } |
| 3441 | 3471 | }, |
| 3442 | 3472 | .switch_stmt => |@"switch"| { |
| 3443 | 3473 | try w.splatByteAll(' ', level + half); |
| 3444 | 3474 | try w.writeAll("cond:\n"); |
| 3445 | try tree.dumpNode(@"switch".cond, level + delta, config, w); | |
| 3475 | try tree.dumpNode(@"switch".cond, level + delta, term); | |
| 3446 | 3476 | |
| 3447 | 3477 | try w.splatByteAll(' ', level + half); |
| 3448 | 3478 | try w.writeAll("body:\n"); |
| 3449 | try tree.dumpNode(@"switch".body, level + delta, config, w); | |
| 3479 | try tree.dumpNode(@"switch".body, level + delta, term); | |
| 3450 | 3480 | }, |
| 3451 | 3481 | .while_stmt => |@"while"| { |
| 3452 | 3482 | try w.splatByteAll(' ', level + half); |
| 3453 | 3483 | try w.writeAll("cond:\n"); |
| 3454 | try tree.dumpNode(@"while".cond, level + delta, config, w); | |
| 3484 | try tree.dumpNode(@"while".cond, level + delta, term); | |
| 3455 | 3485 | |
| 3456 | 3486 | try w.splatByteAll(' ', level + half); |
| 3457 | 3487 | try w.writeAll("body:\n"); |
| 3458 | try tree.dumpNode(@"while".body, level + delta, config, w); | |
| 3488 | try tree.dumpNode(@"while".body, level + delta, term); | |
| 3459 | 3489 | }, |
| 3460 | 3490 | .do_while_stmt => |do| { |
| 3461 | 3491 | try w.splatByteAll(' ', level + half); |
| 3462 | 3492 | try w.writeAll("cond:\n"); |
| 3463 | try tree.dumpNode(do.cond, level + delta, config, w); | |
| 3493 | try tree.dumpNode(do.cond, level + delta, term); | |
| 3464 | 3494 | |
| 3465 | 3495 | try w.splatByteAll(' ', level + half); |
| 3466 | 3496 | try w.writeAll("body:\n"); |
| 3467 | try tree.dumpNode(do.body, level + delta, config, w); | |
| 3497 | try tree.dumpNode(do.body, level + delta, term); | |
| 3468 | 3498 | }, |
| 3469 | 3499 | .for_stmt => |@"for"| { |
| 3470 | 3500 | switch (@"for".init) { |
| ... | ... | @@ -3472,48 +3502,48 @@ fn dumpNode( |
| 3472 | 3502 | try w.splatByteAll(' ', level + half); |
| 3473 | 3503 | try w.writeAll("decl:\n"); |
| 3474 | 3504 | for (decls) |decl| { |
| 3475 | try tree.dumpNode(decl, level + delta, config, w); | |
| 3505 | try tree.dumpNode(decl, level + delta, term); | |
| 3476 | 3506 | try w.writeByte('\n'); |
| 3477 | 3507 | } |
| 3478 | 3508 | }, |
| 3479 | 3509 | .expr => |expr| if (expr) |some| { |
| 3480 | 3510 | try w.splatByteAll(' ', level + half); |
| 3481 | 3511 | try w.writeAll("init:\n"); |
| 3482 | try tree.dumpNode(some, level + delta, config, w); | |
| 3512 | try tree.dumpNode(some, level + delta, term); | |
| 3483 | 3513 | }, |
| 3484 | 3514 | } |
| 3485 | 3515 | if (@"for".cond) |some| { |
| 3486 | 3516 | try w.splatByteAll(' ', level + half); |
| 3487 | 3517 | try w.writeAll("cond:\n"); |
| 3488 | try tree.dumpNode(some, level + delta, config, w); | |
| 3518 | try tree.dumpNode(some, level + delta, term); | |
| 3489 | 3519 | } |
| 3490 | 3520 | if (@"for".incr) |some| { |
| 3491 | 3521 | try w.splatByteAll(' ', level + half); |
| 3492 | 3522 | try w.writeAll("incr:\n"); |
| 3493 | try tree.dumpNode(some, level + delta, config, w); | |
| 3523 | try tree.dumpNode(some, level + delta, term); | |
| 3494 | 3524 | } |
| 3495 | 3525 | try w.splatByteAll(' ', level + half); |
| 3496 | 3526 | try w.writeAll("body:\n"); |
| 3497 | try tree.dumpNode(@"for".body, level + delta, config, w); | |
| 3527 | try tree.dumpNode(@"for".body, level + delta, term); | |
| 3498 | 3528 | }, |
| 3499 | 3529 | .addr_of_label => |addr| { |
| 3500 | 3530 | try w.splatByteAll(' ', level + half); |
| 3501 | 3531 | try w.writeAll("label: "); |
| 3502 | try config.setColor(w, LITERAL); | |
| 3532 | try term.setColor(LITERAL); | |
| 3503 | 3533 | try w.print("{s}\n", .{tree.tokSlice(addr.label_tok)}); |
| 3504 | try config.setColor(w, .reset); | |
| 3534 | try term.setColor(.reset); | |
| 3505 | 3535 | }, |
| 3506 | 3536 | .goto_stmt => |goto| { |
| 3507 | 3537 | try w.splatByteAll(' ', level + half); |
| 3508 | 3538 | try w.writeAll("label: "); |
| 3509 | try config.setColor(w, LITERAL); | |
| 3539 | try term.setColor(LITERAL); | |
| 3510 | 3540 | try w.print("{s}\n", .{tree.tokSlice(goto.label_tok)}); |
| 3511 | try config.setColor(w, .reset); | |
| 3541 | try term.setColor(.reset); | |
| 3512 | 3542 | }, |
| 3513 | 3543 | .computed_goto_stmt => |goto| { |
| 3514 | 3544 | try w.splatByteAll(' ', level + half); |
| 3515 | 3545 | try w.writeAll("expr:\n"); |
| 3516 | try tree.dumpNode(goto.expr, level + delta, config, w); | |
| 3546 | try tree.dumpNode(goto.expr, level + delta, term); | |
| 3517 | 3547 | }, |
| 3518 | 3548 | .continue_stmt, .break_stmt, .null_stmt => {}, |
| 3519 | 3549 | .return_stmt => |ret| { |
| ... | ... | @@ -3521,43 +3551,43 @@ fn dumpNode( |
| 3521 | 3551 | .expr => |expr| { |
| 3522 | 3552 | try w.splatByteAll(' ', level + half); |
| 3523 | 3553 | try w.writeAll("expr:\n"); |
| 3524 | try tree.dumpNode(expr, level + delta, config, w); | |
| 3554 | try tree.dumpNode(expr, level + delta, term); | |
| 3525 | 3555 | }, |
| 3526 | 3556 | .implicit => {}, |
| 3527 | 3557 | .none => {}, |
| 3528 | 3558 | } |
| 3529 | 3559 | }, |
| 3530 | 3560 | .asm_stmt => |@"asm"| { |
| 3531 | try tree.dumpNode(@"asm".asm_str, level + delta, config, w); | |
| 3561 | try tree.dumpNode(@"asm".asm_str, level + delta, term); | |
| 3532 | 3562 | |
| 3533 | 3563 | const write_operand = struct { |
| 3534 | 3564 | fn write_operand( |
| 3535 | _w: *std.Io.Writer, | |
| 3536 | 3565 | _level: u32, |
| 3537 | _config: std.Io.tty.Config, | |
| 3566 | _term: std.Io.Terminal, | |
| 3538 | 3567 | _tree: *const Tree, |
| 3539 | 3568 | operands: []const Node.AsmStmt.Operand, |
| 3540 | ) std.Io.tty.Config.SetColorError!void { | |
| 3569 | ) std.Io.Terminal.SetColorError!void { | |
| 3570 | const _w = _term.writer; | |
| 3541 | 3571 | for (operands) |operand| { |
| 3542 | 3572 | if (operand.name != 0) { |
| 3543 | 3573 | try _w.splatByteAll(' ', _level + delta); |
| 3544 | 3574 | try _w.writeAll("asm name: "); |
| 3545 | try _config.setColor(_w, NAME); | |
| 3575 | try _term.setColor(NAME); | |
| 3546 | 3576 | try _w.writeAll(_tree.tokSlice(operand.name)); |
| 3547 | 3577 | try _w.writeByte('\n'); |
| 3548 | try _config.setColor(_w, .reset); | |
| 3578 | try _term.setColor(.reset); | |
| 3549 | 3579 | } |
| 3550 | 3580 | |
| 3551 | 3581 | try _w.splatByteAll(' ', _level + delta); |
| 3552 | 3582 | try _w.writeAll("constraint: "); |
| 3553 | 3583 | const constraint_val = _tree.value_map.get(operand.constraint).?; |
| 3554 | try _config.setColor(_w, LITERAL); | |
| 3584 | try _term.setColor(LITERAL); | |
| 3555 | 3585 | _ = try constraint_val.print(operand.constraint.qt(_tree), _tree.comp, _w); |
| 3556 | 3586 | try _w.writeByte('\n'); |
| 3557 | 3587 | |
| 3558 | try _tree.dumpNode(operand.expr, _level + delta, _config, _w); | |
| 3588 | try _tree.dumpNode(operand.expr, _level + delta, _term); | |
| 3559 | 3589 | } |
| 3560 | try _config.setColor(_w, .reset); | |
| 3590 | try _term.setColor(.reset); | |
| 3561 | 3591 | } |
| 3562 | 3592 | }.write_operand; |
| 3563 | 3593 | |
| ... | ... | @@ -3565,18 +3595,18 @@ fn dumpNode( |
| 3565 | 3595 | try w.splatByteAll(' ', level + half); |
| 3566 | 3596 | try w.writeAll("ouputs:\n"); |
| 3567 | 3597 | |
| 3568 | try write_operand(w, level, config, tree, @"asm".outputs); | |
| 3598 | try write_operand(level, term, tree, @"asm".outputs); | |
| 3569 | 3599 | } |
| 3570 | 3600 | if (@"asm".inputs.len > 0) { |
| 3571 | 3601 | try w.splatByteAll(' ', level + half); |
| 3572 | 3602 | try w.writeAll("inputs:\n"); |
| 3573 | 3603 | |
| 3574 | try write_operand(w, level, config, tree, @"asm".inputs); | |
| 3604 | try write_operand(level, term, tree, @"asm".inputs); | |
| 3575 | 3605 | } |
| 3576 | 3606 | if (@"asm".clobbers.len > 0) { |
| 3577 | 3607 | try w.splatByteAll(' ', level + half); |
| 3578 | 3608 | try w.writeAll("clobbers:\n"); |
| 3579 | try config.setColor(w, LITERAL); | |
| 3609 | try term.setColor(LITERAL); | |
| 3580 | 3610 | for (@"asm".clobbers) |clobber| { |
| 3581 | 3611 | const clobber_val = tree.value_map.get(clobber).?; |
| 3582 | 3612 | |
| ... | ... | @@ -3584,41 +3614,41 @@ fn dumpNode( |
| 3584 | 3614 | _ = try clobber_val.print(clobber.qt(tree), tree.comp, w); |
| 3585 | 3615 | try w.writeByte('\n'); |
| 3586 | 3616 | } |
| 3587 | try config.setColor(w, .reset); | |
| 3617 | try term.setColor(.reset); | |
| 3588 | 3618 | } |
| 3589 | 3619 | if (@"asm".labels.len > 0) { |
| 3590 | 3620 | try w.splatByteAll(' ', level + half); |
| 3591 | 3621 | try w.writeAll("labels:\n"); |
| 3592 | 3622 | for (@"asm".labels) |label| { |
| 3593 | try tree.dumpNode(label, level + delta, config, w); | |
| 3623 | try tree.dumpNode(label, level + delta, term); | |
| 3594 | 3624 | } |
| 3595 | 3625 | } |
| 3596 | 3626 | }, |
| 3597 | 3627 | .call_expr => |call| { |
| 3598 | 3628 | try w.splatByteAll(' ', level + half); |
| 3599 | 3629 | try w.writeAll("callee:\n"); |
| 3600 | try tree.dumpNode(call.callee, level + delta, config, w); | |
| 3630 | try tree.dumpNode(call.callee, level + delta, term); | |
| 3601 | 3631 | |
| 3602 | 3632 | if (call.args.len > 0) { |
| 3603 | 3633 | try w.splatByteAll(' ', level + half); |
| 3604 | 3634 | try w.writeAll("args:\n"); |
| 3605 | 3635 | for (call.args) |arg| { |
| 3606 | try tree.dumpNode(arg, level + delta, config, w); | |
| 3636 | try tree.dumpNode(arg, level + delta, term); | |
| 3607 | 3637 | } |
| 3608 | 3638 | } |
| 3609 | 3639 | }, |
| 3610 | 3640 | .builtin_call_expr => |call| { |
| 3611 | 3641 | try w.splatByteAll(' ', level + half); |
| 3612 | 3642 | try w.writeAll("name: "); |
| 3613 | try config.setColor(w, NAME); | |
| 3643 | try term.setColor(NAME); | |
| 3614 | 3644 | try w.print("{s}\n", .{tree.tokSlice(call.builtin_tok)}); |
| 3615 | try config.setColor(w, .reset); | |
| 3645 | try term.setColor(.reset); | |
| 3616 | 3646 | |
| 3617 | 3647 | if (call.args.len > 0) { |
| 3618 | 3648 | try w.splatByteAll(' ', level + half); |
| 3619 | 3649 | try w.writeAll("args:\n"); |
| 3620 | 3650 | for (call.args) |arg| { |
| 3621 | try tree.dumpNode(arg, level + delta, config, w); | |
| 3651 | try tree.dumpNode(arg, level + delta, term); | |
| 3622 | 3652 | } |
| 3623 | 3653 | } |
| 3624 | 3654 | }, |
| ... | ... | @@ -3655,13 +3685,13 @@ fn dumpNode( |
| 3655 | 3685 | => |bin| { |
| 3656 | 3686 | try w.splatByteAll(' ', level + 1); |
| 3657 | 3687 | try w.writeAll("lhs:\n"); |
| 3658 | try tree.dumpNode(bin.lhs, level + delta, config, w); | |
| 3688 | try tree.dumpNode(bin.lhs, level + delta, term); | |
| 3659 | 3689 | |
| 3660 | 3690 | try w.splatByteAll(' ', level + 1); |
| 3661 | 3691 | try w.writeAll("rhs:\n"); |
| 3662 | try tree.dumpNode(bin.rhs, level + delta, config, w); | |
| 3692 | try tree.dumpNode(bin.rhs, level + delta, term); | |
| 3663 | 3693 | }, |
| 3664 | .cast => |cast| try tree.dumpNode(cast.operand, level + delta, config, w), | |
| 3694 | .cast => |cast| try tree.dumpNode(cast.operand, level + delta, term), | |
| 3665 | 3695 | .addr_of_expr, |
| 3666 | 3696 | .deref_expr, |
| 3667 | 3697 | .plus_expr, |
| ... | ... | @@ -3680,21 +3710,21 @@ fn dumpNode( |
| 3680 | 3710 | => |un| { |
| 3681 | 3711 | try w.splatByteAll(' ', level + 1); |
| 3682 | 3712 | try w.writeAll("operand:\n"); |
| 3683 | try tree.dumpNode(un.operand, level + delta, config, w); | |
| 3713 | try tree.dumpNode(un.operand, level + delta, term); | |
| 3684 | 3714 | }, |
| 3685 | 3715 | .decl_ref_expr, .enumeration_ref => |dr| { |
| 3686 | 3716 | try w.splatByteAll(' ', level + 1); |
| 3687 | 3717 | try w.writeAll("name: "); |
| 3688 | try config.setColor(w, NAME); | |
| 3718 | try term.setColor(NAME); | |
| 3689 | 3719 | try w.print("{s}\n", .{tree.tokSlice(dr.name_tok)}); |
| 3690 | try config.setColor(w, .reset); | |
| 3720 | try term.setColor(.reset); | |
| 3691 | 3721 | }, |
| 3692 | 3722 | .builtin_ref => |dr| { |
| 3693 | 3723 | try w.splatByteAll(' ', level + 1); |
| 3694 | 3724 | try w.writeAll("name: "); |
| 3695 | try config.setColor(w, NAME); | |
| 3725 | try term.setColor(NAME); | |
| 3696 | 3726 | try w.print("{s}\n", .{tree.tokSlice(dr.name_tok)}); |
| 3697 | try config.setColor(w, .reset); | |
| 3727 | try term.setColor(.reset); | |
| 3698 | 3728 | }, |
| 3699 | 3729 | .bool_literal, |
| 3700 | 3730 | .nullptr_literal, |
| ... | ... | @@ -3706,7 +3736,7 @@ fn dumpNode( |
| 3706 | 3736 | .member_access_expr, .member_access_ptr_expr => |access| { |
| 3707 | 3737 | try w.splatByteAll(' ', level + 1); |
| 3708 | 3738 | try w.writeAll("lhs:\n"); |
| 3709 | try tree.dumpNode(access.base, level + delta, config, w); | |
| 3739 | try tree.dumpNode(access.base, level + delta, term); | |
| 3710 | 3740 | |
| 3711 | 3741 | var base_qt = access.base.qt(tree); |
| 3712 | 3742 | if (base_qt.get(tree.comp, .pointer)) |some| base_qt = some.child; |
| ... | ... | @@ -3714,61 +3744,61 @@ fn dumpNode( |
| 3714 | 3744 | |
| 3715 | 3745 | try w.splatByteAll(' ', level + 1); |
| 3716 | 3746 | try w.writeAll("name: "); |
| 3717 | try config.setColor(w, NAME); | |
| 3747 | try term.setColor(NAME); | |
| 3718 | 3748 | try w.print("{s}\n", .{fields[access.member_index].name.lookup(tree.comp)}); |
| 3719 | try config.setColor(w, .reset); | |
| 3749 | try term.setColor(.reset); | |
| 3720 | 3750 | }, |
| 3721 | 3751 | .array_access_expr => |access| { |
| 3722 | 3752 | try w.splatByteAll(' ', level + 1); |
| 3723 | 3753 | try w.writeAll("base:\n"); |
| 3724 | try tree.dumpNode(access.base, level + delta, config, w); | |
| 3754 | try tree.dumpNode(access.base, level + delta, term); | |
| 3725 | 3755 | |
| 3726 | 3756 | try w.splatByteAll(' ', level + 1); |
| 3727 | 3757 | try w.writeAll("index:\n"); |
| 3728 | try tree.dumpNode(access.index, level + delta, config, w); | |
| 3758 | try tree.dumpNode(access.index, level + delta, term); | |
| 3729 | 3759 | }, |
| 3730 | 3760 | .sizeof_expr, .alignof_expr => |type_info| { |
| 3731 | 3761 | if (type_info.expr) |some| { |
| 3732 | 3762 | try w.splatByteAll(' ', level + 1); |
| 3733 | 3763 | try w.writeAll("expr:\n"); |
| 3734 | try tree.dumpNode(some, level + delta, config, w); | |
| 3764 | try tree.dumpNode(some, level + delta, term); | |
| 3735 | 3765 | } else { |
| 3736 | 3766 | try w.splatByteAll(' ', level + half); |
| 3737 | 3767 | try w.writeAll("operand type: "); |
| 3738 | try config.setColor(w, TYPE); | |
| 3768 | try term.setColor(TYPE); | |
| 3739 | 3769 | try type_info.operand_qt.dump(tree.comp, w); |
| 3740 | 3770 | try w.writeByte('\n'); |
| 3741 | try config.setColor(w, .reset); | |
| 3771 | try term.setColor(.reset); | |
| 3742 | 3772 | } |
| 3743 | 3773 | }, |
| 3744 | 3774 | .generic_expr => |generic| { |
| 3745 | 3775 | try w.splatByteAll(' ', level + 1); |
| 3746 | 3776 | try w.writeAll("controlling:\n"); |
| 3747 | try tree.dumpNode(generic.controlling, level + delta, config, w); | |
| 3777 | try tree.dumpNode(generic.controlling, level + delta, term); | |
| 3748 | 3778 | try w.splatByteAll(' ', level + 1); |
| 3749 | 3779 | try w.writeAll("chosen:\n"); |
| 3750 | try tree.dumpNode(generic.chosen, level + delta, config, w); | |
| 3780 | try tree.dumpNode(generic.chosen, level + delta, term); | |
| 3751 | 3781 | |
| 3752 | 3782 | if (generic.rest.len > 0) { |
| 3753 | 3783 | try w.splatByteAll(' ', level + 1); |
| 3754 | 3784 | try w.writeAll("rest:\n"); |
| 3755 | 3785 | for (generic.rest) |expr| { |
| 3756 | try tree.dumpNode(expr, level + delta, config, w); | |
| 3786 | try tree.dumpNode(expr, level + delta, term); | |
| 3757 | 3787 | } |
| 3758 | 3788 | } |
| 3759 | 3789 | }, |
| 3760 | 3790 | .generic_association_expr => |assoc| { |
| 3761 | try tree.dumpNode(assoc.expr, level + delta, config, w); | |
| 3791 | try tree.dumpNode(assoc.expr, level + delta, term); | |
| 3762 | 3792 | }, |
| 3763 | 3793 | .generic_default_expr => |default| { |
| 3764 | try tree.dumpNode(default.expr, level + delta, config, w); | |
| 3794 | try tree.dumpNode(default.expr, level + delta, term); | |
| 3765 | 3795 | }, |
| 3766 | 3796 | .array_filler_expr => |filler| { |
| 3767 | 3797 | try w.splatByteAll(' ', level + 1); |
| 3768 | 3798 | try w.writeAll("count: "); |
| 3769 | try config.setColor(w, LITERAL); | |
| 3799 | try term.setColor(LITERAL); | |
| 3770 | 3800 | try w.print("{d}\n", .{filler.count}); |
| 3771 | try config.setColor(w, .reset); | |
| 3801 | try term.setColor(.reset); | |
| 3772 | 3802 | }, |
| 3773 | 3803 | .struct_forward_decl, |
| 3774 | 3804 | .union_forward_decl, |
lib/compiler/aro/aro/TypeStore.zig+82-24| ... | ... | @@ -219,9 +219,9 @@ pub const QualType = packed struct(u32) { |
| 219 | 219 | .float_dfloat64 => return .{ .float = .dfloat64 }, |
| 220 | 220 | .float_dfloat128 => return .{ .float = .dfloat128 }, |
| 221 | 221 | .float_dfloat64x => return .{ .float = .dfloat64x }, |
| 222 | .void_pointer => return .{ .pointer = .{ .child = .void, .decayed = null } }, | |
| 223 | .char_pointer => return .{ .pointer = .{ .child = .char, .decayed = null } }, | |
| 224 | .int_pointer => return .{ .pointer = .{ .child = .int, .decayed = null } }, | |
| 222 | .void_pointer => return .{ .pointer = .{ .child = .void } }, | |
| 223 | .char_pointer => return .{ .pointer = .{ .child = .char } }, | |
| 224 | .int_pointer => return .{ .pointer = .{ .child = .int } }, | |
| 225 | 225 | |
| 226 | 226 | else => {}, |
| 227 | 227 | } |
| ... | ... | @@ -280,7 +280,7 @@ pub const QualType = packed struct(u32) { |
| 280 | 280 | }, |
| 281 | 281 | .pointer => .{ .pointer = .{ |
| 282 | 282 | .child = @bitCast(repr.data[0]), |
| 283 | .decayed = null, | |
| 283 | .bounds = @enumFromInt(repr.data[1]), | |
| 284 | 284 | } }, |
| 285 | 285 | .pointer_decayed => .{ .pointer = .{ |
| 286 | 286 | .child = @bitCast(repr.data[0]), |
| ... | ... | @@ -800,7 +800,6 @@ pub const QualType = packed struct(u32) { |
| 800 | 800 | |
| 801 | 801 | return comp.type_store.put(comp.gpa, .{ .pointer = .{ |
| 802 | 802 | .child = qt, |
| 803 | .decayed = null, | |
| 804 | 803 | } }); |
| 805 | 804 | }, |
| 806 | 805 | else => return qt, |
| ... | ... | @@ -1013,6 +1012,15 @@ pub const QualType = packed struct(u32) { |
| 1013 | 1012 | return qt.scalarKind(comp).isPointer(); |
| 1014 | 1013 | } |
| 1015 | 1014 | |
| 1015 | /// Function or function pointer | |
| 1016 | pub fn isCallable(qt: QualType, comp: *const Compilation) bool { | |
| 1017 | return switch (qt.base(comp).type) { | |
| 1018 | .func => true, | |
| 1019 | .pointer => |ptr| ptr.child.is(comp, .func), | |
| 1020 | else => false, | |
| 1021 | }; | |
| 1022 | } | |
| 1023 | ||
| 1016 | 1024 | pub fn eqlQualified(a_qt: QualType, b_qt: QualType, comp: *const Compilation) bool { |
| 1017 | 1025 | if (a_qt.@"const" != b_qt.@"const") return false; |
| 1018 | 1026 | if (a_qt.@"volatile" != b_qt.@"volatile") return false; |
| ... | ... | @@ -1632,7 +1640,25 @@ pub const Type = union(enum) { |
| 1632 | 1640 | |
| 1633 | 1641 | pub const Pointer = struct { |
| 1634 | 1642 | child: QualType, |
| 1635 | decayed: ?QualType, | |
| 1643 | decayed: ?QualType = null, | |
| 1644 | bounds: Bounds = .c, | |
| 1645 | ||
| 1646 | pub const Bounds = enum { | |
| 1647 | /// C pointer with no bounds attribute | |
| 1648 | c, | |
| 1649 | /// No pointer arithmetic or non-zero indexing | |
| 1650 | single, | |
| 1651 | /// Explicitly specified as a traditional C pointer | |
| 1652 | unsafe_indexable, | |
| 1653 | ||
| 1654 | pub fn fromTag(tag: Attribute.Tag) Bounds { | |
| 1655 | return switch (tag) { | |
| 1656 | .single => .single, | |
| 1657 | .unsafe_indexable => .unsafe_indexable, | |
| 1658 | else => unreachable, | |
| 1659 | }; | |
| 1660 | } | |
| 1661 | }; | |
| 1636 | 1662 | }; |
| 1637 | 1663 | |
| 1638 | 1664 | pub const Array = struct { |
| ... | ... | @@ -1784,6 +1810,7 @@ attributes: std.ArrayList(Attribute) = .empty, |
| 1784 | 1810 | anon_name_arena: std.heap.ArenaAllocator.State = .{}, |
| 1785 | 1811 | |
| 1786 | 1812 | wchar: QualType = .invalid, |
| 1813 | wint: QualType = .invalid, | |
| 1787 | 1814 | uint_least16_t: QualType = .invalid, |
| 1788 | 1815 | uint_least32_t: QualType = .invalid, |
| 1789 | 1816 | ptrdiff: QualType = .invalid, |
| ... | ... | @@ -1918,10 +1945,12 @@ pub fn set(ts: *TypeStore, gpa: std.mem.Allocator, ty: Type, index: usize) !void |
| 1918 | 1945 | .pointer => |pointer| { |
| 1919 | 1946 | repr.data[0] = @bitCast(pointer.child); |
| 1920 | 1947 | if (pointer.decayed) |array| { |
| 1948 | std.debug.assert(pointer.bounds == .c); | |
| 1921 | 1949 | repr.tag = .pointer_decayed; |
| 1922 | 1950 | repr.data[1] = @bitCast(array); |
| 1923 | 1951 | } else { |
| 1924 | 1952 | repr.tag = .pointer; |
| 1953 | repr.data[1] = @intFromEnum(pointer.bounds); | |
| 1925 | 1954 | } |
| 1926 | 1955 | }, |
| 1927 | 1956 | .array => |array| { |
| ... | ... | @@ -2070,17 +2099,44 @@ pub fn set(ts: *TypeStore, gpa: std.mem.Allocator, ty: Type, index: usize) !void |
| 2070 | 2099 | |
| 2071 | 2100 | pub fn initNamedTypes(ts: *TypeStore, comp: *Compilation) !void { |
| 2072 | 2101 | const os = comp.target.os.tag; |
| 2073 | ts.wchar = switch (comp.target.cpu.arch) { | |
| 2074 | .xcore => .uchar, | |
| 2075 | .ve, .msp430 => .uint, | |
| 2076 | .arm, .armeb, .thumb, .thumbeb => if (os != .windows and os != .netbsd and os != .openbsd) .uint else .int, | |
| 2077 | .aarch64, .aarch64_be => if (!os.isDarwin() and os != .netbsd) .uint else .int, | |
| 2078 | .x86_64, .x86 => if (os == .windows) .ushort else .int, | |
| 2079 | else => .int, | |
| 2102 | const arch = comp.target.cpu.arch; | |
| 2103 | ts.wchar = switch (os) { | |
| 2104 | .openbsd, .netbsd => .int, | |
| 2105 | .ps4, .ps5 => .ushort, | |
| 2106 | .uefi => .ushort, | |
| 2107 | .windows => .ushort, | |
| 2108 | .driverkit, .ios, .maccatalyst, .macos, .tvos, .visionos, .watchos => .int, | |
| 2109 | else => switch (arch) { | |
| 2110 | .aarch64, .aarch64_be => .uint, | |
| 2111 | .arm, .armeb, .thumb, .thumbeb => .uint, | |
| 2112 | .ve, .msp430 => .uint, | |
| 2113 | .x86_64, .x86 => .int, | |
| 2114 | .xcore => .uchar, | |
| 2115 | else => .int, | |
| 2116 | }, | |
| 2117 | }; | |
| 2118 | ||
| 2119 | ts.wint = switch (os) { | |
| 2120 | .fuchsia => .uint, | |
| 2121 | .linux => .uint, | |
| 2122 | .openbsd => .int, | |
| 2123 | .uefi => .ushort, | |
| 2124 | .windows => .ushort, | |
| 2125 | else => switch (arch) { | |
| 2126 | .csky => .uint, | |
| 2127 | .loongarch32, .loongarch64 => .uint, | |
| 2128 | .riscv32, .riscv32be, .riscv64, .riscv64be => .uint, | |
| 2129 | .ve => .uint, | |
| 2130 | .xcore => .uint, | |
| 2131 | .xtensa, .xtensaeb => .uint, | |
| 2132 | else => .int, | |
| 2133 | }, | |
| 2080 | 2134 | }; |
| 2081 | 2135 | |
| 2082 | 2136 | const ptr_width = comp.target.ptrBitWidth(); |
| 2083 | ts.ptrdiff = if (os == .windows and ptr_width == 64) | |
| 2137 | ts.ptrdiff = if (arch == .wasm32) | |
| 2138 | .long | |
| 2139 | else if (os == .windows and ptr_width == 64) | |
| 2084 | 2140 | .long_long |
| 2085 | 2141 | else switch (ptr_width) { |
| 2086 | 2142 | 16 => .int, |
| ... | ... | @@ -2089,7 +2145,9 @@ pub fn initNamedTypes(ts: *TypeStore, comp: *Compilation) !void { |
| 2089 | 2145 | else => unreachable, |
| 2090 | 2146 | }; |
| 2091 | 2147 | |
| 2092 | ts.size = if (os == .windows and ptr_width == 64) | |
| 2148 | ts.size = if (arch == .wasm32) | |
| 2149 | .ulong | |
| 2150 | else if (os == .windows and ptr_width == 64) | |
| 2093 | 2151 | .ulong_long |
| 2094 | 2152 | else switch (ptr_width) { |
| 2095 | 2153 | 16 => .uint, |
| ... | ... | @@ -2206,9 +2264,9 @@ fn generateVaListType(ts: *TypeStore, comp: *Compilation) !QualType { |
| 2206 | 2264 | }; |
| 2207 | 2265 | |
| 2208 | 2266 | const struct_qt = switch (kind) { |
| 2209 | .aarch64_va_list => blk: { | |
| 2267 | .aarch64_va_list => { | |
| 2210 | 2268 | var record: Type.Record = .{ |
| 2211 | .name = try comp.internString("__va_list_tag"), | |
| 2269 | .name = try comp.internString("__va_list"), | |
| 2212 | 2270 | .decl_node = undefined, // TODO |
| 2213 | 2271 | .layout = null, |
| 2214 | 2272 | .fields = &.{}, |
| ... | ... | @@ -2226,11 +2284,11 @@ fn generateVaListType(ts: *TypeStore, comp: *Compilation) !QualType { |
| 2226 | 2284 | record.layout = record_layout.compute(&fields, qt, comp, null) catch unreachable; |
| 2227 | 2285 | try ts.set(comp.gpa, .{ .@"struct" = record }, @intFromEnum(qt._index)); |
| 2228 | 2286 | |
| 2229 | break :blk qt; | |
| 2287 | return qt; | |
| 2230 | 2288 | }, |
| 2231 | .arm_va_list => blk: { | |
| 2289 | .arm_va_list => { | |
| 2232 | 2290 | var record: Type.Record = .{ |
| 2233 | .name = try comp.internString("__va_list_tag"), | |
| 2291 | .name = try comp.internString("__va_list"), | |
| 2234 | 2292 | .decl_node = undefined, // TODO |
| 2235 | 2293 | .layout = null, |
| 2236 | 2294 | .fields = &.{}, |
| ... | ... | @@ -2244,7 +2302,7 @@ fn generateVaListType(ts: *TypeStore, comp: *Compilation) !QualType { |
| 2244 | 2302 | record.layout = record_layout.compute(&fields, qt, comp, null) catch unreachable; |
| 2245 | 2303 | try ts.set(comp.gpa, .{ .@"struct" = record }, @intFromEnum(qt._index)); |
| 2246 | 2304 | |
| 2247 | break :blk qt; | |
| 2305 | return qt; | |
| 2248 | 2306 | }, |
| 2249 | 2307 | .hexagon_va_list => blk: { |
| 2250 | 2308 | var record: Type.Record = .{ |
| ... | ... | @@ -2330,7 +2388,7 @@ fn generateVaListType(ts: *TypeStore, comp: *Compilation) !QualType { |
| 2330 | 2388 | |
| 2331 | 2389 | break :blk qt; |
| 2332 | 2390 | }, |
| 2333 | .xtensa_va_list => blk: { | |
| 2391 | .xtensa_va_list => { | |
| 2334 | 2392 | var record: Type.Record = .{ |
| 2335 | 2393 | .name = try comp.internString("__va_list_tag"), |
| 2336 | 2394 | .decl_node = undefined, // TODO |
| ... | ... | @@ -2348,7 +2406,7 @@ fn generateVaListType(ts: *TypeStore, comp: *Compilation) !QualType { |
| 2348 | 2406 | record.layout = record_layout.compute(&fields, qt, comp, null) catch unreachable; |
| 2349 | 2407 | try ts.set(comp.gpa, .{ .@"struct" = record }, @intFromEnum(qt._index)); |
| 2350 | 2408 | |
| 2351 | break :blk qt; | |
| 2409 | return qt; | |
| 2352 | 2410 | }, |
| 2353 | 2411 | }; |
| 2354 | 2412 | |
| ... | ... | @@ -2830,7 +2888,7 @@ pub const Builder = struct { |
| 2830 | 2888 | } |
| 2831 | 2889 | |
| 2832 | 2890 | fn duplicateSpec(b: *Builder, source_tok: TokenIndex, spec: []const u8) !void { |
| 2833 | if (b.parser.comp.langopts.emulate != .clang) return b.cannotCombine(source_tok); | |
| 2891 | if (b.parser.comp.langopts.emulate == .gcc) return b.cannotCombine(source_tok); | |
| 2834 | 2892 | try b.parser.err(b.parser.tok_i, .duplicate_decl_spec, .{spec}); |
| 2835 | 2893 | } |
| 2836 | 2894 |
lib/compiler/aro/aro/Value.zig+13-17| ... | ... | @@ -1,5 +1,4 @@ |
| 1 | 1 | const std = @import("std"); |
| 2 | const Io = std.Io; | |
| 3 | 2 | const assert = std.debug.assert; |
| 4 | 3 | const BigIntConst = std.math.big.int.Const; |
| 5 | 4 | const BigIntMutable = std.math.big.int.Mutable; |
| ... | ... | @@ -9,8 +8,8 @@ const BigIntSpace = Interner.Tag.Int.BigIntSpace; |
| 9 | 8 | |
| 10 | 9 | const annex_g = @import("annex_g.zig"); |
| 11 | 10 | const Compilation = @import("Compilation.zig"); |
| 12 | const Target = @import("Target.zig"); | |
| 13 | 11 | const QualType = @import("TypeStore.zig").QualType; |
| 12 | const Target = @import("Target.zig"); | |
| 14 | 13 | |
| 15 | 14 | const Value = @This(); |
| 16 | 15 | |
| ... | ... | @@ -77,11 +76,7 @@ test "minUnsignedBits" { |
| 77 | 76 | } |
| 78 | 77 | }; |
| 79 | 78 | |
| 80 | var arena_state: std.heap.ArenaAllocator = .init(std.testing.allocator); | |
| 81 | defer arena_state.deinit(); | |
| 82 | const arena = arena_state.allocator(); | |
| 83 | ||
| 84 | var comp = Compilation.init(std.testing.allocator, arena, std.testing.io, undefined, Io.Dir.cwd()); | |
| 79 | var comp = try Compilation.init(.testing); | |
| 85 | 80 | defer comp.deinit(); |
| 86 | 81 | const target_query = try std.Target.Query.parse(.{ .arch_os_abi = "x86_64-linux-gnu" }); |
| 87 | 82 | comp.target = .fromZigTarget(try std.zig.system.resolveTargetQuery(std.testing.io, target_query)); |
| ... | ... | @@ -116,11 +111,7 @@ test "minSignedBits" { |
| 116 | 111 | } |
| 117 | 112 | }; |
| 118 | 113 | |
| 119 | var arena_state: std.heap.ArenaAllocator = .init(std.testing.allocator); | |
| 120 | defer arena_state.deinit(); | |
| 121 | const arena = arena_state.allocator(); | |
| 122 | ||
| 123 | var comp = Compilation.init(std.testing.allocator, arena, std.testing.io, undefined, Io.Dir.cwd()); | |
| 114 | var comp = try Compilation.init(.testing); | |
| 124 | 115 | defer comp.deinit(); |
| 125 | 116 | const target_query = try std.Target.Query.parse(.{ .arch_os_abi = "x86_64-linux-gnu" }); |
| 126 | 117 | comp.target = .fromZigTarget(try std.zig.system.resolveTargetQuery(std.testing.io, target_query)); |
| ... | ... | @@ -465,6 +456,11 @@ pub fn isNan(v: Value, comp: *const Compilation) bool { |
| 465 | 456 | }; |
| 466 | 457 | } |
| 467 | 458 | |
| 459 | pub fn isPointer(v: Value, comp: *const Compilation) bool { | |
| 460 | if (v.opt_ref == .none) return false; | |
| 461 | return comp.interner.get(v.ref()) == .pointer; | |
| 462 | } | |
| 463 | ||
| 468 | 464 | /// Converts value to zero or one; |
| 469 | 465 | /// `.none` value remains unchanged. |
| 470 | 466 | pub fn boolCast(v: *Value, comp: *const Compilation) void { |
| ... | ... | @@ -1044,9 +1040,9 @@ fn twosCompIntLimit(limit: std.math.big.int.TwosCompIntLimit, qt: QualType, comp |
| 1044 | 1040 | const mag_bits: usize = @intCast(qt.bitSizeof(comp)); |
| 1045 | 1041 | switch (mag_bits) { |
| 1046 | 1042 | inline 8, 16, 32, 64 => |bits| { |
| 1047 | if (limit == .min) return Value.int(@as(i64, std.math.minInt(std.meta.Int(.signed, bits))), comp); | |
| 1043 | if (limit == .min) return Value.int(@as(i64, std.math.minInt(@Int(.signed, bits))), comp); | |
| 1048 | 1044 | return switch (signedness) { |
| 1049 | inline else => |sign| Value.int(std.math.maxInt(std.meta.Int(sign, bits)), comp), | |
| 1045 | inline else => |sign| Value.int(std.math.maxInt(@Int(sign, bits)), comp), | |
| 1050 | 1046 | }; |
| 1051 | 1047 | }, |
| 1052 | 1048 | else => {}, |
| ... | ... | @@ -1081,7 +1077,7 @@ const NestedPrint = union(enum) { |
| 1081 | 1077 | }, |
| 1082 | 1078 | }; |
| 1083 | 1079 | |
| 1084 | pub fn printPointer(offset: Value, base: []const u8, comp: *const Compilation, w: *Io.Writer) Io.Writer.Error!void { | |
| 1080 | pub fn printPointer(offset: Value, base: []const u8, comp: *const Compilation, w: *std.Io.Writer) std.Io.Writer.Error!void { | |
| 1085 | 1081 | try w.writeByte('&'); |
| 1086 | 1082 | try w.writeAll(base); |
| 1087 | 1083 | if (!offset.isZero(comp)) { |
| ... | ... | @@ -1090,7 +1086,7 @@ pub fn printPointer(offset: Value, base: []const u8, comp: *const Compilation, w |
| 1090 | 1086 | } |
| 1091 | 1087 | } |
| 1092 | 1088 | |
| 1093 | pub fn print(v: Value, qt: QualType, comp: *const Compilation, w: *Io.Writer) Io.Writer.Error!?NestedPrint { | |
| 1089 | pub fn print(v: Value, qt: QualType, comp: *const Compilation, w: *std.Io.Writer) std.Io.Writer.Error!?NestedPrint { | |
| 1094 | 1090 | if (qt.is(comp, .bool)) { |
| 1095 | 1091 | try w.writeAll(if (v.isZero(comp)) "false" else "true"); |
| 1096 | 1092 | return null; |
| ... | ... | @@ -1117,7 +1113,7 @@ pub fn print(v: Value, qt: QualType, comp: *const Compilation, w: *Io.Writer) Io |
| 1117 | 1113 | return null; |
| 1118 | 1114 | } |
| 1119 | 1115 | |
| 1120 | pub fn printString(bytes: []const u8, qt: QualType, comp: *const Compilation, w: *Io.Writer) Io.Writer.Error!void { | |
| 1116 | pub fn printString(bytes: []const u8, qt: QualType, comp: *const Compilation, w: *std.Io.Writer) std.Io.Writer.Error!void { | |
| 1121 | 1117 | const size: Compilation.CharUnitSize = @enumFromInt(qt.childType(comp).sizeof(comp)); |
| 1122 | 1118 | const without_null = bytes[0 .. bytes.len - @intFromEnum(size)]; |
| 1123 | 1119 | try w.writeByte('"'); |
lib/compiler/aro/aro/features.zig+1| ... | ... | @@ -44,6 +44,7 @@ pub fn hasFeature(comp: *Compilation, ext: []const u8) bool { |
| 44 | 44 | .c_generic_selections = comp.langopts.standard.atLeast(.c11), |
| 45 | 45 | .c_static_assert = comp.langopts.standard.atLeast(.c11), |
| 46 | 46 | .c_thread_local = comp.langopts.standard.atLeast(.c11) and comp.target.isTlsSupported(), |
| 47 | .bounds_attributes = comp.langopts.bounds_safety == .clang, | |
| 47 | 48 | }; |
| 48 | 49 | inline for (@typeInfo(@TypeOf(list)).@"struct".fields) |f| { |
| 49 | 50 | if (std.mem.eql(u8, f.name, ext)) return @field(list, f.name); |
lib/compiler/aro/aro/pragmas/once.zig-1| ... | ... | @@ -35,7 +35,6 @@ fn deinit(pragma: *Pragma, comp: *Compilation) void { |
| 35 | 35 | var self: *Once = @fieldParentPtr("pragma", pragma); |
| 36 | 36 | self.pragma_once.deinit(comp.gpa); |
| 37 | 37 | comp.gpa.destroy(self); |
| 38 | pragma.* = undefined; | |
| 39 | 38 | } |
| 40 | 39 | |
| 41 | 40 | fn preprocessorHandler(pragma: *Pragma, pp: *Preprocessor, start_idx: TokenIndex) Pragma.Error!void { |
lib/compiler/aro/aro/record_layout.zig+3-3| ... | ... | @@ -332,7 +332,7 @@ const SysVContext = struct { |
| 332 | 332 | } |
| 333 | 333 | } |
| 334 | 334 | } else { |
| 335 | std.debug.assert(self.comp.langopts.emulate == .clang); | |
| 335 | std.debug.assert(self.comp.langopts.emulate == .no or self.comp.langopts.emulate == .clang); | |
| 336 | 336 | |
| 337 | 337 | // On Clang, the alignment requested by annotations is not respected if it is |
| 338 | 338 | // larger than the value of #pragma pack. See test case 0083. |
| ... | ... | @@ -569,7 +569,7 @@ const MsvcContext = struct { |
| 569 | 569 | |
| 570 | 570 | pub fn compute(fields: []Type.Record.Field, qt: QualType, comp: *const Compilation, pragma_pack: ?u8) Error!Type.Record.Layout { |
| 571 | 571 | switch (comp.langopts.emulate) { |
| 572 | .gcc, .clang => { | |
| 572 | .no, .gcc, .clang => { | |
| 573 | 573 | var context = SysVContext.init(qt, comp, pragma_pack); |
| 574 | 574 | |
| 575 | 575 | try context.layoutFields(fields); |
| ... | ... | @@ -620,7 +620,7 @@ fn computeLayout(qt: QualType, comp: *const Compilation) RecordLayout { |
| 620 | 620 | else => { |
| 621 | 621 | const type_align = qt.alignof(comp) * BITS_PER_BYTE; |
| 622 | 622 | return .{ |
| 623 | .size_bits = qt.bitSizeofOrNull(comp) orelse 0, | |
| 623 | .size_bits = BITS_PER_BYTE * (qt.sizeofOrNull(comp) orelse 0), | |
| 624 | 624 | .pointer_alignment_bits = type_align, |
| 625 | 625 | .field_alignment_bits = type_align, |
| 626 | 626 | .required_alignment_bits = BITS_PER_BYTE, |
lib/compiler/aro/assembly_backend/x86_64.zig+3-4| ... | ... | @@ -5,15 +5,14 @@ const assert = std.debug.assert; |
| 5 | 5 | const aro = @import("aro"); |
| 6 | 6 | const Assembly = aro.Assembly; |
| 7 | 7 | const Compilation = aro.Compilation; |
| 8 | const Node = Tree.Node; | |
| 9 | 8 | const Source = aro.Source; |
| 10 | 9 | const Tree = aro.Tree; |
| 11 | 10 | const QualType = aro.QualType; |
| 12 | 11 | const Value = aro.Value; |
| 13 | ||
| 14 | const AsmCodeGen = @This(); | |
| 15 | 12 | const Error = aro.Compilation.Error; |
| 13 | const Node = Tree.Node; | |
| 16 | 14 | |
| 15 | const AsmCodeGen = @This(); | |
| 17 | 16 | tree: *const Tree, |
| 18 | 17 | comp: *Compilation, |
| 19 | 18 | text: *std.Io.Writer, |
| ... | ... | @@ -58,7 +57,7 @@ fn serializeFloat(comptime T: type, value: T, w: *std.Io.Writer) !void { |
| 58 | 57 | }, |
| 59 | 58 | else => { |
| 60 | 59 | const size = @bitSizeOf(T); |
| 61 | const storage_unit = std.enums.fromInt(StorageUnit, size).?; | |
| 60 | const storage_unit = std.enums.fromInt(StorageUnit, size) orelse unreachable; | |
| 62 | 61 | const IntTy = @Int(.unsigned, size); |
| 63 | 62 | const int_val: IntTy = @bitCast(value); |
| 64 | 63 | return serializeInt(int_val, storage_unit, w); |
lib/compiler/aro/backend/Assembly.zig+1-2| ... | ... | @@ -1,5 +1,4 @@ |
| 1 | 1 | const std = @import("std"); |
| 2 | const Io = std.Io; | |
| 3 | 2 | const Allocator = std.mem.Allocator; |
| 4 | 3 | |
| 5 | 4 | data: []const u8, |
| ... | ... | @@ -12,7 +11,7 @@ pub fn deinit(self: *const Assembly, gpa: Allocator) void { |
| 12 | 11 | gpa.free(self.text); |
| 13 | 12 | } |
| 14 | 13 | |
| 15 | pub fn writeToFile(self: Assembly, io: Io, file: Io.File) !void { | |
| 14 | pub fn writeToFile(self: Assembly, io: std.Io, file: std.Io.File) !void { | |
| 16 | 15 | var file_writer = file.writer(io, &.{}); |
| 17 | 16 | |
| 18 | 17 | var buffers = [_][]const u8{ self.data, self.text }; |
lib/compiler/aro/backend/Interner.zig+2-2| ... | ... | @@ -102,13 +102,13 @@ pub const Key = union(enum) { |
| 102 | 102 | .float => |repr| switch (repr) { |
| 103 | 103 | inline else => |data| std.hash.autoHash( |
| 104 | 104 | &hasher, |
| 105 | @as(std.meta.Int(.unsigned, @bitSizeOf(@TypeOf(data))), @bitCast(data)), | |
| 105 | @as(@Int(.unsigned, @bitSizeOf(@TypeOf(data))), @bitCast(data)), | |
| 106 | 106 | ), |
| 107 | 107 | }, |
| 108 | 108 | .complex => |repr| switch (repr) { |
| 109 | 109 | inline else => |data| std.hash.autoHash( |
| 110 | 110 | &hasher, |
| 111 | @as(std.meta.Int(.unsigned, @bitSizeOf(@TypeOf(data))), @bitCast(data)), | |
| 111 | @as(@Int(.unsigned, @bitSizeOf(@TypeOf(data))), @bitCast(data)), | |
| 112 | 112 | ), |
| 113 | 113 | }, |
| 114 | 114 | .int => |repr| { |
lib/compiler/aro/backend/Ir.zig+100-92| ... | ... | @@ -374,24 +374,27 @@ pub fn deinit(ir: *Ir, gpa: std.mem.Allocator) void { |
| 374 | 374 | ir.* = undefined; |
| 375 | 375 | } |
| 376 | 376 | |
| 377 | const TYPE = std.Io.tty.Color.bright_magenta; | |
| 378 | const INST = std.Io.tty.Color.bright_cyan; | |
| 379 | const REF = std.Io.tty.Color.bright_blue; | |
| 380 | const LITERAL = std.Io.tty.Color.bright_green; | |
| 381 | const ATTRIBUTE = std.Io.tty.Color.bright_yellow; | |
| 377 | const TYPE = std.Io.Terminal.Color.bright_magenta; | |
| 378 | const INST = std.Io.Terminal.Color.bright_cyan; | |
| 379 | const REF = std.Io.Terminal.Color.bright_blue; | |
| 380 | const LITERAL = std.Io.Terminal.Color.bright_green; | |
| 381 | const ATTRIBUTE = std.Io.Terminal.Color.bright_yellow; | |
| 382 | 382 | |
| 383 | 383 | const RefMap = std.AutoArrayHashMapUnmanaged(Ref, void); |
| 384 | 384 | |
| 385 | pub fn dump(ir: *const Ir, gpa: Allocator, config: std.Io.tty.Config, w: *std.Io.Writer) !void { | |
| 385 | pub const DumpError = std.Io.Terminal.SetColorError || std.mem.Allocator.Error; | |
| 386 | ||
| 387 | pub fn dump(ir: *const Ir, gpa: Allocator, term: std.Io.Terminal) DumpError!void { | |
| 386 | 388 | for (ir.decls.keys(), ir.decls.values()) |name, *decl| { |
| 387 | try ir.dumpDecl(decl, gpa, name, config, w); | |
| 389 | try ir.dumpDecl(decl, gpa, name, term); | |
| 388 | 390 | } |
| 389 | try w.flush(); | |
| 391 | try term.writer.flush(); | |
| 390 | 392 | } |
| 391 | 393 | |
| 392 | fn dumpDecl(ir: *const Ir, decl: *const Decl, gpa: Allocator, name: []const u8, config: std.Io.tty.Config, w: *std.Io.Writer) !void { | |
| 394 | fn dumpDecl(ir: *const Ir, decl: *const Decl, gpa: Allocator, name: []const u8, term: std.Io.Terminal) !void { | |
| 393 | 395 | const tags = decl.instructions.items(.tag); |
| 394 | 396 | const data = decl.instructions.items(.data); |
| 397 | const w = term.writer; | |
| 395 | 398 | |
| 396 | 399 | var ref_map: RefMap = .empty; |
| 397 | 400 | defer ref_map.deinit(gpa); |
| ... | ... | @@ -402,10 +405,10 @@ fn dumpDecl(ir: *const Ir, decl: *const Decl, gpa: Allocator, name: []const u8, |
| 402 | 405 | const ret_inst = decl.body.items[decl.body.items.len - 1]; |
| 403 | 406 | const ret_operand = data[@intFromEnum(ret_inst)].un; |
| 404 | 407 | const ret_ty = decl.instructions.items(.ty)[@intFromEnum(ret_operand)]; |
| 405 | try ir.writeType(ret_ty, config, w); | |
| 406 | try config.setColor(w, REF); | |
| 408 | try ir.writeType(ret_ty, term); | |
| 409 | try term.setColor(REF); | |
| 407 | 410 | try w.print(" @{s}", .{name}); |
| 408 | try config.setColor(w, .reset); | |
| 411 | try term.setColor(.reset); | |
| 409 | 412 | try w.writeAll("("); |
| 410 | 413 | |
| 411 | 414 | var arg_count: u32 = 0; |
| ... | ... | @@ -414,8 +417,8 @@ fn dumpDecl(ir: *const Ir, decl: *const Decl, gpa: Allocator, name: []const u8, |
| 414 | 417 | if (tags[@intFromEnum(ref)] != .arg) break; |
| 415 | 418 | if (arg_count != 0) try w.writeAll(", "); |
| 416 | 419 | try ref_map.put(gpa, ref, {}); |
| 417 | try ir.writeRef(decl, &ref_map, ref, config, w); | |
| 418 | try config.setColor(w, .reset); | |
| 420 | try ir.writeRef(decl, &ref_map, ref, term); | |
| 421 | try term.setColor(.reset); | |
| 419 | 422 | } |
| 420 | 423 | try w.writeAll(") {\n"); |
| 421 | 424 | for (decl.body.items[arg_count..]) |ref| { |
| ... | ... | @@ -432,7 +435,7 @@ fn dumpDecl(ir: *const Ir, decl: *const Decl, gpa: Allocator, name: []const u8, |
| 432 | 435 | .arg, .constant, .symbol => unreachable, |
| 433 | 436 | .label => { |
| 434 | 437 | const label_index = label_map.getIndex(ref).?; |
| 435 | try config.setColor(w, REF); | |
| 438 | try term.setColor(REF); | |
| 436 | 439 | try w.print("{s}.{d}:\n", .{ data[i].label, label_index }); |
| 437 | 440 | }, |
| 438 | 441 | // .label_val => { |
| ... | ... | @@ -441,35 +444,35 @@ fn dumpDecl(ir: *const Ir, decl: *const Decl, gpa: Allocator, name: []const u8, |
| 441 | 444 | // }, |
| 442 | 445 | .jmp => { |
| 443 | 446 | const un = data[i].un; |
| 444 | try config.setColor(w, INST); | |
| 447 | try term.setColor(INST); | |
| 445 | 448 | try w.writeAll(" jmp "); |
| 446 | try writeLabel(decl, &label_map, un, config, w); | |
| 449 | try writeLabel(decl, &label_map, un, term); | |
| 447 | 450 | try w.writeByte('\n'); |
| 448 | 451 | }, |
| 449 | 452 | .branch => { |
| 450 | 453 | const br = data[i].branch; |
| 451 | try config.setColor(w, INST); | |
| 454 | try term.setColor(INST); | |
| 452 | 455 | try w.writeAll(" branch "); |
| 453 | try ir.writeRef(decl, &ref_map, br.cond, config, w); | |
| 454 | try config.setColor(w, .reset); | |
| 456 | try ir.writeRef(decl, &ref_map, br.cond, term); | |
| 457 | try term.setColor(.reset); | |
| 455 | 458 | try w.writeAll(", "); |
| 456 | try writeLabel(decl, &label_map, br.then, config, w); | |
| 457 | try config.setColor(w, .reset); | |
| 459 | try writeLabel(decl, &label_map, br.then, term); | |
| 460 | try term.setColor(.reset); | |
| 458 | 461 | try w.writeAll(", "); |
| 459 | try writeLabel(decl, &label_map, br.@"else", config, w); | |
| 462 | try writeLabel(decl, &label_map, br.@"else", term); | |
| 460 | 463 | try w.writeByte('\n'); |
| 461 | 464 | }, |
| 462 | 465 | .select => { |
| 463 | 466 | const br = data[i].branch; |
| 464 | try ir.writeNewRef(gpa, decl, &ref_map, ref, config, w); | |
| 467 | try ir.writeNewRef(gpa, decl, &ref_map, ref, term); | |
| 465 | 468 | try w.writeAll("select "); |
| 466 | try ir.writeRef(decl, &ref_map, br.cond, config, w); | |
| 467 | try config.setColor(w, .reset); | |
| 469 | try ir.writeRef(decl, &ref_map, br.cond, term); | |
| 470 | try term.setColor(.reset); | |
| 468 | 471 | try w.writeAll(", "); |
| 469 | try ir.writeRef(decl, &ref_map, br.then, config, w); | |
| 470 | try config.setColor(w, .reset); | |
| 472 | try ir.writeRef(decl, &ref_map, br.then, term); | |
| 473 | try term.setColor(.reset); | |
| 471 | 474 | try w.writeAll(", "); |
| 472 | try ir.writeRef(decl, &ref_map, br.@"else", config, w); | |
| 475 | try ir.writeRef(decl, &ref_map, br.@"else", term); | |
| 473 | 476 | try w.writeByte('\n'); |
| 474 | 477 | }, |
| 475 | 478 | // .jmp_val => { |
| ... | ... | @@ -478,91 +481,91 @@ fn dumpDecl(ir: *const Ir, decl: *const Decl, gpa: Allocator, name: []const u8, |
| 478 | 481 | // }, |
| 479 | 482 | .@"switch" => { |
| 480 | 483 | const @"switch" = data[i].@"switch"; |
| 481 | try config.setColor(w, INST); | |
| 484 | try term.setColor(INST); | |
| 482 | 485 | try w.writeAll(" switch "); |
| 483 | try ir.writeRef(decl, &ref_map, @"switch".target, config, w); | |
| 484 | try config.setColor(w, .reset); | |
| 486 | try ir.writeRef(decl, &ref_map, @"switch".target, term); | |
| 487 | try term.setColor(.reset); | |
| 485 | 488 | try w.writeAll(" {"); |
| 486 | 489 | for (@"switch".case_vals[0..@"switch".cases_len], @"switch".case_labels) |val_ref, label_ref| { |
| 487 | 490 | try w.writeAll("\n "); |
| 488 | try ir.writeValue(val_ref, config, w); | |
| 489 | try config.setColor(w, .reset); | |
| 491 | try ir.writeValue(val_ref, term); | |
| 492 | try term.setColor(.reset); | |
| 490 | 493 | try w.writeAll(" => "); |
| 491 | try writeLabel(decl, &label_map, label_ref, config, w); | |
| 492 | try config.setColor(w, .reset); | |
| 494 | try writeLabel(decl, &label_map, label_ref, term); | |
| 495 | try term.setColor(.reset); | |
| 493 | 496 | } |
| 494 | try config.setColor(w, LITERAL); | |
| 497 | try term.setColor(LITERAL); | |
| 495 | 498 | try w.writeAll("\n default "); |
| 496 | try config.setColor(w, .reset); | |
| 499 | try term.setColor(.reset); | |
| 497 | 500 | try w.writeAll("=> "); |
| 498 | try writeLabel(decl, &label_map, @"switch".default, config, w); | |
| 499 | try config.setColor(w, .reset); | |
| 501 | try writeLabel(decl, &label_map, @"switch".default, term); | |
| 502 | try term.setColor(.reset); | |
| 500 | 503 | try w.writeAll("\n }\n"); |
| 501 | 504 | }, |
| 502 | 505 | .call => { |
| 503 | 506 | const call = data[i].call; |
| 504 | try ir.writeNewRef(gpa, decl, &ref_map, ref, config, w); | |
| 507 | try ir.writeNewRef(gpa, decl, &ref_map, ref, term); | |
| 505 | 508 | try w.writeAll("call "); |
| 506 | try ir.writeRef(decl, &ref_map, call.func, config, w); | |
| 507 | try config.setColor(w, .reset); | |
| 509 | try ir.writeRef(decl, &ref_map, call.func, term); | |
| 510 | try term.setColor(.reset); | |
| 508 | 511 | try w.writeAll("("); |
| 509 | 512 | for (call.args(), 0..) |arg, arg_i| { |
| 510 | 513 | if (arg_i != 0) try w.writeAll(", "); |
| 511 | try ir.writeRef(decl, &ref_map, arg, config, w); | |
| 512 | try config.setColor(w, .reset); | |
| 514 | try ir.writeRef(decl, &ref_map, arg, term); | |
| 515 | try term.setColor(.reset); | |
| 513 | 516 | } |
| 514 | 517 | try w.writeAll(")\n"); |
| 515 | 518 | }, |
| 516 | 519 | .alloc => { |
| 517 | 520 | const alloc = data[i].alloc; |
| 518 | try ir.writeNewRef(gpa, decl, &ref_map, ref, config, w); | |
| 521 | try ir.writeNewRef(gpa, decl, &ref_map, ref, term); | |
| 519 | 522 | try w.writeAll("alloc "); |
| 520 | try config.setColor(w, ATTRIBUTE); | |
| 523 | try term.setColor(ATTRIBUTE); | |
| 521 | 524 | try w.writeAll("size "); |
| 522 | try config.setColor(w, LITERAL); | |
| 525 | try term.setColor(LITERAL); | |
| 523 | 526 | try w.print("{d}", .{alloc.size}); |
| 524 | try config.setColor(w, ATTRIBUTE); | |
| 527 | try term.setColor(ATTRIBUTE); | |
| 525 | 528 | try w.writeAll(" align "); |
| 526 | try config.setColor(w, LITERAL); | |
| 529 | try term.setColor(LITERAL); | |
| 527 | 530 | try w.print("{d}", .{alloc.@"align"}); |
| 528 | 531 | try w.writeByte('\n'); |
| 529 | 532 | }, |
| 530 | 533 | .phi => { |
| 531 | try ir.writeNewRef(gpa, decl, &ref_map, ref, config, w); | |
| 534 | try ir.writeNewRef(gpa, decl, &ref_map, ref, term); | |
| 532 | 535 | try w.writeAll("phi"); |
| 533 | try config.setColor(w, .reset); | |
| 536 | try term.setColor(.reset); | |
| 534 | 537 | try w.writeAll(" {"); |
| 535 | 538 | for (data[i].phi.inputs()) |input| { |
| 536 | 539 | try w.writeAll("\n "); |
| 537 | try writeLabel(decl, &label_map, input.label, config, w); | |
| 538 | try config.setColor(w, .reset); | |
| 540 | try writeLabel(decl, &label_map, input.label, term); | |
| 541 | try term.setColor(.reset); | |
| 539 | 542 | try w.writeAll(" => "); |
| 540 | try ir.writeRef(decl, &ref_map, input.value, config, w); | |
| 541 | try config.setColor(w, .reset); | |
| 543 | try ir.writeRef(decl, &ref_map, input.value, term); | |
| 544 | try term.setColor(.reset); | |
| 542 | 545 | } |
| 543 | try config.setColor(w, .reset); | |
| 546 | try term.setColor(.reset); | |
| 544 | 547 | try w.writeAll("\n }\n"); |
| 545 | 548 | }, |
| 546 | 549 | .store => { |
| 547 | 550 | const bin = data[i].bin; |
| 548 | try config.setColor(w, INST); | |
| 551 | try term.setColor(INST); | |
| 549 | 552 | try w.writeAll(" store "); |
| 550 | try ir.writeRef(decl, &ref_map, bin.lhs, config, w); | |
| 551 | try config.setColor(w, .reset); | |
| 553 | try ir.writeRef(decl, &ref_map, bin.lhs, term); | |
| 554 | try term.setColor(.reset); | |
| 552 | 555 | try w.writeAll(", "); |
| 553 | try ir.writeRef(decl, &ref_map, bin.rhs, config, w); | |
| 556 | try ir.writeRef(decl, &ref_map, bin.rhs, term); | |
| 554 | 557 | try w.writeByte('\n'); |
| 555 | 558 | }, |
| 556 | 559 | .ret => { |
| 557 | try config.setColor(w, INST); | |
| 560 | try term.setColor(INST); | |
| 558 | 561 | try w.writeAll(" ret "); |
| 559 | if (data[i].un != .none) try ir.writeRef(decl, &ref_map, data[i].un, config, w); | |
| 562 | if (data[i].un != .none) try ir.writeRef(decl, &ref_map, data[i].un, term); | |
| 560 | 563 | try w.writeByte('\n'); |
| 561 | 564 | }, |
| 562 | 565 | .load => { |
| 563 | try ir.writeNewRef(gpa, decl, &ref_map, ref, config, w); | |
| 566 | try ir.writeNewRef(gpa, decl, &ref_map, ref, term); | |
| 564 | 567 | try w.writeAll("load "); |
| 565 | try ir.writeRef(decl, &ref_map, data[i].un, config, w); | |
| 568 | try ir.writeRef(decl, &ref_map, data[i].un, term); | |
| 566 | 569 | try w.writeByte('\n'); |
| 567 | 570 | }, |
| 568 | 571 | .bit_or, |
| ... | ... | @@ -583,12 +586,12 @@ fn dumpDecl(ir: *const Ir, decl: *const Decl, gpa: Allocator, name: []const u8, |
| 583 | 586 | .mod, |
| 584 | 587 | => { |
| 585 | 588 | const bin = data[i].bin; |
| 586 | try ir.writeNewRef(gpa, decl, &ref_map, ref, config, w); | |
| 589 | try ir.writeNewRef(gpa, decl, &ref_map, ref, term); | |
| 587 | 590 | try w.print("{s} ", .{@tagName(tag)}); |
| 588 | try ir.writeRef(decl, &ref_map, bin.lhs, config, w); | |
| 589 | try config.setColor(w, .reset); | |
| 591 | try ir.writeRef(decl, &ref_map, bin.lhs, term); | |
| 592 | try term.setColor(.reset); | |
| 590 | 593 | try w.writeAll(", "); |
| 591 | try ir.writeRef(decl, &ref_map, bin.rhs, config, w); | |
| 594 | try ir.writeRef(decl, &ref_map, bin.rhs, term); | |
| 592 | 595 | try w.writeByte('\n'); |
| 593 | 596 | }, |
| 594 | 597 | .bit_not, |
| ... | ... | @@ -598,33 +601,34 @@ fn dumpDecl(ir: *const Ir, decl: *const Decl, gpa: Allocator, name: []const u8, |
| 598 | 601 | .sext, |
| 599 | 602 | => { |
| 600 | 603 | const un = data[i].un; |
| 601 | try ir.writeNewRef(gpa, decl, &ref_map, ref, config, w); | |
| 604 | try ir.writeNewRef(gpa, decl, &ref_map, ref, term); | |
| 602 | 605 | try w.print("{s} ", .{@tagName(tag)}); |
| 603 | try ir.writeRef(decl, &ref_map, un, config, w); | |
| 606 | try ir.writeRef(decl, &ref_map, un, term); | |
| 604 | 607 | try w.writeByte('\n'); |
| 605 | 608 | }, |
| 606 | 609 | .label_addr, .jmp_val => {}, |
| 607 | 610 | } |
| 608 | 611 | } |
| 609 | try config.setColor(w, .reset); | |
| 612 | try term.setColor(.reset); | |
| 610 | 613 | try w.writeAll("}\n\n"); |
| 611 | 614 | } |
| 612 | 615 | |
| 613 | fn writeType(ir: Ir, ty_ref: Interner.Ref, config: std.Io.tty.Config, w: *std.Io.Writer) !void { | |
| 616 | fn writeType(ir: Ir, ty_ref: Interner.Ref, term: std.Io.Terminal) !void { | |
| 617 | const w = term.writer; | |
| 614 | 618 | const ty = ir.interner.get(ty_ref); |
| 615 | try config.setColor(w, TYPE); | |
| 619 | try term.setColor(TYPE); | |
| 616 | 620 | switch (ty) { |
| 617 | 621 | .ptr_ty, .noreturn_ty, .void_ty, .func_ty => try w.writeAll(@tagName(ty)), |
| 618 | 622 | .int_ty => |bits| try w.print("i{d}", .{bits}), |
| 619 | 623 | .float_ty => |bits| try w.print("f{d}", .{bits}), |
| 620 | 624 | .array_ty => |info| { |
| 621 | 625 | try w.print("[{d} * ", .{info.len}); |
| 622 | try ir.writeType(info.child, .no_color, w); | |
| 626 | try ir.writeType(info.child, .{ .mode = .no_color, .writer = w }); | |
| 623 | 627 | try w.writeByte(']'); |
| 624 | 628 | }, |
| 625 | 629 | .vector_ty => |info| { |
| 626 | 630 | try w.print("<{d} * ", .{info.len}); |
| 627 | try ir.writeType(info.child, .no_color, w); | |
| 631 | try ir.writeType(info.child, .{ .mode = .no_color, .writer = w }); | |
| 628 | 632 | try w.writeByte('>'); |
| 629 | 633 | }, |
| 630 | 634 | .record_ty => |elems| { |
| ... | ... | @@ -632,7 +636,7 @@ fn writeType(ir: Ir, ty_ref: Interner.Ref, config: std.Io.tty.Config, w: *std.Io |
| 632 | 636 | try w.writeAll("{ "); |
| 633 | 637 | for (elems, 0..) |elem, i| { |
| 634 | 638 | if (i != 0) try w.writeAll(", "); |
| 635 | try ir.writeType(elem, config, w); | |
| 639 | try ir.writeType(elem, .{ .mode = .no_color, .writer = w }); | |
| 636 | 640 | } |
| 637 | 641 | try w.writeAll(" }"); |
| 638 | 642 | }, |
| ... | ... | @@ -640,8 +644,9 @@ fn writeType(ir: Ir, ty_ref: Interner.Ref, config: std.Io.tty.Config, w: *std.Io |
| 640 | 644 | } |
| 641 | 645 | } |
| 642 | 646 | |
| 643 | fn writeValue(ir: Ir, val: Interner.Ref, config: std.Io.tty.Config, w: *std.Io.Writer) !void { | |
| 644 | try config.setColor(w, LITERAL); | |
| 647 | fn writeValue(ir: Ir, val: Interner.Ref, term: std.Io.Terminal) !void { | |
| 648 | const w = term.writer; | |
| 649 | try term.setColor(LITERAL); | |
| 645 | 650 | const key = ir.interner.get(val); |
| 646 | 651 | switch (key) { |
| 647 | 652 | .null => return w.writeAll("nullptr_t"), |
| ... | ... | @@ -656,43 +661,46 @@ fn writeValue(ir: Ir, val: Interner.Ref, config: std.Io.tty.Config, w: *std.Io.W |
| 656 | 661 | } |
| 657 | 662 | } |
| 658 | 663 | |
| 659 | fn writeRef(ir: Ir, decl: *const Decl, ref_map: *RefMap, ref: Ref, config: std.Io.tty.Config, w: *std.Io.Writer) !void { | |
| 664 | fn writeRef(ir: Ir, decl: *const Decl, ref_map: *RefMap, ref: Ref, term: std.Io.Terminal) !void { | |
| 665 | const w = term.writer; | |
| 660 | 666 | assert(ref != .none); |
| 661 | 667 | const index = @intFromEnum(ref); |
| 662 | 668 | const ty_ref = decl.instructions.items(.ty)[index]; |
| 663 | 669 | if (decl.instructions.items(.tag)[index] == .constant) { |
| 664 | try ir.writeType(ty_ref, config, w); | |
| 670 | try ir.writeType(ty_ref, term); | |
| 665 | 671 | const v_ref = decl.instructions.items(.data)[index].constant; |
| 666 | 672 | try w.writeByte(' '); |
| 667 | try ir.writeValue(v_ref, config, w); | |
| 673 | try ir.writeValue(v_ref, term); | |
| 668 | 674 | return; |
| 669 | 675 | } else if (decl.instructions.items(.tag)[index] == .symbol) { |
| 670 | 676 | const name = decl.instructions.items(.data)[index].label; |
| 671 | try ir.writeType(ty_ref, config, w); | |
| 672 | try config.setColor(w, REF); | |
| 677 | try ir.writeType(ty_ref, term); | |
| 678 | try term.setColor(REF); | |
| 673 | 679 | try w.print(" @{s}", .{name}); |
| 674 | 680 | return; |
| 675 | 681 | } |
| 676 | try ir.writeType(ty_ref, config, w); | |
| 677 | try config.setColor(w, REF); | |
| 682 | try ir.writeType(ty_ref, term); | |
| 683 | try term.setColor(REF); | |
| 678 | 684 | const ref_index = ref_map.getIndex(ref).?; |
| 679 | 685 | try w.print(" %{d}", .{ref_index}); |
| 680 | 686 | } |
| 681 | 687 | |
| 682 | fn writeNewRef(ir: Ir, gpa: Allocator, decl: *const Decl, ref_map: *RefMap, ref: Ref, config: std.Io.tty.Config, w: *std.Io.Writer) !void { | |
| 688 | fn writeNewRef(ir: Ir, gpa: Allocator, decl: *const Decl, ref_map: *RefMap, ref: Ref, term: std.Io.Terminal) !void { | |
| 689 | const w = term.writer; | |
| 683 | 690 | try ref_map.put(gpa, ref, {}); |
| 684 | 691 | try w.writeAll(" "); |
| 685 | try ir.writeRef(decl, ref_map, ref, config, w); | |
| 686 | try config.setColor(w, .reset); | |
| 692 | try ir.writeRef(decl, ref_map, ref, term); | |
| 693 | try term.setColor(.reset); | |
| 687 | 694 | try w.writeAll(" = "); |
| 688 | try config.setColor(w, INST); | |
| 695 | try term.setColor(INST); | |
| 689 | 696 | } |
| 690 | 697 | |
| 691 | fn writeLabel(decl: *const Decl, label_map: *RefMap, ref: Ref, config: std.Io.tty.Config, w: *std.Io.Writer) !void { | |
| 698 | fn writeLabel(decl: *const Decl, label_map: *RefMap, ref: Ref, term: std.Io.Terminal) !void { | |
| 699 | const w = term.writer; | |
| 692 | 700 | assert(ref != .none); |
| 693 | 701 | const index = @intFromEnum(ref); |
| 694 | 702 | const label = decl.instructions.items(.data)[index].label; |
| 695 | try config.setColor(w, REF); | |
| 703 | try term.setColor(REF); | |
| 696 | 704 | const label_index = label_map.getIndex(ref).?; |
| 697 | 705 | try w.print("{s}.{d}", .{ label, label_index }); |
| 698 | 706 | } |
lib/compiler/aro/backend/Ir/x86/Renderer.zig+3-3| ... | ... | @@ -21,17 +21,17 @@ const RegisterManager = zig.RegisterManager(Renderer, Register, Ir.Ref, abi.allo |
| 21 | 21 | const RegisterBitSet = RegisterManager.RegisterBitSet; |
| 22 | 22 | const RegisterClass = struct { |
| 23 | 23 | const gp: RegisterBitSet = blk: { |
| 24 | var set = RegisterBitSet.empty; | |
| 24 | var set = RegisterBitSet.initEmpty(); | |
| 25 | 25 | for (abi.allocatable_regs, 0..) |reg, index| if (reg.class() == .general_purpose) set.set(index); |
| 26 | 26 | break :blk set; |
| 27 | 27 | }; |
| 28 | 28 | const x87: RegisterBitSet = blk: { |
| 29 | var set = RegisterBitSet.empty; | |
| 29 | var set = RegisterBitSet.initEmpty(); | |
| 30 | 30 | for (abi.allocatable_regs, 0..) |reg, index| if (reg.class() == .x87) set.set(index); |
| 31 | 31 | break :blk set; |
| 32 | 32 | }; |
| 33 | 33 | const sse: RegisterBitSet = blk: { |
| 34 | var set = RegisterBitSet.empty; | |
| 34 | var set = RegisterBitSet.initEmpty(); | |
| 35 | 35 | for (abi.allocatable_regs, 0..) |reg, index| if (reg.class() == .sse) set.set(index); |
| 36 | 36 | break :blk set; |
| 37 | 37 | }; |
lib/compiler/aro/include/ptrcheck.h created+49| ... | ... | @@ -0,0 +1,49 @@ |
| 1 | #pragma once | |
| 2 | ||
| 3 | #if defined(__has_feature) && __has_feature(bounds_attributes) | |
| 4 | #define __has_ptrcheck 1 | |
| 5 | #else | |
| 6 | #define __has_ptrcheck 0 | |
| 7 | #endif | |
| 8 | ||
| 9 | #if __has_ptrcheck | |
| 10 | ||
| 11 | #define __single __attribute__((__single__)) | |
| 12 | #define __unsafe_indexable __attribute__((__unsafe_indexable__)) | |
| 13 | ||
| 14 | #else | |
| 15 | ||
| 16 | #define __single | |
| 17 | #define __unsafe_indexable | |
| 18 | #define __counted_by(N) | |
| 19 | #define __counted_by_or_null(N) | |
| 20 | #define __sized_by(N) | |
| 21 | #define __sized_by_or_null(N) | |
| 22 | #define __ended_by(E) | |
| 23 | ||
| 24 | #define __terminated_by(T) | |
| 25 | #define __null_terminated | |
| 26 | ||
| 27 | /* __ptrcheck_abi_assume_indexable and __ptrcheck_abi_assume_bidi_indexable intentionally not defined */ | |
| 28 | #define __ptrcheck_abi_assume_single() | |
| 29 | #define __ptrcheck_abi_assume_unsafe_indexable() | |
| 30 | ||
| 31 | #define __unsafe_forge_bidi_indexable(T, P, S) ((T)(P)) | |
| 32 | #define __unsafe_forge_single(T, P) ((T)(P)) | |
| 33 | #define __unsafe_forge_terminated_by(T, P, E) ((T)(P)) | |
| 34 | #define __unsafe_forge_null_terminated(T, P) ((T)(P)) | |
| 35 | ||
| 36 | #define __terminated_by_to_indexable(P) (P) | |
| 37 | #define __unsafe_terminated_by_to_indexable(P) (P) | |
| 38 | #define __null_terminated_to_indexable(P) (P) | |
| 39 | #define __unsafe_null_terminated_to_indexable(P) (P) | |
| 40 | #define __unsafe_terminated_by_from_indexable(T, P, ...) (P) | |
| 41 | #define __unsafe_null_terminated_from_indexable(P, ...) (P) | |
| 42 | ||
| 43 | #define __array_decay_dicards_count_in_parameters | |
| 44 | ||
| 45 | #define __ptrcheck_unavailable | |
| 46 | #define __ptrcheck_unavailable_r(REPLACEMENT) | |
| 47 | ||
| 48 | ||
| 49 | #endif |
lib/compiler/aro/main.zig+26-10| ... | ... | @@ -1,8 +1,9 @@ |
| 1 | 1 | const std = @import("std"); |
| 2 | const Io = std.Io; | |
| 3 | const Allocator = mem.Allocator; | |
| 4 | 2 | const mem = std.mem; |
| 5 | 3 | const process = std.process; |
| 4 | const Allocator = mem.Allocator; | |
| 5 | const build_options = @import("build_options"); | |
| 6 | ||
| 6 | 7 | const aro = @import("aro"); |
| 7 | 8 | const Compilation = aro.Compilation; |
| 8 | 9 | const Diagnostics = aro.Diagnostics; |
| ... | ... | @@ -11,14 +12,15 @@ const Toolchain = aro.Toolchain; |
| 11 | 12 | const assembly_backend = @import("assembly_backend"); |
| 12 | 13 | |
| 13 | 14 | var debug_allocator: std.heap.DebugAllocator(.{ |
| 14 | .stack_trace_frames = 0, | |
| 15 | .stack_trace_frames = if (build_options.debug_allocations and std.debug.sys_can_stack_trace) 10 else 0, | |
| 16 | .resize_stack_traces = build_options.debug_allocations, | |
| 15 | 17 | // A unique value so that when a default-constructed |
| 16 | // DebugAllocator is incorrectly passed to testing allocator, or | |
| 18 | // GeneralPurposeAllocator is incorrectly passed to testing allocator, or | |
| 17 | 19 | // vice versa, panic occurs. |
| 18 | 20 | .canary = @truncate(0xc647026dc6875134), |
| 19 | 21 | }) = .{}; |
| 20 | 22 | |
| 21 | pub fn main(init: std.process.Init.Minimal) u8 { | |
| 23 | pub fn main(init: process.Init.Minimal) u8 { | |
| 22 | 24 | const gpa = if (@import("builtin").link_libc) |
| 23 | 25 | std.heap.c_allocator |
| 24 | 26 | else |
| ... | ... | @@ -31,7 +33,10 @@ pub fn main(init: std.process.Init.Minimal) u8 { |
| 31 | 33 | defer arena_instance.deinit(); |
| 32 | 34 | const arena = arena_instance.allocator(); |
| 33 | 35 | |
| 34 | var threaded: std.Io.Threaded = .init(gpa, .{}); | |
| 36 | var threaded: std.Io.Threaded = .init(gpa, .{ | |
| 37 | .argv0 = .init(init.args), | |
| 38 | .environ = init.environ, | |
| 39 | }); | |
| 35 | 40 | defer threaded.deinit(); |
| 36 | 41 | const io = threaded.io(); |
| 37 | 42 | |
| ... | ... | @@ -43,7 +48,11 @@ pub fn main(init: std.process.Init.Minimal) u8 { |
| 43 | 48 | return 1; |
| 44 | 49 | }; |
| 45 | 50 | |
| 46 | const aro_name = process.executablePathAlloc(io, gpa) catch { | |
| 51 | var environ_map = std.process.Environ.createMap(init.environ, gpa) catch |err| | |
| 52 | std.process.fatal("failed to parse environment variables: {t}", .{err}); | |
| 53 | defer environ_map.deinit(); | |
| 54 | ||
| 55 | const aro_name = std.process.executableDirPathAlloc(io, gpa) catch { | |
| 47 | 56 | std.debug.print("unable to find Aro executable path\n", .{}); |
| 48 | 57 | if (fast_exit) process.exit(1); |
| 49 | 58 | return 1; |
| ... | ... | @@ -51,15 +60,21 @@ pub fn main(init: std.process.Init.Minimal) u8 { |
| 51 | 60 | defer gpa.free(aro_name); |
| 52 | 61 | |
| 53 | 62 | var stderr_buf: [1024]u8 = undefined; |
| 54 | var stderr = Io.File.stderr().writer(&stderr_buf); | |
| 63 | var stderr = std.Io.File.stderr().writer(io, &stderr_buf); | |
| 55 | 64 | var diagnostics: Diagnostics = .{ |
| 56 | 65 | .output = .{ .to_writer = .{ |
| 57 | .color = .detect(stderr.file), | |
| 66 | .mode = std.Io.Terminal.Mode.detect(io, stderr.file, false, false) catch .no_color, | |
| 58 | 67 | .writer = &stderr.interface, |
| 59 | 68 | } }, |
| 60 | 69 | }; |
| 61 | 70 | |
| 62 | var comp = Compilation.initDefault(gpa, arena, io, &diagnostics, Io.Dir.cwd()) catch |er| switch (er) { | |
| 71 | var comp = Compilation.init(.{ | |
| 72 | .gpa = gpa, | |
| 73 | .arena = arena, | |
| 74 | .io = io, | |
| 75 | .diagnostics = &diagnostics, | |
| 76 | .environ_map = &environ_map, | |
| 77 | }) catch |er| switch (er) { | |
| 63 | 78 | error.OutOfMemory => { |
| 64 | 79 | std.debug.print("out of memory\n", .{}); |
| 65 | 80 | if (fast_exit) process.exit(1); |
| ... | ... | @@ -85,6 +100,7 @@ pub fn main(init: std.process.Init.Minimal) u8 { |
| 85 | 100 | if (fast_exit) process.exit(1); |
| 86 | 101 | return 1; |
| 87 | 102 | }, |
| 103 | error.Canceled => unreachable, | |
| 88 | 104 | }; |
| 89 | 105 | if (fast_exit) process.exit(@intFromBool(comp.diagnostics.errors != 0)); |
| 90 | 106 | return @intFromBool(diagnostics.errors != 0); |