当Julia错误引用不存在的行号时,这意味着什么?

时间:2016-10-05 22:06:27

标签: 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

现在,这里奇怪的是它引用了文件480的行rdd.jl,它只有178行。

可以通过查看https://github.com/peterjdolan/Spark.jl/tree/type_safety

来复制

并且正在运行:

julia -e "using Spark"

需要进行一些设置才能运行该程序包,README.md https://github.com/dfdx/Spark.jl中对此进行了说明。

感谢您对此奇怪错误消息的深入了解

1 个答案:

答案 0 :(得分:3)

错误消息表明您有一个挂起T的函数或类型,即T未声明为类型参数,但在正文中使用。

当然,在rdd.jl的第63行,你已经定义了函数

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

应该是

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

进行更改可修复错误。

当然不幸的是,行号不正确。在https://github.com/JuliaLang/julia/issues/18764处有一个问题可以解决。当函数中存在文档字符串错误(或更常见的是在宏内)时,它会将自身显示为不正确的行号