diff --git a/src/pyson.js b/src/pyson.js index c5e48ed561..b39431cd42 100644 --- a/src/pyson.js +++ b/src/pyson.js @@ -693,10 +693,14 @@ }); Sao.PYSON.In.eval_ = function(value, context) { - if (value.v.indexOf) { - return Boolean(~value.v.indexOf(value.k)); + if (value.v) { + if (value.v.indexOf) { + return Boolean(~value.v.indexOf(value.k)); + } else { + return !!value.v[value.k]; + } } else { - return !!value.v[value.k]; + return false; } }; Sao.PYSON.In.init_from_object = function(obj) { diff --git a/tests/sao.js b/tests/sao.js index e80e05d310..304b3f4116 100644 --- a/tests/sao.js +++ b/tests/sao.js @@ -782,6 +782,12 @@ new Sao.PYSON.In('test', [])); QUnit.strictEqual(new Sao.PYSON.Decoder().decode(eval_), false, "decode(In('test', []))"); + + eval_ = new Sao.PYSON.Encoder().encode( + new Sao.PYSON.In('test', new Sao.PYSON.Eval('foo', []))); + QUnit.strictEqual(new Sao.PYSON.Decoder({'foo': null}).decode(eval_), + false, "decode(In('test', Eval('foo', [])))"); + QUnit.strictEqual(new Sao.PYSON.In('foo', ['foo', 'bar']).toString(), 'In("foo", ["foo", "bar"])'); });