Skip to content

Commit b8c7168

Browse files
authored
Add an extra test case related to return statements and annotated return types (#52628)
1 parent da8dfbf commit b8c7168

File tree

3 files changed

+100
-0
lines changed

3 files changed

+100
-0
lines changed
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
=== tests/cases/compiler/contextualTypingReturnStatementWithReturnTypeAnnotation.ts ===
2+
type PropOfRaw<T> = readonly T[] | "not-array" | "no-prop";
3+
>PropOfRaw : Symbol(PropOfRaw, Decl(contextualTypingReturnStatementWithReturnTypeAnnotation.ts, 0, 0))
4+
>T : Symbol(T, Decl(contextualTypingReturnStatementWithReturnTypeAnnotation.ts, 0, 15))
5+
>T : Symbol(T, Decl(contextualTypingReturnStatementWithReturnTypeAnnotation.ts, 0, 15))
6+
7+
declare function isString(text: unknown): text is string;
8+
>isString : Symbol(isString, Decl(contextualTypingReturnStatementWithReturnTypeAnnotation.ts, 0, 59))
9+
>text : Symbol(text, Decl(contextualTypingReturnStatementWithReturnTypeAnnotation.ts, 2, 26))
10+
>text : Symbol(text, Decl(contextualTypingReturnStatementWithReturnTypeAnnotation.ts, 2, 26))
11+
12+
declare function getPropFromRaw<T>(
13+
>getPropFromRaw : Symbol(getPropFromRaw, Decl(contextualTypingReturnStatementWithReturnTypeAnnotation.ts, 2, 57))
14+
>T : Symbol(T, Decl(contextualTypingReturnStatementWithReturnTypeAnnotation.ts, 4, 32))
15+
16+
prop: "files" | "include" | "exclude" | "references",
17+
>prop : Symbol(prop, Decl(contextualTypingReturnStatementWithReturnTypeAnnotation.ts, 4, 35))
18+
19+
validateElement: (value: unknown) => boolean,
20+
>validateElement : Symbol(validateElement, Decl(contextualTypingReturnStatementWithReturnTypeAnnotation.ts, 5, 55))
21+
>value : Symbol(value, Decl(contextualTypingReturnStatementWithReturnTypeAnnotation.ts, 6, 20))
22+
23+
elementTypeName: string
24+
>elementTypeName : Symbol(elementTypeName, Decl(contextualTypingReturnStatementWithReturnTypeAnnotation.ts, 6, 47))
25+
26+
): PropOfRaw<T>;
27+
>PropOfRaw : Symbol(PropOfRaw, Decl(contextualTypingReturnStatementWithReturnTypeAnnotation.ts, 0, 0))
28+
>T : Symbol(T, Decl(contextualTypingReturnStatementWithReturnTypeAnnotation.ts, 4, 32))
29+
30+
function getSpecsFromRaw(
31+
>getSpecsFromRaw : Symbol(getSpecsFromRaw, Decl(contextualTypingReturnStatementWithReturnTypeAnnotation.ts, 8, 16))
32+
33+
prop: "files" | "include" | "exclude"
34+
>prop : Symbol(prop, Decl(contextualTypingReturnStatementWithReturnTypeAnnotation.ts, 10, 25))
35+
36+
): PropOfRaw<string> {
37+
>PropOfRaw : Symbol(PropOfRaw, Decl(contextualTypingReturnStatementWithReturnTypeAnnotation.ts, 0, 0))
38+
39+
return getPropFromRaw(prop, isString, "string");
40+
>getPropFromRaw : Symbol(getPropFromRaw, Decl(contextualTypingReturnStatementWithReturnTypeAnnotation.ts, 2, 57))
41+
>prop : Symbol(prop, Decl(contextualTypingReturnStatementWithReturnTypeAnnotation.ts, 10, 25))
42+
>isString : Symbol(isString, Decl(contextualTypingReturnStatementWithReturnTypeAnnotation.ts, 0, 59))
43+
}
44+
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
=== tests/cases/compiler/contextualTypingReturnStatementWithReturnTypeAnnotation.ts ===
2+
type PropOfRaw<T> = readonly T[] | "not-array" | "no-prop";
3+
>PropOfRaw : PropOfRaw<T>
4+
5+
declare function isString(text: unknown): text is string;
6+
>isString : (text: unknown) => text is string
7+
>text : unknown
8+
9+
declare function getPropFromRaw<T>(
10+
>getPropFromRaw : <T>(prop: "files" | "include" | "exclude" | "references", validateElement: (value: unknown) => boolean, elementTypeName: string) => PropOfRaw<T>
11+
12+
prop: "files" | "include" | "exclude" | "references",
13+
>prop : "files" | "include" | "exclude" | "references"
14+
15+
validateElement: (value: unknown) => boolean,
16+
>validateElement : (value: unknown) => boolean
17+
>value : unknown
18+
19+
elementTypeName: string
20+
>elementTypeName : string
21+
22+
): PropOfRaw<T>;
23+
24+
function getSpecsFromRaw(
25+
>getSpecsFromRaw : (prop: "files" | "include" | "exclude") => PropOfRaw<string>
26+
27+
prop: "files" | "include" | "exclude"
28+
>prop : "files" | "include" | "exclude"
29+
30+
): PropOfRaw<string> {
31+
return getPropFromRaw(prop, isString, "string");
32+
>getPropFromRaw(prop, isString, "string") : PropOfRaw<string>
33+
>getPropFromRaw : <T>(prop: "files" | "include" | "exclude" | "references", validateElement: (value: unknown) => boolean, elementTypeName: string) => PropOfRaw<T>
34+
>prop : "files" | "include" | "exclude"
35+
>isString : (text: unknown) => text is string
36+
>"string" : "string"
37+
}
38+
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
// @strict: true
2+
// @noEmit: true
3+
4+
type PropOfRaw<T> = readonly T[] | "not-array" | "no-prop";
5+
6+
declare function isString(text: unknown): text is string;
7+
8+
declare function getPropFromRaw<T>(
9+
prop: "files" | "include" | "exclude" | "references",
10+
validateElement: (value: unknown) => boolean,
11+
elementTypeName: string
12+
): PropOfRaw<T>;
13+
14+
function getSpecsFromRaw(
15+
prop: "files" | "include" | "exclude"
16+
): PropOfRaw<string> {
17+
return getPropFromRaw(prop, isString, "string");
18+
}

0 commit comments

Comments
 (0)