Browse Source

Fix a few JET opt errors, closes #31.

fe/perf
Kristoffer 1 year ago committed by Fredrik Ekre
parent
commit
e697677cc2
No known key found for this signature in database
GPG Key ID: DE82E6D5E364C0A2
  1. 4
      src/chisels.jl
  2. 6
      src/main.jl
  3. 12
      src/runestone.jl

4
src/chisels.jl

@ -365,8 +365,8 @@ end @@ -365,8 +365,8 @@ end
function infix_op_call_op(node::Node)
@assert is_infix_op_call(node) || kind(node) === K"||"
kids = verified_kids(node)
first_operand_index = findfirst(!JuliaSyntax.is_whitespace, kids)
op_index = findnext(JuliaSyntax.is_operator, kids, first_operand_index + 1)
first_operand_index = findfirst(!JuliaSyntax.is_whitespace, kids)::Int
op_index = findnext(JuliaSyntax.is_operator, kids, first_operand_index + 1)::Int
return kids[op_index]
end

6
src/main.jl

@ -270,9 +270,9 @@ function main(argv) @@ -270,9 +270,9 @@ function main(argv)
# Call the library to format the text
ctx = try
ctx = Context(sourcetext; quiet, verbose, debug, diff, check)
format_tree!(ctx)
ctx
ctx = Context(sourcetext; quiet, verbose, debug, diff, check)
format_tree!(ctx)
ctx
catch err
print_progress && errln()
# Limit stacktrace to 5 frames because Runic uses recursion a lot and 5 should

12
src/runestone.jl

@ -129,7 +129,7 @@ function format_float_literals(ctx::Context, node::Node) @@ -129,7 +129,7 @@ function format_float_literals(ctx::Context, node::Node)
end
# Split up the pieces
r = r"^(?<sgn>[+-])?(?<int>\d*)(?:\.?(?<frac>\d*))?(?:(?<epm>[eEf][+-]?)(?<exp>\d+))?$"
m = match(r, str)
m = match(r, str)::RegexMatch
io = IOBuffer() # TODO: Could be reused?
# Write the sign part
if (sgn = m[:sgn]; sgn !== nothing)
@ -380,10 +380,6 @@ function spaces_in_listlike(ctx::Context, node::Node) @@ -380,10 +380,6 @@ function spaces_in_listlike(ctx::Context, node::Node)
if last_item_idx !== nothing && last_item_idx <= opening_leaf_idx
last_item_idx = nothing
end
last_comma_idx = findprev(x -> kind(x) === K",", kids, closing_leaf_idx - 1)
if last_comma_idx !== nothing && last_comma_idx <= opening_leaf_idx
last_comma_idx = nothing
end
# Multiline lists require leading and trailing newline
# multiline = contains_outer_newline(kids, opening_leaf_idx, closing_leaf_idx)
@ -1383,7 +1379,7 @@ function replace_with_in(ctx::Context, node::Node) @@ -1383,7 +1379,7 @@ function replace_with_in(ctx::Context, node::Node)
@assert kind(node) === K"=" && !is_leaf(node) && meta_nargs(node) == 3
kids = verified_kids(node)
pos = position(ctx.fmt_io)
vars_index = findfirst(!JuliaSyntax.is_whitespace, kids)
vars_index = findfirst(!JuliaSyntax.is_whitespace, kids)::Int
# TODO: Need to insert whitespaces around `in` when replacing e.g. `i=I` with `iinI`.
# However, at the moment it looks like the whitespace around operator pass does it's
# thing first? I don't really know how though, because the for loop pass should be
@ -2785,8 +2781,8 @@ function indent_multiline_strings(ctx::Context, node::Node) @@ -2785,8 +2781,8 @@ function indent_multiline_strings(ctx::Context, node::Node)
end
# Opening triple quote
open_idx = findfirst(x -> kind(x) === triplekind, kids)
close_idx = findlast(x -> kind(x) === triplekind, kids)
open_idx = findfirst(x -> kind(x) === triplekind, kids)::Int
close_idx = findlast(x -> kind(x) === triplekind, kids)::Int
@assert close_idx == length(kids) # ?
open_kid = kids[open_idx]
@assert kind(open_kid) === triplekind

Loading…
Cancel
Save