diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index 54f7a806f3d..610288da1a7 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -3156,21 +3156,16 @@ module ts { } } - function parseAndCheckFunctionBody(isConstructor: boolean): Block { - var initialPosition = scanner.getTokenPos(); - var errorCountBeforeBody = file._parserDiagnostics.length; + function parseFunctionBlockOrSemicolon(): Block { if (token === SyntaxKind.OpenBraceToken) { - var body = parseBody(/* ignoreMissingOpenBrace */ false); - if (body && inAmbientContext && file._parserDiagnostics.length === errorCountBeforeBody) { - var diagnostic = isConstructor ? Diagnostics.A_constructor_implementation_cannot_be_declared_in_an_ambient_context : Diagnostics.A_function_implementation_cannot_be_declared_in_an_ambient_context; - grammarErrorAtPos(initialPosition, 1, diagnostic); - } - return body; + return parseBody(/* ignoreMissingOpenBrace */ false); } + if (canParseSemicolon()) { parseSemicolon(); return undefined; } + error(Diagnostics.Block_or_expected); // block or ';' expected } @@ -3225,7 +3220,7 @@ module ts { node.typeParameters = sig.typeParameters; node.parameters = sig.parameters; node.type = sig.type; - node.body = parseAndCheckFunctionBody(/*isConstructor*/ false); + node.body = parseFunctionBlockOrSemicolon(); return finishNode(node); } @@ -3237,7 +3232,7 @@ module ts { node.typeParameters = sig.typeParameters; node.parameters = sig.parameters; node.type = sig.type; - node.body = parseAndCheckFunctionBody(/*isConstructor*/ true); + node.body = parseFunctionBlockOrSemicolon(); return finishNode(node); } @@ -3258,7 +3253,7 @@ module ts { method.typeParameters = sig.typeParameters; method.parameters = sig.parameters; method.type = sig.type; - method.body = parseAndCheckFunctionBody(/*isConstructor*/ false); + method.body = parseFunctionBlockOrSemicolon(); return finishNode(method); } else { @@ -4152,7 +4147,8 @@ module ts { checkTypeParameterList(node.typeParameters) || checkParameterList(node.parameters) || checkConstructorTypeParameters(node) || - checkConstructorTypeAnnotation(node); + checkConstructorTypeAnnotation(node) || + checkForBodyInAmbientContext(node.body, /*isConstructor:*/ true); } function checkConstructorTypeParameters(node: ConstructorDeclaration) { @@ -4242,7 +4238,8 @@ module ts { function visitFunctionDeclaration(node: FunctionLikeDeclaration) { checkTypeParameterList(node.typeParameters) || checkParameterList(node.parameters) || - checkFunctionName(node.name); + checkFunctionName(node.name) || + checkForBodyInAmbientContext(node.body, /*isConstructor:*/ false); } function visitFunctionExpression(node: FunctionExpression) { @@ -4314,7 +4311,17 @@ module ts { function visitMethod(node: MethodDeclaration) { checkTypeParameterList(node.typeParameters) || - checkParameterList(node.parameters); + checkParameterList(node.parameters) || + checkForBodyInAmbientContext(node.body, /*isConstructor:*/ false); + } + + function checkForBodyInAmbientContext(body: Block | Expression, isConstructor: boolean): boolean { + if (inAmbientContext && body && body.kind === SyntaxKind.FunctionBlock) { + var diagnostic = isConstructor + ? Diagnostics.A_constructor_implementation_cannot_be_declared_in_an_ambient_context + : Diagnostics.A_function_implementation_cannot_be_declared_in_an_ambient_context; + return grammarErrorOnFirstToken(body, diagnostic); + } } function visitModuleDeclaration(node: ModuleDeclaration): void { diff --git a/tests/baselines/reference/ambientErrors.errors.txt b/tests/baselines/reference/ambientErrors.errors.txt index e89586275a3..a1e85be7401 100644 --- a/tests/baselines/reference/ambientErrors.errors.txt +++ b/tests/baselines/reference/ambientErrors.errors.txt @@ -1,10 +1,5 @@ -tests/cases/conformance/ambient/ambientErrors.ts(20,24): error TS1037: A function implementation cannot be declared in an ambient context. -tests/cases/conformance/ambient/ambientErrors.ts(35,19): error TS1037: A function implementation cannot be declared in an ambient context. tests/cases/conformance/ambient/ambientErrors.ts(37,18): error TS1039: Initializers are not allowed in ambient contexts. tests/cases/conformance/ambient/ambientErrors.ts(38,11): error TS1039: Initializers are not allowed in ambient contexts. -tests/cases/conformance/ambient/ambientErrors.ts(39,23): error TS1111: A constructor implementation cannot be declared in an ambient context. -tests/cases/conformance/ambient/ambientErrors.ts(40,14): error TS1037: A function implementation cannot be declared in an ambient context. -tests/cases/conformance/ambient/ambientErrors.ts(41,22): error TS1037: A function implementation cannot be declared in an ambient context. tests/cases/conformance/ambient/ambientErrors.ts(6,1): error TS2382: Specialized overload signature is not assignable to any non-specialized signature. tests/cases/conformance/ambient/ambientErrors.ts(17,22): error TS2371: A parameter initializer is only allowed in a function or constructor implementation. tests/cases/conformance/ambient/ambientErrors.ts(47,20): error TS2435: Ambient external modules cannot be nested in other modules. @@ -12,7 +7,7 @@ tests/cases/conformance/ambient/ambientErrors.ts(51,16): error TS2436: Ambient e tests/cases/conformance/ambient/ambientErrors.ts(57,5): error TS2309: An export assignment cannot be used in a module with other exported elements. -==== tests/cases/conformance/ambient/ambientErrors.ts (12 errors) ==== +==== tests/cases/conformance/ambient/ambientErrors.ts (7 errors) ==== // Ambient variable with an initializer declare var x = 4; @@ -37,8 +32,6 @@ tests/cases/conformance/ambient/ambientErrors.ts(57,5): error TS2309: An export // Ambient function with function body declare function fn4() { }; - ~ -!!! error TS1037: A function implementation cannot be declared in an ambient context. // Ambient enum with non - integer literal constant member declare enum E1 { @@ -54,8 +47,6 @@ tests/cases/conformance/ambient/ambientErrors.ts(57,5): error TS2309: An export declare module M1 { var x = 3; function fn() { } - ~ -!!! error TS1037: A function implementation cannot be declared in an ambient context. class C { static x = 3; ~ @@ -64,14 +55,8 @@ tests/cases/conformance/ambient/ambientErrors.ts(57,5): error TS2309: An export ~ !!! error TS1039: Initializers are not allowed in ambient contexts. constructor() { } - ~ -!!! error TS1111: A constructor implementation cannot be declared in an ambient context. fn() { } - ~ -!!! error TS1037: A function implementation cannot be declared in an ambient context. static sfn() { } - ~ -!!! error TS1037: A function implementation cannot be declared in an ambient context. } } diff --git a/tests/baselines/reference/exportDeclareClass1.errors.txt b/tests/baselines/reference/exportDeclareClass1.errors.txt index 36103269f83..c93dc5d0b01 100644 --- a/tests/baselines/reference/exportDeclareClass1.errors.txt +++ b/tests/baselines/reference/exportDeclareClass1.errors.txt @@ -1,19 +1,13 @@ -tests/cases/compiler/exportDeclareClass1.ts(2,21): error TS1037: A function implementation cannot be declared in an ambient context. tests/cases/compiler/exportDeclareClass1.ts(2,24): error TS1068: Unexpected token. A constructor, method, accessor, or property was expected. -tests/cases/compiler/exportDeclareClass1.ts(3,31): error TS1037: A function implementation cannot be declared in an ambient context. tests/cases/compiler/exportDeclareClass1.ts(3,34): error TS1068: Unexpected token. A constructor, method, accessor, or property was expected. -==== tests/cases/compiler/exportDeclareClass1.ts (4 errors) ==== +==== tests/cases/compiler/exportDeclareClass1.ts (2 errors) ==== export declare class eaC { static tF() { }; - ~ -!!! error TS1037: A function implementation cannot be declared in an ambient context. ~ !!! error TS1068: Unexpected token. A constructor, method, accessor, or property was expected. static tsF(param:any) { }; - ~ -!!! error TS1037: A function implementation cannot be declared in an ambient context. ~ !!! error TS1068: Unexpected token. A constructor, method, accessor, or property was expected. }; diff --git a/tests/baselines/reference/giant.errors.txt b/tests/baselines/reference/giant.errors.txt index e7785cb0cda..d70ac7013dd 100644 --- a/tests/baselines/reference/giant.errors.txt +++ b/tests/baselines/reference/giant.errors.txt @@ -10,27 +10,12 @@ tests/cases/compiler/giant.ts(93,9): error TS1005: '{' expected. tests/cases/compiler/giant.ts(95,9): error TS1005: '{' expected. tests/cases/compiler/giant.ts(99,9): error TS1005: '{' expected. tests/cases/compiler/giant.ts(101,5): error TS1005: '{' expected. -tests/cases/compiler/giant.ts(154,39): error TS1037: A function implementation cannot be declared in an ambient context. tests/cases/compiler/giant.ts(168,9): error TS1005: '{' expected. tests/cases/compiler/giant.ts(170,9): error TS1005: '{' expected. tests/cases/compiler/giant.ts(172,9): error TS1005: '{' expected. tests/cases/compiler/giant.ts(174,9): error TS1005: '{' expected. tests/cases/compiler/giant.ts(178,9): error TS1005: '{' expected. tests/cases/compiler/giant.ts(180,5): error TS1005: '{' expected. -tests/cases/compiler/giant.ts(233,39): error TS1037: A function implementation cannot be declared in an ambient context. -tests/cases/compiler/giant.ts(238,35): error TS1037: A function implementation cannot be declared in an ambient context. -tests/cases/compiler/giant.ts(240,24): error TS1111: A constructor implementation cannot be declared in an ambient context. -tests/cases/compiler/giant.ts(243,21): error TS1037: A function implementation cannot be declared in an ambient context. -tests/cases/compiler/giant.ts(244,22): error TS1037: A function implementation cannot be declared in an ambient context. -tests/cases/compiler/giant.ts(245,22): error TS1037: A function implementation cannot be declared in an ambient context. -tests/cases/compiler/giant.ts(247,31): error TS1037: A function implementation cannot be declared in an ambient context. -tests/cases/compiler/giant.ts(249,23): error TS1037: A function implementation cannot be declared in an ambient context. -tests/cases/compiler/giant.ts(251,32): error TS1037: A function implementation cannot be declared in an ambient context. -tests/cases/compiler/giant.ts(254,21): error TS1037: A function implementation cannot be declared in an ambient context. -tests/cases/compiler/giant.ts(255,31): error TS1037: A function implementation cannot be declared in an ambient context. -tests/cases/compiler/giant.ts(257,22): error TS1037: A function implementation cannot be declared in an ambient context. -tests/cases/compiler/giant.ts(262,22): error TS1037: A function implementation cannot be declared in an ambient context. -tests/cases/compiler/giant.ts(267,30): error TS1037: A function implementation cannot be declared in an ambient context. tests/cases/compiler/giant.ts(283,5): error TS1005: '{' expected. tests/cases/compiler/giant.ts(285,5): error TS1005: '{' expected. tests/cases/compiler/giant.ts(287,5): error TS1005: '{' expected. @@ -43,55 +28,16 @@ tests/cases/compiler/giant.ts(351,9): error TS1005: '{' expected. tests/cases/compiler/giant.ts(353,9): error TS1005: '{' expected. tests/cases/compiler/giant.ts(357,9): error TS1005: '{' expected. tests/cases/compiler/giant.ts(359,5): error TS1005: '{' expected. -tests/cases/compiler/giant.ts(412,39): error TS1037: A function implementation cannot be declared in an ambient context. tests/cases/compiler/giant.ts(426,9): error TS1005: '{' expected. tests/cases/compiler/giant.ts(428,9): error TS1005: '{' expected. tests/cases/compiler/giant.ts(430,9): error TS1005: '{' expected. tests/cases/compiler/giant.ts(432,9): error TS1005: '{' expected. tests/cases/compiler/giant.ts(436,9): error TS1005: '{' expected. tests/cases/compiler/giant.ts(438,5): error TS1005: '{' expected. -tests/cases/compiler/giant.ts(491,39): error TS1037: A function implementation cannot be declared in an ambient context. -tests/cases/compiler/giant.ts(496,35): error TS1037: A function implementation cannot be declared in an ambient context. -tests/cases/compiler/giant.ts(498,24): error TS1111: A constructor implementation cannot be declared in an ambient context. -tests/cases/compiler/giant.ts(501,21): error TS1037: A function implementation cannot be declared in an ambient context. -tests/cases/compiler/giant.ts(502,22): error TS1037: A function implementation cannot be declared in an ambient context. -tests/cases/compiler/giant.ts(503,22): error TS1037: A function implementation cannot be declared in an ambient context. -tests/cases/compiler/giant.ts(505,31): error TS1037: A function implementation cannot be declared in an ambient context. -tests/cases/compiler/giant.ts(507,23): error TS1037: A function implementation cannot be declared in an ambient context. -tests/cases/compiler/giant.ts(509,32): error TS1037: A function implementation cannot be declared in an ambient context. -tests/cases/compiler/giant.ts(512,21): error TS1037: A function implementation cannot be declared in an ambient context. -tests/cases/compiler/giant.ts(513,31): error TS1037: A function implementation cannot be declared in an ambient context. -tests/cases/compiler/giant.ts(515,22): error TS1037: A function implementation cannot be declared in an ambient context. -tests/cases/compiler/giant.ts(520,22): error TS1037: A function implementation cannot be declared in an ambient context. -tests/cases/compiler/giant.ts(525,30): error TS1037: A function implementation cannot be declared in an ambient context. -tests/cases/compiler/giant.ts(532,31): error TS1037: A function implementation cannot be declared in an ambient context. -tests/cases/compiler/giant.ts(534,20): error TS1111: A constructor implementation cannot be declared in an ambient context. -tests/cases/compiler/giant.ts(537,17): error TS1037: A function implementation cannot be declared in an ambient context. -tests/cases/compiler/giant.ts(538,18): error TS1037: A function implementation cannot be declared in an ambient context. -tests/cases/compiler/giant.ts(539,18): error TS1037: A function implementation cannot be declared in an ambient context. -tests/cases/compiler/giant.ts(541,27): error TS1037: A function implementation cannot be declared in an ambient context. -tests/cases/compiler/giant.ts(543,19): error TS1037: A function implementation cannot be declared in an ambient context. -tests/cases/compiler/giant.ts(545,28): error TS1037: A function implementation cannot be declared in an ambient context. -tests/cases/compiler/giant.ts(548,17): error TS1037: A function implementation cannot be declared in an ambient context. -tests/cases/compiler/giant.ts(549,27): error TS1037: A function implementation cannot be declared in an ambient context. -tests/cases/compiler/giant.ts(551,18): error TS1037: A function implementation cannot be declared in an ambient context. -tests/cases/compiler/giant.ts(556,18): error TS1037: A function implementation cannot be declared in an ambient context. -tests/cases/compiler/giant.ts(558,24): error TS1111: A constructor implementation cannot be declared in an ambient context. -tests/cases/compiler/giant.ts(561,21): error TS1037: A function implementation cannot be declared in an ambient context. -tests/cases/compiler/giant.ts(563,21): error TS1037: A function implementation cannot be declared in an ambient context. -tests/cases/compiler/giant.ts(606,22): error TS1037: A function implementation cannot be declared in an ambient context. -tests/cases/compiler/giant.ts(611,30): error TS1037: A function implementation cannot be declared in an ambient context. tests/cases/compiler/giant.ts(615,16): error TS1038: A 'declare' modifier cannot be used in an already ambient context. tests/cases/compiler/giant.ts(616,16): error TS1038: A 'declare' modifier cannot be used in an already ambient context. -tests/cases/compiler/giant.ts(616,39): error TS1037: A function implementation cannot be declared in an ambient context. tests/cases/compiler/giant.ts(617,16): error TS1038: A 'declare' modifier cannot be used in an already ambient context. tests/cases/compiler/giant.ts(618,16): error TS1038: A 'declare' modifier cannot be used in an already ambient context. -tests/cases/compiler/giant.ts(621,26): error TS1037: A function implementation cannot be declared in an ambient context. -tests/cases/compiler/giant.ts(623,24): error TS1111: A constructor implementation cannot be declared in an ambient context. -tests/cases/compiler/giant.ts(626,21): error TS1037: A function implementation cannot be declared in an ambient context. -tests/cases/compiler/giant.ts(628,21): error TS1037: A function implementation cannot be declared in an ambient context. -tests/cases/compiler/giant.ts(672,22): error TS1037: A function implementation cannot be declared in an ambient context. -tests/cases/compiler/giant.ts(676,30): error TS1037: A function implementation cannot be declared in an ambient context. tests/cases/compiler/giant.ts(23,12): error TS2300: Duplicate identifier 'pgF'. tests/cases/compiler/giant.ts(24,16): error TS2300: Duplicate identifier 'pgF'. tests/cases/compiler/giant.ts(24,16): error TS2378: A 'get' accessor must return a value or consist of a single 'throw' statement. @@ -228,7 +174,7 @@ tests/cases/compiler/giant.ts(602,9): error TS2386: Overload signatures must all tests/cases/compiler/giant.ts(668,9): error TS2386: Overload signatures must all be optional or required. -==== tests/cases/compiler/giant.ts (228 errors) ==== +==== tests/cases/compiler/giant.ts (174 errors) ==== /* Prefixes @@ -471,8 +417,6 @@ tests/cases/compiler/giant.ts(668,9): error TS2386: Overload signatures must all export module eM { }; export declare var eaV; export declare function eaF() { }; - ~ -!!! error TS1037: A function implementation cannot be declared in an ambient context. export declare class eaC { }; export declare module eaM { }; } @@ -596,54 +540,36 @@ tests/cases/compiler/giant.ts(668,9): error TS2386: Overload signatures must all export module eM { }; export declare var eaV; export declare function eaF() { }; - ~ -!!! error TS1037: A function implementation cannot be declared in an ambient context. export declare class eaC { }; export declare module eaM { }; } export declare var eaV; export declare function eaF() { }; - ~ -!!! error TS1037: A function implementation cannot be declared in an ambient context. export declare class eaC { constructor () { } - ~ -!!! error TS1111: A constructor implementation cannot be declared in an ambient context. public pV; private rV; public pF() { } - ~ -!!! error TS1037: A function implementation cannot be declared in an ambient context. private rF() { } - ~ -!!! error TS1037: A function implementation cannot be declared in an ambient context. public pgF() { } - ~ -!!! error TS1037: A function implementation cannot be declared in an ambient context. ~~~ !!! error TS2300: Duplicate identifier 'pgF'. public get pgF() ~~~ !!! error TS2300: Duplicate identifier 'pgF'. public psF(param:any) { } - ~ -!!! error TS1037: A function implementation cannot be declared in an ambient context. ~~~ !!! error TS2300: Duplicate identifier 'psF'. public set psF(param:any) ~~~ !!! error TS2300: Duplicate identifier 'psF'. private rgF() { } - ~ -!!! error TS1037: A function implementation cannot be declared in an ambient context. ~~~ !!! error TS2300: Duplicate identifier 'rgF'. private get rgF() ~~~ !!! error TS2300: Duplicate identifier 'rgF'. private rsF(param:any) { } - ~ -!!! error TS1037: A function implementation cannot be declared in an ambient context. ~~~ !!! error TS2300: Duplicate identifier 'rsF'. private set rsF(param:any) @@ -651,19 +577,13 @@ tests/cases/compiler/giant.ts(668,9): error TS2386: Overload signatures must all !!! error TS2300: Duplicate identifier 'rsF'. static tV; static tF() { } - ~ -!!! error TS1037: A function implementation cannot be declared in an ambient context. static tsF(param:any) { } - ~ -!!! error TS1037: A function implementation cannot be declared in an ambient context. ~~~ !!! error TS2300: Duplicate identifier 'tsF'. static set tsF(param:any) ~~~ !!! error TS2300: Duplicate identifier 'tsF'. static tgF() { } - ~ -!!! error TS1037: A function implementation cannot be declared in an ambient context. ~~~ !!! error TS2300: Duplicate identifier 'tgF'. static get tgF() @@ -673,15 +593,11 @@ tests/cases/compiler/giant.ts(668,9): error TS2386: Overload signatures must all export declare module eaM { var V; function F() { }; - ~ -!!! error TS1037: A function implementation cannot be declared in an ambient context. class C { } interface I { } module M { } export var eV; export function eF() { }; - ~ -!!! error TS1037: A function implementation cannot be declared in an ambient context. export class eC { } export interface eI { } export module eM { } @@ -915,8 +831,6 @@ tests/cases/compiler/giant.ts(668,9): error TS2386: Overload signatures must all export module eM { }; export declare var eaV; export declare function eaF() { }; - ~ -!!! error TS1037: A function implementation cannot be declared in an ambient context. export declare class eaC { }; export declare module eaM { }; } @@ -1040,54 +954,36 @@ tests/cases/compiler/giant.ts(668,9): error TS2386: Overload signatures must all export module eM { }; export declare var eaV; export declare function eaF() { }; - ~ -!!! error TS1037: A function implementation cannot be declared in an ambient context. export declare class eaC { }; export declare module eaM { }; } export declare var eaV; export declare function eaF() { }; - ~ -!!! error TS1037: A function implementation cannot be declared in an ambient context. export declare class eaC { constructor () { } - ~ -!!! error TS1111: A constructor implementation cannot be declared in an ambient context. public pV; private rV; public pF() { } - ~ -!!! error TS1037: A function implementation cannot be declared in an ambient context. private rF() { } - ~ -!!! error TS1037: A function implementation cannot be declared in an ambient context. public pgF() { } - ~ -!!! error TS1037: A function implementation cannot be declared in an ambient context. ~~~ !!! error TS2300: Duplicate identifier 'pgF'. public get pgF() ~~~ !!! error TS2300: Duplicate identifier 'pgF'. public psF(param:any) { } - ~ -!!! error TS1037: A function implementation cannot be declared in an ambient context. ~~~ !!! error TS2300: Duplicate identifier 'psF'. public set psF(param:any) ~~~ !!! error TS2300: Duplicate identifier 'psF'. private rgF() { } - ~ -!!! error TS1037: A function implementation cannot be declared in an ambient context. ~~~ !!! error TS2300: Duplicate identifier 'rgF'. private get rgF() ~~~ !!! error TS2300: Duplicate identifier 'rgF'. private rsF(param:any) { } - ~ -!!! error TS1037: A function implementation cannot be declared in an ambient context. ~~~ !!! error TS2300: Duplicate identifier 'rsF'. private set rsF(param:any) @@ -1095,19 +991,13 @@ tests/cases/compiler/giant.ts(668,9): error TS2386: Overload signatures must all !!! error TS2300: Duplicate identifier 'rsF'. static tV; static tF() { } - ~ -!!! error TS1037: A function implementation cannot be declared in an ambient context. static tsF(param:any) { } - ~ -!!! error TS1037: A function implementation cannot be declared in an ambient context. ~~~ !!! error TS2300: Duplicate identifier 'tsF'. static set tsF(param:any) ~~~ !!! error TS2300: Duplicate identifier 'tsF'. static tgF() { } - ~ -!!! error TS1037: A function implementation cannot be declared in an ambient context. ~~~ !!! error TS2300: Duplicate identifier 'tgF'. static get tgF() @@ -1117,15 +1007,11 @@ tests/cases/compiler/giant.ts(668,9): error TS2386: Overload signatures must all export declare module eaM { var V; function F() { }; - ~ -!!! error TS1037: A function implementation cannot be declared in an ambient context. class C { } interface I { } module M { } export var eV; export function eF() { }; - ~ -!!! error TS1037: A function implementation cannot be declared in an ambient context. export class eC { } export interface eI { } export module eM { } @@ -1133,47 +1019,31 @@ tests/cases/compiler/giant.ts(668,9): error TS2386: Overload signatures must all } export declare var eaV; export declare function eaF() { }; - ~ -!!! error TS1037: A function implementation cannot be declared in an ambient context. export declare class eaC { constructor () { } - ~ -!!! error TS1111: A constructor implementation cannot be declared in an ambient context. public pV; private rV; public pF() { } - ~ -!!! error TS1037: A function implementation cannot be declared in an ambient context. private rF() { } - ~ -!!! error TS1037: A function implementation cannot be declared in an ambient context. public pgF() { } - ~ -!!! error TS1037: A function implementation cannot be declared in an ambient context. ~~~ !!! error TS2300: Duplicate identifier 'pgF'. public get pgF() ~~~ !!! error TS2300: Duplicate identifier 'pgF'. public psF(param:any) { } - ~ -!!! error TS1037: A function implementation cannot be declared in an ambient context. ~~~ !!! error TS2300: Duplicate identifier 'psF'. public set psF(param:any) ~~~ !!! error TS2300: Duplicate identifier 'psF'. private rgF() { } - ~ -!!! error TS1037: A function implementation cannot be declared in an ambient context. ~~~ !!! error TS2300: Duplicate identifier 'rgF'. private get rgF() ~~~ !!! error TS2300: Duplicate identifier 'rgF'. private rsF(param:any) { } - ~ -!!! error TS1037: A function implementation cannot be declared in an ambient context. ~~~ !!! error TS2300: Duplicate identifier 'rsF'. private set rsF(param:any) @@ -1181,19 +1051,13 @@ tests/cases/compiler/giant.ts(668,9): error TS2386: Overload signatures must all !!! error TS2300: Duplicate identifier 'rsF'. static tV; static tF() { } - ~ -!!! error TS1037: A function implementation cannot be declared in an ambient context. static tsF(param:any) { } - ~ -!!! error TS1037: A function implementation cannot be declared in an ambient context. ~~~ !!! error TS2300: Duplicate identifier 'tsF'. static set tsF(param:any) ~~~ !!! error TS2300: Duplicate identifier 'tsF'. static tgF() { } - ~ -!!! error TS1037: A function implementation cannot be declared in an ambient context. ~~~ !!! error TS2300: Duplicate identifier 'tgF'. static get tgF() @@ -1203,21 +1067,13 @@ tests/cases/compiler/giant.ts(668,9): error TS2386: Overload signatures must all export declare module eaM { var V; function F() { }; - ~ -!!! error TS1037: A function implementation cannot be declared in an ambient context. class C { constructor () { } - ~ -!!! error TS1111: A constructor implementation cannot be declared in an ambient context. public pV; private rV; public pF() { } - ~ -!!! error TS1037: A function implementation cannot be declared in an ambient context. static tV; static tF() { } - ~ -!!! error TS1037: A function implementation cannot be declared in an ambient context. } interface I { //Call Signature @@ -1263,15 +1119,11 @@ tests/cases/compiler/giant.ts(668,9): error TS2386: Overload signatures must all module M { var V; function F() { }; - ~ -!!! error TS1037: A function implementation cannot be declared in an ambient context. class C { } interface I { } module M { } export var eV; export function eF() { }; - ~ -!!! error TS1037: A function implementation cannot be declared in an ambient context. export class eC { } export interface eI { } export module eM { } @@ -1281,8 +1133,6 @@ tests/cases/compiler/giant.ts(668,9): error TS2386: Overload signatures must all export declare function eaF() { }; ~~~~~~~ !!! error TS1038: A 'declare' modifier cannot be used in an already ambient context. - ~ -!!! error TS1037: A function implementation cannot be declared in an ambient context. export declare class eaC { } ~~~~~~~ !!! error TS1038: A 'declare' modifier cannot be used in an already ambient context. @@ -1292,21 +1142,13 @@ tests/cases/compiler/giant.ts(668,9): error TS2386: Overload signatures must all } export var eV; export function eF() { }; - ~ -!!! error TS1037: A function implementation cannot be declared in an ambient context. export class eC { constructor () { } - ~ -!!! error TS1111: A constructor implementation cannot be declared in an ambient context. public pV; private rV; public pF() { } - ~ -!!! error TS1037: A function implementation cannot be declared in an ambient context. static tV static tF() { } - ~ -!!! error TS1037: A function implementation cannot be declared in an ambient context. } export interface eI { //Call Signature @@ -1353,14 +1195,10 @@ tests/cases/compiler/giant.ts(668,9): error TS2386: Overload signatures must all export module eM { var V; function F() { }; - ~ -!!! error TS1037: A function implementation cannot be declared in an ambient context. class C { } module M { } export var eV; export function eF() { }; - ~ -!!! error TS1037: A function implementation cannot be declared in an ambient context. export class eC { } export interface eI { } export module eM { } diff --git a/tests/baselines/reference/initializersInDeclarations.errors.txt b/tests/baselines/reference/initializersInDeclarations.errors.txt index f91220c91a1..9e02a1cd747 100644 --- a/tests/baselines/reference/initializersInDeclarations.errors.txt +++ b/tests/baselines/reference/initializersInDeclarations.errors.txt @@ -1,9 +1,8 @@ tests/cases/conformance/externalModules/initializersInDeclarations.ts(5,7): error TS1039: Initializers are not allowed in ambient contexts. tests/cases/conformance/externalModules/initializersInDeclarations.ts(6,14): error TS1039: Initializers are not allowed in ambient contexts. -tests/cases/conformance/externalModules/initializersInDeclarations.ts(7,16): error TS1037: A function implementation cannot be declared in an ambient context. -==== tests/cases/conformance/externalModules/initializersInDeclarations.ts (3 errors) ==== +==== tests/cases/conformance/externalModules/initializersInDeclarations.ts (2 errors) ==== // Errors: Initializers & statements in declaration file @@ -15,8 +14,6 @@ tests/cases/conformance/externalModules/initializersInDeclarations.ts(7,16): err ~ !!! error TS1039: Initializers are not allowed in ambient contexts. fn(): boolean { - ~ -!!! error TS1037: A function implementation cannot be declared in an ambient context. return false; } } diff --git a/tests/baselines/reference/parserFunctionDeclaration2.d.errors.txt b/tests/baselines/reference/parserFunctionDeclaration2.d.errors.txt index 76d47a0a9d4..f623642e827 100644 --- a/tests/baselines/reference/parserFunctionDeclaration2.d.errors.txt +++ b/tests/baselines/reference/parserFunctionDeclaration2.d.errors.txt @@ -1,11 +1,8 @@ tests/cases/conformance/parser/ecmascript5/FunctionDeclarations/parserFunctionDeclaration2.d.ts(1,1): error TS1046: A 'declare' modifier is required for a top level declaration in a .d.ts file. -tests/cases/conformance/parser/ecmascript5/FunctionDeclarations/parserFunctionDeclaration2.d.ts(1,14): error TS1037: A function implementation cannot be declared in an ambient context. -==== tests/cases/conformance/parser/ecmascript5/FunctionDeclarations/parserFunctionDeclaration2.d.ts (2 errors) ==== +==== tests/cases/conformance/parser/ecmascript5/FunctionDeclarations/parserFunctionDeclaration2.d.ts (1 errors) ==== function F() { ~~~~~~~~ !!! error TS1046: A 'declare' modifier is required for a top level declaration in a .d.ts file. - ~ -!!! error TS1037: A function implementation cannot be declared in an ambient context. } \ No newline at end of file