Skip to content

Spurious UndefVarError when converting a vector of tuples #25307

@rdeits

Description

@rdeits

Here's a MWE:

module Foo

abstract type A end

struct B <: A
end

convert(Vector{Tuple{C}} where C <: A, [(B(),)])

end

on v0.6, this works, but on the latest nightly it fails with:

UndefVarError: T not defined

Stacktrace:
 [1] convert(::Type{Array{Tuple{C},1} where C<:Main.Foo.A}, ::Array{Tuple{Main.Foo.B},1}) at ./array.jl:406
 [2] top-level scope

The relevant line is: https://github.com/JuliaLang/julia/tree/ff0e1f7fcf324d4e1598e30dac91f13609d7e04e/base/array.jl#L406 in which T appears to be properly defined.

julia> versioninfo()
Julia Version 0.7.0-DEV.3018
Commit ff0e1f7fcf* (2017-12-15 23:34 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
  CPU: Intel(R) Core(TM) i7-3920XM CPU @ 2.90GHz
  WORD_SIZE: 64
  BLAS: libopenblas (USE64BITINT DYNAMIC_ARCH NO_AFFINITY Sandybridge)
  LAPACK: libopenblas64_
  LIBM: libopenlibm
  LLVM: libLLVM-3.9.1 (ORCJIT, ivybridge)
Environment:

(sorry if this is already fixed in master -- I don't have a working source build on my current machine).

Metadata

Metadata

Assignees

No one assigned

    Labels

    error messagesBetter, more actionable error messages

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions