changeset 32582c78dc4c in sao:5.2 details: https://hg.tryton.org/sao?cmd=changeset;node=32582c78dc4c description: Do not force value in OR-ed clause
When any other variable in Or-ed clause is not known, we can not force the value of the variable. issue9092 review272941002 (grafted from 0bccb444c4f74bf79ded7764193817228aa20448) diffstat: src/common.js | 7 +++---- tests/sao.js | 17 ++++++----------- 2 files changed, 9 insertions(+), 15 deletions(-) diffs (70 lines): diff -r 7b2766053c67 -r 32582c78dc4c src/common.js --- a/src/common.js Mon Mar 09 18:33:02 2020 +0100 +++ b/src/common.js Fri Mar 06 23:14:24 2020 +0100 @@ -2535,11 +2535,10 @@ inverse: function(symbol, context) { var DomainInversion = Sao.common.DomainInversion; var result = []; - if (!~this.variables.indexOf(symbol) && - !jQuery.isEmptyObject(this.variables.filter(function(e) { - return !(e in context); + if (!jQuery.isEmptyObject(this.variables.filter(function(e) { + return (!(e in context)) && (e != symbol); }))) { - // In this case we don't know anything about this OR part, we + // In this case we don't know enough about this OR part, we // consider it to be True (because people will have the // constraint on this part later). return true; diff -r 7b2766053c67 -r 32582c78dc4c tests/sao.js --- a/tests/sao.js Mon Mar 09 18:33:02 2020 +0100 +++ b/tests/sao.js Fri Mar 06 23:14:24 2020 +0100 @@ -1917,11 +1917,10 @@ var domain = ['OR', ['x', '=', 3], ['y', '>', 5], ['z', '=', 'abc']]; var context; - QUnit.ok(compare(domain_inversion(domain, 'x'), [['x', '=', 3]]), + QUnit.ok(compare(domain_inversion(domain, 'x'), true), 'domain_inversion(' + JSON.stringify(domain) + ', \'x\')'); context = {y: 4}; - QUnit.ok(compare(domain_inversion(domain, 'x', context), - [['x', '=', 3]]), + QUnit.ok(compare(domain_inversion(domain, 'x', context), true), 'domain_inversion(' + JSON.stringify(domain) + ', \'x\', ' + JSON.stringify(context) + ')'); context = {y: 4, z: 'ab'}; @@ -1958,12 +1957,10 @@ 'domain_inversion(' + JSON.stringify(domain) + ', \'z\')'); domain = ['OR', ['x.id', '>', 5], ['y', '<', 3]]; - QUnit.ok(compare(domain_inversion(domain, 'y'), - [['y', '<', 3]]), + QUnit.ok(compare(domain_inversion(domain, 'y'), true), 'domain_inversion(' + JSON.stringify(domain) + ', \'y\',)'); context = {z: 4}; - QUnit.ok(compare(domain_inversion(domain, 'y', context), - [['y', '<', 3]]), + QUnit.ok(compare(domain_inversion(domain, 'y', context), true), 'domain_inversion(' + JSON.stringify(domain) + ', \'y\', ' + JSON.stringify(context) + ')'); context = {x: 3}; @@ -1973,8 +1970,7 @@ domain = ['OR', ['length', '>', 5], ['language.code', '=', 'de_DE']]; context = {length: 0, name: 'n'}; - QUnit.ok(compare(domain_inversion(domain, 'length', context), - [['length', '>', 5]]), + QUnit.ok(compare(domain_inversion(domain, 'length', context), true), 'domain_inversion(' + JSON.stringify(domain) + ', \'length\', ' + JSON.stringify(context) + ')'); }); @@ -1991,8 +1987,7 @@ QUnit.strictEqual(domain_inversion(domain, 'x'), true, 'domain_inversion(' + JSON.stringify(domain) + ', \'x\')'); context = {y: 4}; - QUnit.ok(compare(domain_inversion(domain, 'x', context), - [[['x', '=', 4]]]), + QUnit.ok(compare(domain_inversion(domain, 'x', context), true), 'domain_inversion(' + JSON.stringify(domain) + ', \'x\', ' + JSON.stringify(context) + ')'); context = {z: 'abc', y: 7};