File: controlFlowParameter.types

package info (click to toggle)
node-typescript 5.0.4%2Bds1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 459,140 kB
  • sloc: javascript: 1,972,754; makefile: 6; sh: 1
file content (93 lines) | stat: -rw-r--r-- 2,001 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
=== tests/cases/conformance/controlFlow/controlFlowParameter.ts ===
function f1(
>f1 : (required?: unknown) => void

  required: unknown = (() => {
>required : unknown
>(() => {    throw new Error("bad");  })() : never
>(() => {    throw new Error("bad");  }) : () => never
>() => {    throw new Error("bad");  } : () => never

    throw new Error("bad");
>new Error("bad") : Error
>Error : ErrorConstructor
>"bad" : "bad"

  })()
) {
  console.log("ok"); // should not trigger 'Unreachable code detected.'
>console.log("ok") : void
>console.log : (...data: any[]) => void
>console : Console
>log : (...data: any[]) => void
>"ok" : "ok"
}

function f2(
>f2 : (a: number | string | undefined, required?: unknown) => void

  a: number | string | undefined,
>a : string | number | undefined

  required: unknown = (() => {
>required : unknown
>(() => {    a = 1;  })() : void
>(() => {    a = 1;  }) : () => void
>() => {    a = 1;  } : () => void

    a = 1;
>a = 1 : 1
>a : string | number | undefined
>1 : 1

  })()
) {
  a; // should be number | string | undefined
>a : string | number | undefined
}

function f3(
>f3 : (a?: number | string | undefined, required?: unknown) => void

  a: number | string | undefined = 1,
>a : string | number | undefined
>1 : 1

  required: unknown = (() => {
>required : unknown
>(() => {    a = "";  })() : void
>(() => {    a = "";  }) : () => void
>() => {    a = "";  } : () => void

    a = "";
>a = "" : ""
>a : string | number | undefined
>"" : ""

  })()
) {
  a; // should be number | string
>a : string | number
}

function f4(
>f4 : (a?: number | string | undefined, { [(a = "")]: b }?: any) => void

  a: number | string | undefined = 1,
>a : string | number | undefined
>1 : 1

  { [(a = "")]: b } = {} as any
>(a = "") : ""
>a = "" : ""
>a : string | number | undefined
>"" : ""
>b : any
>{} as any : any
>{} : {}

) {
  a; // should be string
>a : string
}