JuliaSyntax.jl
JuliaSyntax.jl copied to clipboard
parse! with an IOBuffer errors on Julia 1.11-rc1
Here is the repo:
using JuliaSyntax
source = "println()"
JuliaSyntax.parse!(SyntaxNode, IOBuffer(source))
generates an error
ERROR: MethodError: no method matching JuliaSyntax.ParseStream(::Memory{UInt8}, ::IOBuffer, ::Int64, ::VersionNumber)
The type `JuliaSyntax.ParseStream` exists, but no method is defined for this combination of argument types when trying to construct it.
Closest candidates are:
JuliaSyntax.ParseStream(::Vector{UInt8}, ::Any, ::Integer, ::VersionNumber)
@ JuliaSyntax C:\Users\david\.julia\packages\JuliaSyntax\eqCSU\src\parse_stream.jl:265
JuliaSyntax.ParseStream(::Ptr{UInt8}, ::Integer, ::Integer; version)
@ JuliaSyntax C:\Users\david\.julia\packages\JuliaSyntax\eqCSU\src\parse_stream.jl:298
JuliaSyntax.ParseStream(::Vector{UInt8}; ...)
@ JuliaSyntax C:\Users\david\.julia\packages\JuliaSyntax\eqCSU\src\parse_stream.jl:293
...
Stacktrace:
[1] JuliaSyntax.ParseStream(io::IOBuffer; version::VersionNumber)
@ JuliaSyntax C:\Users\david\.julia\packages\JuliaSyntax\eqCSU\src\parse_stream.jl:318
[2] parse!(::Type{SyntaxNode}, io::IOBuffer; rule::Symbol, version::VersionNumber, kws::@Kwargs{})
@ JuliaSyntax C:\Users\david\.julia\packages\JuliaSyntax\eqCSU\src\parser_api.jl:70
[3] parse!(::Type{SyntaxNode}, io::IOBuffer)
@ JuliaSyntax C:\Users\david\.julia\packages\JuliaSyntax\eqCSU\src\parser_api.jl:68
[4] top-level scope
@ REPL[6]:1
I'm wondering, though, whether the root cause here is some breaking change in Julia itself?
I'm wondering, though, whether the root cause here is some breaking change in Julia itself?
Nah, it grabs the internal .data field and assumes it is a Vector{UInt8}:
https://github.com/JuliaLang/JuliaSyntax.jl/blob/3bf262bba32e833ed6d0d59a455a62faee97b408/src/parse_stream.jl#L318
@c42f could we add a parse! version that accepts a String? It seems that ParseStream already supports constructors that accept that, so that seems a very simple solution here, as I'm starting with a String in any case?