Commit 83de7691 authored by Jacek Caban's avatar Jacek Caban Committed by Alexandre Julliard

jscript: Add Object.defineProperty implementation.

parent c5d0bad4
...@@ -1607,6 +1607,8 @@ HRESULT jsdisp_get_own_property(jsdisp_t *obj, const WCHAR *name, BOOL flags_onl ...@@ -1607,6 +1607,8 @@ HRESULT jsdisp_get_own_property(jsdisp_t *obj, const WCHAR *name, BOOL flags_onl
switch(prop->type) { switch(prop->type) {
case PROP_BUILTIN: case PROP_BUILTIN:
case PROP_JSVAL: case PROP_JSVAL:
desc->mask |= PROPF_WRITABLE;
desc->explicit_value = TRUE;
if(!flags_only) { if(!flags_only) {
hres = prop_get(obj, prop, &desc->value); hres = prop_get(obj, prop, &desc->value);
if(FAILED(hres)) if(FAILED(hres))
...@@ -1618,5 +1620,84 @@ HRESULT jsdisp_get_own_property(jsdisp_t *obj, const WCHAR *name, BOOL flags_onl ...@@ -1618,5 +1620,84 @@ HRESULT jsdisp_get_own_property(jsdisp_t *obj, const WCHAR *name, BOOL flags_onl
} }
desc->flags = prop->flags & (PROPF_ENUMERABLE | PROPF_WRITABLE | PROPF_CONFIGURABLE); desc->flags = prop->flags & (PROPF_ENUMERABLE | PROPF_WRITABLE | PROPF_CONFIGURABLE);
desc->mask |= PROPF_ENUMERABLE | PROPF_CONFIGURABLE;
return S_OK;
}
HRESULT jsdisp_define_property(jsdisp_t *obj, const WCHAR *name, property_desc_t *desc)
{
dispex_prop_t *prop;
HRESULT hres;
hres = find_prop_name(obj, string_hash(name), name, &prop);
if(FAILED(hres))
return hres;
if(!prop && !(prop = alloc_prop(obj, name, PROP_DELETED, 0)))
return E_OUTOFMEMORY;
if(prop->type == PROP_DELETED || prop->type == PROP_PROTREF) {
prop->flags = desc->flags;
if(desc->explicit_getter || desc->explicit_setter) {
FIXME("accessor property\n");
return E_NOTIMPL;
}else {
prop->type = PROP_JSVAL;
if(desc->explicit_value) {
hres = jsval_copy(desc->value, &prop->u.val);
if(FAILED(hres))
return hres;
}else {
prop->u.val = jsval_undefined();
}
TRACE("%s = %s\n", debugstr_w(name), debugstr_jsval(prop->u.val));
}
return S_OK;
}
TRACE("existing prop %s prop flags %x desc flags %x desc mask %x\n", debugstr_w(name),
prop->flags, desc->flags, desc->mask);
if(!(prop->flags & PROPF_CONFIGURABLE)) {
if(((desc->mask & PROPF_CONFIGURABLE) && (desc->flags & PROPF_CONFIGURABLE))
|| ((desc->mask & PROPF_ENUMERABLE)
&& ((desc->flags & PROPF_ENUMERABLE) != (prop->flags & PROPF_ENUMERABLE))))
return throw_type_error(obj->ctx, JS_E_NONCONFIGURABLE_REDEFINED, name);
}
if(desc->explicit_value || (desc->mask & PROPF_WRITABLE)) {
if(!(prop->flags & PROPF_CONFIGURABLE) && !(prop->flags & PROPF_WRITABLE)) {
if((desc->mask & PROPF_WRITABLE) && (desc->flags & PROPF_WRITABLE))
return throw_type_error(obj->ctx, JS_E_NONWRITABLE_MODIFIED, name);
if(desc->explicit_value) {
if(prop->type == PROP_JSVAL) {
BOOL eq;
hres = jsval_strict_equal(desc->value, prop->u.val, &eq);
if(FAILED(hres))
return hres;
if(!eq)
return throw_type_error(obj->ctx, JS_E_NONWRITABLE_MODIFIED, name);
}else {
FIXME("redefinition of property type %d\n", prop->type);
}
}
}
if(desc->explicit_value) {
if(prop->type == PROP_JSVAL)
jsval_release(prop->u.val);
else
prop->type = PROP_JSVAL;
hres = jsval_copy(desc->value, &prop->u.val);
if(FAILED(hres)) {
prop->u.val = jsval_undefined();
return hres;
}
}
}else if(desc->explicit_getter || desc->explicit_setter) {
FIXME("accessor property\n");
return E_NOTIMPL;
}
prop->flags = (prop->flags & ~desc->mask) | (desc->flags & desc->mask);
return S_OK; return S_OK;
} }
...@@ -294,6 +294,7 @@ HRESULT disp_delete(IDispatch*,DISPID,BOOL*) DECLSPEC_HIDDEN; ...@@ -294,6 +294,7 @@ HRESULT disp_delete(IDispatch*,DISPID,BOOL*) DECLSPEC_HIDDEN;
HRESULT disp_delete_name(script_ctx_t*,IDispatch*,jsstr_t*,BOOL*) DECLSPEC_HIDDEN; HRESULT disp_delete_name(script_ctx_t*,IDispatch*,jsstr_t*,BOOL*) DECLSPEC_HIDDEN;
HRESULT jsdisp_delete_idx(jsdisp_t*,DWORD) DECLSPEC_HIDDEN; HRESULT jsdisp_delete_idx(jsdisp_t*,DWORD) DECLSPEC_HIDDEN;
HRESULT jsdisp_get_own_property(jsdisp_t*,const WCHAR*,BOOL,property_desc_t*) DECLSPEC_HIDDEN; HRESULT jsdisp_get_own_property(jsdisp_t*,const WCHAR*,BOOL,property_desc_t*) DECLSPEC_HIDDEN;
HRESULT jsdisp_define_property(jsdisp_t*,const WCHAR*,property_desc_t*) DECLSPEC_HIDDEN;
HRESULT create_builtin_function(script_ctx_t*,builtin_invoke_t,const WCHAR*,const builtin_info_t*,DWORD, HRESULT create_builtin_function(script_ctx_t*,builtin_invoke_t,const WCHAR*,const builtin_info_t*,DWORD,
jsdisp_t*,jsdisp_t**) DECLSPEC_HIDDEN; jsdisp_t*,jsdisp_t**) DECLSPEC_HIDDEN;
...@@ -378,7 +379,13 @@ typedef struct { ...@@ -378,7 +379,13 @@ typedef struct {
struct _property_desc_t { struct _property_desc_t {
unsigned flags; unsigned flags;
unsigned mask;
BOOL explicit_value;
jsval_t value; jsval_t value;
BOOL explicit_getter;
jsdisp_t *getter;
BOOL explicit_setter;
jsdisp_t *setter;
}; };
typedef struct { typedef struct {
...@@ -556,6 +563,10 @@ static inline DWORD make_grfdex(script_ctx_t *ctx, DWORD flags) ...@@ -556,6 +563,10 @@ static inline DWORD make_grfdex(script_ctx_t *ctx, DWORD flags)
#define JS_E_PRECISION_OUT_OF_RANGE MAKE_JSERROR(IDS_PRECISION_OUT_OF_RANGE) #define JS_E_PRECISION_OUT_OF_RANGE MAKE_JSERROR(IDS_PRECISION_OUT_OF_RANGE)
#define JS_E_INVALID_LENGTH MAKE_JSERROR(IDS_INVALID_LENGTH) #define JS_E_INVALID_LENGTH MAKE_JSERROR(IDS_INVALID_LENGTH)
#define JS_E_ARRAY_EXPECTED MAKE_JSERROR(IDS_ARRAY_EXPECTED) #define JS_E_ARRAY_EXPECTED MAKE_JSERROR(IDS_ARRAY_EXPECTED)
#define JS_E_NONCONFIGURABLE_REDEFINED MAKE_JSERROR(IDS_NONCONFIGURABLE_REDEFINED)
#define JS_E_NONWRITABLE_MODIFIED MAKE_JSERROR(IDS_NONWRITABLE_MODIFIED)
#define JS_E_PROP_DESC_MISMATCH MAKE_JSERROR(IDS_PROP_DESC_MISMATCH)
#define JS_E_INVALID_WRITABLE_PROP_DESC MAKE_JSERROR(IDS_INVALID_WRITABLE_PROP_DESC)
static inline BOOL is_jscript_error(HRESULT hres) static inline BOOL is_jscript_error(HRESULT hres)
{ {
......
...@@ -65,6 +65,10 @@ STRINGTABLE ...@@ -65,6 +65,10 @@ STRINGTABLE
IDS_PRECISION_OUT_OF_RANGE "Precision is out of range" IDS_PRECISION_OUT_OF_RANGE "Precision is out of range"
IDS_INVALID_LENGTH "Array length must be a finite positive integer" IDS_INVALID_LENGTH "Array length must be a finite positive integer"
IDS_ARRAY_EXPECTED "Array object expected" IDS_ARRAY_EXPECTED "Array object expected"
IDS_INVALID_WRITABLE_PROP_DESC "'writable' attribute on the property descriptor cannot be set to 'true' on this object"
IDS_NONCONFIGURABLE_REDEFINED "Cannot redefine non-configurable property '|'"
IDS_NONWRITABLE_MODIFIED "Cannot modify non-writable property '|'"
IDS_PROP_DESC_MISMATCH "Property cannot have both accessors and a value"
} }
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
......
...@@ -34,6 +34,7 @@ static const WCHAR isPrototypeOfW[] = {'i','s','P','r','o','t','o','t','y','p',' ...@@ -34,6 +34,7 @@ static const WCHAR isPrototypeOfW[] = {'i','s','P','r','o','t','o','t','y','p','
static const WCHAR getOwnPropertyDescriptorW[] = static const WCHAR getOwnPropertyDescriptorW[] =
{'g','e','t','O','w','n','P','r','o','p','e','r','t','y','D','e','s','c','r','i','p','t','o','r',0}; {'g','e','t','O','w','n','P','r','o','p','e','r','t','y','D','e','s','c','r','i','p','t','o','r',0};
static const WCHAR definePropertyW[] = {'d','e','f','i','n','e','P','r','o','p','e','r','t','y',0};
static const WCHAR default_valueW[] = {'[','o','b','j','e','c','t',' ','O','b','j','e','c','t',']',0}; static const WCHAR default_valueW[] = {'[','o','b','j','e','c','t',' ','O','b','j','e','c','t',']',0};
...@@ -41,6 +42,8 @@ static const WCHAR configurableW[] = {'c','o','n','f','i','g','u','r','a','b','l ...@@ -41,6 +42,8 @@ static const WCHAR configurableW[] = {'c','o','n','f','i','g','u','r','a','b','l
static const WCHAR enumerableW[] = {'e','n','u','m','e','r','a','b','l','e',0}; static const WCHAR enumerableW[] = {'e','n','u','m','e','r','a','b','l','e',0};
static const WCHAR valueW[] = {'v','a','l','u','e',0}; static const WCHAR valueW[] = {'v','a','l','u','e',0};
static const WCHAR writableW[] = {'w','r','i','t','a','b','l','e',0}; static const WCHAR writableW[] = {'w','r','i','t','a','b','l','e',0};
static const WCHAR getW[] = {'g','e','t',0};
static const WCHAR setW[] = {'s','e','t',0};
static HRESULT Object_toString(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv, static HRESULT Object_toString(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsigned argc, jsval_t *argv,
jsval_t *r) jsval_t *r)
...@@ -263,7 +266,185 @@ static const builtin_info_t ObjectInst_info = { ...@@ -263,7 +266,185 @@ static const builtin_info_t ObjectInst_info = {
static void release_property_descriptor(property_desc_t *desc) static void release_property_descriptor(property_desc_t *desc)
{ {
jsval_release(desc->value); if(desc->explicit_value)
jsval_release(desc->value);
if(desc->getter)
jsdisp_release(desc->getter);
if(desc->setter)
jsdisp_release(desc->setter);
}
static HRESULT to_property_descriptor(script_ctx_t *ctx, jsdisp_t *attr_obj, property_desc_t *desc)
{
DISPID id;
jsval_t v;
BOOL b;
HRESULT hres;
memset(desc, 0, sizeof(*desc));
desc->value = jsval_undefined();
hres = jsdisp_get_id(attr_obj, enumerableW, 0, &id);
if(SUCCEEDED(hres)) {
desc->mask |= PROPF_ENUMERABLE;
hres = jsdisp_propget(attr_obj, id, &v);
if(FAILED(hres))
return hres;
hres = to_boolean(v, &b);
jsval_release(v);
if(FAILED(hres))
return hres;
if(b)
desc->flags |= PROPF_ENUMERABLE;
}else if(hres != DISP_E_UNKNOWNNAME) {
return hres;
}
hres = jsdisp_get_id(attr_obj, configurableW, 0, &id);
if(SUCCEEDED(hres)) {
desc->mask |= PROPF_CONFIGURABLE;
hres = jsdisp_propget(attr_obj, id, &v);
if(FAILED(hres))
return hres;
hres = to_boolean(v, &b);
jsval_release(v);
if(FAILED(hres))
return hres;
if(b)
desc->flags |= PROPF_CONFIGURABLE;
}else if(hres != DISP_E_UNKNOWNNAME) {
return hres;
}
hres = jsdisp_get_id(attr_obj, valueW, 0, &id);
if(SUCCEEDED(hres)) {
hres = jsdisp_propget(attr_obj, id, &desc->value);
if(FAILED(hres))
return hres;
desc->explicit_value = TRUE;
}else if(hres != DISP_E_UNKNOWNNAME) {
return hres;
}
hres = jsdisp_get_id(attr_obj, writableW, 0, &id);
if(SUCCEEDED(hres)) {
desc->mask |= PROPF_WRITABLE;
hres = jsdisp_propget(attr_obj, id, &v);
if(SUCCEEDED(hres)) {
hres = to_boolean(v, &b);
jsval_release(v);
if(SUCCEEDED(hres) && b)
desc->flags |= PROPF_WRITABLE;
}
}else if(hres == DISP_E_UNKNOWNNAME) {
hres = S_OK;
}
if(FAILED(hres)) {
release_property_descriptor(desc);
return hres;
}
hres = jsdisp_get_id(attr_obj, getW, 0, &id);
if(SUCCEEDED(hres)) {
desc->explicit_getter = TRUE;
hres = jsdisp_propget(attr_obj, id, &v);
if(SUCCEEDED(hres) && !is_undefined(v)) {
if(!is_object_instance(v)) {
FIXME("getter is not an object\n");
jsval_release(v);
hres = E_FAIL;
}else {
/* FIXME: Check IsCallable */
desc->getter = to_jsdisp(get_object(v));
if(!desc->getter)
FIXME("getter is not JS object\n");
}
}
}else if(hres == DISP_E_UNKNOWNNAME) {
hres = S_OK;
}
if(FAILED(hres)) {
release_property_descriptor(desc);
return hres;
}
hres = jsdisp_get_id(attr_obj, setW, 0, &id);
if(SUCCEEDED(hres)) {
desc->explicit_setter = TRUE;
hres = jsdisp_propget(attr_obj, id, &v);
if(SUCCEEDED(hres) && !is_undefined(v)) {
if(!is_object_instance(v)) {
FIXME("setter is not an object\n");
jsval_release(v);
hres = E_FAIL;
}else {
/* FIXME: Check IsCallable */
desc->setter = to_jsdisp(get_object(v));
if(!desc->setter)
FIXME("setter is not JS object\n");
}
}
}else if(hres == DISP_E_UNKNOWNNAME) {
hres = S_OK;
}
if(FAILED(hres)) {
release_property_descriptor(desc);
return hres;
}
if(desc->explicit_getter || desc->explicit_setter) {
if(desc->explicit_value)
hres = throw_type_error(ctx, JS_E_PROP_DESC_MISMATCH, NULL);
else if(desc->mask & PROPF_WRITABLE)
hres = throw_type_error(ctx, JS_E_INVALID_WRITABLE_PROP_DESC, NULL);
}
if(FAILED(hres))
release_property_descriptor(desc);
return hres;
}
static HRESULT Object_defineProperty(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags,
unsigned argc, jsval_t *argv, jsval_t *r)
{
property_desc_t prop_desc;
jsdisp_t *obj, *attr_obj;
const WCHAR *name;
jsstr_t *name_str;
HRESULT hres;
TRACE("\n");
if(argc < 1 || !is_object_instance(argv[0]))
return throw_type_error(ctx, JS_E_OBJECT_EXPECTED, NULL);
obj = to_jsdisp(get_object(argv[0]));
if(!obj) {
FIXME("not implemented non-JS object\n");
return E_NOTIMPL;
}
hres = to_flat_string(ctx, argc >= 2 ? argv[1] : jsval_undefined(), &name_str, &name);
if(FAILED(hres))
return hres;
if(argc >= 3 && is_object_instance(argv[2])) {
attr_obj = to_jsdisp(get_object(argv[2]));
if(attr_obj) {
hres = to_property_descriptor(ctx, attr_obj, &prop_desc);
}else {
FIXME("not implemented non-JS object\n");
hres = E_NOTIMPL;
}
}else {
hres = throw_type_error(ctx, JS_E_OBJECT_EXPECTED, NULL);
}
jsstr_release(name_str);
if(FAILED(hres))
return hres;
hres = jsdisp_define_property(obj, name, &prop_desc);
release_property_descriptor(&prop_desc);
return hres;
} }
static HRESULT Object_getOwnPropertyDescriptor(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, static HRESULT Object_getOwnPropertyDescriptor(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags,
...@@ -302,10 +483,18 @@ static HRESULT Object_getOwnPropertyDescriptor(script_ctx_t *ctx, vdisp_t *jsthi ...@@ -302,10 +483,18 @@ static HRESULT Object_getOwnPropertyDescriptor(script_ctx_t *ctx, vdisp_t *jsthi
if(FAILED(hres)) if(FAILED(hres))
return hres; return hres;
hres = jsdisp_propput_name(desc_obj, valueW, prop_desc.value); if(prop_desc.explicit_getter || prop_desc.explicit_setter) {
if(SUCCEEDED(hres)) hres = jsdisp_propput_name(desc_obj, getW, prop_desc.getter
hres = jsdisp_propput_name(desc_obj, writableW, ? jsval_obj(prop_desc.getter) : jsval_undefined());
jsval_bool(!!(prop_desc.flags & PROPF_WRITABLE))); if(SUCCEEDED(hres))
hres = jsdisp_propput_name(desc_obj, setW, prop_desc.setter
? jsval_obj(prop_desc.setter) : jsval_undefined());
}else {
hres = jsdisp_propput_name(desc_obj, valueW, prop_desc.value);
if(SUCCEEDED(hres))
hres = jsdisp_propput_name(desc_obj, writableW,
jsval_bool(!!(prop_desc.flags & PROPF_WRITABLE)));
}
if(SUCCEEDED(hres)) if(SUCCEEDED(hres))
hres = jsdisp_propput_name(desc_obj, enumerableW, hres = jsdisp_propput_name(desc_obj, enumerableW,
jsval_bool(!!(prop_desc.flags & PROPF_ENUMERABLE))); jsval_bool(!!(prop_desc.flags & PROPF_ENUMERABLE)));
...@@ -322,6 +511,7 @@ static HRESULT Object_getOwnPropertyDescriptor(script_ctx_t *ctx, vdisp_t *jsthi ...@@ -322,6 +511,7 @@ static HRESULT Object_getOwnPropertyDescriptor(script_ctx_t *ctx, vdisp_t *jsthi
} }
static const builtin_prop_t ObjectConstr_props[] = { static const builtin_prop_t ObjectConstr_props[] = {
{definePropertyW, Object_defineProperty, PROPF_ES5|PROPF_METHOD|2},
{getOwnPropertyDescriptorW, Object_getOwnPropertyDescriptor, PROPF_ES5|PROPF_METHOD|2} {getOwnPropertyDescriptorW, Object_getOwnPropertyDescriptor, PROPF_ES5|PROPF_METHOD|2}
}; };
......
...@@ -63,3 +63,9 @@ ...@@ -63,3 +63,9 @@
#define IDS_PRECISION_OUT_OF_RANGE 0x13A3 #define IDS_PRECISION_OUT_OF_RANGE 0x13A3
#define IDS_INVALID_LENGTH 0x13A5 #define IDS_INVALID_LENGTH 0x13A5
#define IDS_ARRAY_EXPECTED 0x13A7 #define IDS_ARRAY_EXPECTED 0x13A7
#define IDS_INVALID_WRITABLE_PROP_DESC 0x13AC
#define IDS_NONCONFIGURABLE_REDEFINED 0x13D6
#define IDS_NONWRITABLE_MODIFIED 0x13D7
/* FIXME: This is not compatible with native, but we would
* conflict with IDS_UNSUPPORTED_ACTION otherwise */
#define IDS_PROP_DESC_MISMATCH 0x1F00
...@@ -143,6 +143,7 @@ function test_javascript() { ...@@ -143,6 +143,7 @@ function test_javascript() {
/* FIXME: IE8 implements weird semi-functional property descriptors. */ /* FIXME: IE8 implements weird semi-functional property descriptors. */
if(v != 8) { if(v != 8) {
test_exposed("getOwnPropertyDescriptor", Object, v >= 8); test_exposed("getOwnPropertyDescriptor", Object, v >= 8);
test_exposed("defineProperty", Object, v >= 8);
} }
test_parses("if(false) { o.default; }", v >= 9); test_parses("if(false) { o.default; }", v >= 9);
......
...@@ -16,6 +16,11 @@ ...@@ -16,6 +16,11 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/ */
var JS_E_PROP_DESC_MISMATCH = 0x800a01bd;
var JS_E_INVALID_WRITABLE_PROP_DESC = 0x800a13ac;
var JS_E_NONCONFIGURABLE_REDEFINED = 0x800a13d6;
var JS_E_NONWRITABLE_MODIFIED = 0x800a13d7;
function test_date_now() { function test_date_now() {
var now = Date.now(); var now = Date.now();
var time = (new Date()).getTime(); var time = (new Date()).getTime();
...@@ -188,11 +193,103 @@ function test_getOwnPropertyDescriptor() { ...@@ -188,11 +193,103 @@ function test_getOwnPropertyDescriptor() {
next_test(); next_test();
} }
function test_defineProperty() {
function expect_exception(func, expected_number) {
try {
func();
}catch(e) {
var n = e.number + 0x100000000; /* make it unsigned like HRESULT */
todo_wine_if(expected_number == JS_E_PROP_DESC_MISMATCH).
ok(n === expected_number, "got exception " + n.toString(16)
+ " expected " + expected_number.toString(16));
ok(e.name === "TypeError", "e.name = " + e.name);
return;
}
ok(false, "expected exception");
}
var obj = new Object();
Object.defineProperty(obj, "test", {});
ok("test" in obj, "test is not in obj");
test_own_data_prop_desc(obj, "test", false, false, false);
ok(obj.test === undefined, "obj.test = " + obj.test);
Object.defineProperty(obj, "all", {writable: true, enumerable: true, configurable: true, value: 1});
test_own_data_prop_desc(obj, "all", true, true, true);
ok(obj.all === 1, "obj.test = " + obj.test);
Object.defineProperty(obj, "all", {writable: false});
test_own_data_prop_desc(obj, "all", false, true, true);
ok(obj.all === 1, "obj.test = " + obj.test);
Object.defineProperty(obj, "notConf", {writable: true, enumerable: true, configurable: false, value: 1});
test_own_data_prop_desc(obj, "notConf", true, true, false);
expect_exception(function() {
Object.defineProperty(obj, "notConf",
{writable: true, enumerable: true, configurable: true, value: 1});
}, JS_E_NONCONFIGURABLE_REDEFINED);
expect_exception(function() {
Object.defineProperty(obj, "notConf",
{writable: true, enumerable: false, configurable: false, value: 1});
}, JS_E_NONCONFIGURABLE_REDEFINED);
Object.defineProperty(obj, "notConf",
{writable: true, enumerable: true, configurable: false, value: 2});
test_own_data_prop_desc(obj, "notConf", true, true, false);
Object.defineProperty(obj, "notConf", {writable: true, value: 2});
test_own_data_prop_desc(obj, "notConf", true, true, false);
Object.defineProperty(obj, "notConf2",
{writable: false, enumerable: false, configurable: false, value: 1});
test_own_data_prop_desc(obj, "notConf2", false, false, false);
obj.notConf2 = 2;
ok(obj.notConf2 === 1, "obj.notConf2 = " + obj.notConf2)
expect_exception(function() {
Object.defineProperty(obj, "notConf2",
{writable: false, enumerable: false, configurable: true, value: 1});
}, JS_E_NONCONFIGURABLE_REDEFINED);
expect_exception(function() {
Object.defineProperty(obj, "notConf2",
{writable: false, enumerable: true, configurable: false, value: 1});
}, JS_E_NONCONFIGURABLE_REDEFINED);
expect_exception(function() {
Object.defineProperty(obj, "notConf2", {writable: true, value: 1});
}, JS_E_NONWRITABLE_MODIFIED);
expect_exception(function() {
Object.defineProperty(obj, "notConf2", {value: 2});
}, JS_E_NONWRITABLE_MODIFIED);
Object.defineProperty(obj, "notConf2",
{writable: false, enumerable: false, configurable: false, value: 1});
test_own_data_prop_desc(obj, "notConf2", false, false, false);
Object.defineProperty(obj, "notConf2", {writable: false, value: 1});
test_own_data_prop_desc(obj, "notConf2", false, false, false);
expect_exception(function() {
Object.defineProperty(obj, "invaliddesc", {get: undefined, value: 1});
}, JS_E_PROP_DESC_MISMATCH);
expect_exception(function() {
Object.defineProperty(obj, "invaliddesc", {set: undefined, writable: true});
}, JS_E_INVALID_WRITABLE_PROP_DESC);
next_test();
}
var tests = [ var tests = [
test_date_now, test_date_now,
test_toISOString, test_toISOString,
test_indexOf, test_indexOf,
test_isArray, test_isArray,
test_identifier_keywords, test_identifier_keywords,
test_getOwnPropertyDescriptor test_getOwnPropertyDescriptor,
test_defineProperty
]; ];
...@@ -57,3 +57,7 @@ var todo_wine = { ...@@ -57,3 +57,7 @@ var todo_wine = {
return external.todo_wine_ok(b,m); return external.todo_wine_ok(b,m);
} }
}; };
function todo_wine_if(expr) {
return expr ? todo_wine : { ok: ok };
}
...@@ -3684,6 +3684,24 @@ msgstr "يجب أن يكون طول المصفوفة عدد صحيح موجب م ...@@ -3684,6 +3684,24 @@ msgstr "يجب أن يكون طول المصفوفة عدد صحيح موجب م
msgid "Array object expected" msgid "Array object expected"
msgstr "عنصر مصفوفة متوقع" msgstr "عنصر مصفوفة متوقع"
#: jscript.rc:69
msgid ""
"'writable' attribute on the property descriptor cannot be set to 'true' on "
"this object"
msgstr ""
#: jscript.rc:70
msgid "Cannot redefine non-configurable property '|'"
msgstr ""
#: jscript.rc:71
msgid "Cannot modify non-writable property '|'"
msgstr ""
#: jscript.rc:72
msgid "Property cannot have both accessors and a value"
msgstr ""
#: ../../include/wine/wine_common_ver.rc:129 #: ../../include/wine/wine_common_ver.rc:129
msgid "Wine kernel DLL" msgid "Wine kernel DLL"
msgstr "" msgstr ""
......
...@@ -3703,6 +3703,24 @@ msgstr "" ...@@ -3703,6 +3703,24 @@ msgstr ""
msgid "Array object expected" msgid "Array object expected"
msgstr "" msgstr ""
#: jscript.rc:69
msgid ""
"'writable' attribute on the property descriptor cannot be set to 'true' on "
"this object"
msgstr ""
#: jscript.rc:70
msgid "Cannot redefine non-configurable property '|'"
msgstr ""
#: jscript.rc:71
msgid "Cannot modify non-writable property '|'"
msgstr ""
#: jscript.rc:72
msgid "Property cannot have both accessors and a value"
msgstr ""
#: ../../include/wine/wine_common_ver.rc:129 #: ../../include/wine/wine_common_ver.rc:129
msgid "Wine kernel DLL" msgid "Wine kernel DLL"
msgstr "" msgstr ""
......
...@@ -3702,6 +3702,24 @@ msgstr "La longitud del vector ha de ser un nombre enter positiu finit" ...@@ -3702,6 +3702,24 @@ msgstr "La longitud del vector ha de ser un nombre enter positiu finit"
msgid "Array object expected" msgid "Array object expected"
msgstr "S'esperava un objecte Array" msgstr "S'esperava un objecte Array"
#: jscript.rc:69
msgid ""
"'writable' attribute on the property descriptor cannot be set to 'true' on "
"this object"
msgstr ""
#: jscript.rc:70
msgid "Cannot redefine non-configurable property '|'"
msgstr ""
#: jscript.rc:71
msgid "Cannot modify non-writable property '|'"
msgstr ""
#: jscript.rc:72
msgid "Property cannot have both accessors and a value"
msgstr ""
#: ../../include/wine/wine_common_ver.rc:129 #: ../../include/wine/wine_common_ver.rc:129
msgid "Wine kernel DLL" msgid "Wine kernel DLL"
msgstr "DLL de nucli del Wine" msgstr "DLL de nucli del Wine"
......
...@@ -3638,6 +3638,24 @@ msgstr "Rozměr pole musí být konečné kladné celé číslo" ...@@ -3638,6 +3638,24 @@ msgstr "Rozměr pole musí být konečné kladné celé číslo"
msgid "Array object expected" msgid "Array object expected"
msgstr "Očekáván objekt typu pole" msgstr "Očekáván objekt typu pole"
#: jscript.rc:69
msgid ""
"'writable' attribute on the property descriptor cannot be set to 'true' on "
"this object"
msgstr ""
#: jscript.rc:70
msgid "Cannot redefine non-configurable property '|'"
msgstr ""
#: jscript.rc:71
msgid "Cannot modify non-writable property '|'"
msgstr ""
#: jscript.rc:72
msgid "Property cannot have both accessors and a value"
msgstr ""
#: ../../include/wine/wine_common_ver.rc:129 #: ../../include/wine/wine_common_ver.rc:129
msgid "Wine kernel DLL" msgid "Wine kernel DLL"
msgstr "" msgstr ""
......
...@@ -3725,6 +3725,24 @@ msgstr "Array længde skal være et endeligt positivt heltal" ...@@ -3725,6 +3725,24 @@ msgstr "Array længde skal være et endeligt positivt heltal"
msgid "Array object expected" msgid "Array object expected"
msgstr "Array objekt forventet" msgstr "Array objekt forventet"
#: jscript.rc:69
msgid ""
"'writable' attribute on the property descriptor cannot be set to 'true' on "
"this object"
msgstr ""
#: jscript.rc:70
msgid "Cannot redefine non-configurable property '|'"
msgstr ""
#: jscript.rc:71
msgid "Cannot modify non-writable property '|'"
msgstr ""
#: jscript.rc:72
msgid "Property cannot have both accessors and a value"
msgstr ""
#: ../../include/wine/wine_common_ver.rc:129 #: ../../include/wine/wine_common_ver.rc:129
msgid "Wine kernel DLL" msgid "Wine kernel DLL"
msgstr "" msgstr ""
......
...@@ -3693,6 +3693,24 @@ msgstr "Array-Größe muss eine natürliche Zahl sein" ...@@ -3693,6 +3693,24 @@ msgstr "Array-Größe muss eine natürliche Zahl sein"
msgid "Array object expected" msgid "Array object expected"
msgstr "Array-Objekt erwartet" msgstr "Array-Objekt erwartet"
#: jscript.rc:69
msgid ""
"'writable' attribute on the property descriptor cannot be set to 'true' on "
"this object"
msgstr ""
#: jscript.rc:70
msgid "Cannot redefine non-configurable property '|'"
msgstr ""
#: jscript.rc:71
msgid "Cannot modify non-writable property '|'"
msgstr ""
#: jscript.rc:72
msgid "Property cannot have both accessors and a value"
msgstr ""
#: ../../include/wine/wine_common_ver.rc:129 #: ../../include/wine/wine_common_ver.rc:129
msgid "Wine kernel DLL" msgid "Wine kernel DLL"
msgstr "Wine-Kernel-DLL" msgstr "Wine-Kernel-DLL"
......
...@@ -3623,6 +3623,24 @@ msgstr "" ...@@ -3623,6 +3623,24 @@ msgstr ""
msgid "Array object expected" msgid "Array object expected"
msgstr "" msgstr ""
#: jscript.rc:69
msgid ""
"'writable' attribute on the property descriptor cannot be set to 'true' on "
"this object"
msgstr ""
#: jscript.rc:70
msgid "Cannot redefine non-configurable property '|'"
msgstr ""
#: jscript.rc:71
msgid "Cannot modify non-writable property '|'"
msgstr ""
#: jscript.rc:72
msgid "Property cannot have both accessors and a value"
msgstr ""
#: ../../include/wine/wine_common_ver.rc:129 #: ../../include/wine/wine_common_ver.rc:129
msgid "Wine kernel DLL" msgid "Wine kernel DLL"
msgstr "" msgstr ""
......
...@@ -3685,6 +3685,26 @@ msgstr "Array length must be a finite positive integer" ...@@ -3685,6 +3685,26 @@ msgstr "Array length must be a finite positive integer"
msgid "Array object expected" msgid "Array object expected"
msgstr "Array object expected" msgstr "Array object expected"
#: jscript.rc:69
msgid ""
"'writable' attribute on the property descriptor cannot be set to 'true' on "
"this object"
msgstr ""
"'writable' attribute on the property descriptor cannot be set to 'true' on "
"this object"
#: jscript.rc:70
msgid "Cannot redefine non-configurable property '|'"
msgstr "Cannot redefine non-configurable property '|'"
#: jscript.rc:71
msgid "Cannot modify non-writable property '|'"
msgstr "Cannot modify non-writable property '|'"
#: jscript.rc:72
msgid "Property cannot have both accessors and a value"
msgstr "Property cannot have both accessors and a value"
#: ../../include/wine/wine_common_ver.rc:129 #: ../../include/wine/wine_common_ver.rc:129
msgid "Wine kernel DLL" msgid "Wine kernel DLL"
msgstr "Wine kernel DLL" msgstr "Wine kernel DLL"
......
...@@ -3685,6 +3685,26 @@ msgstr "Array length must be a finite positive integer" ...@@ -3685,6 +3685,26 @@ msgstr "Array length must be a finite positive integer"
msgid "Array object expected" msgid "Array object expected"
msgstr "Array object expected" msgstr "Array object expected"
#: jscript.rc:69
msgid ""
"'writable' attribute on the property descriptor cannot be set to 'true' on "
"this object"
msgstr ""
"'writable' attribute on the property descriptor cannot be set to 'true' on "
"this object"
#: jscript.rc:70
msgid "Cannot redefine non-configurable property '|'"
msgstr "Cannot redefine non-configurable property '|'"
#: jscript.rc:71
msgid "Cannot modify non-writable property '|'"
msgstr "Cannot modify non-writable property '|'"
#: jscript.rc:72
msgid "Property cannot have both accessors and a value"
msgstr "Property cannot have both accessors and a value"
#: ../../include/wine/wine_common_ver.rc:129 #: ../../include/wine/wine_common_ver.rc:129
msgid "Wine kernel DLL" msgid "Wine kernel DLL"
msgstr "Wine kernel DLL" msgstr "Wine kernel DLL"
......
...@@ -3607,6 +3607,24 @@ msgstr "" ...@@ -3607,6 +3607,24 @@ msgstr ""
msgid "Array object expected" msgid "Array object expected"
msgstr "" msgstr ""
#: jscript.rc:69
msgid ""
"'writable' attribute on the property descriptor cannot be set to 'true' on "
"this object"
msgstr ""
#: jscript.rc:70
msgid "Cannot redefine non-configurable property '|'"
msgstr ""
#: jscript.rc:71
msgid "Cannot modify non-writable property '|'"
msgstr ""
#: jscript.rc:72
msgid "Property cannot have both accessors and a value"
msgstr ""
#: ../../include/wine/wine_common_ver.rc:129 #: ../../include/wine/wine_common_ver.rc:129
msgid "Wine kernel DLL" msgid "Wine kernel DLL"
msgstr "" msgstr ""
......
...@@ -3734,6 +3734,24 @@ msgstr "La longitud del array debe ser un entero positivo finito" ...@@ -3734,6 +3734,24 @@ msgstr "La longitud del array debe ser un entero positivo finito"
msgid "Array object expected" msgid "Array object expected"
msgstr "Objeto array esperado" msgstr "Objeto array esperado"
#: jscript.rc:69
msgid ""
"'writable' attribute on the property descriptor cannot be set to 'true' on "
"this object"
msgstr ""
#: jscript.rc:70
msgid "Cannot redefine non-configurable property '|'"
msgstr ""
#: jscript.rc:71
msgid "Cannot modify non-writable property '|'"
msgstr ""
#: jscript.rc:72
msgid "Property cannot have both accessors and a value"
msgstr ""
#: ../../include/wine/wine_common_ver.rc:129 #: ../../include/wine/wine_common_ver.rc:129
msgid "Wine kernel DLL" msgid "Wine kernel DLL"
msgstr "" msgstr ""
......
...@@ -3661,6 +3661,24 @@ msgstr "" ...@@ -3661,6 +3661,24 @@ msgstr ""
msgid "Array object expected" msgid "Array object expected"
msgstr "" msgstr ""
#: jscript.rc:69
msgid ""
"'writable' attribute on the property descriptor cannot be set to 'true' on "
"this object"
msgstr ""
#: jscript.rc:70
msgid "Cannot redefine non-configurable property '|'"
msgstr ""
#: jscript.rc:71
msgid "Cannot modify non-writable property '|'"
msgstr ""
#: jscript.rc:72
msgid "Property cannot have both accessors and a value"
msgstr ""
#: ../../include/wine/wine_common_ver.rc:129 #: ../../include/wine/wine_common_ver.rc:129
msgid "Wine kernel DLL" msgid "Wine kernel DLL"
msgstr "" msgstr ""
......
...@@ -3679,6 +3679,24 @@ msgstr "Taulukon pituuden täytyy olla positiivinen kokonaisluku" ...@@ -3679,6 +3679,24 @@ msgstr "Taulukon pituuden täytyy olla positiivinen kokonaisluku"
msgid "Array object expected" msgid "Array object expected"
msgstr "Odotettiin taulukkoa" msgstr "Odotettiin taulukkoa"
#: jscript.rc:69
msgid ""
"'writable' attribute on the property descriptor cannot be set to 'true' on "
"this object"
msgstr ""
#: jscript.rc:70
msgid "Cannot redefine non-configurable property '|'"
msgstr ""
#: jscript.rc:71
msgid "Cannot modify non-writable property '|'"
msgstr ""
#: jscript.rc:72
msgid "Property cannot have both accessors and a value"
msgstr ""
#: ../../include/wine/wine_common_ver.rc:129 #: ../../include/wine/wine_common_ver.rc:129
msgid "Wine kernel DLL" msgid "Wine kernel DLL"
msgstr "Winen ydin-DLL" msgstr "Winen ydin-DLL"
......
...@@ -3709,6 +3709,24 @@ msgstr "La longueur d'un tableau doit être un entier positif" ...@@ -3709,6 +3709,24 @@ msgstr "La longueur d'un tableau doit être un entier positif"
msgid "Array object expected" msgid "Array object expected"
msgstr "Objet tableau attendu" msgstr "Objet tableau attendu"
#: jscript.rc:69
msgid ""
"'writable' attribute on the property descriptor cannot be set to 'true' on "
"this object"
msgstr ""
#: jscript.rc:70
msgid "Cannot redefine non-configurable property '|'"
msgstr ""
#: jscript.rc:71
msgid "Cannot modify non-writable property '|'"
msgstr ""
#: jscript.rc:72
msgid "Property cannot have both accessors and a value"
msgstr ""
#: ../../include/wine/wine_common_ver.rc:129 #: ../../include/wine/wine_common_ver.rc:129
msgid "Wine kernel DLL" msgid "Wine kernel DLL"
msgstr "" msgstr ""
......
...@@ -3695,6 +3695,24 @@ msgstr "" ...@@ -3695,6 +3695,24 @@ msgstr ""
msgid "Array object expected" msgid "Array object expected"
msgstr "" msgstr ""
#: jscript.rc:69
msgid ""
"'writable' attribute on the property descriptor cannot be set to 'true' on "
"this object"
msgstr ""
#: jscript.rc:70
msgid "Cannot redefine non-configurable property '|'"
msgstr ""
#: jscript.rc:71
msgid "Cannot modify non-writable property '|'"
msgstr ""
#: jscript.rc:72
msgid "Property cannot have both accessors and a value"
msgstr ""
#: ../../include/wine/wine_common_ver.rc:129 #: ../../include/wine/wine_common_ver.rc:129
msgid "Wine kernel DLL" msgid "Wine kernel DLL"
msgstr "" msgstr ""
......
...@@ -3594,6 +3594,24 @@ msgstr "" ...@@ -3594,6 +3594,24 @@ msgstr ""
msgid "Array object expected" msgid "Array object expected"
msgstr "" msgstr ""
#: jscript.rc:69
msgid ""
"'writable' attribute on the property descriptor cannot be set to 'true' on "
"this object"
msgstr ""
#: jscript.rc:70
msgid "Cannot redefine non-configurable property '|'"
msgstr ""
#: jscript.rc:71
msgid "Cannot modify non-writable property '|'"
msgstr ""
#: jscript.rc:72
msgid "Property cannot have both accessors and a value"
msgstr ""
#: ../../include/wine/wine_common_ver.rc:129 #: ../../include/wine/wine_common_ver.rc:129
msgid "Wine kernel DLL" msgid "Wine kernel DLL"
msgstr "" msgstr ""
......
...@@ -3689,6 +3689,24 @@ msgstr "Duljina niza treba biti konačan prirodan broj" ...@@ -3689,6 +3689,24 @@ msgstr "Duljina niza treba biti konačan prirodan broj"
msgid "Array object expected" msgid "Array object expected"
msgstr "Očekivan niz objekata" msgstr "Očekivan niz objekata"
#: jscript.rc:69
msgid ""
"'writable' attribute on the property descriptor cannot be set to 'true' on "
"this object"
msgstr ""
#: jscript.rc:70
msgid "Cannot redefine non-configurable property '|'"
msgstr ""
#: jscript.rc:71
msgid "Cannot modify non-writable property '|'"
msgstr ""
#: jscript.rc:72
msgid "Property cannot have both accessors and a value"
msgstr ""
#: ../../include/wine/wine_common_ver.rc:129 #: ../../include/wine/wine_common_ver.rc:129
msgid "Wine kernel DLL" msgid "Wine kernel DLL"
msgstr "" msgstr ""
......
...@@ -3743,6 +3743,24 @@ msgstr "A tömb hosszának egy véges pozitív egész számnak kell lennie" ...@@ -3743,6 +3743,24 @@ msgstr "A tömb hosszának egy véges pozitív egész számnak kell lennie"
msgid "Array object expected" msgid "Array object expected"
msgstr "Tömb objektumot vártam" msgstr "Tömb objektumot vártam"
#: jscript.rc:69
msgid ""
"'writable' attribute on the property descriptor cannot be set to 'true' on "
"this object"
msgstr ""
#: jscript.rc:70
msgid "Cannot redefine non-configurable property '|'"
msgstr ""
#: jscript.rc:71
msgid "Cannot modify non-writable property '|'"
msgstr ""
#: jscript.rc:72
msgid "Property cannot have both accessors and a value"
msgstr ""
#: ../../include/wine/wine_common_ver.rc:129 #: ../../include/wine/wine_common_ver.rc:129
msgid "Wine kernel DLL" msgid "Wine kernel DLL"
msgstr "" msgstr ""
......
...@@ -3751,6 +3751,24 @@ msgstr "La lunghezza dell'array deve essere un intero finito e positivo" ...@@ -3751,6 +3751,24 @@ msgstr "La lunghezza dell'array deve essere un intero finito e positivo"
msgid "Array object expected" msgid "Array object expected"
msgstr "Previsto un oggetto array" msgstr "Previsto un oggetto array"
#: jscript.rc:69
msgid ""
"'writable' attribute on the property descriptor cannot be set to 'true' on "
"this object"
msgstr ""
#: jscript.rc:70
msgid "Cannot redefine non-configurable property '|'"
msgstr ""
#: jscript.rc:71
msgid "Cannot modify non-writable property '|'"
msgstr ""
#: jscript.rc:72
msgid "Property cannot have both accessors and a value"
msgstr ""
#: ../../include/wine/wine_common_ver.rc:129 #: ../../include/wine/wine_common_ver.rc:129
msgid "Wine kernel DLL" msgid "Wine kernel DLL"
msgstr "" msgstr ""
......
...@@ -3677,6 +3677,24 @@ msgstr "配列の長さは有限の正整数でなければなりません" ...@@ -3677,6 +3677,24 @@ msgstr "配列の長さは有限の正整数でなければなりません"
msgid "Array object expected" msgid "Array object expected"
msgstr "配列オブジェクトを期待していました" msgstr "配列オブジェクトを期待していました"
#: jscript.rc:69
msgid ""
"'writable' attribute on the property descriptor cannot be set to 'true' on "
"this object"
msgstr ""
#: jscript.rc:70
msgid "Cannot redefine non-configurable property '|'"
msgstr ""
#: jscript.rc:71
msgid "Cannot modify non-writable property '|'"
msgstr ""
#: jscript.rc:72
msgid "Property cannot have both accessors and a value"
msgstr ""
#: ../../include/wine/wine_common_ver.rc:129 #: ../../include/wine/wine_common_ver.rc:129
msgid "Wine kernel DLL" msgid "Wine kernel DLL"
msgstr "" msgstr ""
......
...@@ -3692,6 +3692,24 @@ msgstr "배열 길이는 반드시 한정된 양의 정수이어야 함" ...@@ -3692,6 +3692,24 @@ msgstr "배열 길이는 반드시 한정된 양의 정수이어야 함"
msgid "Array object expected" msgid "Array object expected"
msgstr "배열 객체가 필요함" msgstr "배열 객체가 필요함"
#: jscript.rc:69
msgid ""
"'writable' attribute on the property descriptor cannot be set to 'true' on "
"this object"
msgstr ""
#: jscript.rc:70
msgid "Cannot redefine non-configurable property '|'"
msgstr ""
#: jscript.rc:71
msgid "Cannot modify non-writable property '|'"
msgstr ""
#: jscript.rc:72
msgid "Property cannot have both accessors and a value"
msgstr ""
#: ../../include/wine/wine_common_ver.rc:129 #: ../../include/wine/wine_common_ver.rc:129
msgid "Wine kernel DLL" msgid "Wine kernel DLL"
msgstr "" msgstr ""
......
...@@ -3688,6 +3688,24 @@ msgstr "Masyvo dydis turi būti teigiamas sveikasis skaičius" ...@@ -3688,6 +3688,24 @@ msgstr "Masyvo dydis turi būti teigiamas sveikasis skaičius"
msgid "Array object expected" msgid "Array object expected"
msgstr "Tikėtasi masyvo objekto" msgstr "Tikėtasi masyvo objekto"
#: jscript.rc:69
msgid ""
"'writable' attribute on the property descriptor cannot be set to 'true' on "
"this object"
msgstr ""
#: jscript.rc:70
msgid "Cannot redefine non-configurable property '|'"
msgstr ""
#: jscript.rc:71
msgid "Cannot modify non-writable property '|'"
msgstr ""
#: jscript.rc:72
msgid "Property cannot have both accessors and a value"
msgstr ""
#: ../../include/wine/wine_common_ver.rc:129 #: ../../include/wine/wine_common_ver.rc:129
msgid "Wine kernel DLL" msgid "Wine kernel DLL"
msgstr "Wine branduolio DLL" msgstr "Wine branduolio DLL"
......
...@@ -3594,6 +3594,24 @@ msgstr "" ...@@ -3594,6 +3594,24 @@ msgstr ""
msgid "Array object expected" msgid "Array object expected"
msgstr "" msgstr ""
#: jscript.rc:69
msgid ""
"'writable' attribute on the property descriptor cannot be set to 'true' on "
"this object"
msgstr ""
#: jscript.rc:70
msgid "Cannot redefine non-configurable property '|'"
msgstr ""
#: jscript.rc:71
msgid "Cannot modify non-writable property '|'"
msgstr ""
#: jscript.rc:72
msgid "Property cannot have both accessors and a value"
msgstr ""
#: ../../include/wine/wine_common_ver.rc:129 #: ../../include/wine/wine_common_ver.rc:129
msgid "Wine kernel DLL" msgid "Wine kernel DLL"
msgstr "" msgstr ""
......
...@@ -3691,6 +3691,24 @@ msgstr "Rekkens lengde må være et endelig, positivt tall" ...@@ -3691,6 +3691,24 @@ msgstr "Rekkens lengde må være et endelig, positivt tall"
msgid "Array object expected" msgid "Array object expected"
msgstr "Forventet rekke-objekt" msgstr "Forventet rekke-objekt"
#: jscript.rc:69
msgid ""
"'writable' attribute on the property descriptor cannot be set to 'true' on "
"this object"
msgstr ""
#: jscript.rc:70
msgid "Cannot redefine non-configurable property '|'"
msgstr ""
#: jscript.rc:71
msgid "Cannot modify non-writable property '|'"
msgstr ""
#: jscript.rc:72
msgid "Property cannot have both accessors and a value"
msgstr ""
#: ../../include/wine/wine_common_ver.rc:129 #: ../../include/wine/wine_common_ver.rc:129
msgid "Wine kernel DLL" msgid "Wine kernel DLL"
msgstr "Wine kjerne-DLL" msgstr "Wine kjerne-DLL"
......
...@@ -3724,6 +3724,24 @@ msgstr "Array lengte moet een eindig, positief geheel getal zijn" ...@@ -3724,6 +3724,24 @@ msgstr "Array lengte moet een eindig, positief geheel getal zijn"
msgid "Array object expected" msgid "Array object expected"
msgstr "Array object verwacht" msgstr "Array object verwacht"
#: jscript.rc:69
msgid ""
"'writable' attribute on the property descriptor cannot be set to 'true' on "
"this object"
msgstr ""
#: jscript.rc:70
msgid "Cannot redefine non-configurable property '|'"
msgstr ""
#: jscript.rc:71
msgid "Cannot modify non-writable property '|'"
msgstr ""
#: jscript.rc:72
msgid "Property cannot have both accessors and a value"
msgstr ""
#: ../../include/wine/wine_common_ver.rc:129 #: ../../include/wine/wine_common_ver.rc:129
msgid "Wine kernel DLL" msgid "Wine kernel DLL"
msgstr "" msgstr ""
......
...@@ -3594,6 +3594,24 @@ msgstr "" ...@@ -3594,6 +3594,24 @@ msgstr ""
msgid "Array object expected" msgid "Array object expected"
msgstr "" msgstr ""
#: jscript.rc:69
msgid ""
"'writable' attribute on the property descriptor cannot be set to 'true' on "
"this object"
msgstr ""
#: jscript.rc:70
msgid "Cannot redefine non-configurable property '|'"
msgstr ""
#: jscript.rc:71
msgid "Cannot modify non-writable property '|'"
msgstr ""
#: jscript.rc:72
msgid "Property cannot have both accessors and a value"
msgstr ""
#: ../../include/wine/wine_common_ver.rc:129 #: ../../include/wine/wine_common_ver.rc:129
msgid "Wine kernel DLL" msgid "Wine kernel DLL"
msgstr "" msgstr ""
......
...@@ -3594,6 +3594,24 @@ msgstr "" ...@@ -3594,6 +3594,24 @@ msgstr ""
msgid "Array object expected" msgid "Array object expected"
msgstr "" msgstr ""
#: jscript.rc:69
msgid ""
"'writable' attribute on the property descriptor cannot be set to 'true' on "
"this object"
msgstr ""
#: jscript.rc:70
msgid "Cannot redefine non-configurable property '|'"
msgstr ""
#: jscript.rc:71
msgid "Cannot modify non-writable property '|'"
msgstr ""
#: jscript.rc:72
msgid "Property cannot have both accessors and a value"
msgstr ""
#: ../../include/wine/wine_common_ver.rc:129 #: ../../include/wine/wine_common_ver.rc:129
msgid "Wine kernel DLL" msgid "Wine kernel DLL"
msgstr "" msgstr ""
......
...@@ -3703,6 +3703,24 @@ msgstr "Długość tablicy musi być skończoną dodatnią liczbą stałą" ...@@ -3703,6 +3703,24 @@ msgstr "Długość tablicy musi być skończoną dodatnią liczbą stałą"
msgid "Array object expected" msgid "Array object expected"
msgstr "Oczekiwany obiekt tablicowy" msgstr "Oczekiwany obiekt tablicowy"
#: jscript.rc:69
msgid ""
"'writable' attribute on the property descriptor cannot be set to 'true' on "
"this object"
msgstr ""
#: jscript.rc:70
msgid "Cannot redefine non-configurable property '|'"
msgstr ""
#: jscript.rc:71
msgid "Cannot modify non-writable property '|'"
msgstr ""
#: jscript.rc:72
msgid "Property cannot have both accessors and a value"
msgstr ""
#: ../../include/wine/wine_common_ver.rc:129 #: ../../include/wine/wine_common_ver.rc:129
msgid "Wine kernel DLL" msgid "Wine kernel DLL"
msgstr "DLL jądra WINE" msgstr "DLL jądra WINE"
......
...@@ -3697,6 +3697,24 @@ msgstr "Tamanho do vetor tem que ser um inteiro finito positivo" ...@@ -3697,6 +3697,24 @@ msgstr "Tamanho do vetor tem que ser um inteiro finito positivo"
msgid "Array object expected" msgid "Array object expected"
msgstr "Objeto tipo vetor esperado" msgstr "Objeto tipo vetor esperado"
#: jscript.rc:69
msgid ""
"'writable' attribute on the property descriptor cannot be set to 'true' on "
"this object"
msgstr ""
#: jscript.rc:70
msgid "Cannot redefine non-configurable property '|'"
msgstr ""
#: jscript.rc:71
msgid "Cannot modify non-writable property '|'"
msgstr ""
#: jscript.rc:72
msgid "Property cannot have both accessors and a value"
msgstr ""
#: ../../include/wine/wine_common_ver.rc:129 #: ../../include/wine/wine_common_ver.rc:129
msgid "Wine kernel DLL" msgid "Wine kernel DLL"
msgstr "" msgstr ""
......
...@@ -3707,6 +3707,24 @@ msgstr "Tamanho do vector tem de ser um inteiro finito positivo" ...@@ -3707,6 +3707,24 @@ msgstr "Tamanho do vector tem de ser um inteiro finito positivo"
msgid "Array object expected" msgid "Array object expected"
msgstr "Objecto Array esperado" msgstr "Objecto Array esperado"
#: jscript.rc:69
msgid ""
"'writable' attribute on the property descriptor cannot be set to 'true' on "
"this object"
msgstr ""
#: jscript.rc:70
msgid "Cannot redefine non-configurable property '|'"
msgstr ""
#: jscript.rc:71
msgid "Cannot modify non-writable property '|'"
msgstr ""
#: jscript.rc:72
msgid "Property cannot have both accessors and a value"
msgstr ""
#: ../../include/wine/wine_common_ver.rc:129 #: ../../include/wine/wine_common_ver.rc:129
msgid "Wine kernel DLL" msgid "Wine kernel DLL"
msgstr "" msgstr ""
......
...@@ -3622,6 +3622,24 @@ msgstr "" ...@@ -3622,6 +3622,24 @@ msgstr ""
msgid "Array object expected" msgid "Array object expected"
msgstr "" msgstr ""
#: jscript.rc:69
msgid ""
"'writable' attribute on the property descriptor cannot be set to 'true' on "
"this object"
msgstr ""
#: jscript.rc:70
msgid "Cannot redefine non-configurable property '|'"
msgstr ""
#: jscript.rc:71
msgid "Cannot modify non-writable property '|'"
msgstr ""
#: jscript.rc:72
msgid "Property cannot have both accessors and a value"
msgstr ""
#: ../../include/wine/wine_common_ver.rc:129 #: ../../include/wine/wine_common_ver.rc:129
msgid "Wine kernel DLL" msgid "Wine kernel DLL"
msgstr "" msgstr ""
......
...@@ -3664,6 +3664,24 @@ msgstr "Lungimea unei matrice trebuie să fie un număr întreg pozitiv" ...@@ -3664,6 +3664,24 @@ msgstr "Lungimea unei matrice trebuie să fie un număr întreg pozitiv"
msgid "Array object expected" msgid "Array object expected"
msgstr "Se așteaptă un obiect matrice" msgstr "Se așteaptă un obiect matrice"
#: jscript.rc:69
msgid ""
"'writable' attribute on the property descriptor cannot be set to 'true' on "
"this object"
msgstr ""
#: jscript.rc:70
msgid "Cannot redefine non-configurable property '|'"
msgstr ""
#: jscript.rc:71
msgid "Cannot modify non-writable property '|'"
msgstr ""
#: jscript.rc:72
msgid "Property cannot have both accessors and a value"
msgstr ""
#: ../../include/wine/wine_common_ver.rc:129 #: ../../include/wine/wine_common_ver.rc:129
msgid "Wine kernel DLL" msgid "Wine kernel DLL"
msgstr "" msgstr ""
......
...@@ -3693,6 +3693,24 @@ msgstr "Длиной массива должно быть конечное по ...@@ -3693,6 +3693,24 @@ msgstr "Длиной массива должно быть конечное по
msgid "Array object expected" msgid "Array object expected"
msgstr "Ожидается объект типа «Array»" msgstr "Ожидается объект типа «Array»"
#: jscript.rc:69
msgid ""
"'writable' attribute on the property descriptor cannot be set to 'true' on "
"this object"
msgstr ""
#: jscript.rc:70
msgid "Cannot redefine non-configurable property '|'"
msgstr ""
#: jscript.rc:71
msgid "Cannot modify non-writable property '|'"
msgstr ""
#: jscript.rc:72
msgid "Property cannot have both accessors and a value"
msgstr ""
#: ../../include/wine/wine_common_ver.rc:129 #: ../../include/wine/wine_common_ver.rc:129
msgid "Wine kernel DLL" msgid "Wine kernel DLL"
msgstr "Библиотека ядра Wine" msgstr "Библиотека ядра Wine"
......
...@@ -3646,6 +3646,24 @@ msgstr "" ...@@ -3646,6 +3646,24 @@ msgstr ""
msgid "Array object expected" msgid "Array object expected"
msgstr "" msgstr ""
#: jscript.rc:69
msgid ""
"'writable' attribute on the property descriptor cannot be set to 'true' on "
"this object"
msgstr ""
#: jscript.rc:70
msgid "Cannot redefine non-configurable property '|'"
msgstr ""
#: jscript.rc:71
msgid "Cannot modify non-writable property '|'"
msgstr ""
#: jscript.rc:72
msgid "Property cannot have both accessors and a value"
msgstr ""
#: ../../include/wine/wine_common_ver.rc:129 #: ../../include/wine/wine_common_ver.rc:129
msgid "Wine kernel DLL" msgid "Wine kernel DLL"
msgstr "" msgstr ""
......
...@@ -3745,6 +3745,24 @@ msgstr "Dolžina polja mora bit pozitivno celo število" ...@@ -3745,6 +3745,24 @@ msgstr "Dolžina polja mora bit pozitivno celo število"
msgid "Array object expected" msgid "Array object expected"
msgstr "Pričakovan je bil predmet polja" msgstr "Pričakovan je bil predmet polja"
#: jscript.rc:69
msgid ""
"'writable' attribute on the property descriptor cannot be set to 'true' on "
"this object"
msgstr ""
#: jscript.rc:70
msgid "Cannot redefine non-configurable property '|'"
msgstr ""
#: jscript.rc:71
msgid "Cannot modify non-writable property '|'"
msgstr ""
#: jscript.rc:72
msgid "Property cannot have both accessors and a value"
msgstr ""
#: ../../include/wine/wine_common_ver.rc:129 #: ../../include/wine/wine_common_ver.rc:129
msgid "Wine kernel DLL" msgid "Wine kernel DLL"
msgstr "" msgstr ""
......
...@@ -3733,6 +3733,24 @@ msgstr "Низ дужине мора бити коначан позитиван ...@@ -3733,6 +3733,24 @@ msgstr "Низ дужине мора бити коначан позитиван
msgid "Array object expected" msgid "Array object expected"
msgstr "Очекивани низ објекта" msgstr "Очекивани низ објекта"
#: jscript.rc:69
msgid ""
"'writable' attribute on the property descriptor cannot be set to 'true' on "
"this object"
msgstr ""
#: jscript.rc:70
msgid "Cannot redefine non-configurable property '|'"
msgstr ""
#: jscript.rc:71
msgid "Cannot modify non-writable property '|'"
msgstr ""
#: jscript.rc:72
msgid "Property cannot have both accessors and a value"
msgstr ""
#: ../../include/wine/wine_common_ver.rc:129 #: ../../include/wine/wine_common_ver.rc:129
msgid "Wine kernel DLL" msgid "Wine kernel DLL"
msgstr "" msgstr ""
......
...@@ -3810,6 +3810,24 @@ msgstr "Niz dužine mora biti konačan pozitivan ceo broj" ...@@ -3810,6 +3810,24 @@ msgstr "Niz dužine mora biti konačan pozitivan ceo broj"
msgid "Array object expected" msgid "Array object expected"
msgstr "Očekivani niz objekta" msgstr "Očekivani niz objekta"
#: jscript.rc:69
msgid ""
"'writable' attribute on the property descriptor cannot be set to 'true' on "
"this object"
msgstr ""
#: jscript.rc:70
msgid "Cannot redefine non-configurable property '|'"
msgstr ""
#: jscript.rc:71
msgid "Cannot modify non-writable property '|'"
msgstr ""
#: jscript.rc:72
msgid "Property cannot have both accessors and a value"
msgstr ""
#: ../../include/wine/wine_common_ver.rc:129 #: ../../include/wine/wine_common_ver.rc:129
msgid "Wine kernel DLL" msgid "Wine kernel DLL"
msgstr "" msgstr ""
......
...@@ -3686,6 +3686,24 @@ msgstr "Array-längd måste vara ett positivt ändligt heltal" ...@@ -3686,6 +3686,24 @@ msgstr "Array-längd måste vara ett positivt ändligt heltal"
msgid "Array object expected" msgid "Array object expected"
msgstr "Array-objekt förväntades" msgstr "Array-objekt förväntades"
#: jscript.rc:69
msgid ""
"'writable' attribute on the property descriptor cannot be set to 'true' on "
"this object"
msgstr ""
#: jscript.rc:70
msgid "Cannot redefine non-configurable property '|'"
msgstr ""
#: jscript.rc:71
msgid "Cannot modify non-writable property '|'"
msgstr ""
#: jscript.rc:72
msgid "Property cannot have both accessors and a value"
msgstr ""
#: ../../include/wine/wine_common_ver.rc:129 #: ../../include/wine/wine_common_ver.rc:129
msgid "Wine kernel DLL" msgid "Wine kernel DLL"
msgstr "Wine-kärn-DLL" msgstr "Wine-kärn-DLL"
......
...@@ -3594,6 +3594,24 @@ msgstr "" ...@@ -3594,6 +3594,24 @@ msgstr ""
msgid "Array object expected" msgid "Array object expected"
msgstr "" msgstr ""
#: jscript.rc:69
msgid ""
"'writable' attribute on the property descriptor cannot be set to 'true' on "
"this object"
msgstr ""
#: jscript.rc:70
msgid "Cannot redefine non-configurable property '|'"
msgstr ""
#: jscript.rc:71
msgid "Cannot modify non-writable property '|'"
msgstr ""
#: jscript.rc:72
msgid "Property cannot have both accessors and a value"
msgstr ""
#: ../../include/wine/wine_common_ver.rc:129 #: ../../include/wine/wine_common_ver.rc:129
msgid "Wine kernel DLL" msgid "Wine kernel DLL"
msgstr "" msgstr ""
......
...@@ -3641,6 +3641,24 @@ msgstr "" ...@@ -3641,6 +3641,24 @@ msgstr ""
msgid "Array object expected" msgid "Array object expected"
msgstr "" msgstr ""
#: jscript.rc:69
msgid ""
"'writable' attribute on the property descriptor cannot be set to 'true' on "
"this object"
msgstr ""
#: jscript.rc:70
msgid "Cannot redefine non-configurable property '|'"
msgstr ""
#: jscript.rc:71
msgid "Cannot modify non-writable property '|'"
msgstr ""
#: jscript.rc:72
msgid "Property cannot have both accessors and a value"
msgstr ""
#: ../../include/wine/wine_common_ver.rc:129 #: ../../include/wine/wine_common_ver.rc:129
msgid "Wine kernel DLL" msgid "Wine kernel DLL"
msgstr "" msgstr ""
......
...@@ -3686,6 +3686,24 @@ msgstr "Dizi adı pozitif sonlu bir sayı olmalıdır" ...@@ -3686,6 +3686,24 @@ msgstr "Dizi adı pozitif sonlu bir sayı olmalıdır"
msgid "Array object expected" msgid "Array object expected"
msgstr "Beklenen dizi nesnesi" msgstr "Beklenen dizi nesnesi"
#: jscript.rc:69
msgid ""
"'writable' attribute on the property descriptor cannot be set to 'true' on "
"this object"
msgstr ""
#: jscript.rc:70
msgid "Cannot redefine non-configurable property '|'"
msgstr ""
#: jscript.rc:71
msgid "Cannot modify non-writable property '|'"
msgstr ""
#: jscript.rc:72
msgid "Property cannot have both accessors and a value"
msgstr ""
#: ../../include/wine/wine_common_ver.rc:129 #: ../../include/wine/wine_common_ver.rc:129
msgid "Wine kernel DLL" msgid "Wine kernel DLL"
msgstr "Wine çekirdek DLL'si" msgstr "Wine çekirdek DLL'si"
......
...@@ -3695,6 +3695,24 @@ msgstr "Довжиною масиву повинне бути скінченне ...@@ -3695,6 +3695,24 @@ msgstr "Довжиною масиву повинне бути скінченне
msgid "Array object expected" msgid "Array object expected"
msgstr "Очікується об'єкт Array" msgstr "Очікується об'єкт Array"
#: jscript.rc:69
msgid ""
"'writable' attribute on the property descriptor cannot be set to 'true' on "
"this object"
msgstr ""
#: jscript.rc:70
msgid "Cannot redefine non-configurable property '|'"
msgstr ""
#: jscript.rc:71
msgid "Cannot modify non-writable property '|'"
msgstr ""
#: jscript.rc:72
msgid "Property cannot have both accessors and a value"
msgstr ""
#: ../../include/wine/wine_common_ver.rc:129 #: ../../include/wine/wine_common_ver.rc:129
msgid "Wine kernel DLL" msgid "Wine kernel DLL"
msgstr "Бібліотека ядра Wine" msgstr "Бібліотека ядра Wine"
......
...@@ -3650,6 +3650,24 @@ msgstr "" ...@@ -3650,6 +3650,24 @@ msgstr ""
msgid "Array object expected" msgid "Array object expected"
msgstr "" msgstr ""
#: jscript.rc:69
msgid ""
"'writable' attribute on the property descriptor cannot be set to 'true' on "
"this object"
msgstr ""
#: jscript.rc:70
msgid "Cannot redefine non-configurable property '|'"
msgstr ""
#: jscript.rc:71
msgid "Cannot modify non-writable property '|'"
msgstr ""
#: jscript.rc:72
msgid "Property cannot have both accessors and a value"
msgstr ""
#: ../../include/wine/wine_common_ver.rc:129 #: ../../include/wine/wine_common_ver.rc:129
msgid "Wine kernel DLL" msgid "Wine kernel DLL"
msgstr "" msgstr ""
......
...@@ -3554,6 +3554,24 @@ msgstr "" ...@@ -3554,6 +3554,24 @@ msgstr ""
msgid "Array object expected" msgid "Array object expected"
msgstr "" msgstr ""
#: jscript.rc:69
msgid ""
"'writable' attribute on the property descriptor cannot be set to 'true' on "
"this object"
msgstr ""
#: jscript.rc:70
msgid "Cannot redefine non-configurable property '|'"
msgstr ""
#: jscript.rc:71
msgid "Cannot modify non-writable property '|'"
msgstr ""
#: jscript.rc:72
msgid "Property cannot have both accessors and a value"
msgstr ""
#: ../../include/wine/wine_common_ver.rc:129 #: ../../include/wine/wine_common_ver.rc:129
msgid "Wine kernel DLL" msgid "Wine kernel DLL"
msgstr "" msgstr ""
......
...@@ -3632,6 +3632,24 @@ msgstr "数组的长度必须为一个有限正整数" ...@@ -3632,6 +3632,24 @@ msgstr "数组的长度必须为一个有限正整数"
msgid "Array object expected" msgid "Array object expected"
msgstr "期望得到 Array 对象" msgstr "期望得到 Array 对象"
#: jscript.rc:69
msgid ""
"'writable' attribute on the property descriptor cannot be set to 'true' on "
"this object"
msgstr ""
#: jscript.rc:70
msgid "Cannot redefine non-configurable property '|'"
msgstr ""
#: jscript.rc:71
msgid "Cannot modify non-writable property '|'"
msgstr ""
#: jscript.rc:72
msgid "Property cannot have both accessors and a value"
msgstr ""
#: ../../include/wine/wine_common_ver.rc:129 #: ../../include/wine/wine_common_ver.rc:129
msgid "Wine kernel DLL" msgid "Wine kernel DLL"
msgstr "Wine kernel DLL" msgstr "Wine kernel DLL"
......
...@@ -3654,6 +3654,24 @@ msgstr "陣列長度必須是有限正整數" ...@@ -3654,6 +3654,24 @@ msgstr "陣列長度必須是有限正整數"
msgid "Array object expected" msgid "Array object expected"
msgstr "預期為陣列物件" msgstr "預期為陣列物件"
#: jscript.rc:69
msgid ""
"'writable' attribute on the property descriptor cannot be set to 'true' on "
"this object"
msgstr ""
#: jscript.rc:70
msgid "Cannot redefine non-configurable property '|'"
msgstr ""
#: jscript.rc:71
msgid "Cannot modify non-writable property '|'"
msgstr ""
#: jscript.rc:72
msgid "Property cannot have both accessors and a value"
msgstr ""
#: ../../include/wine/wine_common_ver.rc:129 #: ../../include/wine/wine_common_ver.rc:129
msgid "Wine kernel DLL" msgid "Wine kernel DLL"
msgstr "" msgstr ""
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment