2016-10-05 23 views
2

今天我在Julia中遇到了一個奇怪的錯誤,那個錯誤引用了一個不存在的行號。現在Julia錯誤引用了一個不存在的行號是什麼意思?

ERROR: LoadError: LoadError: LoadError: UndefVarError: T not defined 
in include_from_node1(::String) at ./loading.jl:488 (repeats 3 times) 
in eval(::Module, ::Any) at ./boot.jl:234 
in require(::Symbol) at ./loading.jl:415 
in eval(::Module, ::Any) at ./boot.jl:234 
in process_options(::Base.JLOptions) at ./client.jl:239 
in _start() at ./client.jl:318 
while loading /home/peter/Code/Spark.jl/src/rdd.jl, in expression starting on line 480 
while loading /home/peter/Code/Spark.jl/src/core.jl, in expression starting on line 17 
while loading /home/peter/Code/Spark.jl/src/Spark.jl, in expression starting on line 19 

,有什麼奇怪這裏是它引用文件rdd.jl,它只有178線的線480

這可以通過檢查https://github.com/peterjdolan/Spark.jl/tree/type_safety

和運行重現:

julia -e "using Spark" 

有一些必要得到該包的運行,這是在https://github.com/dfdx/Spark.jlREADME.md記錄設置。

感謝任何洞察到這個奇怪的錯誤信息

+1

我認爲這個問題可能是由宏擴展引起的。但看着這個文件,只有一個'@ assert'。 :/ – SalchiPapa

+1

什麼茱莉亞版本? –

+0

@isaiah這是使用Julia 0.5。 –

回答

3

錯誤消息表明您具有一個掛T,即T未聲明爲一個類型參數的函數或類型,而是用在身上。

果然,在63 rdd.jl行,你具備的功能定義

function source_eltype(nextrdd::Union{RDD{T}, Void}) 

這應該改爲

function source_eltype{T}(nextrdd::Union{RDD{T}, Void}) 

做出這樣的轉變修正錯誤。

當然不幸的是行號不正確。有一個問題打開:https://github.com/JuliaLang/julia/issues/18764。如果函數中存在文檔字符串的錯誤(或者更一般地說,在宏內),它就表現爲不正確的行號。

+0

非常感謝! –