Type inference infinite loop?


#1

Under

julia> versioninfo()
Julia Version 0.6.0-dev.1529
Commit 9ae5e06* (2016-12-08 23:28 UTC)
Platform Info:
  OS: macOS (x86_64-apple-darwin15.6.0)
  CPU: Intel(R) Core(TM) i7-3520M CPU @ 2.90GHz
  WORD_SIZE: 64
  BLAS: libopenblas (USE64BITINT DYNAMIC_ARCH NO_AFFINITY Sandybridge)
  LAPACK: libopenblas64_
  LIBM: libopenlibm
  LLVM: libLLVM-3.7.1 (ORCJIT, ivybridge)

the following works as expected

julia> begin
           foo(args...) = bar(((),), (), args...)
           bar(scals, mats, lastarg::SparseMatrixCSC) = (scals..., ()), (mats..., lastarg)
           bar(scals, mats, nextarg, remargs...) = bar((Base.front(scals)..., (last(scals)..., nextarg)), mats, remargs...)
           # bar(scals, mats, nextarg::SparseMatrixCSC, remargs...) = bar((scals..., ()), (mats..., nextarg), remargs...)
       end
bar (generic function with 2 methods)

julia> foo(1.0, speye(2))
(((1.0,),()),(

	[1, 1]  =  1.0
	[2, 2]  =  1.0,))

but the same with the additional bar definition uncommented hangs indefinitely, and on interrupt the trace points to inference. Note that replacing the body of the commented bar definition with e.g. println("narwhal") works fine as well.

Bug, or my error? Thanks!


#2

Now https://github.com/JuliaLang/julia/issues/19570