From a4cd0b1c134c2724426fa290304f09e2af4e9ce5 Mon Sep 17 00:00:00 2001 From: Oleksandr T Date: Sat, 27 Jul 2024 17:30:32 +0300 Subject: [PATCH] fix(59292): cover usage of isolatedDeclarations with optional parameter typed as imported generic type --- .../isolatedDeclarationsOptionalParameter.js | 25 +++++++++++++++++++ ...latedDeclarationsOptionalParameter.symbols | 23 +++++++++++++++++ ...solatedDeclarationsOptionalParameter.types | 22 ++++++++++++++++ .../isolatedDeclarationsOptionalParameter.ts | 20 +++++++++++++++ 4 files changed, 90 insertions(+) create mode 100644 tests/baselines/reference/isolatedDeclarationsOptionalParameter.js create mode 100644 tests/baselines/reference/isolatedDeclarationsOptionalParameter.symbols create mode 100644 tests/baselines/reference/isolatedDeclarationsOptionalParameter.types create mode 100644 tests/cases/compiler/isolatedDeclarationsOptionalParameter.ts diff --git a/tests/baselines/reference/isolatedDeclarationsOptionalParameter.js b/tests/baselines/reference/isolatedDeclarationsOptionalParameter.js new file mode 100644 index 0000000000000..3863b73756ec8 --- /dev/null +++ b/tests/baselines/reference/isolatedDeclarationsOptionalParameter.js @@ -0,0 +1,25 @@ +//// [tests/cases/compiler/isolatedDeclarationsOptionalParameter.ts] //// + +//// [package.json] +{ + "name": "foo", + "types": "index.d.ts" +} + +//// [index.d.ts] +export interface Foo { + a: T; +} + +//// [bar.ts] +import { type Foo } from "foo"; +export const bar = (foo?: Foo): void => { }; + + +//// [bar.js] +export const bar = (foo) => { }; + + +//// [bar.d.ts] +import { type Foo } from "foo"; +export declare const bar: (foo?: Foo) => void; diff --git a/tests/baselines/reference/isolatedDeclarationsOptionalParameter.symbols b/tests/baselines/reference/isolatedDeclarationsOptionalParameter.symbols new file mode 100644 index 0000000000000..76c8fe18d08ce --- /dev/null +++ b/tests/baselines/reference/isolatedDeclarationsOptionalParameter.symbols @@ -0,0 +1,23 @@ +//// [tests/cases/compiler/isolatedDeclarationsOptionalParameter.ts] //// + +=== /node_modules/foo/index.d.ts === +export interface Foo { +>Foo : Symbol(Foo, Decl(index.d.ts, 0, 0)) +>T : Symbol(T, Decl(index.d.ts, 0, 21)) + + a: T; +>a : Symbol(Foo.a, Decl(index.d.ts, 0, 25)) +>T : Symbol(T, Decl(index.d.ts, 0, 21)) +} + +=== /bar.ts === +import { type Foo } from "foo"; +>Foo : Symbol(Foo, Decl(bar.ts, 0, 8)) + +export const bar = (foo?: Foo): void => { }; +>bar : Symbol(bar, Decl(bar.ts, 1, 12)) +>T : Symbol(T, Decl(bar.ts, 1, 20)) +>foo : Symbol(foo, Decl(bar.ts, 1, 24)) +>Foo : Symbol(Foo, Decl(bar.ts, 0, 8)) +>T : Symbol(T, Decl(bar.ts, 1, 20)) + diff --git a/tests/baselines/reference/isolatedDeclarationsOptionalParameter.types b/tests/baselines/reference/isolatedDeclarationsOptionalParameter.types new file mode 100644 index 0000000000000..835d184effea6 --- /dev/null +++ b/tests/baselines/reference/isolatedDeclarationsOptionalParameter.types @@ -0,0 +1,22 @@ +//// [tests/cases/compiler/isolatedDeclarationsOptionalParameter.ts] //// + +=== /node_modules/foo/index.d.ts === +export interface Foo { + a: T; +>a : T +> : ^ +} + +=== /bar.ts === +import { type Foo } from "foo"; +>Foo : any +> : ^^^ + +export const bar = (foo?: Foo): void => { }; +>bar : (foo?: Foo) => void +> : ^ ^^ ^^^ ^^^^^ +>(foo?: Foo): void => { } : (foo?: Foo) => void +> : ^ ^^ ^^^ ^^^^^ +>foo : Foo | undefined +> : ^^^^^^^^^^^^^^^^^^ + diff --git a/tests/cases/compiler/isolatedDeclarationsOptionalParameter.ts b/tests/cases/compiler/isolatedDeclarationsOptionalParameter.ts new file mode 100644 index 0000000000000..4a0049ef99e39 --- /dev/null +++ b/tests/cases/compiler/isolatedDeclarationsOptionalParameter.ts @@ -0,0 +1,20 @@ +// @isolatedDeclarations: true +// @moduleResolution: node +// @declaration: true +// @strict: true +// @target: esnext + +// @Filename: /node_modules/foo/package.json +{ + "name": "foo", + "types": "index.d.ts" +} + +// @Filename: /node_modules/foo/index.d.ts +export interface Foo { + a: T; +} + +// @filename: /bar.ts +import { type Foo } from "foo"; +export const bar = (foo?: Foo): void => { };