Issue 1:
The Go language has this cool feature for struct composition where if you put one struct after another's values, its values are inherited into the other.

type foo1 struct {
bar string
}
type foo2 struct {
baz string
foo1 // foo2 now also has the field "bar" inherited from foo1
}

This seems like it would fit well into Julia.

My suggested implementation would be:

struct foo1
bar::String
end

struct foo2
baz::String
foo1...
end

Thanks for taking the time to read this! It would be yet another pretty nifty trick that Julia could use.

Issue 2:
Julia Version 0.3.0-prerelease+355 (2013-12-08 02:02 UTC)

64-bit Linux (Kubuntu 13.10)

A brief discussion about this is also at https://groups.google.com/forum/#!topic/julia-users/8tMwmFQZFrc

There are a couple of situations where running methodswith function does not give the expected result. The returned report can either be missing expected methods, report the same method twice, or a combination of missing and duplicated methods.

Scenario 1: Querying a local package.

Create package, eg ExamplePkg via Pkg.generate("ExamplePkg","MIT")

Complete ExamplePkg.jl with attached

module ExamplePkg

# package code goes here
export TwoVals, addtwovals

type TwoVals
val1
val2
end

function addtwovals(v::TwoVals)
v.val1 + v.val2
end

function addtwovals(v1::TwoVals, v2::TwoVals)
v1.val1 + v1.val2 + v2.val1 + v2.val2
end

function addtwovals(v::TwoVals)
v.val1 + v.val2
end

function addtwovals(v1::TwoVals, v2::TwoVals)
v1.val1 + v1.val2 + v2.val1 + v2.val2
end

end # module

In REPL the following can be seen

julia> using ExamplePkg

julia> t1 = TwoVals(1,2)
TwoVals(1,2)

julia> t2 = TwoVals(100,200)
TwoVals(100,200)

julia> addtwovals(t1)
3

julia> addtwovals(t1, t2)
303

julia> methods(addtwovals)
#2 methods for generic function "addtwovals":
addtwovals(v::TwoVals) at /home/johng/.julia/ExamplePkg/src/ExamplePkg.jl:20
addtwovals(v1::TwoVals,v2::TwoVals) at /home/johng/.julia/ExamplePkg/src/ExamplePkg.jl:24

julia> methodswith(TwoVals)

julia>

Problems with above :

Expected to see the two 'addtwovals' methods reported, however there is nothing reported at all.

Scenario 2: Querying an installed third-pary package.

Install WebSockets package via adding to .julia/REQUIRE file and doing a Pkg.resolve()

IN REPL the following can be seen

julia> using WebSockets
julia> methodswith(WebSocket)
isopen(ws::WebSocket) at /home/johng/.julia/WebSockets/src/WebSockets.jl:126
read(ws::WebSocket) at /home/johng/.julia/WebSockets/src/WebSockets.jl:227
write(ws::WebSocket,data) at /home/johng/.julia/WebSockets/src/WebSockets.jl:97
close(ws::WebSocket) at /home/johng/.julia/WebSockets/src/WebSockets.jl:115
read(ws::WebSocket) at /home/johng/.julia/WebSockets/src/WebSockets.jl:227
write(ws::WebSocket,data) at /home/johng/.julia/WebSockets/src/WebSockets.jl:97
close(ws::WebSocket) at /home/johng/.julia/WebSockets/src/WebSockets.jl:115

julia> methods(send_ping)
#2 methods for generic function "send_ping":
send_ping(ws::WebSocket) at /home/johng/.julia/WebSockets/src/WebSockets.jl:107
send_ping(ws::WebSocket,data) at /home/johng/.julia/WebSockets/src/WebSockets.jl:107

julia> methods(send_pong)
#2 methods for generic function "send_pong":
send_pong(ws::WebSocket) at /home/johng/.julia/WebSockets/src/WebSockets.jl:111
send_pong(ws::WebSocket,data) at /home/johng/.julia/WebSockets/src/WebSockets.jl:111

Problems with above:

read(), write(), close() methods are being listed twice for the same argument signature.

methodswith() return value is actually missing two functions send_ping() and send_pong() even though these are exported.