mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-05-15 12:51:30 -05:00
update check for object literal properties according to ECMA spec
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
==== tests/cases/compiler/duplicateObjectLiteralProperty.ts (8 errors) ====
|
||||
==== tests/cases/compiler/duplicateObjectLiteralProperty.ts (9 errors) ====
|
||||
var x = {
|
||||
a: 1,
|
||||
b: true, // OK
|
||||
@@ -30,6 +30,8 @@
|
||||
~
|
||||
!!! Accessors are only available when targeting ECMAScript 5 and higher.
|
||||
~
|
||||
!!! An object literal cannot have multiple get/set accessors with the same name.
|
||||
~
|
||||
!!! Duplicate identifier 'a'.
|
||||
};
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
x: 1,
|
||||
x: 2
|
||||
~
|
||||
!!! Object literal cannot contain more than one property with the same name in the strict mode.
|
||||
!!! An object literal cannot have multiple properties with the same name in strict mode.
|
||||
~
|
||||
!!! Duplicate identifier 'x'.
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
==== tests/cases/conformance/expressions/objectLiterals/objectLiteralErrors.ts (41 errors) ====
|
||||
==== tests/cases/conformance/expressions/objectLiterals/objectLiteralErrors.ts (59 errors) ====
|
||||
|
||||
// Multiple properties with the same name
|
||||
var e1 = { a: 0, a: 0 };
|
||||
@@ -59,57 +59,93 @@
|
||||
// Accessor and property with the same name
|
||||
var f1 = { a: 0, get a() { return 0; } };
|
||||
~
|
||||
!!! An object literal cannot have property and accessor with the same name.
|
||||
~
|
||||
!!! Duplicate identifier 'a'.
|
||||
var f2 = { a: '', get a() { return ''; } };
|
||||
~
|
||||
!!! An object literal cannot have property and accessor with the same name.
|
||||
~
|
||||
!!! Duplicate identifier 'a'.
|
||||
var f3 = { a: 0, get a() { return ''; } };
|
||||
~
|
||||
!!! An object literal cannot have property and accessor with the same name.
|
||||
~
|
||||
!!! Duplicate identifier 'a'.
|
||||
var f4 = { a: true, get a() { return false; } };
|
||||
~
|
||||
!!! An object literal cannot have property and accessor with the same name.
|
||||
~
|
||||
!!! Duplicate identifier 'a'.
|
||||
var f5 = { a: {}, get a() { return {}; } };
|
||||
~
|
||||
!!! An object literal cannot have property and accessor with the same name.
|
||||
~
|
||||
!!! Duplicate identifier 'a'.
|
||||
var f6 = { a: 0, get 'a'() { return 0; } };
|
||||
~~~
|
||||
!!! An object literal cannot have property and accessor with the same name.
|
||||
~~~
|
||||
!!! Duplicate identifier ''a''.
|
||||
var f7 = { 'a': 0, get a() { return 0; } };
|
||||
~
|
||||
!!! An object literal cannot have property and accessor with the same name.
|
||||
~
|
||||
!!! Duplicate identifier 'a'.
|
||||
var f8 = { 'a': 0, get "a"() { return 0; } };
|
||||
~~~
|
||||
!!! An object literal cannot have property and accessor with the same name.
|
||||
~~~
|
||||
!!! Duplicate identifier '"a"'.
|
||||
var f9 = { 'a': 0, get 'a'() { return 0; } };
|
||||
~~~
|
||||
!!! An object literal cannot have property and accessor with the same name.
|
||||
~~~
|
||||
!!! Duplicate identifier ''a''.
|
||||
var f10 = { "a": 0, get 'a'() { return 0; } };
|
||||
~~~
|
||||
!!! An object literal cannot have property and accessor with the same name.
|
||||
~~~
|
||||
!!! Duplicate identifier ''a''.
|
||||
var f11 = { 1.0: 0, get '1'() { return 0; } };
|
||||
~~~
|
||||
!!! An object literal cannot have property and accessor with the same name.
|
||||
~~~
|
||||
!!! Duplicate identifier ''1''.
|
||||
var f12 = { 0: 0, get 0() { return 0; } };
|
||||
~
|
||||
!!! An object literal cannot have property and accessor with the same name.
|
||||
~
|
||||
!!! Duplicate identifier '0'.
|
||||
var f13 = { 0: 0, get 0() { return 0; } };
|
||||
~
|
||||
!!! An object literal cannot have property and accessor with the same name.
|
||||
~
|
||||
!!! Duplicate identifier '0'.
|
||||
var f14 = { 0: 0, get 0x0() { return 0; } };
|
||||
~~~
|
||||
!!! An object literal cannot have property and accessor with the same name.
|
||||
~~~
|
||||
!!! Duplicate identifier '0x0'.
|
||||
var f14 = { 0: 0, get 000() { return 0; } };
|
||||
~~~
|
||||
!!! An object literal cannot have property and accessor with the same name.
|
||||
~~~
|
||||
!!! Duplicate identifier '000'.
|
||||
var f15 = { "100": 0, get 1e2() { return 0; } };
|
||||
~~~
|
||||
!!! An object literal cannot have property and accessor with the same name.
|
||||
~~~
|
||||
!!! Duplicate identifier '1e2'.
|
||||
var f16 = { 0x20: 0, get 3.2e1() { return 0; } };
|
||||
~~~~~
|
||||
!!! An object literal cannot have property and accessor with the same name.
|
||||
~~~~~
|
||||
!!! Duplicate identifier '3.2e1'.
|
||||
var f17 = { a: 0, get b() { return 1; }, get a() { return 0; } };
|
||||
~
|
||||
!!! An object literal cannot have property and accessor with the same name.
|
||||
~
|
||||
!!! Duplicate identifier 'a'.
|
||||
|
||||
// Get and set accessor with mismatched type annotations
|
||||
|
||||
@@ -1,135 +0,0 @@
|
||||
//// [objectLiteralErrors.ts]
|
||||
|
||||
// Multiple properties with the same name
|
||||
var e1 = { a: 0, a: 0 };
|
||||
var e2 = { a: '', a: '' };
|
||||
var e3 = { a: 0, a: '' };
|
||||
var e4 = { a: true, a: false };
|
||||
var e5 = { a: {}, a: {} };
|
||||
var e6 = { a: 0, 'a': 0 };
|
||||
var e7 = { 'a': 0, a: 0 };
|
||||
var e8 = { 'a': 0, "a": 0 };
|
||||
var e9 = { 'a': 0, 'a': 0 };
|
||||
var e10 = { "a": 0, 'a': 0 };
|
||||
var e11 = { 1.0: 0, '1': 0 };
|
||||
var e12 = { 0: 0, 0: 0 };
|
||||
var e13 = { 0: 0, 0: 0 };
|
||||
var e14 = { 0: 0, 0x0: 0 };
|
||||
var e14 = { 0: 0, 000: 0 };
|
||||
var e15 = { "100": 0, 1e2: 0 };
|
||||
var e16 = { 0x20: 0, 3.2e1: 0 };
|
||||
var e17 = { a: 0, b: 1, a: 0 };
|
||||
|
||||
// Accessor and property with the same name
|
||||
var f1 = { a: 0, get a() { return 0; } };
|
||||
var f2 = { a: '', get a() { return ''; } };
|
||||
var f3 = { a: 0, get a() { return ''; } };
|
||||
var f4 = { a: true, get a() { return false; } };
|
||||
var f5 = { a: {}, get a() { return {}; } };
|
||||
var f6 = { a: 0, get 'a'() { return 0; } };
|
||||
var f7 = { 'a': 0, get a() { return 0; } };
|
||||
var f8 = { 'a': 0, get "a"() { return 0; } };
|
||||
var f9 = { 'a': 0, get 'a'() { return 0; } };
|
||||
var f10 = { "a": 0, get 'a'() { return 0; } };
|
||||
var f11 = { 1.0: 0, get '1'() { return 0; } };
|
||||
var f12 = { 0: 0, get 0() { return 0; } };
|
||||
var f13 = { 0: 0, get 0() { return 0; } };
|
||||
var f14 = { 0: 0, get 0x0() { return 0; } };
|
||||
var f14 = { 0: 0, get 000() { return 0; } };
|
||||
var f15 = { "100": 0, get 1e2() { return 0; } };
|
||||
var f16 = { 0x20: 0, get 3.2e1() { return 0; } };
|
||||
var f17 = { a: 0, get b() { return 1; }, get a() { return 0; } };
|
||||
|
||||
// Get and set accessor with mismatched type annotations
|
||||
var g1 = { get a(): number { return 4; }, set a(n: string) { } };
|
||||
var g2 = { get a() { return 4; }, set a(n: string) { } };
|
||||
var g3 = { get a(): number { return undefined; }, set a(n: string) { } };
|
||||
|
||||
|
||||
//// [objectLiteralErrors.js]
|
||||
var e1 = { a: 0, a: 0 };
|
||||
var e2 = { a: '', a: '' };
|
||||
var e3 = { a: 0, a: '' };
|
||||
var e4 = { a: true, a: false };
|
||||
var e5 = { a: {}, a: {} };
|
||||
var e6 = { a: 0, 'a': 0 };
|
||||
var e7 = { 'a': 0, a: 0 };
|
||||
var e8 = { 'a': 0, "a": 0 };
|
||||
var e9 = { 'a': 0, 'a': 0 };
|
||||
var e10 = { "a": 0, 'a': 0 };
|
||||
var e11 = { 1.0: 0, '1': 0 };
|
||||
var e12 = { 0: 0, 0: 0 };
|
||||
var e13 = { 0: 0, 0: 0 };
|
||||
var e14 = { 0: 0, 0x0: 0 };
|
||||
var e14 = { 0: 0, 000: 0 };
|
||||
var e15 = { "100": 0, 1e2: 0 };
|
||||
var e16 = { 0x20: 0, 3.2e1: 0 };
|
||||
var e17 = { a: 0, b: 1, a: 0 };
|
||||
var f1 = { a: 0, get a() {
|
||||
return 0;
|
||||
} };
|
||||
var f2 = { a: '', get a() {
|
||||
return '';
|
||||
} };
|
||||
var f3 = { a: 0, get a() {
|
||||
return '';
|
||||
} };
|
||||
var f4 = { a: true, get a() {
|
||||
return false;
|
||||
} };
|
||||
var f5 = { a: {}, get a() {
|
||||
return {};
|
||||
} };
|
||||
var f6 = { a: 0, get 'a'() {
|
||||
return 0;
|
||||
} };
|
||||
var f7 = { 'a': 0, get a() {
|
||||
return 0;
|
||||
} };
|
||||
var f8 = { 'a': 0, get "a"() {
|
||||
return 0;
|
||||
} };
|
||||
var f9 = { 'a': 0, get 'a'() {
|
||||
return 0;
|
||||
} };
|
||||
var f10 = { "a": 0, get 'a'() {
|
||||
return 0;
|
||||
} };
|
||||
var f11 = { 1.0: 0, get '1'() {
|
||||
return 0;
|
||||
} };
|
||||
var f12 = { 0: 0, get 0() {
|
||||
return 0;
|
||||
} };
|
||||
var f13 = { 0: 0, get 0() {
|
||||
return 0;
|
||||
} };
|
||||
var f14 = { 0: 0, get 0x0() {
|
||||
return 0;
|
||||
} };
|
||||
var f14 = { 0: 0, get 000() {
|
||||
return 0;
|
||||
} };
|
||||
var f15 = { "100": 0, get 1e2() {
|
||||
return 0;
|
||||
} };
|
||||
var f16 = { 0x20: 0, get 3.2e1() {
|
||||
return 0;
|
||||
} };
|
||||
var f17 = { a: 0, get b() {
|
||||
return 1;
|
||||
}, get a() {
|
||||
return 0;
|
||||
} };
|
||||
var g1 = { get a() {
|
||||
return 4;
|
||||
}, set a(n) {
|
||||
} };
|
||||
var g2 = { get a() {
|
||||
return 4;
|
||||
}, set a(n) {
|
||||
} };
|
||||
var g3 = { get a() {
|
||||
return undefined;
|
||||
}, set a(n) {
|
||||
} };
|
||||
@@ -1,9 +1,8 @@
|
||||
==== tests/cases/conformance/parser/ecmascript5/StrictMode/parserStrictMode14.ts (2 errors) ====
|
||||
"use strict";
|
||||
with (a) {
|
||||
~~~~~~~~~~
|
||||
~~~~
|
||||
!!! 'with' statements are not allowed in strict mode.
|
||||
~
|
||||
!!! Cannot find name 'a'.
|
||||
}
|
||||
~
|
||||
!!! 'with' statements are not allowed in strict mode.
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
==== tests/cases/conformance/classes/propertyMemberDeclarations/twoAccessorsWithSameName.ts (13 errors) ====
|
||||
==== tests/cases/conformance/classes/propertyMemberDeclarations/twoAccessorsWithSameName.ts (14 errors) ====
|
||||
class C {
|
||||
get x() { return 1; }
|
||||
~
|
||||
@@ -44,6 +44,8 @@
|
||||
~
|
||||
!!! Accessors are only available when targeting ECMAScript 5 and higher.
|
||||
~
|
||||
!!! An object literal cannot have multiple get/set accessors with the same name.
|
||||
~
|
||||
!!! Duplicate identifier 'x'.
|
||||
return 1;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user