Skip to content

Stack overflow during syntax parsing in VSCode #621

Description

@tdm20

I have some simple test code that consistently fails JLS syntax parsing in VSCode.

Error stack:
Warning: detected a stack overflow; program state may be corrupted, so further execution might be unreliable.
┌ Error: JuliaSyntax parser failed — falling back to flisp!
│ This is not your fault. Please submit a bug report to https://github.com/JuliaLang/JuliaSyntax.jl/issues
│ exception =
│ StackOverflowError:
│ Stacktrace:
│ [1] parse_arrow(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:755
│ [2] parse_cond(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:693
│ [3] parse_RtoL(ps::Base.JuliaSyntax.ParseState, down::typeof(Base.JuliaSyntax.parse_cond), is_op::typeof(Base.JuliaSyntax.is_prec_pair), self::typeof(Base.JuliaSyntax.parse_pair))
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:389
│ [4] parse_pair(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:684
│ [5] parse_assignment(ps::Base.JuliaSyntax.ParseState, down::typeof(Base.JuliaSyntax.parse_pair))
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:597
│ [6] parse_eq_star(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:588
│ [7] parse_brackets(after_parse::Base.JuliaSyntax.var"#parse_call_arglist##0#parse_call_arglist##1", ps::Base.JuliaSyntax.ParseState, closing_kind::Base.JuliaSyntax.Kind, generator_is_last::Bool)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:3194
│ [8] parse_call_arglist(ps::Base.JuliaSyntax.ParseState, closer::Base.JuliaSyntax.Kind)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:2737
│ [9] parse_call_chain(ps::Base.JuliaSyntax.ParseState, mark::Base.JuliaSyntax.ParseStreamPosition, is_macrocall::Bool)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:1575
│ [10] parse_call_chain(ps::Base.JuliaSyntax.ParseState, mark::Base.JuliaSyntax.ParseStreamPosition)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:1507
│ [11] parse_call(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:1453
│ [12] parse_factor(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:1387
│ [13] parse_unary(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:1212
│ [14] parse_juxtapose(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:1135
│ [15] parse_where(ps::Base.JuliaSyntax.ParseState, down::typeof(Base.JuliaSyntax.parse_juxtapose))
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:1124
│ [16] parse_unary_subtype(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:1087
│ [17] parse_LtoR(ps::Base.JuliaSyntax.ParseState, down::typeof(Base.JuliaSyntax.parse_unary_subtype), is_op::typeof(Base.JuliaSyntax.is_prec_bitshift))
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:374
│ [18] parse_shift(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:1056
│ [19] parse_LtoR(ps::Base.JuliaSyntax.ParseState, down::typeof(Base.JuliaSyntax.parse_shift), is_op::typeof(Base.JuliaSyntax.is_prec_rational))
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:374
│ [20] parse_rational(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:1050
│ [21] parse_with_chains(ps::Base.JuliaSyntax.ParseState, down::typeof(Base.JuliaSyntax.parse_rational), is_op::typeof(Base.JuliaSyntax.is_prec_times), chain_ops::Tuple{Base.JuliaSyntax.Kind})
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:1004
│ [22] parse_term(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:996
│ [23] parse_with_chains(ps::Base.JuliaSyntax.ParseState, down::typeof(Base.JuliaSyntax.parse_term), is_op::typeof(Base.JuliaSyntax.is_prec_plus), chain_ops::Tuple{Base.JuliaSyntax.Kind, Base.JuliaSyntax.Kind})
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:1004
│ [24] parse_expr(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:989
│ [25] parse_invalid_ops(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:974
│ [26] parse_range(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:884
│ [27] parse_LtoR(ps::Base.JuliaSyntax.ParseState, down::typeof(Base.JuliaSyntax.parse_range), is_op::typeof(Base.JuliaSyntax.is_prec_pipe_gt))
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:374
│ [28] parse_pipe_gt(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:871
│ [29] parse_RtoL(ps::Base.JuliaSyntax.ParseState, down::typeof(Base.JuliaSyntax.parse_pipe_gt), is_op::typeof(Base.JuliaSyntax.is_prec_pipe_lt), self::typeof(Base.JuliaSyntax.parse_pipe_lt))
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:389
│ [30] parse_pipe_lt(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:864
│ [31] parse_comparison(ps::Base.JuliaSyntax.ParseState, subtype_comparison::Bool)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:822
│ [32] parse_comparison(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:814
│ [33] parse_lazy_cond(ps::Base.JuliaSyntax.ParseState, down::typeof(Base.JuliaSyntax.parse_comparison), is_op::typeof(Base.JuliaSyntax.is_prec_lazy_and), self::typeof(Base.JuliaSyntax.parse_and))
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:779
│ [34] parse_and(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:807
│ [35] parse_lazy_cond(ps::Base.JuliaSyntax.ParseState, down::typeof(Base.JuliaSyntax.parse_and), is_op::typeof(Base.JuliaSyntax.is_prec_lazy_or), self::typeof(Base.JuliaSyntax.parse_or))
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:779
│ [36] parse_or(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:798
│ [37] parse_arrow(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:755
│ [38] parse_cond(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:693
│ [39] parse_RtoL(ps::Base.JuliaSyntax.ParseState, down::typeof(Base.JuliaSyntax.parse_cond), is_op::typeof(Base.JuliaSyntax.is_prec_pair), self::typeof(Base.JuliaSyntax.parse_pair))
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:389
│ [40] parse_pair(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:684
│ [41] parse_assignment(ps::Base.JuliaSyntax.ParseState, down::typeof(Base.JuliaSyntax.parse_pair))
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:597
│ [42] parse_eq_star(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:588
│ [43] parse_brackets(after_parse::Base.JuliaSyntax.var"#parse_call_arglist##0#parse_call_arglist##1", ps::Base.JuliaSyntax.ParseState, closing_kind::Base.JuliaSyntax.Kind, generator_is_last::Bool)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:3194
│ [44] parse_call_arglist(ps::Base.JuliaSyntax.ParseState, closer::Base.JuliaSyntax.Kind)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:2737
│ [45] parse_call_chain(ps::Base.JuliaSyntax.ParseState, mark::Base.JuliaSyntax.ParseStreamPosition, is_macrocall::Bool)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:1575
│ [46] parse_call_chain(ps::Base.JuliaSyntax.ParseState, mark::Base.JuliaSyntax.ParseStreamPosition)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:1507
│ [47] parse_call(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:1453
│ [48] parse_factor(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:1387
│ [49] parse_unary(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:1212
│ [50] parse_juxtapose(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:1135
│ [51] parse_where(ps::Base.JuliaSyntax.ParseState, down::typeof(Base.JuliaSyntax.parse_juxtapose))
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:1124
│ [52] parse_unary_subtype(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:1087
│ [53] parse_LtoR(ps::Base.JuliaSyntax.ParseState, down::typeof(Base.JuliaSyntax.parse_unary_subtype), is_op::typeof(Base.JuliaSyntax.is_prec_bitshift))
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:374
│ [54] parse_shift(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:1056
│ [55] parse_LtoR(ps::Base.JuliaSyntax.ParseState, down::typeof(Base.JuliaSyntax.parse_shift), is_op::typeof(Base.JuliaSyntax.is_prec_rational))
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:374
│ [56] parse_rational(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:1050
│ [57] parse_with_chains(ps::Base.JuliaSyntax.ParseState, down::typeof(Base.JuliaSyntax.parse_rational), is_op::typeof(Base.JuliaSyntax.is_prec_times), chain_ops::Tuple{Base.JuliaSyntax.Kind})
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:1019
│ [58] parse_term(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:996
│ [59] parse_with_chains(ps::Base.JuliaSyntax.ParseState, down::typeof(Base.JuliaSyntax.parse_term), is_op::typeof(Base.JuliaSyntax.is_prec_plus), chain_ops::Tuple{Base.JuliaSyntax.Kind, Base.JuliaSyntax.Kind})
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:1004
│ [60] parse_expr(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:989
│ [61] parse_invalid_ops(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:974
│ [62] parse_range(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:884
│ [63] parse_LtoR(ps::Base.JuliaSyntax.ParseState, down::typeof(Base.JuliaSyntax.parse_range), is_op::typeof(Base.JuliaSyntax.is_prec_pipe_gt))
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:374
│ [64] parse_pipe_gt(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:871
│ [65] parse_RtoL(ps::Base.JuliaSyntax.ParseState, down::typeof(Base.JuliaSyntax.parse_pipe_gt), is_op::typeof(Base.JuliaSyntax.is_prec_pipe_lt), self::typeof(Base.JuliaSyntax.parse_pipe_lt))
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:389
│ [66] parse_pipe_lt(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:864
│ [67] parse_comparison(ps::Base.JuliaSyntax.ParseState, subtype_comparison::Bool)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:822
│ [68] parse_comparison(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:814
│ [69] parse_lazy_cond(ps::Base.JuliaSyntax.ParseState, down::typeof(Base.JuliaSyntax.parse_comparison), is_op::typeof(Base.JuliaSyntax.is_prec_lazy_and), self::typeof(Base.JuliaSyntax.parse_and))
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:779
│ [70] parse_and(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:807
│ [71] parse_lazy_cond(ps::Base.JuliaSyntax.ParseState, down::typeof(Base.JuliaSyntax.parse_and), is_op::typeof(Base.JuliaSyntax.is_prec_lazy_or), self::typeof(Base.JuliaSyntax.parse_or))
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:779
│ [72] parse_or(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:798
│ [73] parse_arrow(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:755
│ [74] parse_cond(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:693
│ [75] parse_RtoL(ps::Base.JuliaSyntax.ParseState, down::typeof(Base.JuliaSyntax.parse_cond), is_op::typeof(Base.JuliaSyntax.is_prec_pair), self::typeof(Base.JuliaSyntax.parse_pair))
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:389
│ [76] parse_pair(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:684
│ [77] parse_comma(ps::Base.JuliaSyntax.ParseState, do_emit::Bool)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:661
│ [78] parse_comma(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:659
│ [79] parse_assignment(ps::Base.JuliaSyntax.ParseState, down::typeof(Base.JuliaSyntax.parse_comma))
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:597
│ [80] parse_assignment_with_initial_ex(ps::Base.JuliaSyntax.ParseState, mark::Base.JuliaSyntax.ParseStreamPosition, down::typeof(Base.JuliaSyntax.parse_comma))
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:648
│ [81] parse_assignment(ps::Base.JuliaSyntax.ParseState, down::typeof(Base.JuliaSyntax.parse_comma))
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:598
│ [82] parse_eq
│ @ C:\workdir\base\JuliaSyntax\src\parser.jl:574 [inlined]
│ [83] parse_Nary(ps::Base.JuliaSyntax.ParseState, down::typeof(Base.JuliaSyntax.parse_eq), delimiters::Tuple{Base.JuliaSyntax.Kind, Base.JuliaSyntax.Kind}, closing_tokens::NTuple{5, Base.JuliaSyntax.Kind})
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:419
│ [84] parse_block_inner(ps::Base.JuliaSyntax.ParseState, down::typeof(Base.JuliaSyntax.parse_eq))
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:481
│ [85] parse_block(ps::Base.JuliaSyntax.ParseState, down::Function, mark::Base.JuliaSyntax.ParseStreamPosition)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:475
│ [86] parse_resword(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:1928
│ [87] parse_call(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:1447
│ [88] parse_factor(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:1387
│ [89] parse_unary(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:1212
│ [90] parse_juxtapose(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:1135
│ [91] parse_where(ps::Base.JuliaSyntax.ParseState, down::typeof(Base.JuliaSyntax.parse_juxtapose))
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:1124
│ [92] parse_unary_subtype(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:1087
│ [93] parse_LtoR(ps::Base.JuliaSyntax.ParseState, down::typeof(Base.JuliaSyntax.parse_unary_subtype), is_op::typeof(Base.JuliaSyntax.is_prec_bitshift))
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:374
│ [94] parse_shift(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:1056
│ [95] parse_LtoR(ps::Base.JuliaSyntax.ParseState, down::typeof(Base.JuliaSyntax.parse_shift), is_op::typeof(Base.JuliaSyntax.is_prec_rational))
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:374
│ [96] parse_rational(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:1050
│ [97] parse_with_chains(ps::Base.JuliaSyntax.ParseState, down::typeof(Base.JuliaSyntax.parse_rational), is_op::typeof(Base.JuliaSyntax.is_prec_times), chain_ops::Tuple{Base.JuliaSyntax.Kind})
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:1004
│ [98] parse_term(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:996
│ [99] parse_with_chains(ps::Base.JuliaSyntax.ParseState, down::typeof(Base.JuliaSyntax.parse_term), is_op::typeof(Base.JuliaSyntax.is_prec_plus), chain_ops::Tuple{Base.JuliaSyntax.Kind, Base.JuliaSyntax.Kind})
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:1004
│ [100] parse_expr(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:989
│ [101] parse_invalid_ops(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:974
│ [102] parse_range(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:884
│ [103] parse_LtoR(ps::Base.JuliaSyntax.ParseState, down::typeof(Base.JuliaSyntax.parse_range), is_op::typeof(Base.JuliaSyntax.is_prec_pipe_gt))
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:374
│ [104] parse_pipe_gt(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:871
│ [105] parse_RtoL(ps::Base.JuliaSyntax.ParseState, down::typeof(Base.JuliaSyntax.parse_pipe_gt), is_op::typeof(Base.JuliaSyntax.is_prec_pipe_lt), self::typeof(Base.JuliaSyntax.parse_pipe_lt))
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:389
│ [106] parse_pipe_lt(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:864
│ [107] parse_comparison(ps::Base.JuliaSyntax.ParseState, subtype_comparison::Bool)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:822
│ [108] parse_comparison(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:814
│ [109] parse_lazy_cond(ps::Base.JuliaSyntax.ParseState, down::typeof(Base.JuliaSyntax.parse_comparison), is_op::typeof(Base.JuliaSyntax.is_prec_lazy_and), self::typeof(Base.JuliaSyntax.parse_and))
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:779
│ [110] parse_and(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:807
│ [111] parse_lazy_cond(ps::Base.JuliaSyntax.ParseState, down::typeof(Base.JuliaSyntax.parse_and), is_op::typeof(Base.JuliaSyntax.is_prec_lazy_or), self::typeof(Base.JuliaSyntax.parse_or))
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:779
│ [112] parse_or(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:798
│ [113] parse_arrow(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:755
│ [114] parse_cond(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:693
│ [115] parse_RtoL(ps::Base.JuliaSyntax.ParseState, down::typeof(Base.JuliaSyntax.parse_cond), is_op::typeof(Base.JuliaSyntax.is_prec_pair), self::typeof(Base.JuliaSyntax.parse_pair))
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:389
│ [116] parse_pair(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:684
│ [117] parse_comma(ps::Base.JuliaSyntax.ParseState, do_emit::Bool)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:661
│ [118] parse_comma(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:659
│ [119] parse_assignment(ps::Base.JuliaSyntax.ParseState, down::typeof(Base.JuliaSyntax.parse_comma))
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:597
│ [120] parse_eq(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:574
│ [121] parse_docstring(ps::Base.JuliaSyntax.ParseState, down::typeof(Base.JuliaSyntax.parse_eq))
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:533
│ [122] parse_docstring(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:532
│ [123] parse_public(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:525
│ [124] parse_Nary(ps::Base.JuliaSyntax.ParseState, down::typeof(Base.JuliaSyntax.parse_public), delimiters::Tuple{Base.JuliaSyntax.Kind}, closing_tokens::Tuple{Base.JuliaSyntax.Kind})
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:419
│ [125] parse_stmts(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:493
│ [126] parse_toplevel(ps::Base.JuliaSyntax.ParseState)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser.jl:458
│ [127] parse!(stream::Base.JuliaSyntax.ParseStream; rule::Symbol)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\parser_api.jl:54
│ [128] parse!
│ @ C:\workdir\base\JuliaSyntax\src\parser_api.jl:47 [inlined]
│ [129] core_parser_hook(code::String, filename::String, lineno::Int64, offset::Int64, options::Symbol)
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\hooks.jl:174
│ [130] (::Base.JuliaSyntax.var"#invoke_fixedworld#fix_world_age##2"{Base.JuliaSyntax.var"#invoke_fixedworld#108#fix_world_age##3"{typeof(Base.JuliaSyntax.core_parser_hook), UInt64}})(::String, ::Vararg{Any}; kws::@kwargs{})
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\hooks.jl:117
│ [131] (::Base.JuliaSyntax.var"#invoke_fixedworld#fix_world_age##2"{Base.JuliaSyntax.var"#invoke_fixedworld#108#fix_world_age##3"{typeof(Base.JuliaSyntax.core_parser_hook), UInt64}})(::String, ::Vararg{Any})
│ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\hooks.jl:116
│ [132] _parse_string(text::String, filename::String, lineno::Int64, index::Int64, options::Symbol)
│ @ Base.Meta .\meta.jl:200
│ [133] #parseall#5
│ @ .\meta.jl:294 [inlined]
│ [134] parseall
│ @ .\meta.jl:293 [inlined]
│ [135] include_string(mapexpr::typeof(identity), mod::Module, code::String, filename::String)
│ @ Base .\loading.jl:2860
│ [136] _include(mapexpr::Function, mod::Module, _path::String)
│ @ Base .\loading.jl:2934
│ [137] include(mapexpr::Function, mod::Module, _path::String)
│ @ Base .\Base.jl:307
│ --- the above 1 lines are repeated 1768 more times ---
│ [1906] macro expansion
│ @ .\some.jl:158 [inlined]
│ [1907] native_call
│ @ c:\Users\tdoma.vscode\extensions\julialang.language-julia-1.189.2\scripts\packages\JuliaInterpreter\src\interpret.jl:218 [inlined]
│ [1908] evaluate_call!(interp::VSCodeDebugger.JuliaInterpreter.RecursiveInterpreter, frame::VSCodeDebugger.JuliaInterpreter.Frame, fargs::Vector{Any}, enter_generated::Bool)
│ @ VSCodeDebugger.JuliaInterpreter c:\Users\tdoma.vscode\extensions\julialang.language-julia-1.189.2\scripts\packages\JuliaInterpreter\src\interpret.jl:281
│ [1909] evaluate_call!(interp::VSCodeDebugger.JuliaInterpreter.RecursiveInterpreter, frame::VSCodeDebugger.JuliaInterpreter.Frame, call_expr::Expr, enter_generated::Bool)
│ @ VSCodeDebugger.JuliaInterpreter c:\Users\tdoma.vscode\extensions\julialang.language-julia-1.189.2\scripts\packages\JuliaInterpreter\src\interpret.jl:256
│ [1910] evaluate_call!(interp::VSCodeDebugger.JuliaInterpreter.RecursiveInterpreter, frame::VSCodeDebugger.JuliaInterpreter.Frame, call_expr::Expr)
│ @ VSCodeDebugger.JuliaInterpreter c:\Users\tdoma.vscode\extensions\julialang.language-julia-1.189.2\scripts\packages\JuliaInterpreter\src\interpret.jl:249
│ [1911] eval_rhs(interp::VSCodeDebugger.JuliaInterpreter.RecursiveInterpreter, frame::VSCodeDebugger.JuliaInterpreter.Frame, node::Expr)
│ @ VSCodeDebugger.JuliaInterpreter c:\Users\tdoma.vscode\extensions\julialang.language-julia-1.189.2\scripts\packages\JuliaInterpreter\src\interpret.jl:406
│ [1912] step_expr!(interp::VSCodeDebugger.JuliaInterpreter.RecursiveInterpreter, frame::VSCodeDebugger.JuliaInterpreter.Frame, node::Any, istoplevel::Bool)
│ @ VSCodeDebugger.JuliaInterpreter c:\Users\tdoma.vscode\extensions\julialang.language-julia-1.189.2\scripts\packages\JuliaInterpreter\src\interpret.jl:564
│ [1913] step_expr!(interp::VSCodeDebugger.JuliaInterpreter.RecursiveInterpreter, frame::VSCodeDebugger.JuliaInterpreter.Frame, istoplevel::Bool)
│ @ VSCodeDebugger.JuliaInterpreter c:\Users\tdoma.vscode\extensions\julialang.language-julia-1.189.2\scripts\packages\JuliaInterpreter\src\interpret.jl:627
│ [1914] finish!(interp::VSCodeDebugger.JuliaInterpreter.RecursiveInterpreter, frame::VSCodeDebugger.JuliaInterpreter.Frame, istoplevel::Bool)
│ @ VSCodeDebugger.JuliaInterpreter c:\Users\tdoma.vscode\extensions\julialang.language-julia-1.189.2\scripts\packages\JuliaInterpreter\src\commands.jl:14
│ [1915] finish_and_return!
│ @ c:\Users\tdoma.vscode\extensions\julialang.language-julia-1.189.2\scripts\packages\JuliaInterpreter\src\commands.jl:30 [inlined]
│ [1916] finish_stack!(interp::VSCodeDebugger.JuliaInterpreter.RecursiveInterpreter, frame::VSCodeDebugger.JuliaInterpreter.Frame, rootistoplevel::Bool)
│ @ VSCodeDebugger.JuliaInterpreter c:\Users\tdoma.vscode\extensions\julialang.language-julia-1.189.2\scripts\packages\JuliaInterpreter\src\commands.jl:65
│ [1917] debug_command(interp::VSCodeDebugger.JuliaInterpreter.RecursiveInterpreter, frame::VSCodeDebugger.JuliaInterpreter.Frame, cmd::Symbol, rootistoplevel::Bool; line::Nothing)
│ @ VSCodeDebugger.JuliaInterpreter c:\Users\tdoma.vscode\extensions\julialang.language-julia-1.189.2\scripts\packages\JuliaInterpreter\src\commands.jl:547
│ [1918] debug_command(interp::VSCodeDebugger.JuliaInterpreter.RecursiveInterpreter, frame::VSCodeDebugger.JuliaInterpreter.Frame, cmd::Symbol, rootistoplevel::Bool)
│ @ VSCodeDebugger.JuliaInterpreter c:\Users\tdoma.vscode\extensions\julialang.language-julia-1.189.2\scripts\packages\JuliaInterpreter\src\commands.jl:478
│ [1919] our_debug_command(debug_engine::VSCodeDebugger.DebugAdapter.DebugEngines.DebugEngine, cmd::Symbol)
│ @ VSCodeDebugger.DebugAdapter.DebugEngines c:\Users\tdoma.vscode\extensions\julialang.language-julia-1.189.2\scripts\packages\DebugAdapter\src\DebugEngines.jl:248
│ [1920] run(debug_engine::VSCodeDebugger.DebugAdapter.DebugEngines.DebugEngine)
│ @ VSCodeDebugger.DebugAdapter.DebugEngines c:\Users\tdoma.vscode\extensions\julialang.language-julia-1.189.2\scripts\packages\DebugAdapter\src\DebugEngines.jl:334
│ [1921] run(debug_session::VSCodeDebugger.DebugAdapter.DebugSession, error_handler::VSCodeDebugger.var"#startdebugger##0#startdebugger##1"{String})
│ @ VSCodeDebugger.DebugAdapter c:\Users\tdoma.vscode\extensions\julialang.language-julia-1.189.2\scripts\packages\DebugAdapter\src\packagedef.jl:162
│ [1922] startdebugger()
│ @ VSCodeDebugger c:\Users\tdoma.vscode\extensions\julialang.language-julia-1.189.2\scripts\packages\VSCodeDebugger\src\VSCodeDebugger.jl:47
│ [1923] include(mod::Module, _path::String)
│ @ Base .\Base.jl:306
│ [1924] exec_options(opts::Base.JLOptions)
│ @ Base .\client.jl:317
│ offset = 0
│ code = "include("../../TOOLS/Data/Input.jl")\r\n\r\nfunction readTextInputTest()\r\n name = "TEST/readTextInputText" * string(rand(1:10000))\r\n if !isdir("TEST")\r\n mkdir("TEST")\r\n end\r\n\r\n inSeparator = " "\r\n separator = ";"\r\n\r\n open(name, "w") do file\r\n for ind in eachindex(1:15)\r\n write(file, join(collect(digits(ind, pad = 4, base = 2)), " "))\r\n write(file, "$separator $ind \n")\r\n end\r\n end\r\n\r\n result = readTextInput(Bool, Int32, name, inSeparator, separator)\r\n\r\n @show result\r\n\r\n rm(name)\r\n\r\nend\r\n\r\n#utility\r\nfunction writeTestImgFile(fn; size = 2, value = nothing)\r\n # Create a sample 256x256 matrix with random grayscale values\r\n # For UInt8, values should be between 0x00 and 0xFF (0 to 255)\r\n if isnothing(value)\r\n gray_matrix = rand(size, size)\r\n else\r\n gray_matrix = fill(value, " ⋯ 4443 bytes ⋯ "ow result\r\n @Assert length(result) == 2 "Expected result size is 2"\r\n for key in keys(result)\r\n @Assert length(key) == 1 "Expected output image size 1 instead $key"\r\n if length(result[key]) == 1\r\n @Assert key[1] == .2 "Unexpected result for inner folder[$key] = $(result[key])"\r\n elseif length(result[key]) == 3\r\n @Assert key[1] == 0 "Unexpected result for outer folder[$key] = $(result[key])"\r\n else\r\n @Assert false "Unexpected result[$key] = $(result[key])"\r\n end\r\n end\r\n\r\n cleanup(fullname)\r\nend\r\n\r\n#####################################################################################################\r\n#region ### Run Tests\r\nreadTextInputTest()\r\n\r\nreadBinaryInputFolderTest()\r\n\r\nreadBinaryInputsToOutputTest()\r\n\r\nreadBinaryInputsToOutputTestPattern()\r\n#endregion ### Run Tests\r\n"
└ @ Base.JuliaSyntax C:\workdir\base\JuliaSyntax\src\hooks.jl:265
Warning: detected a stack overflow; program state may be corrupted, so further execution might be unreliable.

  • The terminal process "C:\Users\tdoma\AppData\Local\Microsoft\WindowsApps\julia.exe '--color=yes', '--startup-file=no', '--history-file=no', 'c:\Users\tdoma.vscode\extensions\julialang.language-julia-1.189.2\scripts\debugger\run_debugger.jl', '\.\pipe\vsc-jl-dbg-0b947d7b-f305-4687-82c5-98858dea6b5c', '\.\pipe\vsc-jl-dbg-7d984a06-6f3a-4159-b97a-0224ce6aa7f7', '\.\pipe\vsc-jl-cr-26b8a032-8bd8-4d95-bfcb-5424acc24639'" terminated with exit code: 1.
  • Terminal will be reused by tasks, press any key to close it. `

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions