Closed rhendrix42 closed 3 years ago
The synthesiser produces an incorrect C++ program. The interpreter does not have any issues with the program.
The comparator fails to compile:
range<iterator_1> lowerUpperRange_1111111(const t_tuple& lower, const t_tuple& upper, context& h) const {
t_comparator_1 comparator;
int cmp = comparator(&lower, &upper);
if (cmp == 0) {
auto pos = find(lower, h);
auto fin = end();
if (pos != fin) {fin = pos; ++fin;}
return make_range(pos, fin); <==== this is not working!!
}
if (cmp > 0) {
return range<iterator_1>(ind_1.end(), ind_1.end());
}
return range<iterator_1>(ind_1.lower_bound(&lower, h.hints_1_lower), ind_1.upper_bound(&upper, h.hints_1_upper));
}
for the data-structure t_btree_iiii__0_3_2__2_3_1_0__1_3_0__1001__1011__1111__1101__0111__0101__0011
.
Great catch @rhendrix42!
Thanks for reporting this issue!
Hi guys, Consider the following program:
Running this in compiler mode gives me
compiler error: cannot compile source file
Full error message: error_message.txtFact files: facts.zip
I am running this on Souffle verison: 68d4dcdbbd6a285169d06dfec461e652cf7ec8ae
Operating System: Debian GNU/Linux 10 (buster) Kernel: Linux 4.19.75.1.amd64-smp Architecture: x86-64
Please let me know if you cannot reproduce this. I can share some other examples.