# REPL error

**URL:** <https://discourse.julialang.org/t/repl-error/4319>\
**Category:** General Usage\
**Tags:** bug\
**Created:** [June 16, 2017, 11:49pm UTC](https://discourse.julialang.org/t/repl-error/4319 "2017-06-16T23:49:52Z")\
**Posts on this page:** 14\
**Page:** 1

<div class="post-metadata">

**Author:** ![mohamed82008](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mohamed82008/32/18171_2.png) [@mohamed82008](https://discourse.julialang.org/u/mohamed82008)\
**Post date:** [June 16, 2017, 11:49pm UTC](https://discourse.julialang.org/t/repl-error/4319/1 "2017-06-16T23:49:52Z")

</div>

I get the following reproducible error with showing an object in REPL. The object itself is fine and no error shows up when I suppress the output with ;

```julia
julia> c = VTKDataTypes.VTKMultiblockData([a,b]);

julia> c
VTKDataTypes.VTKMultiblockData(Error showing value of type VTKDataTypes.VTKMulti
blockData:
ERROR: UndefVarError: T not defined
 in Pair{A,B}(::Symbol, ::VTKDataTypes.VTKMultiblockData) at .\operators.jl:590
 in show_default(::IOContext{Base.Terminals.TTYTerminal}, ::Any) at .\show.jl:12
4
 in display(::Base.REPL.REPLDisplay{Base.REPL.LineEditREPL}, ::MIME{Symbol("text
/plain")}, ::VTKDataTypes.VTKMultiblockData) at .\REPL.jl:132
 in display(::Base.REPL.REPLDisplay{Base.REPL.LineEditREPL}, ::VTKDataTypes.VTKM
ultiblockData) at .\REPL.jl:135
 in display(::VTKDataTypes.VTKMultiblockData) at .\multimedia.jl:143
 in print_response(::Base.Terminals.TTYTerminal, ::Any, ::Void, ::Bool, ::Bool,
::Void) at .\REPL.jl:154
 in print_response(::Base.REPL.LineEditREPL, ::Any, ::Void, ::Bool, ::Bool) at .
\REPL.jl:139
 in (::Base.REPL.##22#23{Bool,Base.REPL.##33#42{Base.REPL.LineEditREPL,Base.REPL
.REPLHistoryProvider},Base.REPL.LineEditREPL,Base.LineEdit.Prompt})(::Base.LineE
dit.MIState, ::Base.AbstractIOBuffer{Array{UInt8,1}}, ::Bool) at .\REPL.jl:652
 in run_interface(::Base.Terminals.TTYTerminal, ::Base.LineEdit.ModalInterface)
at .\LineEdit.jl:1579
 in run_frontend(::Base.REPL.LineEditREPL, ::Base.REPL.REPLBackendRef) at .\REPL
.jl:903
 in run_repl(::Base.REPL.LineEditREPL, ::Base.##932#933) at .\REPL.jl:188
 in _start() at .\client.jl:360

```

---

<div class="post-metadata">

**Author:** ![ihnorton](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ihnorton/32/26_2.png) [@ihnorton](https://discourse.julialang.org/u/ihnorton)\
**Post date:** [June 17, 2017, 12:20am UTC](https://discourse.julialang.org/t/repl-error/4319/2 "2017-06-17T00:20:45Z")

</div>

You need to provide `versioninfo()` and the definition of the type, at least.

---

<div class="post-metadata">

**Author:** ![mohamed82008](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mohamed82008/32/18171_2.png) [@mohamed82008](https://discourse.julialang.org/u/mohamed82008)\
**Post date:** [June 17, 2017, 12:31am UTC](https://discourse.julialang.org/t/repl-error/4319/3 "2017-06-17T00:31:50Z")

</div>

Its v0.5.0.

```julia
julia> versioninfo()
Julia Version 0.5.0
Commit 3c9d753 (2016-09-19 18:14 UTC)
Platform Info:
  System: NT (x86_64-w64-mingw32)
  CPU: AMD A10-8700P Radeon R6, 10 Compute Cores 4C+6G
  WORD_SIZE: 64
  BLAS: libopenblas (USE64BITINT DYNAMIC_ARCH NO_AFFINITY Excavator)
  LAPACK: libopenblas64_
  LIBM: libopenlibm
  LLVM: libLLVM-3.7.1 (ORCJIT, bdver4)

```

Here is the type definition.

```julia
type VTKMultiblockData <: AbstractVTKMultiblockData
    blocks::Vector{AbstractStaticVTKData}
end

```

And here is the whole file of types.

```julia
abstract AbstractVTKData

abstract AbstractStaticVTKData <: AbstractVTKData
abstract AbstractTimeSeriesVTKData <: AbstractVTKData

abstract AbstractVTKSimpleData <: AbstractStaticVTKData
abstract AbstractVTKAMRData <: AbstractStaticVTKData
abstract AbstractVTKMultiblockData <: AbstractStaticVTKData

abstract AbstractVTKUnstructuredData <: AbstractVTKSimpleData
abstract AbstractVTKStructuredData <: AbstractVTKSimpleData
abstract AbstractVTKRectilinearData <: AbstractVTKStructuredData

type VTKUnstructuredData{T} <: AbstractVTKUnstructuredData
    point_coords::Matrix{T}
    cell_types::Vector{Int}
    cell_connectivity::Vector{Vector{Int}}
    point_data::Dict{String, Array{T}}
    cell_data::Dict{String, Array{T}}

    function VTKUnstructuredData(point_coords, cell_types, cell_connectivity, point_data, cell_data)
        dataset = new(point_coords, cell_types, cell_connectivity, point_data, cell_data)
        valid, _error = is_valid(dataset)
        valid ? (return dataset) : throw(_error)
    end
end
VTKUnstructuredData{T}(point_coords::Matrix{T}, cell_types::Vector{Int},
    cell_connectivity::Vector{Vector{Int}}, point_data::Dict{String, Array{T}},
    cell_data::Dict{String, Array{T}}) = VTKUnstructuredData{T}(point_coords, cell_types,
    cell_connectivity, point_data, cell_data)

type VTKPolyData{T} <: AbstractVTKUnstructuredData
    point_coords::Matrix{T}
    cell_types::Vector{Int}
    cell_connectivity::Vector{Vector{Int}}
    point_data::Dict{String, Array{T}}
    cell_data::Dict{String, Array{T}}

    function VTKPolyData(point_coords, cell_types, cell_connectivity, point_data, cell_data)
        dataset = new(point_coords, cell_types, cell_connectivity, point_data, cell_data)
        valid, _error = is_valid(dataset)
        valid ? (return dataset) : throw(_error)
    end
end
VTKPolyData{T}(point_coords::Matrix{T}, cell_types::Vector{Int},
    cell_connectivity::Vector{Vector{Int}}, point_data::Dict{String, Array{T}},
    cell_data::Dict{String, Array{T}}) = VTKPolyData{T}(point_coords, cell_types,
    cell_connectivity, point_data, cell_data)

type VTKStructuredData{T} <: AbstractVTKStructuredData
    point_coords::Array{T}
    point_data::Dict{String, Array{T}}
    cell_data::Dict{String, Array{T}}

    function VTKStructuredData(point_coords, point_data, cell_data)
        dataset = new(point_coords, point_data, cell_data)
        valid, _error = is_valid(dataset)
        valid ? (return dataset) : throw(_error)
    end
end
VTKStructuredData{T}(point_coords::Array{T}, point_data::Dict{String, Array{T}}, 
    cell_data::Dict{String, Array{T}}) = VTKStructuredData{T}(point_coords, point_data, cell_data)

type VTKRectilinearData{T} <: AbstractVTKRectilinearData
    point_coords::Vector{Vector{T}}
    point_data::Dict{String, Array{T}}
    cell_data::Dict{String, Array{T}}

    function VTKRectilinearData(point_coords, point_data, cell_data)
        dataset = new(point_coords, point_data, cell_data)
        valid, _error = is_valid(dataset)
        valid ? (return dataset) : throw(_error)
    end
end
VTKRectilinearData{T}(point_coords::Vector{Vector{T}}, point_data::Dict{String, Array{T}}, 
    cell_data::Dict{String, Array{T}}) = VTKRectilinearData{T}(point_coords, point_data, cell_data)

type VTKUniformRectilinearData{T} <: AbstractVTKRectilinearData
    origin::Vector{T}
    spacing::Vector{T}
    extents::Vector{Int}
    point_data::Dict{String, Array{T}}
    cell_data::Dict{String, Array{T}}

    function VTKUniformRectilinearData(origin, spacing, extents, point_data, cell_data)
        dataset = new(origin, spacing, extents, point_data, cell_data)
        valid, _error = is_valid(dataset)
        valid ? (return dataset) : throw(_error)
    end
end
VTKUniformRectilinearData{T}(origin::Vector{T}, spacing::Vector{T}, extents::Vector{Int},
    point_data::Dict{String, Array{T}}, cell_data::Dict{String, Array{T}}) = 
    VTKUniformRectilinearData{T}(origin, spacing, extents, point_data, cell_data)

#=
type VTKBergerOligerAMRData <: AbstractVTKAMRData
    data::VTKUniformRectilinearData
    children::Vector{VTKBergerOligerAMRData}
    children_boundary_cells::Matrix{Int}
end
=#

type VTKMultiblockData <: AbstractVTKMultiblockData
    blocks::Vector{AbstractStaticVTKData}
end

type VTKTimeSeriesData{T, S<:AbstractStaticVTKData} <: AbstractTimeSeriesVTKData
    timemarkers::Vector{T}
    data::Array{S}

    function VTKTimeSeriesData(timemarkers, data)
        dataset = new(timemarkers, data)
        valid, _error = is_valid(dataset)
        valid ? (return dataset) : throw(_error)
    end
end

```

---

<div class="post-metadata">

**Author:** ![ScottPJones](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/scottpjones/32/146_2.png) [@ScottPJones](https://discourse.julialang.org/u/ScottPJones)\
**Post date:** [June 17, 2017, 2:21am UTC](https://discourse.julialang.org/t/repl-error/4319/4 "2017-06-17T02:21:27Z")

</div>

Have you tried with the current release of v0.5? (v0.5.2)?

---

<div class="post-metadata">

**Author:** ![mohamed82008](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mohamed82008/32/18171_2.png) [@mohamed82008](https://discourse.julialang.org/u/mohamed82008)\
**Post date:** [June 17, 2017, 6:03pm UTC](https://discourse.julialang.org/t/repl-error/4319/5 "2017-06-17T18:03:43Z")

</div>

No, it’s not really bothering me, but I thought of reporting it anyways.

---

<div class="post-metadata">

**Author:** ![ScottPJones](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/scottpjones/32/146_2.png) [@ScottPJones](https://discourse.julialang.org/u/ScottPJones)\
**Post date:** [June 17, 2017, 9:01pm UTC](https://discourse.julialang.org/t/repl-error/4319/6 "2017-06-17T21:01:16Z")

</div>

What are the definitions of a and b, that you use in `c = VTKDataTypes.VTKMultiblockData([a,b]);`?  
I’m trying to reproduce your error on v0.5.2 (and then v0.6.0-rc2 and master)

---

<div class="post-metadata">

**Author:** ![kristoffer.carlsson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kristoffer.carlsson/32/22_2.png) [@kristoffer.carlsson](https://discourse.julialang.org/u/kristoffer.carlsson)\
**Post date:** [June 17, 2017, 9:22pm UTC](https://discourse.julialang.org/t/repl-error/4319/7 "2017-06-17T21:22:18Z")

</div>

As a general rule, please provide as much information so that actually reproducing the error message is possible. The easier it is, the more likely someone will actually look into it. A block of code that can be copy-pasted is the best.

---

<div class="post-metadata">

**Author:** ![mohamed82008](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mohamed82008/32/18171_2.png) [@mohamed82008](https://discourse.julialang.org/u/mohamed82008)\
**Post date:** [June 18, 2017, 12:45am UTC](https://discourse.julialang.org/t/repl-error/4319/8 "2017-06-18T00:45:25Z")

</div>

My bad, `a` was `VTKRectilinearData` and `b` was `VTKUnstructuredData`. You can remove the validation part, and use the following types instead.

```julia
abstract AbstractVTKData

abstract AbstractStaticVTKData <: AbstractVTKData
abstract AbstractVTKSimpleData <: AbstractStaticVTKData
abstract AbstractVTKMultiblockData <: AbstractStaticVTKData

abstract AbstractVTKUnstructuredData <: AbstractVTKSimpleData
abstract AbstractVTKStructuredData <: AbstractVTKSimpleData
abstract AbstractVTKRectilinearData <: AbstractVTKStructuredData

type VTKUnstructuredData{T} <: AbstractVTKUnstructuredData
    point_coords::Matrix{T}
    cell_types::Vector{Int}
    cell_connectivity::Vector{Vector{Int}}
    point_data::Dict{String, Array{T}}
    cell_data::Dict{String, Array{T}}
end
VTKUnstructuredData{T}(point_coords::Matrix{T}, cell_types::Vector{Int},
    cell_connectivity::Vector{Vector{Int}}, point_data::Dict{String, Array{T}},
    cell_data::Dict{String, Array{T}}) = VTKUnstructuredData{T}(point_coords, cell_types,
    cell_connectivity, point_data, cell_data)

type VTKRectilinearData{T} <: AbstractVTKRectilinearData
    point_coords::Vector{Vector{T}}
    point_data::Dict{String, Array{T}}
    cell_data::Dict{String, Array{T}}
end
VTKRectilinearData{T}(point_coords::Vector{Vector{T}}, point_data::Dict{String, Array{T}}, 
    cell_data::Dict{String, Array{T}}) = VTKRectilinearData{T}(point_coords, point_data, cell_data)

type VTKMultiblockData <: AbstractVTKMultiblockData
    blocks::Vector{AbstractStaticVTKData}
end

```

---

<div class="post-metadata">

**Author:** ![mohamed82008](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mohamed82008/32/18171_2.png) [@mohamed82008](https://discourse.julialang.org/u/mohamed82008)\
**Post date:** [June 18, 2017, 1:11am UTC](https://discourse.julialang.org/t/repl-error/4319/9 "2017-06-18T01:11:00Z")

</div>

Ok, I was trying to avoid a self-contained example because it may use a lot of code. But here is one you can copy and paste. Firstly, you will need a significant amount of the partially untested code in the following link.

[https://www.expirebox.com/download/afe9f7fb65c9852fb5400a5721709abf.html](https://www.expirebox.com/download/afe9f7fb65c9852fb5400a5721709abf.html)

Then the following is the error generating example.

```julia
x = y = z = [0., 1., 2., 3., 4.];
point_coords = [x,y,z];
point_data = Dict{String, Array{Float64}}();
cell_data = Dict{String, Array{Float64}}();
a = VTKRectilinearData(point_coords, point_data, cell_data);
x = y = z = [5., 6., 7., 8., 9.];
point_coords = [x,y,z];
b = VTKUnstructuredData(VTKRectilinearData(point_coords, point_data, cell_data));
c = VTKMultiblockData([a, b])

```

---

<div class="post-metadata">

**Author:** ![mohamed82008](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mohamed82008/32/18171_2.png) [@mohamed82008](https://discourse.julialang.org/u/mohamed82008)\
**Post date:** [June 18, 2017, 3:35am UTC](https://discourse.julialang.org/t/repl-error/4319/10 "2017-06-18T03:35:34Z")

</div>

FYI, I reproduced the error in v0.5.2.

---

<div class="post-metadata">

**Author:** ![mohamed82008](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mohamed82008/32/18171_2.png) [@mohamed82008](https://discourse.julialang.org/u/mohamed82008)\
**Post date:** [June 18, 2017, 6:35am UTC](https://discourse.julialang.org/t/repl-error/4319/11 "2017-06-18T06:35:17Z")

</div>

Julia 0.6.0-rc3.0 also gives an error. In fact it gives another error too that 0.5 did not give.

```julia
julia> x = y = z = [0., 1., 2., 3., 4.];

julia> point_coords = [x,y,z];

julia> point_data = Dict{String, Array{Float64}}();

julia> cell_data = Dict{String, Array{Float64}}();

julia> a = VTKDataTypes.VTKRectilinearData(point_coords, point_data, cell_data);

julia> a.cell_data["Color"] = reshape(rand(VTKDataTypes.num_of_cells(a)), (([VTKDataTypes.extents(a)...] .- 1)...))
Error showing value of type Array{Float64,3}:
ERROR: write: i/o error (EIO)
Stacktrace:
 [1] try_yieldto(::Base.##296#297{Task}, ::Task) at .\event.jl:189
 [2] wait() at .\event.jl:234
 [3] uv_write(::Base.TTY, ::Ptr{UInt8}, ::UInt64) at .\stream.jl:811
 [4] unsafe_write(::Base.TTY, ::Ptr{UInt8}, ::UInt64) at .\stream.jl:832
 [5] print at .\strings\io.jl:122 [inlined]
 [6] #showarray#263(::Bool, ::Function, ::IOContext{Base.Terminals.TTYTerminal},
 ::Array{Float64,3}, ::Bool) at .\show.jl:1690
 [7] display(::Base.REPL.REPLDisplay{Base.REPL.LineEditREPL}, ::MIME{Symbol("tex
t/plain")}, ::Array{Float64,3}) at .\REPL.jl:122
 [8] display(::Base.REPL.REPLDisplay{Base.REPL.LineEditREPL}, ::Array{Float64,3}
) at .\REPL.jl:125
 [9] display(::Array{Float64,3}) at .\multimedia.jl:194
 [10] eval(::Module, ::Any) at .\boot.jl:235
 [11] print_response(::Base.Terminals.TTYTerminal, ::Any, ::Void, ::Bool, ::Bool
, ::Void) at .\REPL.jl:144
 [12] print_response(::Base.REPL.LineEditREPL, ::Any, ::Void, ::Bool, ::Bool) at
 .\REPL.jl:129
 [13] (::Base.REPL.#do_respond#16{Bool,Base.REPL.##26#36{Base.REPL.LineEditREPL,
Base.REPL.REPLHistoryProvider},Base.REPL.LineEditREPL,Base.LineEdit.Prompt})(::B
ase.LineEdit.MIState, ::Base.AbstractIOBuffer{Array{UInt8,1}}, ::Bool) at .\REPL
.jl:646

julia> x = y = z = [5., 6., 7., 8., 9.];

julia> point_coords = [x,y,z];

julia> b = VTKDataTypes.VTKUnstructuredData(VTKDataTypes.VTKRectilinearData(point_coords, point_data, cell_data));

julia> b.cell_data["Color"] = rand(VTKDataTypes.num_of_cells(b));

julia> c = VTKDataTypes.VTKMultiblockData([a, b]);

julia> c
VTKDataTypes.VTKMultiblockData(Error showing value of type VTKDataTypes.VTKMultiblockData:
ERROR: UndefVarError: T not defined
Stacktrace:
 [1] Pair(::Symbol, ::VTKDataTypes.VTKMultiblockData) at .\pair.jl:4
 [2] show_default(::IOContext{Base.Terminals.TTYTerminal}, ::Any) at .\show.jl:1
34
 [3] display(::Base.REPL.REPLDisplay{Base.REPL.LineEditREPL}, ::MIME{Symbol("tex
t/plain")}, ::VTKDataTypes.VTKMultiblockData) at .\REPL.jl:122
 [4] display(::Base.REPL.REPLDisplay{Base.REPL.LineEditREPL}, ::VTKDataTypes.VTK
MultiblockData) at .\REPL.jl:125
 [5] display(::VTKDataTypes.VTKMultiblockData) at .\multimedia.jl:194
 [6] eval(::Module, ::Any) at .\boot.jl:235
 [7] print_response(::Base.Terminals.TTYTerminal, ::Any, ::Void, ::Bool, ::Bool,
 ::Void) at .\REPL.jl:144
 [8] print_response(::Base.REPL.LineEditREPL, ::Any, ::Void, ::Bool, ::Bool) at
.\REPL.jl:129
 [9] (::Base.REPL.#do_respond#16{Bool,Base.REPL.##26#36{Base.REPL.LineEditREPL,B
ase.REPL.REPLHistoryProvider},Base.REPL.LineEditREPL,Base.LineEdit.Prompt})(::Ba
se.LineEdit.MIState, ::Base.AbstractIOBuffer{Array{UInt8,1}}, ::Bool) at .\REPL.
jl:646

```

Another more weird and serious error happens when calling

```julia
julia> d = [c]
ERROR: UndefVarError: T not defined
Stacktrace:
 [1] vect(::VTKDataTypes.VTKMultiblockData, ::Vararg{VTKDataTypes.VTKMultiblockD
ata,N} where N) at .\array.jl:76

julia> d
ERROR: UndefVarError: d not defined

```

---

<div class="post-metadata">

**Author:** ![kristoffer.carlsson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kristoffer.carlsson/32/22_2.png) [@kristoffer.carlsson](https://discourse.julialang.org/u/kristoffer.carlsson)\
**Post date:** [June 18, 2017, 9:15am UTC](https://discourse.julialang.org/t/repl-error/4319/12 "2017-06-18T09:15:42Z")

</div>

The error is in:

```julia
convert(::Type{VTKMultiblockData}, dataset::AbstractStaticVTKData) = VTKMultiblockData(T[dataset])

```

where indeed `T` is undefined. Now, the error message is quite unhelpful because it doesn’t point to the correct place. I found the problem by running with `--inline=no`. I believe the inlining problem (causing unhelpful backtrace) is covered by the issue [https://github.com/JuliaLang/julia/issues/20474](https://github.com/JuliaLang/julia/issues/20474)

---

<div class="post-metadata">

**Author:** ![mohamed82008](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mohamed82008/32/18171_2.png) [@mohamed82008](https://discourse.julialang.org/u/mohamed82008)\
**Post date:** [June 18, 2017, 4:22pm UTC](https://discourse.julialang.org/t/repl-error/4319/13 "2017-06-18T16:22:38Z")

</div>

Great, thank you so much 🙂

---

<div class="post-metadata">

**Author:** ![Ralph\_Smith](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ralph_smith/32/10344_2.png) [@Ralph\_Smith](https://discourse.julialang.org/u/Ralph_Smith)\
**Post date:** [June 18, 2017, 6:04pm UTC](https://discourse.julialang.org/t/repl-error/4319/14 "2017-06-18T18:04:08Z")

</div>

FWIW, Lint.jl (last release version) reports

> W543 T: Lint cannot determine if Type or not  
> W544 T: Lint cannot determine if Type or not

and Lint.jl master reports

> E321 T: use of undeclared symbol
