Skip to content

Commit

Permalink
Cherry-pick PR #42971 into release-4.2 (#42972)
Browse files Browse the repository at this point in the history
Component commits:
9f9825a Fix: checkAliasSymbol crash when checking for @deprecated
It's possible that we shouldn't be creating symbol with no declarations
from non-homomorphic mapped types, but for 4.2, the right fix is to make
the @deprecated-check in checkAliasSymbol ensure that
target.declarations is defined.

75449de Add bug number and accept baselines

Co-authored-by: Nathan Shively-Sanders <nathansa@microsoft.com>
  • Loading branch information
typescript-bot and sandersn committed Feb 26, 2021
1 parent acc5fa0 commit d971013
Show file tree
Hide file tree
Showing 5 changed files with 72 additions and 1 deletion.
2 changes: 1 addition & 1 deletion src/compiler/checker.ts
Expand Up @@ -36958,7 +36958,7 @@ namespace ts {
error(node, Diagnostics.Re_exporting_a_type_when_the_isolatedModules_flag_is_provided_requires_using_export_type);
}

if (isImportSpecifier(node) && every(target.declarations, d => !!(getCombinedNodeFlags(d) & NodeFlags.Deprecated))) {
if (isImportSpecifier(node) && target.declarations?.every(d => !!(getCombinedNodeFlags(d) & NodeFlags.Deprecated))) {
addDeprecatedSuggestion(node.name, target.declarations, symbol.escapedName as string);
}
}
Expand Down
18 changes: 18 additions & 0 deletions tests/baselines/reference/importPropertyFromMappedType.js
@@ -0,0 +1,18 @@
//// [tests/cases/compiler/importPropertyFromMappedType.ts] ////

//// [errors.d.ts]
// #42957

export = createHttpError;
declare const createHttpError: createHttpError.NamedConstructors;
declare namespace createHttpError {
type NamedConstructors = { [P in 'NotFound']: unknown;}
}

//// [main.ts]
import { NotFound } from './errors'


//// [main.js]
"use strict";
exports.__esModule = true;
23 changes: 23 additions & 0 deletions tests/baselines/reference/importPropertyFromMappedType.symbols
@@ -0,0 +1,23 @@
=== tests/cases/compiler/errors.d.ts ===
// #42957

export = createHttpError;
>createHttpError : Symbol(createHttpError, Decl(errors.d.ts, 3, 13), Decl(errors.d.ts, 3, 65))

declare const createHttpError: createHttpError.NamedConstructors;
>createHttpError : Symbol(createHttpError, Decl(errors.d.ts, 3, 13), Decl(errors.d.ts, 3, 65))
>createHttpError : Symbol(createHttpError, Decl(errors.d.ts, 3, 13), Decl(errors.d.ts, 3, 65))
>NamedConstructors : Symbol(createHttpError.NamedConstructors, Decl(errors.d.ts, 4, 35))

declare namespace createHttpError {
>createHttpError : Symbol(createHttpError, Decl(errors.d.ts, 3, 13), Decl(errors.d.ts, 3, 65))

type NamedConstructors = { [P in 'NotFound']: unknown;}
>NamedConstructors : Symbol(NamedConstructors, Decl(errors.d.ts, 4, 35))
>P : Symbol(P, Decl(errors.d.ts, 5, 33))
}

=== tests/cases/compiler/main.ts ===
import { NotFound } from './errors'
>NotFound : Symbol(NotFound, Decl(main.ts, 0, 8))

19 changes: 19 additions & 0 deletions tests/baselines/reference/importPropertyFromMappedType.types
@@ -0,0 +1,19 @@
=== tests/cases/compiler/errors.d.ts ===
// #42957

export = createHttpError;
>createHttpError : createHttpError.NamedConstructors

declare const createHttpError: createHttpError.NamedConstructors;
>createHttpError : createHttpError.NamedConstructors
>createHttpError : any

declare namespace createHttpError {
type NamedConstructors = { [P in 'NotFound']: unknown;}
>NamedConstructors : NamedConstructors
}

=== tests/cases/compiler/main.ts ===
import { NotFound } from './errors'
>NotFound : unknown

11 changes: 11 additions & 0 deletions tests/cases/compiler/importPropertyFromMappedType.ts
@@ -0,0 +1,11 @@
// #42957

// @filename: errors.d.ts
export = createHttpError;
declare const createHttpError: createHttpError.NamedConstructors;
declare namespace createHttpError {
type NamedConstructors = { [P in 'NotFound']: unknown;}
}

// @filename: main.ts
import { NotFound } from './errors'

0 comments on commit d971013

Please sign in to comment.