diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index 064246619b3..b0fe82dc60e 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -2373,11 +2373,15 @@ module ts { case SyntaxKind.LessThanToken: // Generic Method declaration case SyntaxKind.ColonToken: // Type Annotation for declaration case SyntaxKind.EqualsToken: // Initializer for declaration - case SyntaxKind.SemicolonToken: // Declaration termination - case SyntaxKind.CloseBraceToken: // End-of-class, must be declaration. - case SyntaxKind.EndOfFileToken: // Not valid, but permitted so that it gets caught later on. case SyntaxKind.QuestionToken: // Not valid, but permitted so that it gets caught later on. return true; + default: + // Covers + // - Semicolons (declaration termination) + // - Closing braces (end-of-class, must be declaration) + // - End-of-files (not valid, but permitted so that it gets caught later on) + // - Line-breaks (enabling *automatic semicolon insertion*) + return canParseSemicolon(); } } diff --git a/tests/baselines/reference/parserClassDeclaration26.errors.txt b/tests/baselines/reference/parserClassDeclaration26.errors.txt deleted file mode 100644 index 2402f85f1a4..00000000000 --- a/tests/baselines/reference/parserClassDeclaration26.errors.txt +++ /dev/null @@ -1,9 +0,0 @@ -==== tests/cases/conformance/parser/ecmascript5/ClassDeclarations/parserClassDeclaration26.ts (2 errors) ==== - class C { - var - ~~~ -!!! Unexpected token. A constructor, method, accessor, or property was expected. - public - } - ~ -!!! Declaration or statement expected. \ No newline at end of file diff --git a/tests/baselines/reference/parserClassDeclaration26.js b/tests/baselines/reference/parserClassDeclaration26.js new file mode 100644 index 00000000000..94b56f521dd --- /dev/null +++ b/tests/baselines/reference/parserClassDeclaration26.js @@ -0,0 +1,12 @@ +//// [parserClassDeclaration26.ts] +class C { + var + public +} + +//// [parserClassDeclaration26.js] +var C = (function () { + function C() { + } + return C; +})(); diff --git a/tests/baselines/reference/varAsID.errors.txt b/tests/baselines/reference/varAsID.errors.txt deleted file mode 100644 index 48610e11ecf..00000000000 --- a/tests/baselines/reference/varAsID.errors.txt +++ /dev/null @@ -1,24 +0,0 @@ -==== tests/cases/compiler/varAsID.ts (2 errors) ==== - - class Foo { - var; // ok - x=1; - } - - var f = new Foo(); - - - class Foo2 { - var // not an error, because of ASI. - ~~~ -!!! Unexpected token. A constructor, method, accessor, or property was expected. - x=1; - } - ~ -!!! Declaration or statement expected. - - var f2 = new Foo2(); - - - - \ No newline at end of file diff --git a/tests/baselines/reference/varAsID.js b/tests/baselines/reference/varAsID.js new file mode 100644 index 00000000000..d123d10c531 --- /dev/null +++ b/tests/baselines/reference/varAsID.js @@ -0,0 +1,36 @@ +//// [varAsID.ts] + +class Foo { + var; // ok + x=1; +} + +var f = new Foo(); + + +class Foo2 { + var // not an error, because of ASI. + x=1; +} + +var f2 = new Foo2(); + + + + + +//// [varAsID.js] +var Foo = (function () { + function Foo() { + this.x = 1; + } + return Foo; +})(); +var f = new Foo(); +var Foo2 = (function () { + function Foo2() { + this.x = 1; + } + return Foo2; +})(); +var f2 = new Foo2();