From 517f32940ad44933f8bb3b5d07e8c830cbfc40ea Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Wed, 27 Jan 2021 15:30:59 -0800 Subject: [PATCH] Add regression test for #37314 (#42525) --- .../conditionalEqualityTestingNullability.js | 19 ++++++++ ...ditionalEqualityTestingNullability.symbols | 43 +++++++++++++++++++ ...onditionalEqualityTestingNullability.types | 26 +++++++++++ .../conditionalEqualityTestingNullability.ts | 15 +++++++ 4 files changed, 103 insertions(+) create mode 100644 tests/baselines/reference/conditionalEqualityTestingNullability.js create mode 100644 tests/baselines/reference/conditionalEqualityTestingNullability.symbols create mode 100644 tests/baselines/reference/conditionalEqualityTestingNullability.types create mode 100644 tests/cases/compiler/conditionalEqualityTestingNullability.ts diff --git a/tests/baselines/reference/conditionalEqualityTestingNullability.js b/tests/baselines/reference/conditionalEqualityTestingNullability.js new file mode 100644 index 0000000000..3c30da8a0f --- /dev/null +++ b/tests/baselines/reference/conditionalEqualityTestingNullability.js @@ -0,0 +1,19 @@ +//// [conditionalEqualityTestingNullability.ts] +export type Equals = + (() => A extends A1 ? 1 : 0) extends (() => A extends A2 ? 1 : 0) + ? 1 + : 0 + +interface Foo { + x : () => T +} + +declare const a: Foo; +declare const b: Foo; + +//Expected 0, Actual 1 +type ShouldBe0 = Equals; + +//// [conditionalEqualityTestingNullability.js] +"use strict"; +exports.__esModule = true; diff --git a/tests/baselines/reference/conditionalEqualityTestingNullability.symbols b/tests/baselines/reference/conditionalEqualityTestingNullability.symbols new file mode 100644 index 0000000000..c1ede984fb --- /dev/null +++ b/tests/baselines/reference/conditionalEqualityTestingNullability.symbols @@ -0,0 +1,43 @@ +=== tests/cases/compiler/conditionalEqualityTestingNullability.ts === +export type Equals = +>Equals : Symbol(Equals, Decl(conditionalEqualityTestingNullability.ts, 0, 0)) +>A1 : Symbol(A1, Decl(conditionalEqualityTestingNullability.ts, 0, 19)) +>A2 : Symbol(A2, Decl(conditionalEqualityTestingNullability.ts, 0, 34)) + + (() => A extends A1 ? 1 : 0) extends (() => A extends A2 ? 1 : 0) +>A : Symbol(A, Decl(conditionalEqualityTestingNullability.ts, 1, 6)) +>A : Symbol(A, Decl(conditionalEqualityTestingNullability.ts, 1, 6)) +>A1 : Symbol(A1, Decl(conditionalEqualityTestingNullability.ts, 0, 19)) +>A : Symbol(A, Decl(conditionalEqualityTestingNullability.ts, 1, 46)) +>A : Symbol(A, Decl(conditionalEqualityTestingNullability.ts, 1, 46)) +>A2 : Symbol(A2, Decl(conditionalEqualityTestingNullability.ts, 0, 34)) + + ? 1 + : 0 + +interface Foo { +>Foo : Symbol(Foo, Decl(conditionalEqualityTestingNullability.ts, 3, 7)) +>T : Symbol(T, Decl(conditionalEqualityTestingNullability.ts, 5, 14)) + + x : () => T +>x : Symbol(Foo.x, Decl(conditionalEqualityTestingNullability.ts, 5, 18)) +>T : Symbol(T, Decl(conditionalEqualityTestingNullability.ts, 5, 14)) +} + +declare const a: Foo; +>a : Symbol(a, Decl(conditionalEqualityTestingNullability.ts, 9, 13)) +>Foo : Symbol(Foo, Decl(conditionalEqualityTestingNullability.ts, 3, 7)) +>Date : Symbol(Date, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.scripthost.d.ts, --, --)) + +declare const b: Foo; +>b : Symbol(b, Decl(conditionalEqualityTestingNullability.ts, 10, 13)) +>Foo : Symbol(Foo, Decl(conditionalEqualityTestingNullability.ts, 3, 7)) +>Date : Symbol(Date, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.scripthost.d.ts, --, --)) + +//Expected 0, Actual 1 +type ShouldBe0 = Equals; +>ShouldBe0 : Symbol(ShouldBe0, Decl(conditionalEqualityTestingNullability.ts, 10, 34)) +>Equals : Symbol(Equals, Decl(conditionalEqualityTestingNullability.ts, 0, 0)) +>a : Symbol(a, Decl(conditionalEqualityTestingNullability.ts, 9, 13)) +>b : Symbol(b, Decl(conditionalEqualityTestingNullability.ts, 10, 13)) + diff --git a/tests/baselines/reference/conditionalEqualityTestingNullability.types b/tests/baselines/reference/conditionalEqualityTestingNullability.types new file mode 100644 index 0000000000..c99571b8fc --- /dev/null +++ b/tests/baselines/reference/conditionalEqualityTestingNullability.types @@ -0,0 +1,26 @@ +=== tests/cases/compiler/conditionalEqualityTestingNullability.ts === +export type Equals = +>Equals : Equals + + (() => A extends A1 ? 1 : 0) extends (() => A extends A2 ? 1 : 0) + ? 1 + : 0 + +interface Foo { + x : () => T +>x : () => T +} + +declare const a: Foo; +>a : Foo + +declare const b: Foo; +>b : Foo +>null : null + +//Expected 0, Actual 1 +type ShouldBe0 = Equals; +>ShouldBe0 : 0 +>a : Foo +>b : Foo + diff --git a/tests/cases/compiler/conditionalEqualityTestingNullability.ts b/tests/cases/compiler/conditionalEqualityTestingNullability.ts new file mode 100644 index 0000000000..bf06284b72 --- /dev/null +++ b/tests/cases/compiler/conditionalEqualityTestingNullability.ts @@ -0,0 +1,15 @@ +// @strict: true +export type Equals = + (() => A extends A1 ? 1 : 0) extends (() => A extends A2 ? 1 : 0) + ? 1 + : 0 + +interface Foo { + x : () => T +} + +declare const a: Foo; +declare const b: Foo; + +//Expected 0, Actual 1 +type ShouldBe0 = Equals; \ No newline at end of file