So I've got a type Predicate{T}. It has the following methods defined:
function or{T}(first::Predicate{T}, rest::Predicate{T}...)
... create and simplify a predicate by oring them together...
end
+{T}(b1::Predicate{T}, b::Predicate{T}...) = begin
println("+ called")
or(b1, b...)
end
(I have similar code defining * to be "and".)
This line works:
@test( isequal(prop("foo") + prop("bar"), prop("bar") + prop("foo")) )
But this line fails:
@test( !isequal(prop("foo") + prop("bar")*prop("baz"), prop("bar") *
prop("baz")) )
ERROR: test error during !(isequal(prop("foo") + prop("bar") *
prop("baz"),prop("bar") * prop("baz")))
error compiling +: error compiling or: error compiling setindex!: error
compiling ht_keyindex2: unsupported or misplaced expression => in function
ht_keyindex2
in anonymous at test.jl:62
in do_test at test.jl:37
in include at ./boot.jl:245
in include_from_node1 at loading.jl:128
in process_options at ./client.jl:285
in _start at ./client.jl:354
in _start_3B_1714 at /usr/bin/../lib/x86_64-linux-gnu/julia/sys.so
while loading /home/stucchio/src/ad_exchange/test_BooleanAlgebra.jl, in
expression starting on line 11
The debug string in the + method is never printed.
If I reverse the + and * in the expression, I get "error compiling *".
I've searched for this error, and done the best I can reading the docs, but
I'm now a bit stuck. Can anyone offer a suggestion?