From 1ca9273f49753e864b3a20095feef66d369f1f3d Mon Sep 17 00:00:00 2001 From: Sheetal Nandi Date: Mon, 3 Nov 2014 16:54:00 -0800 Subject: [PATCH] Identity of union type --- .../reference/unionTypeIdentity.errors.txt | 20 +++++++++++++++++++ .../baselines/reference/unionTypeIdentity.js | 19 ++++++++++++++++++ .../unionTypeIdentity.ts | 8 ++++++++ 3 files changed, 47 insertions(+) create mode 100644 tests/baselines/reference/unionTypeIdentity.errors.txt create mode 100644 tests/baselines/reference/unionTypeIdentity.js create mode 100644 tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/unionTypeIdentity.ts diff --git a/tests/baselines/reference/unionTypeIdentity.errors.txt b/tests/baselines/reference/unionTypeIdentity.errors.txt new file mode 100644 index 0000000000..77d25bd78d --- /dev/null +++ b/tests/baselines/reference/unionTypeIdentity.errors.txt @@ -0,0 +1,20 @@ +tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/unionTypeIdentity.ts(6,5): error TS2403: Subsequent variable declarations must have the same type. Variable 'strOrNum' must be of type 'string | boolean', but here has type 'string'. +tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/unionTypeIdentity.ts(7,5): error TS2403: Subsequent variable declarations must have the same type. Variable 'strOrNum' must be of type 'string | boolean', but here has type 'boolean'. +tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/unionTypeIdentity.ts(8,5): error TS2403: Subsequent variable declarations must have the same type. Variable 'strOrNum' must be of type 'string | boolean', but here has type 'number'. + + +==== tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/unionTypeIdentity.ts (3 errors) ==== + // Two types are considered identical when + // they are union types with identical sets of constituent types, or + var strOrNum: string | boolean; + var strOrNum: boolean | string; + var strOrNum: boolean | string | boolean; + var strOrNum: string; // error + ~~~~~~~~ +!!! error TS2403: Subsequent variable declarations must have the same type. Variable 'strOrNum' must be of type 'string | boolean', but here has type 'string'. + var strOrNum: boolean; // error + ~~~~~~~~ +!!! error TS2403: Subsequent variable declarations must have the same type. Variable 'strOrNum' must be of type 'string | boolean', but here has type 'boolean'. + var strOrNum: number; // error + ~~~~~~~~ +!!! error TS2403: Subsequent variable declarations must have the same type. Variable 'strOrNum' must be of type 'string | boolean', but here has type 'number'. \ No newline at end of file diff --git a/tests/baselines/reference/unionTypeIdentity.js b/tests/baselines/reference/unionTypeIdentity.js new file mode 100644 index 0000000000..82cad82797 --- /dev/null +++ b/tests/baselines/reference/unionTypeIdentity.js @@ -0,0 +1,19 @@ +//// [unionTypeIdentity.ts] +// Two types are considered identical when +// they are union types with identical sets of constituent types, or +var strOrNum: string | boolean; +var strOrNum: boolean | string; +var strOrNum: boolean | string | boolean; +var strOrNum: string; // error +var strOrNum: boolean; // error +var strOrNum: number; // error + +//// [unionTypeIdentity.js] +// Two types are considered identical when +// they are union types with identical sets of constituent types, or +var strOrNum; +var strOrNum; +var strOrNum; +var strOrNum; // error +var strOrNum; // error +var strOrNum; // error diff --git a/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/unionTypeIdentity.ts b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/unionTypeIdentity.ts new file mode 100644 index 0000000000..79100f476b --- /dev/null +++ b/tests/cases/conformance/types/typeRelationships/typeAndMemberIdentity/unionTypeIdentity.ts @@ -0,0 +1,8 @@ +// Two types are considered identical when +// they are union types with identical sets of constituent types, or +var strOrNum: string | boolean; +var strOrNum: boolean | string; +var strOrNum: boolean | string | boolean; +var strOrNum: string; // error +var strOrNum: boolean; // error +var strOrNum: number; // error \ No newline at end of file