Skip to content

Commit

Permalink
add some small type inference improvements to allow for some basic st…
Browse files Browse the repository at this point in the history
…atic compiling (#491)

(cherry picked from commit 992dc07, PR #491)
  • Loading branch information
KristofferC authored and fredrikekre committed Aug 29, 2024
1 parent 7e444ae commit d2816c7
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 6 deletions.
6 changes: 3 additions & 3 deletions src/parser.jl
Original file line number Diff line number Diff line change
Expand Up @@ -475,7 +475,7 @@ function parse_block(ps::ParseState, down=parse_eq, mark=position(ps))
end

# Parse a block, but leave emitting the block up to the caller.
function parse_block_inner(ps::ParseState, down)
function parse_block_inner(ps::ParseState, down::F) where {F <: Function}
parse_Nary(ps, down, KSet"NewlineWs ;", KSet"end else elseif catch finally")
end

Expand Down Expand Up @@ -1585,7 +1585,7 @@ function parse_call_chain(ps::ParseState, mark, is_macrocall=false)
ckind == K"vcat" ? K"typed_vcat" :
ckind == K"comprehension" ? K"typed_comprehension" :
ckind == K"ncat" ? K"typed_ncat" :
internal_error("unrecognized kind in parse_cat ", ckind)
internal_error("unrecognized kind in parse_cat ", string(ckind))
emit(ps, mark, outk, cflags)
check_ncat_compat(ps, mark, ckind)
end
Expand Down Expand Up @@ -2011,7 +2011,7 @@ function parse_resword(ps::ParseState)
elseif word == K"do"
bump(ps, TRIVIA_FLAG, error="invalid `do` syntax")
else
internal_error("unhandled reserved word ", word)
internal_error("unhandled reserved word ", string(word))
end
end

Expand Down
5 changes: 2 additions & 3 deletions src/utils.jl
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,15 @@ _unsafe_wrap_substring(s) = (s.offset, unsafe_wrap(Vector{UInt8}, s.string))
#--------------------------------------------------
#
# Internal error, used as assertion failure for cases we expect can't happen.
@noinline function internal_error(strs...)
@noinline function internal_error(strs::Vararg{String, N}) where {N}
error("Internal error: ", strs...)
end

# Like @assert, but always enabled and calls internal_error()
macro check(ex, msgs...)
msg = isempty(msgs) ? ex : msgs[1]
if isa(msg, AbstractString)
msg = msg
msg = String(msg)
elseif !isempty(msgs) && (isa(msg, Expr) || isa(msg, Symbol))
msg = :(string($(esc(msg))))
else
Expand Down Expand Up @@ -133,4 +133,3 @@ function _printstyled(io::IO, text; fgcolor=nothing, bgcolor=nothing, href=nothi
first = false
end
end

0 comments on commit d2816c7

Please sign in to comment.