My code calls `display` on a bunch of values (of a type I define). Most of
these values chose not to display anything; only a few of them are meant to
print anything at all. However, running the code currently generates a lot
of extra new lines for the non-printing values.
This is the main function being run:
~~~
function checkallmodule(m::Module;test=checkreturntypes,kwargs...)
score = 0
for n in names(m)
f = eval(m,n)
if isgeneric(f) && typeof(f) == Function
fm = test(f;mod=m,kwargs...)
score += length(fm.methods)
display(fm)
end
end
println("The total number of failed methods in $m is $score")
end
~~~
The variable `fm` will be a FunctionSignature. The two relevant custom
types and their `writemime` methods are below:
~~~
type MethodSignature
typs::Vector{AType}
returntype::Union(Type,TypeVar) # v0.2 has TypeVars as returntypes; v0.3
does not
end
MethodSignature(e::Expr) = MethodSignature(argumenttypes(e),returntype(e))
function Base.writemime(io, ::MIME"text/plain", x::MethodSignature)
println(io,"(",join([string(t) for t in x.typs],","),")::",x.returntype)
end
type FunctionSignature
methods::Vector{MethodSignature}
name::Symbol
end
function Base.writemime(io, ::MIME"text/plain", x::FunctionSignature)
for m in x.methods
print(io,string(x.name))
display(m)
end
end
~~~
The call to `display` in `checkallmodule` should end up calling `writemime`
for `FunctionSignature`. In the case that the `FunctionSignature` has no
methods, the for-loop will not execute and nothing should be displayed.
However, there are still a lot of new lines appearing when I run the code.
Does anyone have any pointers to what might be going wrong or how I might
avoid these new lines?
Thanks,
Leah