Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MethodError: no method matching isvatuple(::Type{Union{Tuple{Any,Array{T,2},Array{Int64,1}},Tuple{Any,Array{T,2}}}}) #215

Closed
ikirill opened this issue Mar 31, 2017 · 0 comments
Labels

Comments

@ikirill
Copy link
Contributor

ikirill commented Mar 31, 2017

I've been running Lint.jl in flycheck in emacs, so that it's running on every file I edit, and I noticed that Lint.jl errors out on this file: https://github.com/JuliaApproximation/ApproxFun.jl/blob/development/src/Domains/UnionDomain.jl

It seems the problem is that isvatuple is not used correctly, like so:

julia> Core.Inference.isvatuple(Union{Tuple{Any,Int},Tuple{Any}})
ERROR: MethodError: no method matching isvatuple(::Type{Union{Tuple{Any,Int64},Tuple{Any}}})
Closest candidates are:
  isvatuple(!Matched::DataType) at essentials.jl:64

because of this:

julia> Union{Tuple{Any,Int},Tuple{Any}} <: Tuple
true

which is why the check in length in statictype.jl passes.

This is the full error message from the above file:

$ julia -e "using Lint; lintfile(\"UnionDomain.jl\")"
ERROR: MethodError: no method matching isvatuple(::Type{Union{Tuple{Any,Array{T,2},Array{Int64,1}},Tuple{Any,Array{T,2}}}})
Closest candidates are:
  isvatuple(!Matched::DataType) at essentials.jl:64
 in length(::Type{Union{Tuple{Any,Array{T,2},Array{Int64,1}},Tuple{Any,Array{T,2}}}}) at /Users/kirill/.julia/v0.5/Lint/src/statictype.jl:124
 in #lintassignment#17(::Bool, ::Bool, ::Bool, ::Bool, ::Function, ::Expr, ::Symbol, ::Lint.LintContext) at /Users/kirill/.julia/v0.5/Lint/src/variables.jl:217
 in lintexpr(::Expr, ::Lint.LintContext) at /Users/kirill/.julia/v0.5/Lint/src/Lint.jl:211
 in lintblock(::Expr, ::Lint.LintContext) at /Users/kirill/.julia/v0.5/Lint/src/blocks.jl:69
 in lintexpr(::Expr, ::Lint.LintContext) at /Users/kirill/.julia/v0.5/Lint/src/Lint.jl:201
 in #lintfunction#20(::Symbol, ::Bool, ::Function, ::Expr, ::Lint.LintContext) at /Users/kirill/.julia/v0.5/Lint/src/functions.jl:275
 in lintexpr(::Expr, ::Lint.LintContext) at /Users/kirill/.julia/v0.5/Lint/src/Lint.jl:258
 in lintstr(::String, ::Lint.LintContext, ::Int64) at /Users/kirill/.julia/v0.5/Lint/src/Lint.jl:170
 in lintstr(::String, ::Lint.LintContext) at /Users/kirill/.julia/v0.5/Lint/src/Lint.jl:143
 in lintinclude(::Lint.LintContext, ::String) at /Users/kirill/.julia/v0.5/Lint/src/Lint.jl:339
 in #lintfunctioncall#27(::Bool, ::Function, ::Expr, ::Lint.LintContext) at /Users/kirill/.julia/v0.5/Lint/src/functions.jl:398
 in lintexpr(::Expr, ::Lint.LintContext) at /Users/kirill/.julia/v0.5/Lint/src/Lint.jl:268
 in lintstr(::String, ::Lint.LintContext, ::Int64) at /Users/kirill/.julia/v0.5/Lint/src/Lint.jl:170
 in lintstr(::String, ::Lint.LintContext) at /Users/kirill/.julia/v0.5/Lint/src/Lint.jl:143
 in lintinclude(::Lint.LintContext, ::String) at /Users/kirill/.julia/v0.5/Lint/src/Lint.jl:339
 in #lintfunctioncall#27(::Bool, ::Function, ::Expr, ::Lint.LintContext) at /Users/kirill/.julia/v0.5/Lint/src/functions.jl:398
 in lintexpr(::Expr, ::Lint.LintContext) at /Users/kirill/.julia/v0.5/Lint/src/Lint.jl:268
 in lintblock(::Expr, ::Lint.LintContext) at /Users/kirill/.julia/v0.5/Lint/src/blocks.jl:69
 in lintexpr(::Expr, ::Lint.LintContext) at /Users/kirill/.julia/v0.5/Lint/src/Lint.jl:201
 in lintmodule(::Expr, ::Lint.LintContext) at /Users/kirill/.julia/v0.5/Lint/src/modules.jl:11
 in lintexpr(::Expr, ::Lint.LintContext) at /Users/kirill/.julia/v0.5/Lint/src/Lint.jl:221
 in lintstr(::String, ::Lint.LintContext, ::Int64) at /Users/kirill/.julia/v0.5/Lint/src/Lint.jl:170
 in lintstr(::String, ::Lint.LintContext) at /Users/kirill/.julia/v0.5/Lint/src/Lint.jl:143
 in lintinclude(::Lint.LintContext, ::String) at /Users/kirill/.julia/v0.5/Lint/src/Lint.jl:339
 in lintpkgforfile(::String, ::Lint.LintContext) at /Users/kirill/.julia/v0.5/Lint/src/Lint.jl:91
 in lintfile(::String, ::String) at /Users/kirill/.julia/v0.5/Lint/src/Lint.jl:131
 in main(::String, ::String) at /var/folders/0x/rtkc45_x42x5_h5g00pkyly40000gn/T/flycheck-julia95816d1h:27
 in main() at /var/folders/0x/rtkc45_x42x5_h5g00pkyly40000gn/T/flycheck-julia95816d1h:34
 in eval(::Module, ::Any) at ./boot.jl:234
 in eval(::Module, ::Any) at /opt/Julia-0.5.app/Contents/Resources/julia/lib/julia/sys.dylib:?
 in process_options(::Base.JLOptions) at ./client.jl:242
 in _start() at ./client.jl:321
 in _start() at /opt/Julia-0.5.app/Contents/Resources/julia/lib/julia/sys.dylib:?

Julia version info:

julia> versioninfo()
Julia Version 0.5.1
Commit 6445c82 (2017-03-05 13:25 UTC)
Platform Info:
  OS: macOS (x86_64-apple-darwin13.4.0)
  CPU: Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz
  WORD_SIZE: 64
  BLAS: libopenblas (USE64BITINT DYNAMIC_ARCH NO_AFFINITY Haswell)
  LAPACK: libopenblas64_
  LIBM: libopenlibm
  LLVM: libLLVM-3.7.1 (ORCJIT, haswell)
TotalVerb added a commit to ikirill/Lint.jl that referenced this issue Apr 2, 2017
@TotalVerb TotalVerb added the bug label Apr 2, 2017
ikirill added a commit to ikirill/Lint.jl that referenced this issue Apr 2, 2017
TotalVerb added a commit that referenced this issue Apr 2, 2017
Don't call isvatuple on unions of tuples (fixes #215).
TotalVerb pushed a commit that referenced this issue Apr 23, 2017
The check wasn't working as expected because

Union{Tuple{A},Tuple{B}} <: Tuple
TotalVerb added a commit that referenced this issue Apr 23, 2017
TotalVerb pushed a commit that referenced this issue Apr 23, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants