Feature added.
On Saturday, March 12, 2016 at 8:46:09 PM UTC-5, Tony Fong wrote: > > Noted. > > https://github.com/tonyhffong/Lint.jl/issues/127 > > > On Saturday, March 12, 2016 at 3:58:58 PM UTC-5, Milan Bouchet-Valat wrote: >> >> Le samedi 12 mars 2016 à 12:30 -0800, Douglas Bates a écrit : >> > I have been adding more tests to the MixedModels package and >> > encountered a peculiar situation where, AFAICS, a test should produce >> > one type of failure and it doesn't. It fails at a later point but I >> > can't see how it gets there. >> > >> > To reproduce, check out a copy of the MixedModels master branch. >> > >> > Pkg.add("MixedModels") >> > Pkg.checkout("MixedModels") >> > MixedModels.inject!(speye(4), sparse(ones(4, 4))) >> > >> > The unexported function inject!(A, B) zeros A, then copies the >> > contents B into A. For sparse matrices, the nonzero positions of B >> > must be a subset of those in A. What I expect to happen in this case >> > is that the code will enter the block in lines 52 - 54 of https://git >> > hub.com/dmbates/MixedModels.jl/blob/master/src/inject.jl. In fact, >> > if you uncomment line 51 in that file the output from the @show macro >> > shows that indeed >> > >> > kk > length(dnzrv) >> > >> > the second time through the "for k in snzr" loop. But when I run >> > that example, the error thrown is a BoundsError at line 55. What I >> > don't understand is how it gets to line 55 the second time through >> > the loop. >> > >> > I have been looking at this for a long time trying to see if I am >> > doing something stupid but I can't. Does the BoundsError get thrown >> > for others? My versioninfo is >> I was puzzled for a few minutes too, but the explanation is actually >> quite simple: you need to call throw() on the error, i.e. >> throw(ArgumentError("cannot inject sparse s into sparse d")) >> >> This is indeed an easy to make and hard to spot mistake. Maybe a code >> checking tool like Lint.jl would/could have detected that the >> ArgumentError wasn't used at all. >> >> >> Regards >> >> > julia> versioninfo() >> > Julia Version 0.4.2 >> > Commit bb73f34 (2015-12-06 21:47 UTC) >> > Platform Info: >> > System: Linux (x86_64-linux-gnu) >> > CPU: Intel(R) Core(TM) i5-5200U CPU @ 2.20GHz >> > WORD_SIZE: 64 >> > BLAS: libopenblas (NO_LAPACKE DYNAMIC_ARCH NO_AFFINITY Prescott) >> > LAPACK: liblapack.so.3 >> > LIBM: libopenlibm >> > LLVM: libLLVM-3.3 >> > >> > I haven't upgraded to 0.4.3 because the Ubuntu package is not yet >> > available but I can test on 0.4.3 if that would help. >> >
