From dc7ee381d5645f1b00be8d9d43b4afecc9b65ca7 Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Fri, 2 Mar 2018 16:10:34 -0800 Subject: [PATCH] Add tests when declaration emit for indirect alias usuage results in wrong error reporting Test for #22257 --- ...rationEmitAliasFromIndirectFile.errors.txt | 31 +++++++++ .../declarationEmitAliasFromIndirectFile.js | 59 ++++++++++++++++ ...clarationEmitAliasFromIndirectFile.symbols | 64 +++++++++++++++++ ...declarationEmitAliasFromIndirectFile.types | 68 +++++++++++++++++++ .../declarationEmitAliasFromIndirectFile.ts | 27 ++++++++ 5 files changed, 249 insertions(+) create mode 100644 tests/baselines/reference/declarationEmitAliasFromIndirectFile.errors.txt create mode 100644 tests/baselines/reference/declarationEmitAliasFromIndirectFile.js create mode 100644 tests/baselines/reference/declarationEmitAliasFromIndirectFile.symbols create mode 100644 tests/baselines/reference/declarationEmitAliasFromIndirectFile.types create mode 100644 tests/cases/compiler/declarationEmitAliasFromIndirectFile.ts diff --git a/tests/baselines/reference/declarationEmitAliasFromIndirectFile.errors.txt b/tests/baselines/reference/declarationEmitAliasFromIndirectFile.errors.txt new file mode 100644 index 00000000000..22d258590e9 --- /dev/null +++ b/tests/baselines/reference/declarationEmitAliasFromIndirectFile.errors.txt @@ -0,0 +1,31 @@ +tests/cases/compiler/app.ts(3,16): error TS2503: Cannot find namespace 'fp'. + + +==== tests/cases/compiler/locale.d.ts (0 errors) ==== + export type Locale = { + weekdays: { + shorthand: [string, string, string, string, string, string, string]; + longhand: [string, string, string, string, string, string, string]; + }; + }; + export type CustomLocale = { + weekdays: { + shorthand: [string, string, string, string, string, string, string]; + longhand: [string, string, string, string, string, string, string]; + }; + }; + export type key = "ar" | "bg"; + +==== tests/cases/compiler/instance.d.ts (0 errors) ==== + import { Locale, CustomLocale, key as LocaleKey } from "./locale"; + export interface FlatpickrFn { + l10ns: {[k in LocaleKey]?: CustomLocale } & { default: Locale }; + } + +==== tests/cases/compiler/app.ts (1 errors) ==== + import { FlatpickrFn } from "./instance"; + const fp = { l10ns: {} } as FlatpickrFn; + export default fp.l10ns; + ~~ +!!! error TS2503: Cannot find namespace 'fp'. + \ No newline at end of file diff --git a/tests/baselines/reference/declarationEmitAliasFromIndirectFile.js b/tests/baselines/reference/declarationEmitAliasFromIndirectFile.js new file mode 100644 index 00000000000..1d55514eb9d --- /dev/null +++ b/tests/baselines/reference/declarationEmitAliasFromIndirectFile.js @@ -0,0 +1,59 @@ +//// [tests/cases/compiler/declarationEmitAliasFromIndirectFile.ts] //// + +//// [locale.d.ts] +export type Locale = { + weekdays: { + shorthand: [string, string, string, string, string, string, string]; + longhand: [string, string, string, string, string, string, string]; + }; +}; +export type CustomLocale = { + weekdays: { + shorthand: [string, string, string, string, string, string, string]; + longhand: [string, string, string, string, string, string, string]; + }; +}; +export type key = "ar" | "bg"; + +//// [instance.d.ts] +import { Locale, CustomLocale, key as LocaleKey } from "./locale"; +export interface FlatpickrFn { + l10ns: {[k in LocaleKey]?: CustomLocale } & { default: Locale }; +} + +//// [app.ts] +import { FlatpickrFn } from "./instance"; +const fp = { l10ns: {} } as FlatpickrFn; +export default fp.l10ns; + + +//// [app.js] +"use strict"; +exports.__esModule = true; +var fp = { l10ns: {} }; +exports["default"] = fp.l10ns; + + +//// [app.d.ts] +declare const _default: { + ar?: { + weekdays: { + shorthand: [string, string, string, string, string, string, string]; + longhand: [string, string, string, string, string, string, string]; + }; + }; + bg?: { + weekdays: { + shorthand: [string, string, string, string, string, string, string]; + longhand: [string, string, string, string, string, string, string]; + }; + }; +} & { + default: { + weekdays: { + shorthand: [string, string, string, string, string, string, string]; + longhand: [string, string, string, string, string, string, string]; + }; + }; +}; +export default _default; diff --git a/tests/baselines/reference/declarationEmitAliasFromIndirectFile.symbols b/tests/baselines/reference/declarationEmitAliasFromIndirectFile.symbols new file mode 100644 index 00000000000..78dba37e97e --- /dev/null +++ b/tests/baselines/reference/declarationEmitAliasFromIndirectFile.symbols @@ -0,0 +1,64 @@ +=== tests/cases/compiler/locale.d.ts === +export type Locale = { +>Locale : Symbol(Locale, Decl(locale.d.ts, 0, 0)) + + weekdays: { +>weekdays : Symbol(weekdays, Decl(locale.d.ts, 0, 22)) + + shorthand: [string, string, string, string, string, string, string]; +>shorthand : Symbol(shorthand, Decl(locale.d.ts, 1, 15)) + + longhand: [string, string, string, string, string, string, string]; +>longhand : Symbol(longhand, Decl(locale.d.ts, 2, 76)) + + }; +}; +export type CustomLocale = { +>CustomLocale : Symbol(CustomLocale, Decl(locale.d.ts, 5, 2)) + + weekdays: { +>weekdays : Symbol(weekdays, Decl(locale.d.ts, 6, 28)) + + shorthand: [string, string, string, string, string, string, string]; +>shorthand : Symbol(shorthand, Decl(locale.d.ts, 7, 15)) + + longhand: [string, string, string, string, string, string, string]; +>longhand : Symbol(longhand, Decl(locale.d.ts, 8, 76)) + + }; +}; +export type key = "ar" | "bg"; +>key : Symbol(key, Decl(locale.d.ts, 11, 2)) + +=== tests/cases/compiler/instance.d.ts === +import { Locale, CustomLocale, key as LocaleKey } from "./locale"; +>Locale : Symbol(Locale, Decl(instance.d.ts, 0, 8)) +>CustomLocale : Symbol(CustomLocale, Decl(instance.d.ts, 0, 16)) +>key : Symbol(LocaleKey, Decl(instance.d.ts, 0, 30)) +>LocaleKey : Symbol(LocaleKey, Decl(instance.d.ts, 0, 30)) + +export interface FlatpickrFn { +>FlatpickrFn : Symbol(FlatpickrFn, Decl(instance.d.ts, 0, 66)) + + l10ns: {[k in LocaleKey]?: CustomLocale } & { default: Locale }; +>l10ns : Symbol(FlatpickrFn.l10ns, Decl(instance.d.ts, 1, 30)) +>k : Symbol(k, Decl(instance.d.ts, 2, 13)) +>LocaleKey : Symbol(LocaleKey, Decl(instance.d.ts, 0, 30)) +>CustomLocale : Symbol(CustomLocale, Decl(instance.d.ts, 0, 16)) +>default : Symbol(default, Decl(instance.d.ts, 2, 49)) +>Locale : Symbol(Locale, Decl(instance.d.ts, 0, 8)) +} + +=== tests/cases/compiler/app.ts === +import { FlatpickrFn } from "./instance"; +>FlatpickrFn : Symbol(FlatpickrFn, Decl(app.ts, 0, 8)) + +const fp = { l10ns: {} } as FlatpickrFn; +>fp : Symbol(fp, Decl(app.ts, 1, 5)) +>l10ns : Symbol(l10ns, Decl(app.ts, 1, 12)) +>FlatpickrFn : Symbol(FlatpickrFn, Decl(app.ts, 0, 8)) + +export default fp.l10ns; +>fp : Symbol(fp, Decl(app.ts, 1, 5)) +>l10ns : Symbol(FlatpickrFn.l10ns, Decl(instance.d.ts, 1, 30)) + diff --git a/tests/baselines/reference/declarationEmitAliasFromIndirectFile.types b/tests/baselines/reference/declarationEmitAliasFromIndirectFile.types new file mode 100644 index 00000000000..16730debf8e --- /dev/null +++ b/tests/baselines/reference/declarationEmitAliasFromIndirectFile.types @@ -0,0 +1,68 @@ +=== tests/cases/compiler/locale.d.ts === +export type Locale = { +>Locale : Locale + + weekdays: { +>weekdays : { shorthand: [string, string, string, string, string, string, string]; longhand: [string, string, string, string, string, string, string]; } + + shorthand: [string, string, string, string, string, string, string]; +>shorthand : [string, string, string, string, string, string, string] + + longhand: [string, string, string, string, string, string, string]; +>longhand : [string, string, string, string, string, string, string] + + }; +}; +export type CustomLocale = { +>CustomLocale : CustomLocale + + weekdays: { +>weekdays : { shorthand: [string, string, string, string, string, string, string]; longhand: [string, string, string, string, string, string, string]; } + + shorthand: [string, string, string, string, string, string, string]; +>shorthand : [string, string, string, string, string, string, string] + + longhand: [string, string, string, string, string, string, string]; +>longhand : [string, string, string, string, string, string, string] + + }; +}; +export type key = "ar" | "bg"; +>key : key + +=== tests/cases/compiler/instance.d.ts === +import { Locale, CustomLocale, key as LocaleKey } from "./locale"; +>Locale : any +>CustomLocale : any +>key : any +>LocaleKey : any + +export interface FlatpickrFn { +>FlatpickrFn : FlatpickrFn + + l10ns: {[k in LocaleKey]?: CustomLocale } & { default: Locale }; +>l10ns : { ar?: CustomLocale; bg?: CustomLocale; } & { default: Locale; } +>k : k +>LocaleKey : LocaleKey +>CustomLocale : CustomLocale +>default : Locale +>Locale : Locale +} + +=== tests/cases/compiler/app.ts === +import { FlatpickrFn } from "./instance"; +>FlatpickrFn : any + +const fp = { l10ns: {} } as FlatpickrFn; +>fp : FlatpickrFn +>{ l10ns: {} } as FlatpickrFn : FlatpickrFn +>{ l10ns: {} } : { l10ns: {}; } +>l10ns : {} +>{} : {} +>FlatpickrFn : FlatpickrFn + +export default fp.l10ns; +>fp.l10ns : { ar?: { weekdays: { shorthand: [string, string, string, string, string, string, string]; longhand: [string, string, string, string, string, string, string]; }; }; bg?: { weekdays: { shorthand: [string, string, string, string, string, string, string]; longhand: [string, string, string, string, string, string, string]; }; }; } & { default: { weekdays: { shorthand: [string, string, string, string, string, string, string]; longhand: [string, string, string, string, string, string, string]; }; }; } +>fp : FlatpickrFn +>l10ns : { ar?: { weekdays: { shorthand: [string, string, string, string, string, string, string]; longhand: [string, string, string, string, string, string, string]; }; }; bg?: { weekdays: { shorthand: [string, string, string, string, string, string, string]; longhand: [string, string, string, string, string, string, string]; }; }; } & { default: { weekdays: { shorthand: [string, string, string, string, string, string, string]; longhand: [string, string, string, string, string, string, string]; }; }; } + diff --git a/tests/cases/compiler/declarationEmitAliasFromIndirectFile.ts b/tests/cases/compiler/declarationEmitAliasFromIndirectFile.ts new file mode 100644 index 00000000000..b76a058ab41 --- /dev/null +++ b/tests/cases/compiler/declarationEmitAliasFromIndirectFile.ts @@ -0,0 +1,27 @@ +// @declaration: true + +// @filename: locale.d.ts +export type Locale = { + weekdays: { + shorthand: [string, string, string, string, string, string, string]; + longhand: [string, string, string, string, string, string, string]; + }; +}; +export type CustomLocale = { + weekdays: { + shorthand: [string, string, string, string, string, string, string]; + longhand: [string, string, string, string, string, string, string]; + }; +}; +export type key = "ar" | "bg"; + +// @filename: instance.d.ts +import { Locale, CustomLocale, key as LocaleKey } from "./locale"; +export interface FlatpickrFn { + l10ns: {[k in LocaleKey]?: CustomLocale } & { default: Locale }; +} + +// @filename: app.ts +import { FlatpickrFn } from "./instance"; +const fp = { l10ns: {} } as FlatpickrFn; +export default fp.l10ns;