2014-07-22 01:09:02 +02:00
|
|
|
// Copyright (c) 2012 Ecma International. All rights reserved.
|
2015-07-17 17:42:45 +02:00
|
|
|
// This code is governed by the BSD license found in the LICENSE file.
|
2014-07-22 01:09:02 +02:00
|
|
|
|
|
|
|
/*---
|
2014-07-25 00:41:42 +02:00
|
|
|
es5id: 11.2.3-3_4
|
2014-07-22 01:09:02 +02:00
|
|
|
description: >
|
|
|
|
Call arguments are evaluated before the check is made to see if
|
|
|
|
the object is actually callable (property)
|
|
|
|
---*/
|
|
|
|
|
|
|
|
var fooCalled = false;
|
|
|
|
function foo(){ fooCalled = true; }
|
|
|
|
|
|
|
|
var o = { };
|
|
|
|
Object.defineProperty(o, "bar", {get: function() {this.barGetter = true; return 42;},
|
|
|
|
set: function(x) {this.barSetter = true; }});
|
2015-08-11 17:42:41 +02:00
|
|
|
assert.throws(TypeError, function() {
|
2014-07-22 01:09:02 +02:00
|
|
|
o.bar( foo() );
|
2014-12-11 18:01:59 +01:00
|
|
|
$ERROR("o.bar does not exist!");
|
2015-08-11 17:42:41 +02:00
|
|
|
});
|
|
|
|
assert.sameValue(fooCalled, true, 'fooCalled');
|
|
|
|
assert.sameValue(o.barGetter, true, 'o.barGetter');
|
|
|
|
assert.sameValue(o.barSetter, undefined, 'o.barSetter');
|