From 449f4a4f37d58ce0c48dbc4904f0f8e521f78c33 Mon Sep 17 00:00:00 2001 From: Cyrus Najmabadi Date: Fri, 6 Feb 2015 17:30:29 -0800 Subject: [PATCH] Have better error recovery for whne a user uses semicolons instead of commas to delimit an object literal. --- src/compiler/parser.ts | 17 +++++++++++++++-- .../fatarrowfunctionsErrors.errors.txt | 8 +------- .../reference/fatarrowfunctionsErrors.js | 1 - .../incompleteObjectLiteral1.errors.txt | 5 +---- .../objectLiteralWithSemicolons1.errors.txt | 13 +++++++++++++ .../reference/objectLiteralWithSemicolons1.js | 5 +++++ .../objectLiteralWithSemicolons2.errors.txt | 17 +++++++++++++++++ .../reference/objectLiteralWithSemicolons2.js | 13 +++++++++++++ .../objectLiteralWithSemicolons3.errors.txt | 17 +++++++++++++++++ .../reference/objectLiteralWithSemicolons3.js | 13 +++++++++++++ .../objectLiteralWithSemicolons4.errors.txt | 9 +++++++++ .../reference/objectLiteralWithSemicolons4.js | 9 +++++++++ .../objectLiteralWithSemicolons5.errors.txt | 19 +++++++++++++++++++ .../reference/objectLiteralWithSemicolons5.js | 7 +++++++ .../reference/parser512097.errors.txt | 5 +---- tests/baselines/reference/parser512097.js | 2 +- ...serErrorRecovery_ObjectLiteral2.errors.txt | 7 +++++-- ...serErrorRecovery_ObjectLiteral3.errors.txt | 7 +++++-- ...serErrorRecovery_ObjectLiteral4.errors.txt | 7 +++++-- ...serErrorRecovery_ObjectLiteral5.errors.txt | 7 +++++-- .../reference/privateIndexer2.errors.txt | 5 +---- .../compiler/objectLiteralWithSemicolons1.ts | 1 + .../compiler/objectLiteralWithSemicolons2.ts | 5 +++++ .../compiler/objectLiteralWithSemicolons3.ts | 5 +++++ .../compiler/objectLiteralWithSemicolons4.ts | 3 +++ .../compiler/objectLiteralWithSemicolons5.ts | 1 + 26 files changed, 177 insertions(+), 31 deletions(-) create mode 100644 tests/baselines/reference/objectLiteralWithSemicolons1.errors.txt create mode 100644 tests/baselines/reference/objectLiteralWithSemicolons1.js create mode 100644 tests/baselines/reference/objectLiteralWithSemicolons2.errors.txt create mode 100644 tests/baselines/reference/objectLiteralWithSemicolons2.js create mode 100644 tests/baselines/reference/objectLiteralWithSemicolons3.errors.txt create mode 100644 tests/baselines/reference/objectLiteralWithSemicolons3.js create mode 100644 tests/baselines/reference/objectLiteralWithSemicolons4.errors.txt create mode 100644 tests/baselines/reference/objectLiteralWithSemicolons4.js create mode 100644 tests/baselines/reference/objectLiteralWithSemicolons5.errors.txt create mode 100644 tests/baselines/reference/objectLiteralWithSemicolons5.js create mode 100644 tests/cases/compiler/objectLiteralWithSemicolons1.ts create mode 100644 tests/cases/compiler/objectLiteralWithSemicolons2.ts create mode 100644 tests/cases/compiler/objectLiteralWithSemicolons3.ts create mode 100644 tests/cases/compiler/objectLiteralWithSemicolons4.ts create mode 100644 tests/cases/compiler/objectLiteralWithSemicolons5.ts diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index cd08e592be8..6942be3cf13 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -1878,7 +1878,7 @@ module ts { } // Parses a comma-delimited list of elements - function parseDelimitedList(kind: ParsingContext, parseElement: () => T): NodeArray { + function parseDelimitedList(kind: ParsingContext, parseElement: () => T, considerSemicolonAsDelimeter?: boolean): NodeArray { var saveParsingContext = parsingContext; parsingContext |= 1 << kind; var result = >[]; @@ -1892,11 +1892,24 @@ module ts { if (parseOptional(SyntaxKind.CommaToken)) { continue; } + commaStart = -1; // Back to the state where the last token was not a comma if (isListTerminator(kind)) { break; } + + // We didn't get a comma, and the list wasn't terminated, explicitly parse + // out a comma so we give a good error message. parseExpected(SyntaxKind.CommaToken); + + // If the token was a semicolon, and the caller allows that, then skip it and + // continue. This ensures we get back on track and don't result in tons of + // parse errors. For example, this can happen when people do things like use + // a semicolon to delimit object literal members. Note: we'll have already + // reported an error when we called parseExpected above. + if (considerSemicolonAsDelimeter && token === SyntaxKind.SemicolonToken && !scanner.hasPrecedingLineBreak()) { + nextToken(); + } continue; } @@ -3598,7 +3611,7 @@ module ts { node.flags |= NodeFlags.MultiLine; } - node.properties = parseDelimitedList(ParsingContext.ObjectLiteralMembers, parseObjectLiteralElement); + node.properties = parseDelimitedList(ParsingContext.ObjectLiteralMembers, parseObjectLiteralElement, /*considerSemicolonAsDelimeter:*/ true); parseExpected(SyntaxKind.CloseBraceToken); return finishNode(node); } diff --git a/tests/baselines/reference/fatarrowfunctionsErrors.errors.txt b/tests/baselines/reference/fatarrowfunctionsErrors.errors.txt index 35df1a5f397..196041b951a 100644 --- a/tests/baselines/reference/fatarrowfunctionsErrors.errors.txt +++ b/tests/baselines/reference/fatarrowfunctionsErrors.errors.txt @@ -3,8 +3,6 @@ tests/cases/compiler/fatarrowfunctionsErrors.ts(2,1): error TS2304: Cannot find tests/cases/compiler/fatarrowfunctionsErrors.ts(2,8): error TS1005: ',' expected. tests/cases/compiler/fatarrowfunctionsErrors.ts(2,18): error TS1005: ':' expected. tests/cases/compiler/fatarrowfunctionsErrors.ts(2,19): error TS1005: ',' expected. -tests/cases/compiler/fatarrowfunctionsErrors.ts(2,20): error TS1128: Declaration or statement expected. -tests/cases/compiler/fatarrowfunctionsErrors.ts(2,21): error TS1128: Declaration or statement expected. tests/cases/compiler/fatarrowfunctionsErrors.ts(3,1): error TS2304: Cannot find name 'foo'. tests/cases/compiler/fatarrowfunctionsErrors.ts(4,1): error TS2304: Cannot find name 'foo'. tests/cases/compiler/fatarrowfunctionsErrors.ts(5,9): error TS2304: Cannot find name 'x'. @@ -18,7 +16,7 @@ tests/cases/compiler/fatarrowfunctionsErrors.ts(11,21): error TS1005: '=>' expec tests/cases/compiler/fatarrowfunctionsErrors.ts(12,23): error TS1005: '=>' expected. -==== tests/cases/compiler/fatarrowfunctionsErrors.ts (18 errors) ==== +==== tests/cases/compiler/fatarrowfunctionsErrors.ts (16 errors) ==== foo((...Far:any[])=>{return 0;}) ~~~ !!! error TS2304: Cannot find name 'foo'. @@ -31,10 +29,6 @@ tests/cases/compiler/fatarrowfunctionsErrors.ts(12,23): error TS1005: '=>' expec !!! error TS1005: ':' expected. ~ !!! error TS1005: ',' expected. - ~ -!!! error TS1128: Declaration or statement expected. - ~ -!!! error TS1128: Declaration or statement expected. foo((x?)=>{return x;}) ~~~ !!! error TS2304: Cannot find name 'foo'. diff --git a/tests/baselines/reference/fatarrowfunctionsErrors.js b/tests/baselines/reference/fatarrowfunctionsErrors.js index fd47f60b6a0..649a66a9e85 100644 --- a/tests/baselines/reference/fatarrowfunctionsErrors.js +++ b/tests/baselines/reference/fatarrowfunctionsErrors.js @@ -21,7 +21,6 @@ foo(function () { return 0; }); foo((1), { return: 0 }); -; foo(function (x) { return x; }); diff --git a/tests/baselines/reference/incompleteObjectLiteral1.errors.txt b/tests/baselines/reference/incompleteObjectLiteral1.errors.txt index 2e363de591e..903f83b3229 100644 --- a/tests/baselines/reference/incompleteObjectLiteral1.errors.txt +++ b/tests/baselines/reference/incompleteObjectLiteral1.errors.txt @@ -1,11 +1,8 @@ tests/cases/compiler/incompleteObjectLiteral1.ts(1,14): error TS1005: ':' expected. -tests/cases/compiler/incompleteObjectLiteral1.ts(1,16): error TS1128: Declaration or statement expected. -==== tests/cases/compiler/incompleteObjectLiteral1.ts (2 errors) ==== +==== tests/cases/compiler/incompleteObjectLiteral1.ts (1 errors) ==== var tt = { aa; } ~ !!! error TS1005: ':' expected. - ~ -!!! error TS1128: Declaration or statement expected. var x = tt; \ No newline at end of file diff --git a/tests/baselines/reference/objectLiteralWithSemicolons1.errors.txt b/tests/baselines/reference/objectLiteralWithSemicolons1.errors.txt new file mode 100644 index 00000000000..077d807af2c --- /dev/null +++ b/tests/baselines/reference/objectLiteralWithSemicolons1.errors.txt @@ -0,0 +1,13 @@ +tests/cases/compiler/objectLiteralWithSemicolons1.ts(1,12): error TS1005: ':' expected. +tests/cases/compiler/objectLiteralWithSemicolons1.ts(1,15): error TS1005: ':' expected. +tests/cases/compiler/objectLiteralWithSemicolons1.ts(1,17): error TS2304: Cannot find name 'c'. + + +==== tests/cases/compiler/objectLiteralWithSemicolons1.ts (3 errors) ==== + var v = { a; b; c } + ~ +!!! error TS1005: ':' expected. + ~ +!!! error TS1005: ':' expected. + ~ +!!! error TS2304: Cannot find name 'c'. \ No newline at end of file diff --git a/tests/baselines/reference/objectLiteralWithSemicolons1.js b/tests/baselines/reference/objectLiteralWithSemicolons1.js new file mode 100644 index 00000000000..b820b14428c --- /dev/null +++ b/tests/baselines/reference/objectLiteralWithSemicolons1.js @@ -0,0 +1,5 @@ +//// [objectLiteralWithSemicolons1.ts] +var v = { a; b; c } + +//// [objectLiteralWithSemicolons1.js] +var v = { a: , b: , c: c }; diff --git a/tests/baselines/reference/objectLiteralWithSemicolons2.errors.txt b/tests/baselines/reference/objectLiteralWithSemicolons2.errors.txt new file mode 100644 index 00000000000..d5594f66fb3 --- /dev/null +++ b/tests/baselines/reference/objectLiteralWithSemicolons2.errors.txt @@ -0,0 +1,17 @@ +tests/cases/compiler/objectLiteralWithSemicolons2.ts(2,4): error TS1005: ':' expected. +tests/cases/compiler/objectLiteralWithSemicolons2.ts(3,4): error TS1005: ':' expected. +tests/cases/compiler/objectLiteralWithSemicolons2.ts(4,3): error TS2304: Cannot find name 'c'. + + +==== tests/cases/compiler/objectLiteralWithSemicolons2.ts (3 errors) ==== + var v = { + a; + ~ +!!! error TS1005: ':' expected. + b; + ~ +!!! error TS1005: ':' expected. + c + ~ +!!! error TS2304: Cannot find name 'c'. + } \ No newline at end of file diff --git a/tests/baselines/reference/objectLiteralWithSemicolons2.js b/tests/baselines/reference/objectLiteralWithSemicolons2.js new file mode 100644 index 00000000000..2b46267465d --- /dev/null +++ b/tests/baselines/reference/objectLiteralWithSemicolons2.js @@ -0,0 +1,13 @@ +//// [objectLiteralWithSemicolons2.ts] +var v = { + a; + b; + c +} + +//// [objectLiteralWithSemicolons2.js] +var v = { + a: , + b: , + c: c +}; diff --git a/tests/baselines/reference/objectLiteralWithSemicolons3.errors.txt b/tests/baselines/reference/objectLiteralWithSemicolons3.errors.txt new file mode 100644 index 00000000000..dc638922e7b --- /dev/null +++ b/tests/baselines/reference/objectLiteralWithSemicolons3.errors.txt @@ -0,0 +1,17 @@ +tests/cases/compiler/objectLiteralWithSemicolons3.ts(2,4): error TS1005: ':' expected. +tests/cases/compiler/objectLiteralWithSemicolons3.ts(3,4): error TS1005: ':' expected. +tests/cases/compiler/objectLiteralWithSemicolons3.ts(4,4): error TS1005: ':' expected. + + +==== tests/cases/compiler/objectLiteralWithSemicolons3.ts (3 errors) ==== + var v = { + a; + ~ +!!! error TS1005: ':' expected. + b; + ~ +!!! error TS1005: ':' expected. + c; + ~ +!!! error TS1005: ':' expected. + } \ No newline at end of file diff --git a/tests/baselines/reference/objectLiteralWithSemicolons3.js b/tests/baselines/reference/objectLiteralWithSemicolons3.js new file mode 100644 index 00000000000..d9d6d9bc842 --- /dev/null +++ b/tests/baselines/reference/objectLiteralWithSemicolons3.js @@ -0,0 +1,13 @@ +//// [objectLiteralWithSemicolons3.ts] +var v = { + a; + b; + c; +} + +//// [objectLiteralWithSemicolons3.js] +var v = { + a: , + b: , + c: +}; diff --git a/tests/baselines/reference/objectLiteralWithSemicolons4.errors.txt b/tests/baselines/reference/objectLiteralWithSemicolons4.errors.txt new file mode 100644 index 00000000000..9938f1629b8 --- /dev/null +++ b/tests/baselines/reference/objectLiteralWithSemicolons4.errors.txt @@ -0,0 +1,9 @@ +tests/cases/compiler/objectLiteralWithSemicolons4.ts(3,1): error TS1005: ':' expected. + + +==== tests/cases/compiler/objectLiteralWithSemicolons4.ts (1 errors) ==== + var v = { + a + ; + ~ +!!! error TS1005: ':' expected. \ No newline at end of file diff --git a/tests/baselines/reference/objectLiteralWithSemicolons4.js b/tests/baselines/reference/objectLiteralWithSemicolons4.js new file mode 100644 index 00000000000..9e1e3dea4b9 --- /dev/null +++ b/tests/baselines/reference/objectLiteralWithSemicolons4.js @@ -0,0 +1,9 @@ +//// [objectLiteralWithSemicolons4.ts] +var v = { + a +; + +//// [objectLiteralWithSemicolons4.js] +var v = { + a: +}; diff --git a/tests/baselines/reference/objectLiteralWithSemicolons5.errors.txt b/tests/baselines/reference/objectLiteralWithSemicolons5.errors.txt new file mode 100644 index 00000000000..7373c3d535d --- /dev/null +++ b/tests/baselines/reference/objectLiteralWithSemicolons5.errors.txt @@ -0,0 +1,19 @@ +tests/cases/compiler/objectLiteralWithSemicolons5.ts(1,20): error TS1005: ',' expected. +tests/cases/compiler/objectLiteralWithSemicolons5.ts(1,25): error TS2304: Cannot find name 'b'. +tests/cases/compiler/objectLiteralWithSemicolons5.ts(1,26): error TS1005: ',' expected. +tests/cases/compiler/objectLiteralWithSemicolons5.ts(1,32): error TS2378: A 'get' accessor must return a value or consist of a single 'throw' statement. +tests/cases/compiler/objectLiteralWithSemicolons5.ts(1,41): error TS1005: ',' expected. + + +==== tests/cases/compiler/objectLiteralWithSemicolons5.ts (5 errors) ==== + var v = { foo() { }; a: b; get baz() { }; } + ~ +!!! error TS1005: ',' expected. + ~ +!!! error TS2304: Cannot find name 'b'. + ~ +!!! error TS1005: ',' expected. + ~~~ +!!! error TS2378: A 'get' accessor must return a value or consist of a single 'throw' statement. + ~ +!!! error TS1005: ',' expected. \ No newline at end of file diff --git a/tests/baselines/reference/objectLiteralWithSemicolons5.js b/tests/baselines/reference/objectLiteralWithSemicolons5.js new file mode 100644 index 00000000000..082ca6829a0 --- /dev/null +++ b/tests/baselines/reference/objectLiteralWithSemicolons5.js @@ -0,0 +1,7 @@ +//// [objectLiteralWithSemicolons5.ts] +var v = { foo() { }; a: b; get baz() { }; } + +//// [objectLiteralWithSemicolons5.js] +var v = { foo: function () { +}, a: b, get baz() { +} }; diff --git a/tests/baselines/reference/parser512097.errors.txt b/tests/baselines/reference/parser512097.errors.txt index 3963d969c34..87f8a5af151 100644 --- a/tests/baselines/reference/parser512097.errors.txt +++ b/tests/baselines/reference/parser512097.errors.txt @@ -1,13 +1,10 @@ tests/cases/conformance/parser/ecmascript5/RegressionTests/parser512097.ts(1,14): error TS1005: ':' expected. -tests/cases/conformance/parser/ecmascript5/RegressionTests/parser512097.ts(1,16): error TS1128: Declaration or statement expected. -==== tests/cases/conformance/parser/ecmascript5/RegressionTests/parser512097.ts (2 errors) ==== +==== tests/cases/conformance/parser/ecmascript5/RegressionTests/parser512097.ts (1 errors) ==== var tt = { aa; } // After this point, no useful parsing occurs in the entire file ~ !!! error TS1005: ':' expected. - ~ -!!! error TS1128: Declaration or statement expected. if (true) { } \ No newline at end of file diff --git a/tests/baselines/reference/parser512097.js b/tests/baselines/reference/parser512097.js index f507b86ccd7..ce73dadf3bc 100644 --- a/tests/baselines/reference/parser512097.js +++ b/tests/baselines/reference/parser512097.js @@ -5,6 +5,6 @@ if (true) { } //// [parser512097.js] -var tt = { aa: }; +var tt = { aa: }; // After this point, no useful parsing occurs in the entire file if (true) { } diff --git a/tests/baselines/reference/parserErrorRecovery_ObjectLiteral2.errors.txt b/tests/baselines/reference/parserErrorRecovery_ObjectLiteral2.errors.txt index 55667d42de5..770fee897d3 100644 --- a/tests/baselines/reference/parserErrorRecovery_ObjectLiteral2.errors.txt +++ b/tests/baselines/reference/parserErrorRecovery_ObjectLiteral2.errors.txt @@ -1,11 +1,14 @@ tests/cases/conformance/parser/ecmascript5/ErrorRecovery/ObjectLiterals/parserErrorRecovery_ObjectLiteral2.ts(2,1): error TS1005: ':' expected. tests/cases/conformance/parser/ecmascript5/ErrorRecovery/ObjectLiterals/parserErrorRecovery_ObjectLiteral2.ts(2,7): error TS1005: ':' expected. +tests/cases/conformance/parser/ecmascript5/ErrorRecovery/ObjectLiterals/parserErrorRecovery_ObjectLiteral2.ts(2,8): error TS1005: '}' expected. -==== tests/cases/conformance/parser/ecmascript5/ErrorRecovery/ObjectLiterals/parserErrorRecovery_ObjectLiteral2.ts (2 errors) ==== +==== tests/cases/conformance/parser/ecmascript5/ErrorRecovery/ObjectLiterals/parserErrorRecovery_ObjectLiteral2.ts (3 errors) ==== var v = { a return; ~~~~~~ !!! error TS1005: ':' expected. ~ -!!! error TS1005: ':' expected. \ No newline at end of file +!!! error TS1005: ':' expected. + +!!! error TS1005: '}' expected. \ No newline at end of file diff --git a/tests/baselines/reference/parserErrorRecovery_ObjectLiteral3.errors.txt b/tests/baselines/reference/parserErrorRecovery_ObjectLiteral3.errors.txt index 30bd3048d21..8f319f6dcd7 100644 --- a/tests/baselines/reference/parserErrorRecovery_ObjectLiteral3.errors.txt +++ b/tests/baselines/reference/parserErrorRecovery_ObjectLiteral3.errors.txt @@ -1,11 +1,14 @@ tests/cases/conformance/parser/ecmascript5/ErrorRecovery/ObjectLiterals/parserErrorRecovery_ObjectLiteral3.ts(2,1): error TS1109: Expression expected. tests/cases/conformance/parser/ecmascript5/ErrorRecovery/ObjectLiterals/parserErrorRecovery_ObjectLiteral3.ts(2,7): error TS1005: ':' expected. +tests/cases/conformance/parser/ecmascript5/ErrorRecovery/ObjectLiterals/parserErrorRecovery_ObjectLiteral3.ts(2,8): error TS1005: '}' expected. -==== tests/cases/conformance/parser/ecmascript5/ErrorRecovery/ObjectLiterals/parserErrorRecovery_ObjectLiteral3.ts (2 errors) ==== +==== tests/cases/conformance/parser/ecmascript5/ErrorRecovery/ObjectLiterals/parserErrorRecovery_ObjectLiteral3.ts (3 errors) ==== var v = { a: return; ~~~~~~ !!! error TS1109: Expression expected. ~ -!!! error TS1005: ':' expected. \ No newline at end of file +!!! error TS1005: ':' expected. + +!!! error TS1005: '}' expected. \ No newline at end of file diff --git a/tests/baselines/reference/parserErrorRecovery_ObjectLiteral4.errors.txt b/tests/baselines/reference/parserErrorRecovery_ObjectLiteral4.errors.txt index bc8ec098f49..0f8415e9015 100644 --- a/tests/baselines/reference/parserErrorRecovery_ObjectLiteral4.errors.txt +++ b/tests/baselines/reference/parserErrorRecovery_ObjectLiteral4.errors.txt @@ -1,11 +1,14 @@ tests/cases/conformance/parser/ecmascript5/ErrorRecovery/ObjectLiterals/parserErrorRecovery_ObjectLiteral4.ts(2,1): error TS1005: ',' expected. tests/cases/conformance/parser/ecmascript5/ErrorRecovery/ObjectLiterals/parserErrorRecovery_ObjectLiteral4.ts(2,7): error TS1005: ':' expected. +tests/cases/conformance/parser/ecmascript5/ErrorRecovery/ObjectLiterals/parserErrorRecovery_ObjectLiteral4.ts(2,8): error TS1005: '}' expected. -==== tests/cases/conformance/parser/ecmascript5/ErrorRecovery/ObjectLiterals/parserErrorRecovery_ObjectLiteral4.ts (2 errors) ==== +==== tests/cases/conformance/parser/ecmascript5/ErrorRecovery/ObjectLiterals/parserErrorRecovery_ObjectLiteral4.ts (3 errors) ==== var v = { a: 1 return; ~~~~~~ !!! error TS1005: ',' expected. ~ -!!! error TS1005: ':' expected. \ No newline at end of file +!!! error TS1005: ':' expected. + +!!! error TS1005: '}' expected. \ No newline at end of file diff --git a/tests/baselines/reference/parserErrorRecovery_ObjectLiteral5.errors.txt b/tests/baselines/reference/parserErrorRecovery_ObjectLiteral5.errors.txt index fad6af4cfa9..7f1f15d7c6d 100644 --- a/tests/baselines/reference/parserErrorRecovery_ObjectLiteral5.errors.txt +++ b/tests/baselines/reference/parserErrorRecovery_ObjectLiteral5.errors.txt @@ -1,8 +1,11 @@ tests/cases/conformance/parser/ecmascript5/ErrorRecovery/ObjectLiterals/parserErrorRecovery_ObjectLiteral5.ts(2,7): error TS1005: ':' expected. +tests/cases/conformance/parser/ecmascript5/ErrorRecovery/ObjectLiterals/parserErrorRecovery_ObjectLiteral5.ts(2,8): error TS1005: '}' expected. -==== tests/cases/conformance/parser/ecmascript5/ErrorRecovery/ObjectLiterals/parserErrorRecovery_ObjectLiteral5.ts (1 errors) ==== +==== tests/cases/conformance/parser/ecmascript5/ErrorRecovery/ObjectLiterals/parserErrorRecovery_ObjectLiteral5.ts (2 errors) ==== var v = { a: 1, return; ~ -!!! error TS1005: ':' expected. \ No newline at end of file +!!! error TS1005: ':' expected. + +!!! error TS1005: '}' expected. \ No newline at end of file diff --git a/tests/baselines/reference/privateIndexer2.errors.txt b/tests/baselines/reference/privateIndexer2.errors.txt index 405167d68f8..9f087b22379 100644 --- a/tests/baselines/reference/privateIndexer2.errors.txt +++ b/tests/baselines/reference/privateIndexer2.errors.txt @@ -3,10 +3,9 @@ tests/cases/conformance/classes/indexMemberDeclarations/privateIndexer2.ts(4,17) tests/cases/conformance/classes/indexMemberDeclarations/privateIndexer2.ts(4,23): error TS1005: ',' expected. tests/cases/conformance/classes/indexMemberDeclarations/privateIndexer2.ts(4,24): error TS1136: Property assignment expected. tests/cases/conformance/classes/indexMemberDeclarations/privateIndexer2.ts(4,32): error TS1005: ':' expected. -tests/cases/conformance/classes/indexMemberDeclarations/privateIndexer2.ts(5,1): error TS1128: Declaration or statement expected. -==== tests/cases/conformance/classes/indexMemberDeclarations/privateIndexer2.ts (6 errors) ==== +==== tests/cases/conformance/classes/indexMemberDeclarations/privateIndexer2.ts (5 errors) ==== // private indexers not allowed var x = { @@ -22,8 +21,6 @@ tests/cases/conformance/classes/indexMemberDeclarations/privateIndexer2.ts(5,1): ~ !!! error TS1005: ':' expected. } - ~ -!!! error TS1128: Declaration or statement expected. var y: { private[x: string]: string; diff --git a/tests/cases/compiler/objectLiteralWithSemicolons1.ts b/tests/cases/compiler/objectLiteralWithSemicolons1.ts new file mode 100644 index 00000000000..d9b83bd84c1 --- /dev/null +++ b/tests/cases/compiler/objectLiteralWithSemicolons1.ts @@ -0,0 +1 @@ +var v = { a; b; c } \ No newline at end of file diff --git a/tests/cases/compiler/objectLiteralWithSemicolons2.ts b/tests/cases/compiler/objectLiteralWithSemicolons2.ts new file mode 100644 index 00000000000..83fe8fbe00a --- /dev/null +++ b/tests/cases/compiler/objectLiteralWithSemicolons2.ts @@ -0,0 +1,5 @@ +var v = { + a; + b; + c +} \ No newline at end of file diff --git a/tests/cases/compiler/objectLiteralWithSemicolons3.ts b/tests/cases/compiler/objectLiteralWithSemicolons3.ts new file mode 100644 index 00000000000..96b4c10b5e0 --- /dev/null +++ b/tests/cases/compiler/objectLiteralWithSemicolons3.ts @@ -0,0 +1,5 @@ +var v = { + a; + b; + c; +} \ No newline at end of file diff --git a/tests/cases/compiler/objectLiteralWithSemicolons4.ts b/tests/cases/compiler/objectLiteralWithSemicolons4.ts new file mode 100644 index 00000000000..a216bb84912 --- /dev/null +++ b/tests/cases/compiler/objectLiteralWithSemicolons4.ts @@ -0,0 +1,3 @@ +var v = { + a +; \ No newline at end of file diff --git a/tests/cases/compiler/objectLiteralWithSemicolons5.ts b/tests/cases/compiler/objectLiteralWithSemicolons5.ts new file mode 100644 index 00000000000..894c26d69c9 --- /dev/null +++ b/tests/cases/compiler/objectLiteralWithSemicolons5.ts @@ -0,0 +1 @@ +var v = { foo() { }; a: b; get baz() { }; } \ No newline at end of file