From feba8fbbde2266f6affad052216726c8dc74dad8 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Thu, 16 Apr 2015 14:39:34 -0700 Subject: [PATCH 1/8] Alignment. --- src/compiler/types.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/compiler/types.ts b/src/compiler/types.ts index b3d2f7858ea..bc9a0f66f8d 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -389,7 +389,7 @@ module ts { export interface Identifier extends PrimaryExpression { text: string; // Text of identifier (with escapes converted to characters) - originalKeywordKind?: SyntaxKind; // Original syntaxKind which get set so that we can report an error later + originalKeywordKind?: SyntaxKind; // Original syntaxKind which get set so that we can report an error later } export interface QualifiedName extends Node { From c1c608eb1d6a5f29b989fca5c676a5004ab85b1c Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Thu, 16 Apr 2015 15:23:11 -0700 Subject: [PATCH 2/8] Added tests. --- .../destructuring/objectBindingPatternKeywordIdentifiers01.ts | 2 ++ .../destructuring/objectBindingPatternKeywordIdentifiers02.ts | 2 ++ .../destructuring/objectBindingPatternKeywordIdentifiers03.ts | 2 ++ .../destructuring/objectBindingPatternKeywordIdentifiers04.ts | 2 ++ .../destructuring/objectBindingPatternKeywordIdentifiers05.ts | 2 ++ .../destructuring/objectBindingPatternKeywordIdentifiers06.ts | 2 ++ 6 files changed, 12 insertions(+) create mode 100644 tests/cases/conformance/es6/destructuring/objectBindingPatternKeywordIdentifiers01.ts create mode 100644 tests/cases/conformance/es6/destructuring/objectBindingPatternKeywordIdentifiers02.ts create mode 100644 tests/cases/conformance/es6/destructuring/objectBindingPatternKeywordIdentifiers03.ts create mode 100644 tests/cases/conformance/es6/destructuring/objectBindingPatternKeywordIdentifiers04.ts create mode 100644 tests/cases/conformance/es6/destructuring/objectBindingPatternKeywordIdentifiers05.ts create mode 100644 tests/cases/conformance/es6/destructuring/objectBindingPatternKeywordIdentifiers06.ts diff --git a/tests/cases/conformance/es6/destructuring/objectBindingPatternKeywordIdentifiers01.ts b/tests/cases/conformance/es6/destructuring/objectBindingPatternKeywordIdentifiers01.ts new file mode 100644 index 00000000000..2c37f95efa0 --- /dev/null +++ b/tests/cases/conformance/es6/destructuring/objectBindingPatternKeywordIdentifiers01.ts @@ -0,0 +1,2 @@ + +var { while } = { while: 1 } \ No newline at end of file diff --git a/tests/cases/conformance/es6/destructuring/objectBindingPatternKeywordIdentifiers02.ts b/tests/cases/conformance/es6/destructuring/objectBindingPatternKeywordIdentifiers02.ts new file mode 100644 index 00000000000..dc1469c9b3a --- /dev/null +++ b/tests/cases/conformance/es6/destructuring/objectBindingPatternKeywordIdentifiers02.ts @@ -0,0 +1,2 @@ + +var { while: while } = { while: 1 } \ No newline at end of file diff --git a/tests/cases/conformance/es6/destructuring/objectBindingPatternKeywordIdentifiers03.ts b/tests/cases/conformance/es6/destructuring/objectBindingPatternKeywordIdentifiers03.ts new file mode 100644 index 00000000000..64bb2afdffb --- /dev/null +++ b/tests/cases/conformance/es6/destructuring/objectBindingPatternKeywordIdentifiers03.ts @@ -0,0 +1,2 @@ + +var { "while" } = { while: 1 } \ No newline at end of file diff --git a/tests/cases/conformance/es6/destructuring/objectBindingPatternKeywordIdentifiers04.ts b/tests/cases/conformance/es6/destructuring/objectBindingPatternKeywordIdentifiers04.ts new file mode 100644 index 00000000000..ab50bf3adde --- /dev/null +++ b/tests/cases/conformance/es6/destructuring/objectBindingPatternKeywordIdentifiers04.ts @@ -0,0 +1,2 @@ + +var { "while": while } = { while: 1 } \ No newline at end of file diff --git a/tests/cases/conformance/es6/destructuring/objectBindingPatternKeywordIdentifiers05.ts b/tests/cases/conformance/es6/destructuring/objectBindingPatternKeywordIdentifiers05.ts new file mode 100644 index 00000000000..908eef86c53 --- /dev/null +++ b/tests/cases/conformance/es6/destructuring/objectBindingPatternKeywordIdentifiers05.ts @@ -0,0 +1,2 @@ + +var { as } = { as: 1 } \ No newline at end of file diff --git a/tests/cases/conformance/es6/destructuring/objectBindingPatternKeywordIdentifiers06.ts b/tests/cases/conformance/es6/destructuring/objectBindingPatternKeywordIdentifiers06.ts new file mode 100644 index 00000000000..82beeebacc3 --- /dev/null +++ b/tests/cases/conformance/es6/destructuring/objectBindingPatternKeywordIdentifiers06.ts @@ -0,0 +1,2 @@ + +var { as: as } = { as: 1 } \ No newline at end of file From b0846d1a6b694d102434447356f0b04e0c0a63d7 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Thu, 16 Apr 2015 16:25:54 -0700 Subject: [PATCH 3/8] Accepted baselines. --- .../objectBindingPatternKeywordIdentifiers01.js | 6 ++++++ .../objectBindingPatternKeywordIdentifiers01.types | 8 ++++++++ .../objectBindingPatternKeywordIdentifiers02.errors.txt | 8 ++++++++ .../objectBindingPatternKeywordIdentifiers02.js | 6 ++++++ .../objectBindingPatternKeywordIdentifiers03.errors.txt | 8 ++++++++ .../objectBindingPatternKeywordIdentifiers03.js | 6 ++++++ .../objectBindingPatternKeywordIdentifiers04.errors.txt | 8 ++++++++ .../objectBindingPatternKeywordIdentifiers04.js | 6 ++++++ .../objectBindingPatternKeywordIdentifiers05.js | 6 ++++++ .../objectBindingPatternKeywordIdentifiers05.types | 8 ++++++++ .../objectBindingPatternKeywordIdentifiers06.js | 6 ++++++ .../objectBindingPatternKeywordIdentifiers06.types | 9 +++++++++ 12 files changed, 85 insertions(+) create mode 100644 tests/baselines/reference/objectBindingPatternKeywordIdentifiers01.js create mode 100644 tests/baselines/reference/objectBindingPatternKeywordIdentifiers01.types create mode 100644 tests/baselines/reference/objectBindingPatternKeywordIdentifiers02.errors.txt create mode 100644 tests/baselines/reference/objectBindingPatternKeywordIdentifiers02.js create mode 100644 tests/baselines/reference/objectBindingPatternKeywordIdentifiers03.errors.txt create mode 100644 tests/baselines/reference/objectBindingPatternKeywordIdentifiers03.js create mode 100644 tests/baselines/reference/objectBindingPatternKeywordIdentifiers04.errors.txt create mode 100644 tests/baselines/reference/objectBindingPatternKeywordIdentifiers04.js create mode 100644 tests/baselines/reference/objectBindingPatternKeywordIdentifiers05.js create mode 100644 tests/baselines/reference/objectBindingPatternKeywordIdentifiers05.types create mode 100644 tests/baselines/reference/objectBindingPatternKeywordIdentifiers06.js create mode 100644 tests/baselines/reference/objectBindingPatternKeywordIdentifiers06.types diff --git a/tests/baselines/reference/objectBindingPatternKeywordIdentifiers01.js b/tests/baselines/reference/objectBindingPatternKeywordIdentifiers01.js new file mode 100644 index 00000000000..6ee9c4e6550 --- /dev/null +++ b/tests/baselines/reference/objectBindingPatternKeywordIdentifiers01.js @@ -0,0 +1,6 @@ +//// [objectBindingPatternKeywordIdentifiers01.ts] + +var { while } = { while: 1 } + +//// [objectBindingPatternKeywordIdentifiers01.js] +var while = { while: 1 }.while; diff --git a/tests/baselines/reference/objectBindingPatternKeywordIdentifiers01.types b/tests/baselines/reference/objectBindingPatternKeywordIdentifiers01.types new file mode 100644 index 00000000000..89a0a0f0caa --- /dev/null +++ b/tests/baselines/reference/objectBindingPatternKeywordIdentifiers01.types @@ -0,0 +1,8 @@ +=== tests/cases/conformance/es6/destructuring/objectBindingPatternKeywordIdentifiers01.ts === + +var { while } = { while: 1 } +>while : number +>{ while: 1 } : { while: number; } +>while : number +>1 : number + diff --git a/tests/baselines/reference/objectBindingPatternKeywordIdentifiers02.errors.txt b/tests/baselines/reference/objectBindingPatternKeywordIdentifiers02.errors.txt new file mode 100644 index 00000000000..4394854833c --- /dev/null +++ b/tests/baselines/reference/objectBindingPatternKeywordIdentifiers02.errors.txt @@ -0,0 +1,8 @@ +tests/cases/conformance/es6/destructuring/objectBindingPatternKeywordIdentifiers02.ts(2,14): error TS1003: Identifier expected. + + +==== tests/cases/conformance/es6/destructuring/objectBindingPatternKeywordIdentifiers02.ts (1 errors) ==== + + var { while: while } = { while: 1 } + ~~~~~ +!!! error TS1003: Identifier expected. \ No newline at end of file diff --git a/tests/baselines/reference/objectBindingPatternKeywordIdentifiers02.js b/tests/baselines/reference/objectBindingPatternKeywordIdentifiers02.js new file mode 100644 index 00000000000..f0401bdf375 --- /dev/null +++ b/tests/baselines/reference/objectBindingPatternKeywordIdentifiers02.js @@ -0,0 +1,6 @@ +//// [objectBindingPatternKeywordIdentifiers02.ts] + +var { while: while } = { while: 1 } + +//// [objectBindingPatternKeywordIdentifiers02.js] +var _a = { while: 1 }, = _a.while, while = _a.while; diff --git a/tests/baselines/reference/objectBindingPatternKeywordIdentifiers03.errors.txt b/tests/baselines/reference/objectBindingPatternKeywordIdentifiers03.errors.txt new file mode 100644 index 00000000000..6ffad2c0345 --- /dev/null +++ b/tests/baselines/reference/objectBindingPatternKeywordIdentifiers03.errors.txt @@ -0,0 +1,8 @@ +tests/cases/conformance/es6/destructuring/objectBindingPatternKeywordIdentifiers03.ts(2,15): error TS1005: ':' expected. + + +==== tests/cases/conformance/es6/destructuring/objectBindingPatternKeywordIdentifiers03.ts (1 errors) ==== + + var { "while" } = { while: 1 } + ~ +!!! error TS1005: ':' expected. \ No newline at end of file diff --git a/tests/baselines/reference/objectBindingPatternKeywordIdentifiers03.js b/tests/baselines/reference/objectBindingPatternKeywordIdentifiers03.js new file mode 100644 index 00000000000..4bbb1afb4cb --- /dev/null +++ b/tests/baselines/reference/objectBindingPatternKeywordIdentifiers03.js @@ -0,0 +1,6 @@ +//// [objectBindingPatternKeywordIdentifiers03.ts] + +var { "while" } = { while: 1 } + +//// [objectBindingPatternKeywordIdentifiers03.js] +var = { while: 1 }["while"]; diff --git a/tests/baselines/reference/objectBindingPatternKeywordIdentifiers04.errors.txt b/tests/baselines/reference/objectBindingPatternKeywordIdentifiers04.errors.txt new file mode 100644 index 00000000000..6fa8c29fc62 --- /dev/null +++ b/tests/baselines/reference/objectBindingPatternKeywordIdentifiers04.errors.txt @@ -0,0 +1,8 @@ +tests/cases/conformance/es6/destructuring/objectBindingPatternKeywordIdentifiers04.ts(2,16): error TS1003: Identifier expected. + + +==== tests/cases/conformance/es6/destructuring/objectBindingPatternKeywordIdentifiers04.ts (1 errors) ==== + + var { "while": while } = { while: 1 } + ~~~~~ +!!! error TS1003: Identifier expected. \ No newline at end of file diff --git a/tests/baselines/reference/objectBindingPatternKeywordIdentifiers04.js b/tests/baselines/reference/objectBindingPatternKeywordIdentifiers04.js new file mode 100644 index 00000000000..6f0cde82ce8 --- /dev/null +++ b/tests/baselines/reference/objectBindingPatternKeywordIdentifiers04.js @@ -0,0 +1,6 @@ +//// [objectBindingPatternKeywordIdentifiers04.ts] + +var { "while": while } = { while: 1 } + +//// [objectBindingPatternKeywordIdentifiers04.js] +var _a = { while: 1 }, = _a["while"], while = _a.while; diff --git a/tests/baselines/reference/objectBindingPatternKeywordIdentifiers05.js b/tests/baselines/reference/objectBindingPatternKeywordIdentifiers05.js new file mode 100644 index 00000000000..41c46c46506 --- /dev/null +++ b/tests/baselines/reference/objectBindingPatternKeywordIdentifiers05.js @@ -0,0 +1,6 @@ +//// [objectBindingPatternKeywordIdentifiers05.ts] + +var { as } = { as: 1 } + +//// [objectBindingPatternKeywordIdentifiers05.js] +var as = { as: 1 }.as; diff --git a/tests/baselines/reference/objectBindingPatternKeywordIdentifiers05.types b/tests/baselines/reference/objectBindingPatternKeywordIdentifiers05.types new file mode 100644 index 00000000000..d736121a3b7 --- /dev/null +++ b/tests/baselines/reference/objectBindingPatternKeywordIdentifiers05.types @@ -0,0 +1,8 @@ +=== tests/cases/conformance/es6/destructuring/objectBindingPatternKeywordIdentifiers05.ts === + +var { as } = { as: 1 } +>as : number +>{ as: 1 } : { as: number; } +>as : number +>1 : number + diff --git a/tests/baselines/reference/objectBindingPatternKeywordIdentifiers06.js b/tests/baselines/reference/objectBindingPatternKeywordIdentifiers06.js new file mode 100644 index 00000000000..d24c468e891 --- /dev/null +++ b/tests/baselines/reference/objectBindingPatternKeywordIdentifiers06.js @@ -0,0 +1,6 @@ +//// [objectBindingPatternKeywordIdentifiers06.ts] + +var { as: as } = { as: 1 } + +//// [objectBindingPatternKeywordIdentifiers06.js] +var as = { as: 1 }.as; diff --git a/tests/baselines/reference/objectBindingPatternKeywordIdentifiers06.types b/tests/baselines/reference/objectBindingPatternKeywordIdentifiers06.types new file mode 100644 index 00000000000..739771385b2 --- /dev/null +++ b/tests/baselines/reference/objectBindingPatternKeywordIdentifiers06.types @@ -0,0 +1,9 @@ +=== tests/cases/conformance/es6/destructuring/objectBindingPatternKeywordIdentifiers06.ts === + +var { as: as } = { as: 1 } +>as : any +>as : number +>{ as: 1 } : { as: number; } +>as : number +>1 : number + From e36f47ab7eed78ed6cc2f23c9c4f00201a0cc3e9 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Thu, 16 Apr 2015 16:39:32 -0700 Subject: [PATCH 4/8] Expect a colon if the property was a reserved word. --- src/compiler/parser.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index 5fce6df3bd5..4df934941d3 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -3859,13 +3859,14 @@ module ts { function parseObjectBindingElement(): BindingElement { let node = createNode(SyntaxKind.BindingElement); // TODO(andersh): Handle computed properties - let id = parsePropertyName(); - if (id.kind === SyntaxKind.Identifier && token !== SyntaxKind.ColonToken) { - node.name = id; + let tokenIsIdentifier = isIdentifier(); + let propertyName = parsePropertyName(); + if (tokenIsIdentifier && token !== SyntaxKind.ColonToken) { + node.name = propertyName; } else { parseExpected(SyntaxKind.ColonToken); - node.propertyName = id; + node.propertyName = propertyName; node.name = parseIdentifierOrPattern(); } node.initializer = parseInitializer(/*inParameter*/ false); From 7ce1604c53789ee43bc7586e052a2b272422ebaf Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Thu, 16 Apr 2015 16:41:11 -0700 Subject: [PATCH 5/8] Accepted baselines. --- ...dingPatternKeywordIdentifiers01.errors.txt | 8 ++++++ ...bjectBindingPatternKeywordIdentifiers01.js | 2 +- ...ctBindingPatternKeywordIdentifiers01.types | 8 ------ ...dingPatternKeywordIdentifiers02.errors.txt | 7 +++-- ...bjectBindingPatternKeywordIdentifiers02.js | 2 +- ...dingPatternKeywordIdentifiers04.errors.txt | 7 +++-- ...bjectBindingPatternKeywordIdentifiers04.js | 2 +- ...BindingPatternKeywordIdentifiers05.symbols | 6 +++++ ...BindingPatternKeywordIdentifiers06.symbols | 6 +++++ .../reference/reservedWords2.errors.txt | 26 ++++++++++++++++++- tests/baselines/reference/reservedWords2.js | 4 +-- 11 files changed, 60 insertions(+), 18 deletions(-) create mode 100644 tests/baselines/reference/objectBindingPatternKeywordIdentifiers01.errors.txt delete mode 100644 tests/baselines/reference/objectBindingPatternKeywordIdentifiers01.types create mode 100644 tests/baselines/reference/objectBindingPatternKeywordIdentifiers05.symbols create mode 100644 tests/baselines/reference/objectBindingPatternKeywordIdentifiers06.symbols diff --git a/tests/baselines/reference/objectBindingPatternKeywordIdentifiers01.errors.txt b/tests/baselines/reference/objectBindingPatternKeywordIdentifiers01.errors.txt new file mode 100644 index 00000000000..b5dc0ac3c4b --- /dev/null +++ b/tests/baselines/reference/objectBindingPatternKeywordIdentifiers01.errors.txt @@ -0,0 +1,8 @@ +tests/cases/conformance/es6/destructuring/objectBindingPatternKeywordIdentifiers01.ts(2,13): error TS1005: ':' expected. + + +==== tests/cases/conformance/es6/destructuring/objectBindingPatternKeywordIdentifiers01.ts (1 errors) ==== + + var { while } = { while: 1 } + ~ +!!! error TS1005: ':' expected. \ No newline at end of file diff --git a/tests/baselines/reference/objectBindingPatternKeywordIdentifiers01.js b/tests/baselines/reference/objectBindingPatternKeywordIdentifiers01.js index 6ee9c4e6550..cd339bb5907 100644 --- a/tests/baselines/reference/objectBindingPatternKeywordIdentifiers01.js +++ b/tests/baselines/reference/objectBindingPatternKeywordIdentifiers01.js @@ -3,4 +3,4 @@ var { while } = { while: 1 } //// [objectBindingPatternKeywordIdentifiers01.js] -var while = { while: 1 }.while; +var = { while: 1 }.while; diff --git a/tests/baselines/reference/objectBindingPatternKeywordIdentifiers01.types b/tests/baselines/reference/objectBindingPatternKeywordIdentifiers01.types deleted file mode 100644 index 89a0a0f0caa..00000000000 --- a/tests/baselines/reference/objectBindingPatternKeywordIdentifiers01.types +++ /dev/null @@ -1,8 +0,0 @@ -=== tests/cases/conformance/es6/destructuring/objectBindingPatternKeywordIdentifiers01.ts === - -var { while } = { while: 1 } ->while : number ->{ while: 1 } : { while: number; } ->while : number ->1 : number - diff --git a/tests/baselines/reference/objectBindingPatternKeywordIdentifiers02.errors.txt b/tests/baselines/reference/objectBindingPatternKeywordIdentifiers02.errors.txt index 4394854833c..7ac72469d08 100644 --- a/tests/baselines/reference/objectBindingPatternKeywordIdentifiers02.errors.txt +++ b/tests/baselines/reference/objectBindingPatternKeywordIdentifiers02.errors.txt @@ -1,8 +1,11 @@ tests/cases/conformance/es6/destructuring/objectBindingPatternKeywordIdentifiers02.ts(2,14): error TS1003: Identifier expected. +tests/cases/conformance/es6/destructuring/objectBindingPatternKeywordIdentifiers02.ts(2,20): error TS1005: ':' expected. -==== tests/cases/conformance/es6/destructuring/objectBindingPatternKeywordIdentifiers02.ts (1 errors) ==== +==== tests/cases/conformance/es6/destructuring/objectBindingPatternKeywordIdentifiers02.ts (2 errors) ==== var { while: while } = { while: 1 } ~~~~~ -!!! error TS1003: Identifier expected. \ No newline at end of file +!!! error TS1003: Identifier expected. + ~ +!!! error TS1005: ':' expected. \ No newline at end of file diff --git a/tests/baselines/reference/objectBindingPatternKeywordIdentifiers02.js b/tests/baselines/reference/objectBindingPatternKeywordIdentifiers02.js index f0401bdf375..0286a78ba82 100644 --- a/tests/baselines/reference/objectBindingPatternKeywordIdentifiers02.js +++ b/tests/baselines/reference/objectBindingPatternKeywordIdentifiers02.js @@ -3,4 +3,4 @@ var { while: while } = { while: 1 } //// [objectBindingPatternKeywordIdentifiers02.js] -var _a = { while: 1 }, = _a.while, while = _a.while; +var _a = { while: 1 }, = _a.while, = _a.while; diff --git a/tests/baselines/reference/objectBindingPatternKeywordIdentifiers04.errors.txt b/tests/baselines/reference/objectBindingPatternKeywordIdentifiers04.errors.txt index 6fa8c29fc62..69a8b48b2f1 100644 --- a/tests/baselines/reference/objectBindingPatternKeywordIdentifiers04.errors.txt +++ b/tests/baselines/reference/objectBindingPatternKeywordIdentifiers04.errors.txt @@ -1,8 +1,11 @@ tests/cases/conformance/es6/destructuring/objectBindingPatternKeywordIdentifiers04.ts(2,16): error TS1003: Identifier expected. +tests/cases/conformance/es6/destructuring/objectBindingPatternKeywordIdentifiers04.ts(2,22): error TS1005: ':' expected. -==== tests/cases/conformance/es6/destructuring/objectBindingPatternKeywordIdentifiers04.ts (1 errors) ==== +==== tests/cases/conformance/es6/destructuring/objectBindingPatternKeywordIdentifiers04.ts (2 errors) ==== var { "while": while } = { while: 1 } ~~~~~ -!!! error TS1003: Identifier expected. \ No newline at end of file +!!! error TS1003: Identifier expected. + ~ +!!! error TS1005: ':' expected. \ No newline at end of file diff --git a/tests/baselines/reference/objectBindingPatternKeywordIdentifiers04.js b/tests/baselines/reference/objectBindingPatternKeywordIdentifiers04.js index 6f0cde82ce8..4e53b13c0a6 100644 --- a/tests/baselines/reference/objectBindingPatternKeywordIdentifiers04.js +++ b/tests/baselines/reference/objectBindingPatternKeywordIdentifiers04.js @@ -3,4 +3,4 @@ var { "while": while } = { while: 1 } //// [objectBindingPatternKeywordIdentifiers04.js] -var _a = { while: 1 }, = _a["while"], while = _a.while; +var _a = { while: 1 }, = _a["while"], = _a.while; diff --git a/tests/baselines/reference/objectBindingPatternKeywordIdentifiers05.symbols b/tests/baselines/reference/objectBindingPatternKeywordIdentifiers05.symbols new file mode 100644 index 00000000000..5ac9bb815f8 --- /dev/null +++ b/tests/baselines/reference/objectBindingPatternKeywordIdentifiers05.symbols @@ -0,0 +1,6 @@ +=== tests/cases/conformance/es6/destructuring/objectBindingPatternKeywordIdentifiers05.ts === + +var { as } = { as: 1 } +>as : Symbol(as, Decl(objectBindingPatternKeywordIdentifiers05.ts, 1, 5)) +>as : Symbol(as, Decl(objectBindingPatternKeywordIdentifiers05.ts, 1, 14)) + diff --git a/tests/baselines/reference/objectBindingPatternKeywordIdentifiers06.symbols b/tests/baselines/reference/objectBindingPatternKeywordIdentifiers06.symbols new file mode 100644 index 00000000000..7cee5f3009b --- /dev/null +++ b/tests/baselines/reference/objectBindingPatternKeywordIdentifiers06.symbols @@ -0,0 +1,6 @@ +=== tests/cases/conformance/es6/destructuring/objectBindingPatternKeywordIdentifiers06.ts === + +var { as: as } = { as: 1 } +>as : Symbol(as, Decl(objectBindingPatternKeywordIdentifiers06.ts, 1, 5)) +>as : Symbol(as, Decl(objectBindingPatternKeywordIdentifiers06.ts, 1, 18)) + diff --git a/tests/baselines/reference/reservedWords2.errors.txt b/tests/baselines/reference/reservedWords2.errors.txt index ec4b7b09887..3b3fe2c502c 100644 --- a/tests/baselines/reference/reservedWords2.errors.txt +++ b/tests/baselines/reference/reservedWords2.errors.txt @@ -15,6 +15,14 @@ tests/cases/compiler/reservedWords2.ts(5,10): error TS1003: Identifier expected. tests/cases/compiler/reservedWords2.ts(5,18): error TS1005: '=>' expected. tests/cases/compiler/reservedWords2.ts(6,7): error TS2300: Duplicate identifier '(Missing)'. tests/cases/compiler/reservedWords2.ts(6,8): error TS1003: Identifier expected. +tests/cases/compiler/reservedWords2.ts(7,11): error TS2300: Duplicate identifier '(Missing)'. +tests/cases/compiler/reservedWords2.ts(7,11): error TS1005: ':' expected. +tests/cases/compiler/reservedWords2.ts(7,19): error TS2300: Duplicate identifier '(Missing)'. +tests/cases/compiler/reservedWords2.ts(7,19): error TS1005: ':' expected. +tests/cases/compiler/reservedWords2.ts(8,10): error TS2300: Duplicate identifier '(Missing)'. +tests/cases/compiler/reservedWords2.ts(8,10): error TS1005: ':' expected. +tests/cases/compiler/reservedWords2.ts(8,30): error TS2300: Duplicate identifier '(Missing)'. +tests/cases/compiler/reservedWords2.ts(8,30): error TS1005: ':' expected. tests/cases/compiler/reservedWords2.ts(9,6): error TS1181: Array element destructuring pattern expected. tests/cases/compiler/reservedWords2.ts(9,14): error TS1005: ';' expected. tests/cases/compiler/reservedWords2.ts(9,18): error TS1005: '(' expected. @@ -23,7 +31,7 @@ tests/cases/compiler/reservedWords2.ts(10,5): error TS2300: Duplicate identifier tests/cases/compiler/reservedWords2.ts(10,6): error TS1003: Identifier expected. -==== tests/cases/compiler/reservedWords2.ts (23 errors) ==== +==== tests/cases/compiler/reservedWords2.ts (31 errors) ==== import while = require("dfdf"); ~~~~~~ !!! error TS1148: Cannot compile external modules unless the '--module' flag is provided. @@ -65,7 +73,23 @@ tests/cases/compiler/reservedWords2.ts(10,6): error TS1003: Identifier expected. ~~~~ !!! error TS1003: Identifier expected. var {while, return} = { while: 1, return: 2 }; + +!!! error TS2300: Duplicate identifier '(Missing)'. + ~ +!!! error TS1005: ':' expected. + +!!! error TS2300: Duplicate identifier '(Missing)'. + ~ +!!! error TS1005: ':' expected. var {this, switch: { continue} } = { this: 1, switch: { continue: 2 }}; + +!!! error TS2300: Duplicate identifier '(Missing)'. + ~ +!!! error TS1005: ':' expected. + +!!! error TS2300: Duplicate identifier '(Missing)'. + ~ +!!! error TS1005: ':' expected. var [debugger, if] = [1, 2]; ~~~~~~~~ !!! error TS1181: Array element destructuring pattern expected. diff --git a/tests/baselines/reference/reservedWords2.js b/tests/baselines/reference/reservedWords2.js index 4bda38842a3..6d5a5f530c5 100644 --- a/tests/baselines/reference/reservedWords2.js +++ b/tests/baselines/reference/reservedWords2.js @@ -24,8 +24,8 @@ typeof ; 10; throw function () { }; void {}; -var _a = { while: 1, return: 2 }, while = _a.while, return = _a.return; -var _b = { this: 1, switch: { continue: 2 } }, this = _b.this, continue = _b.switch.continue; +var _a = { while: 1, return: 2 }, = _a.while, = _a.return; +var _b = { this: 1, switch: { continue: 2 } }, = _b.this, = _b.switch.continue; var _c = void 0; debugger; if () From 23c76c3abb0662a1857cac9d96c5191596396e42 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Fri, 17 Apr 2015 13:43:46 -0700 Subject: [PATCH 6/8] Removed unnecessary check since ShorthandPropertyAssignment's name is always an Identifier. --- src/compiler/checker.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index d0c51eb05c9..3ccb45c5e88 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -6131,9 +6131,7 @@ module ts { } else { Debug.assert(memberDecl.kind === SyntaxKind.ShorthandPropertyAssignment); - type = memberDecl.name.kind === SyntaxKind.ComputedPropertyName - ? unknownType - : checkExpression(memberDecl.name, contextualMapper); + type = checkExpression((memberDecl).name, contextualMapper); } typeFlags |= type.flags; let prop = createSymbol(SymbolFlags.Property | SymbolFlags.Transient | member.flags, member.name); From dd9481996cddf61be80ff0d7c6a333fe4b6320c2 Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Fri, 17 Apr 2015 13:48:28 -0700 Subject: [PATCH 7/8] word -> Word --- src/compiler/checker.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 3ccb45c5e88..d3acc494c14 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -11972,8 +11972,8 @@ module ts { } // GRAMMAR CHECKING - function isReservedwordInStrictMode(node: Identifier): boolean { - // Check that originalKeywordKind is less than LastFurtureReservedWord to see if an Identifier is a strict-mode reserved word + function isReservedWordInStrictMode(node: Identifier): boolean { + // Check that originalKeywordKind is less than LastFutureReservedWord to see if an Identifier is a strict-mode reserved word return (node.parserContextFlags & ParserContextFlags.StrictMode) && (node.originalKeywordKind >= SyntaxKind.FirstFutureReservedWord && node.originalKeywordKind <= SyntaxKind.LastFutureReservedWord); } @@ -12018,7 +12018,7 @@ module ts { function checkGrammarDeclarationNameInStrictMode(node: Declaration): boolean { let name = node.name; - if (name && name.kind === SyntaxKind.Identifier && isReservedwordInStrictMode(name)) { + if (name && name.kind === SyntaxKind.Identifier && isReservedWordInStrictMode(name)) { let nameText = declarationNameToString(name); switch (node.kind) { case SyntaxKind.Parameter: @@ -12094,7 +12094,7 @@ module ts { // The function takes an identifier itself or an expression which has SyntaxKind.Identifier. function checkGrammarIdentifierInStrictMode(node: Expression | Identifier, nameText?: string): boolean { - if (node && node.kind === SyntaxKind.Identifier && isReservedwordInStrictMode(node)) { + if (node && node.kind === SyntaxKind.Identifier && isReservedWordInStrictMode(node)) { if (!nameText) { nameText = declarationNameToString(node); } @@ -12109,7 +12109,7 @@ module ts { // The function takes an identifier when uses as a typeName in TypeReferenceNode function checkGrammarTypeNameInStrictMode(node: Identifier): boolean { - if (node && node.kind === SyntaxKind.Identifier && isReservedwordInStrictMode(node)) { + if (node && node.kind === SyntaxKind.Identifier && isReservedWordInStrictMode(node)) { let nameText = declarationNameToString(node); // TODO (yuisu): Fix when module is a strict mode From 4134d799999f121a8da2f003ceba04800635151d Mon Sep 17 00:00:00 2001 From: Daniel Rosenwasser Date: Fri, 17 Apr 2015 14:04:25 -0700 Subject: [PATCH 8/8] numberic. --- src/compiler/checker.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index d3acc494c14..4eedad672a7 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -8018,7 +8018,7 @@ module ts { function checkNumericLiteral(node: LiteralExpression): Type { // Grammar checking - checkGrammarNumbericLiteral(node); + checkGrammarNumericLiteral(node); return numberType; } @@ -12561,7 +12561,7 @@ module ts { // Grammar checking for computedPropertName and shorthandPropertyAssignment checkGrammarForInvalidQuestionMark(prop,(prop).questionToken, Diagnostics.An_object_member_cannot_be_declared_optional); if (name.kind === SyntaxKind.NumericLiteral) { - checkGrammarNumbericLiteral(name); + checkGrammarNumericLiteral(name); } currentKind = Property; } @@ -13113,7 +13113,7 @@ module ts { } } - function checkGrammarNumbericLiteral(node: Identifier): boolean { + function checkGrammarNumericLiteral(node: Identifier): boolean { // Grammar checking if (node.flags & NodeFlags.OctalLiteral) { if (node.parserContextFlags & ParserContextFlags.StrictMode) {