Skip to content

Insufficient branch quota #16

@llogick

Description

@llogick

zig version 0.14.0-dev.1248+7bbbbf8ff

❯ zig build test
test
└─ run test
   └─ zig test Debug native 5 errors
/home/rad/lab/zig/build/stage4/lib/zig/std/math.zig:1057:20: error: evaluation exceeded 1000 backwards branches
    comptime assert(is_comptime or @typeInfo(@TypeOf(x)) == .Int); // must pass an integer
             ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rad/lab/zig/build/stage4/lib/zig/std/math.zig:1057:20: note: use @setEvalBranchQuota() to raise the branch limit from 1000
/home/rad/lab/zig/build/stage4/lib/zig/std/fmt.zig:1644:63: note: called from here
        accumulate = try add(Accumulate, accumulate, math.cast(Accumulate, digit) orelse return error.Overflow);
                                                     ~~~~~~~~~^~~~~~~~~~~~~~~~~~~
/home/rad/lab/zig/build/stage4/lib/zig/std/fmt.zig:1665:28: note: called from here
    return parseIntWithSign(T, u8, buf, base, .pos);
           ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
/home/rad/lab/zig/build/stage4/lib/zig/std/SemanticVersion.zig:147:33: note: called from here
    return std.fmt.parseUnsigned(usize, text, 10) catch |err| switch (err) {
           ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
/home/rad/lab/zig/build/stage4/lib/zig/std/SemanticVersion.zig:91:30: note: called from here
        .major = try parseNum(it.first()),
                     ~~~~~~~~^~~~~~~~~~~~
src/parser.zig:11:76: note: called from here
    const static_string_map_renamed_zig_version = std.SemanticVersion.parse("0.13.0-dev.33+8af59d1f9") catch unreachable;
                                                  ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
src/lsp.zig:1639:33: note: called from here
        ) parser.StaticStringMap(ParamsParserFunc(Params, Source)) {
          ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/lsp.zig:1321:48: note: called from here
                    if (methodToParamsParserMap(Notification.Params, std.json.Value).get(item.method)) |parse| {
                        ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rad/lab/zig/build/stage4/lib/zig/std/math.zig:1058:52: error: evaluation exceeded 1000 backwards branches
    if ((is_comptime or maxInt(@TypeOf(x)) > maxInt(T)) and x > maxInt(T)) {
                                             ~~~~~~^~~
/home/rad/lab/zig/build/stage4/lib/zig/std/math.zig:1058:52: note: use @setEvalBranchQuota() to raise the branch limit from 1000
/home/rad/lab/zig/build/stage4/lib/zig/std/fmt.zig:1634:48: note: called from here
        const digit = try charToDigit(math.cast(u8, c) orelse return error.InvalidCharacter, buf_base);
                                      ~~~~~~~~~^~~~~~~
/home/rad/lab/zig/build/stage4/lib/zig/std/fmt.zig:1665:28: note: called from here
    return parseIntWithSign(T, u8, buf, base, .pos);
           ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
/home/rad/lab/zig/build/stage4/lib/zig/std/SemanticVersion.zig:147:33: note: called from here
    return std.fmt.parseUnsigned(usize, text, 10) catch |err| switch (err) {
           ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
/home/rad/lab/zig/build/stage4/lib/zig/std/SemanticVersion.zig:91:30: note: called from here
        .major = try parseNum(it.first()),
                     ~~~~~~~~^~~~~~~~~~~~
src/parser.zig:11:76: note: called from here
    const static_string_map_renamed_zig_version = std.SemanticVersion.parse("0.13.0-dev.33+8af59d1f9") catch unreachable;
                                                  ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
src/lsp.zig:1639:33: note: called from here
        ) parser.StaticStringMap(ParamsParserFunc(Params, Source)) {
          ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/lsp.zig:1607:47: note: called from here
            } else if (methodToParamsParserMap(Notification.Params, @TypeOf(params_source)).get(method)) |parse| {
                       ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rad/lab/zig/build/stage4/lib/zig/std/sort.zig:49:25: error: evaluation exceeded 1300 backwards branches
            context.swap(j, j - 1);
            ~~~~~~~~~~~~^~~~~~~~~~
/home/rad/lab/zig/build/stage4/lib/zig/std/sort.zig:49:25: note: use @setEvalBranchQuota() to raise the branch limit from 1300
/home/rad/lab/zig/build/stage4/lib/zig/std/sort/pdq.zig:65:44: note: called from here
                break sort.insertionContext(range.a, range.b, context);
                      ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rad/lab/zig/build/stage4/lib/zig/std/mem.zig:595:24: note: called from here
    std.sort.pdqContext(a, b, context);
    ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~
/home/rad/lab/zig/build/stage4/lib/zig/std/static_string_map.zig:167:36: note: called from here
            mem.sortUnstableContext(0, sorted_keys.len, SortContext{
            ~~~~~~~~~~~~~~~~~~~~~~~^
/home/rad/lab/zig/build/stage4/lib/zig/std/static_string_map.zig:85:35: note: called from here
                self.initSortedKVs(kvs_list, &sorted_keys, &sorted_vals);
                ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/parser.zig:25:51: note: called from here
        return std.StaticStringMap(T).initComptime(kvs_list);
               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~
src/lsp.zig:2512:50: note: called from here
    break :blk parser.staticStringMapInitComptime(void, kvs_list);
               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~
/home/rad/lab/zig/build/stage4/lib/zig/std/sort.zig:49:25: error: evaluation exceeded 1150 backwards branches
            context.swap(j, j - 1);
            ~~~~~~~~~~~~^~~~~~~~~~
/home/rad/lab/zig/build/stage4/lib/zig/std/sort.zig:49:25: note: use @setEvalBranchQuota() to raise the branch limit from 1150
/home/rad/lab/zig/build/stage4/lib/zig/std/sort/pdq.zig:65:44: note: called from here
                break sort.insertionContext(range.a, range.b, context);
                      ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/rad/lab/zig/build/stage4/lib/zig/std/mem.zig:595:24: note: called from here
    std.sort.pdqContext(a, b, context);
    ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~
/home/rad/lab/zig/build/stage4/lib/zig/std/static_string_map.zig:167:36: note: called from here
            mem.sortUnstableContext(0, sorted_keys.len, SortContext{
            ~~~~~~~~~~~~~~~~~~~~~~~^
/home/rad/lab/zig/build/stage4/lib/zig/std/static_string_map.zig:85:35: note: called from here
                self.initSortedKVs(kvs_list, &sorted_keys, &sorted_vals);
                ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/parser.zig:25:51: note: called from here
        return std.StaticStringMap(T).initComptime(kvs_list);
               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~
src/parser.zig:149:85: note: called from here
        const enum_from_string_map: StaticStringMap(T) = staticStringMapInitComptime(T, kvs);
                                                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~
/home/rad/lab/zig/build/stage4/lib/zig/std/static_string_map.zig:176:13: error: evaluation exceeded 1000 backwards branches
            while (len <= self.max_len) : (len += 1) {
            ^~~~~
/home/rad/lab/zig/build/stage4/lib/zig/std/static_string_map.zig:176:13: note: use @setEvalBranchQuota() to raise the branch limit from 1000
/home/rad/lab/zig/build/stage4/lib/zig/std/static_string_map.zig:95:36: note: called from here
                self.initLenIndexes(&len_indexes);
                ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~
src/parser.zig:25:51: note: called from here
        return std.StaticStringMap(T).initComptime(kvs_list);
               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~
src/parser.zig:149:85: note: called from here
        const enum_from_string_map: StaticStringMap(T) = staticStringMapInitComptime(T, kvs);
                                                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~
diff --git a/src/parser.zig b/src/parser.zig
index f85f9b3..7e50478 100644
--- a/src/parser.zig
+++ b/src/parser.zig
@@ -22,6 +22,7 @@ pub fn staticStringMapInitComptime(comptime T: type, comptime kvs_list: anytype)
         @setEvalBranchQuota(kvs_list.len * kvs_list.len);
         return std.ComptimeStringMap(T, kvs_list);
     } else {
+        @setEvalBranchQuota(5000);
         return std.StaticStringMap(T).initComptime(kvs_list);
     }
 }

Tests pass with 2000, ZLS needs 3000, not sure what a decent dynamic value would be.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions