diff --git a/src/pyson.js b/src/pyson.js index d5308789a4..a63166f5a7 100644 --- a/src/pyson.js +++ b/src/pyson.js @@ -682,10 +682,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 a95813ed43..f3c39a8457 100644 --- a/tests/sao.js +++ b/tests/sao.js @@ -772,6 +772,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"])'); });