Skip to content

Commit

Permalink
Merge pull request #12852 from Microsoft/untyped_augmentation_2
Browse files Browse the repository at this point in the history
Produce an error for an augmentation of an untyped module even if `moduleNotFoundError` is not defined
  • Loading branch information
Andy authored Dec 12, 2016
2 parents 65bb78d + 83eddb5 commit a33e653
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 2 deletions.
3 changes: 1 addition & 2 deletions src/compiler/checker.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1439,9 +1439,8 @@ namespace ts {
// May be an untyped module. If so, ignore resolutionDiagnostic.
if (!isRelative && resolvedModule && !extensionIsTypeScript(resolvedModule.extension)) {
if (isForAugmentation) {
Debug.assert(!!moduleNotFoundError);
const diag = Diagnostics.Invalid_module_name_in_augmentation_Module_0_resolves_to_an_untyped_module_at_1_which_cannot_be_augmented;
error(errorNode, diag, moduleName, resolvedModule.resolvedFileName);
error(errorNode, diag, moduleReference, resolvedModule.resolvedFileName);
}
else if (compilerOptions.noImplicitAny && moduleNotFoundError) {
error(errorNode,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
/node_modules/augmenter/index.d.ts(3,16): error TS2665: Invalid module name in augmentation. Module 'js' resolves to an untyped module at '/node_modules/js/index.js', which cannot be augmented.


==== /a.ts (0 errors) ====
import { } from "augmenter";

==== /node_modules/augmenter/index.d.ts (1 errors) ====
// This tests that augmenting an untyped module is forbidden even in an ambient context. Contrast with `moduleAugmentationInDependency.ts`.

declare module "js" {
~~~~
!!! error TS2665: Invalid module name in augmentation. Module 'js' resolves to an untyped module at '/node_modules/js/index.js', which cannot be augmented.
export const j: number;
}
export {};

==== /node_modules/js/index.js (0 errors) ====
This file is not processed.

19 changes: 19 additions & 0 deletions tests/baselines/reference/untypedModuleImport_withAugmentation2.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
//// [tests/cases/compiler/untypedModuleImport_withAugmentation2.ts] ////

//// [index.d.ts]
// This tests that augmenting an untyped module is forbidden even in an ambient context. Contrast with `moduleAugmentationInDependency.ts`.

declare module "js" {
export const j: number;
}
export {};

//// [index.js]
This file is not processed.

//// [a.ts]
import { } from "augmenter";


//// [a.js]
"use strict";
14 changes: 14 additions & 0 deletions tests/cases/compiler/untypedModuleImport_withAugmentation2.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
// @noImplicitReferences: true
// This tests that augmenting an untyped module is forbidden even in an ambient context. Contrast with `moduleAugmentationInDependency.ts`.

// @Filename: /node_modules/augmenter/index.d.ts
declare module "js" {
export const j: number;
}
export {};

// @Filename: /node_modules/js/index.js
This file is not processed.

// @Filename: /a.ts
import { } from "augmenter";

0 comments on commit a33e653

Please sign in to comment.