changeset f71d57b75ee9 in sao:default details: https://hg.tryton.org/sao?cmd=changeset&node=f71d57b75ee9 description: Remove extra operator when simplifying nested domains
issue11406 review390621002 diffstat: src/common.js | 15 +++++++++++---- tests/sao.js | 3 +++ 2 files changed, 14 insertions(+), 4 deletions(-) diffs (40 lines): diff -r ad6e506af3ac -r f71d57b75ee9 src/common.js --- a/src/common.js Wed Apr 13 19:07:40 2022 +0200 +++ b/src/common.js Thu Apr 14 10:21:53 2022 +0200 @@ -2574,12 +2574,19 @@ return this.simplify_nested(domain[0]); } else { var simplified = []; - var domain_op = this._bool_operator(domain); for (var branch of domain) { var simplified_branch = this.simplify_nested(branch); - if ((this._bool_operator(branch) == domain_op) || - (simplified_branch.length == 1)) { - simplified.push(...simplified_branch); + if ((this._bool_operator(simplified_branch) == + this._bool_operator(simplified)) || + (simplified_branch.length == 1)) { + if ((simplified.length > 0) && + (simplified_branch.length > 0) && + ((simplified_branch[0] == 'AND') || + (simplified_branch[0] == 'OR'))) { + simplified.push(...simplified_branch.slice(1)); + } else { + simplified.push(...simplified_branch); + } } else { simplified.push(simplified_branch); } diff -r ad6e506af3ac -r f71d57b75ee9 tests/sao.js --- a/tests/sao.js Wed Apr 13 19:07:40 2022 +0200 +++ b/tests/sao.js Thu Apr 14 10:21:53 2022 +0200 @@ -2612,6 +2612,9 @@ [ ['OR', ['x', '=', 3], ['AND', ['y', '=', 5]]], ['OR', ['x', '=', 3], ['y', '=', 5]]], + [ + ['OR', ['x', '=', 1], ['OR', ['x', '=', 2], ['x', '=', 3]]], + ['OR', ['x', '=', 1], ['x', '=', 2], ['x', '=', 3]]], [[['x', '=', 3], ['OR']], [['x', '=', 3]]], [['OR', ['x', '=', 3], []], []], [['OR', ['x', '=', 3], ['OR']], []],