diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 30637c3cebc..eff67197bbc 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -5935,7 +5935,9 @@ namespace ts { // Otherwise, fall back to 'any'. else { if (setter) { - errorOrSuggestion(noImplicitAny, setter, Diagnostics.Property_0_implicitly_has_type_any_because_its_set_accessor_lacks_a_parameter_type_annotation, symbolToString(symbol)); + if (!isPrivateWithinAmbient(setter)) { + errorOrSuggestion(noImplicitAny, setter, Diagnostics.Property_0_implicitly_has_type_any_because_its_set_accessor_lacks_a_parameter_type_annotation, symbolToString(symbol)); + } } else { Debug.assert(!!getter, "there must existed getter as we are current checking either setter or getter in this function"); @@ -33039,10 +33041,7 @@ namespace ts { if (languageVersion < ScriptTarget.ES5) { return grammarErrorOnNode(accessor.name, Diagnostics.Accessors_are_only_available_when_targeting_ECMAScript_5_and_higher); } - else if (accessor.flags & NodeFlags.Ambient) { - return grammarErrorOnNode(accessor.name, Diagnostics.An_accessor_cannot_be_declared_in_an_ambient_context); - } - else if (accessor.body === undefined && !hasModifier(accessor, ModifierFlags.Abstract)) { + else if (accessor.body === undefined && !hasModifier(accessor, ModifierFlags.Abstract) && !(accessor.flags & NodeFlags.Ambient)) { return grammarErrorAtPos(accessor, accessor.end - 1, ";".length, Diagnostics._0_expected, "{"); } else if (accessor.body && hasModifier(accessor, ModifierFlags.Abstract)) { diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index 4528d504d0d..5cca456dd49 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -243,10 +243,6 @@ "category": "Error", "code": 1085 }, - "An accessor cannot be declared in an ambient context.": { - "category": "Error", - "code": 1086 - }, "'{0}' modifier cannot appear on a constructor declaration.": { "category": "Error", "code": 1089 diff --git a/tests/baselines/reference/accessorsInAmbientContext.errors.txt b/tests/baselines/reference/accessorsInAmbientContext.errors.txt deleted file mode 100644 index 44b100bd58d..00000000000 --- a/tests/baselines/reference/accessorsInAmbientContext.errors.txt +++ /dev/null @@ -1,44 +0,0 @@ -tests/cases/compiler/accessorsInAmbientContext.ts(3,13): error TS1086: An accessor cannot be declared in an ambient context. -tests/cases/compiler/accessorsInAmbientContext.ts(4,13): error TS1086: An accessor cannot be declared in an ambient context. -tests/cases/compiler/accessorsInAmbientContext.ts(6,20): error TS1086: An accessor cannot be declared in an ambient context. -tests/cases/compiler/accessorsInAmbientContext.ts(7,20): error TS1086: An accessor cannot be declared in an ambient context. -tests/cases/compiler/accessorsInAmbientContext.ts(12,9): error TS1086: An accessor cannot be declared in an ambient context. -tests/cases/compiler/accessorsInAmbientContext.ts(13,9): error TS1086: An accessor cannot be declared in an ambient context. -tests/cases/compiler/accessorsInAmbientContext.ts(15,16): error TS1086: An accessor cannot be declared in an ambient context. -tests/cases/compiler/accessorsInAmbientContext.ts(16,16): error TS1086: An accessor cannot be declared in an ambient context. - - -==== tests/cases/compiler/accessorsInAmbientContext.ts (8 errors) ==== - declare module M { - class C { - get X() { return 1; } - ~ -!!! error TS1086: An accessor cannot be declared in an ambient context. - set X(v) { } - ~ -!!! error TS1086: An accessor cannot be declared in an ambient context. - - static get Y() { return 1; } - ~ -!!! error TS1086: An accessor cannot be declared in an ambient context. - static set Y(v) { } - ~ -!!! error TS1086: An accessor cannot be declared in an ambient context. - } - } - - declare class C { - get X() { return 1; } - ~ -!!! error TS1086: An accessor cannot be declared in an ambient context. - set X(v) { } - ~ -!!! error TS1086: An accessor cannot be declared in an ambient context. - - static get Y() { return 1; } - ~ -!!! error TS1086: An accessor cannot be declared in an ambient context. - static set Y(v) { } - ~ -!!! error TS1086: An accessor cannot be declared in an ambient context. - } \ No newline at end of file diff --git a/tests/baselines/reference/ambientGetters.errors.txt b/tests/baselines/reference/ambientGetters.errors.txt deleted file mode 100644 index b245f561813..00000000000 --- a/tests/baselines/reference/ambientGetters.errors.txt +++ /dev/null @@ -1,16 +0,0 @@ -tests/cases/compiler/ambientGetters.ts(2,9): error TS1086: An accessor cannot be declared in an ambient context. -tests/cases/compiler/ambientGetters.ts(6,9): error TS1086: An accessor cannot be declared in an ambient context. - - -==== tests/cases/compiler/ambientGetters.ts (2 errors) ==== - declare class A { - get length() : number; - ~~~~~~ -!!! error TS1086: An accessor cannot be declared in an ambient context. - } - - declare class B { - get length() { return 0; } - ~~~~~~ -!!! error TS1086: An accessor cannot be declared in an ambient context. - } \ No newline at end of file diff --git a/tests/baselines/reference/parserAccessors5.errors.txt b/tests/baselines/reference/parserAccessors5.errors.txt deleted file mode 100644 index b7dcd8ef923..00000000000 --- a/tests/baselines/reference/parserAccessors5.errors.txt +++ /dev/null @@ -1,9 +0,0 @@ -tests/cases/conformance/parser/ecmascript5/Accessors/parserAccessors5.ts(2,7): error TS1086: An accessor cannot be declared in an ambient context. - - -==== tests/cases/conformance/parser/ecmascript5/Accessors/parserAccessors5.ts (1 errors) ==== - declare class C { - get foo() { return 0; } - ~~~ -!!! error TS1086: An accessor cannot be declared in an ambient context. - } \ No newline at end of file diff --git a/tests/baselines/reference/parserAccessors6.errors.txt b/tests/baselines/reference/parserAccessors6.errors.txt deleted file mode 100644 index 023ec6d79c3..00000000000 --- a/tests/baselines/reference/parserAccessors6.errors.txt +++ /dev/null @@ -1,9 +0,0 @@ -tests/cases/conformance/parser/ecmascript5/Accessors/parserAccessors6.ts(2,7): error TS1086: An accessor cannot be declared in an ambient context. - - -==== tests/cases/conformance/parser/ecmascript5/Accessors/parserAccessors6.ts (1 errors) ==== - declare class C { - set foo(v) { } - ~~~ -!!! error TS1086: An accessor cannot be declared in an ambient context. - } \ No newline at end of file diff --git a/tests/baselines/reference/parserComputedPropertyName23.errors.txt b/tests/baselines/reference/parserComputedPropertyName23.errors.txt index 8c95992253c..2ecf45eb697 100644 --- a/tests/baselines/reference/parserComputedPropertyName23.errors.txt +++ b/tests/baselines/reference/parserComputedPropertyName23.errors.txt @@ -1,12 +1,9 @@ -tests/cases/conformance/parser/ecmascript6/ComputedPropertyNames/parserComputedPropertyName23.ts(2,9): error TS1086: An accessor cannot be declared in an ambient context. tests/cases/conformance/parser/ecmascript6/ComputedPropertyNames/parserComputedPropertyName23.ts(2,10): error TS2304: Cannot find name 'e'. -==== tests/cases/conformance/parser/ecmascript6/ComputedPropertyNames/parserComputedPropertyName23.ts (2 errors) ==== +==== tests/cases/conformance/parser/ecmascript6/ComputedPropertyNames/parserComputedPropertyName23.ts (1 errors) ==== declare class C { get [e](): number - ~~~ -!!! error TS1086: An accessor cannot be declared in an ambient context. ~ !!! error TS2304: Cannot find name 'e'. } \ No newline at end of file