Skip to content

MethodError occur running under viscode-REPL but not under normal REPL #1404

@likanzhan

Description

@likanzhan

I want to rerun the example given in the Julia manual (V1.4.1, PP 190-191)


struct SparseArray{T,N} <: AbstractArray{T,N}
    data::Dict{NTuple{N,Int}, T}
    dims::NTuple{N,Int} 
end

SparseArray(::Type{T}, dims::Int...) where {T} = SparseArray(T, dims);
SparseArray(::Type{T}, dims::NTuple{N,Int}) where {T,N} = SparseArray{T,N}(Dict{NTuple{N,Int}, T}(), dims);

Base.size(A::SparseArray) = A.dims
Base.similar(A::SparseArray, ::Type{T}, dims::Dims) where {T} = SparseArray(T, dims)
Base.getindex(A::SparseArray{T,N}, I::Vararg{Int,N}) where {T,N} = get(A.data, I, zero(T))
Base.setindex!(A::SparseArray{T,N}, v, I::Vararg{Int,N}) where {T,N} = (A.data[I] = v)

A = SparseArray(Float64, 3, 3)

Everything works fine when the code is ran under a normal REPL, but when it is ran under the vscode-REPL via view --> Command Palette --> Julia: start REPL, I get the following error:


julia> A = SparseArray(Float64, 3, 3)
3×3 SparseArray{Float64,2}:
 0.0Internal Error: ERROR:   MethodError: no method matching size(::SparseArray{Float64,2})
The applicable method may be too new: running in world age 27143, while current world is 27151.
Closest candidates are:
  size(::SparseArray) at REPL[4]:1 (method too new to be called from this world context.)
  size(::AbstractArray{T,N}, ::Any) where {T, N} at abstractarray.jl:38
  size(::BitArray{1}) at bitarray.jl:99
  ...
Stacktrace:0.0
 [1]   treerender(0.0::SparseArray{
Float64 ,20.0})   at /Users/lzhan/.vscode/extensions/julialang.language-julia-0.16.8/scripts/packages/VSCodeServer/src/trees.jl:1250.0
 [2]   treerender(0.0::VSCodeServer.
SubTree ) at 0.0/Users/lzhan/.vscode/extensions/julialang.language-julia-0.16.8/scripts/packages/VSCodeServer/src/trees.jl:54
   [3] repl_getvariables_request0.0(::  VSCodeServer.JSONRPC.0.0JSONRPCEndpoint, ::
Nothing
julia> 
 [4] dispatch_msg(::VSCodeServer.JSONRPC.JSONRPCEndpoint, ::VSCodeServer.JSONRPC.MsgDispatcher, ::Dict{String,Any}) at /Users/lzhan/.vscode/extensions/julialang.language-julia-0.16.8/scripts/packages/JSONRPC/src/typed.jl:63
 [5] macro expansion at /Users/lzhan/.vscode/extensions/julialang.language-julia-0.16.8/scripts/packages/VSCodeServer/src/VSCodeServer.jl:83 [inlined]
 [6] (::VSCodeServer.var"#53#55"{Bool,String})() at ./task.jl:358
Internal Error: ERROR: MethodError: no method matching size(::SparseArray{Float64,2})
The applicable method may be too new: running in world age 27143, while current world is 27151.
Closest candidates are:
  size(::SparseArray) at REPL[4]:1 (method too new to be called from this world context.)
  size(::AbstractArray{T,N}, ::Any) where {T, N} at abstractarray.jl:38
  size(::BitArray{1}) at bitarray.jl:99
  ...
Stacktrace:
 [1] treerender(::SparseArray{Float64,2}) at /Users/lzhan/.vscode/extensions/julialang.language-julia-0.16.8/scripts/packages/VSCodeServer/src/trees.jl:125
 [2] treerender(::VSCodeServer.SubTree) at /Users/lzhan/.vscode/extensions/julialang.language-julia-0.16.8/scripts/packages/VSCodeServer/src/trees.jl:54
 [3] repl_getvariables_request(::VSCodeServer.JSONRPC.JSONRPCEndpoint, ::Nothing) at /Users/lzhan/.vscode/extensions/julialang.language-julia-0.16.8/scripts/packages/VSCodeServer/src/request_handlers.jl:88
 [4] dispatch_msg(::VSCodeServer.JSONRPC.JSONRPCEndpoint, ::VSCodeServer.JSONRPC.MsgDispatcher, ::Dict{String,Any}) at /Users/lzhan/.vscode/extensions/julialang.language-julia-0.16.8/scripts/packages/JSONRPC/src/typed.jl:63
 [5] macro expansion at /Users/lzhan/.vscode/extensions/julialang.language-julia-0.16.8/scripts/packages/VSCodeServer/src/VSCodeServer.jl:83 [inlined]
 [6] (::VSCodeServer.var"#53#55"{Bool,String})() at ./task.jl:358

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