mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-05-30 11:24:49 -05:00
Merge branch 'master' into saferIndexedAccessTypes
This commit is contained in:
@@ -45,4 +45,6 @@ const myStoreConnect: Connect = function(
|
||||
mergeProps,
|
||||
options,
|
||||
);
|
||||
};
|
||||
};
|
||||
|
||||
export {};
|
||||
|
||||
40
tests/cases/compiler/classUsedBeforeInitializedVariables.ts
Normal file
40
tests/cases/compiler/classUsedBeforeInitializedVariables.ts
Normal file
@@ -0,0 +1,40 @@
|
||||
// @target: es5
|
||||
|
||||
class Test {
|
||||
p1 = 0;
|
||||
p2 = this.p1;
|
||||
p3 = this.p4;
|
||||
p4 = 0;
|
||||
|
||||
directlyAssigned: any = this.directlyAssigned;
|
||||
|
||||
withinArrowFunction: any = () => this.withinArrowFunction;
|
||||
|
||||
withinFunction: any = function () {
|
||||
return this.withinFunction;
|
||||
};
|
||||
|
||||
withinObjectLiteral: any = {
|
||||
[this.withinObjectLiteral]: true,
|
||||
};
|
||||
|
||||
withinObjectLiteralGetterName: any = {
|
||||
get [this.withinObjectLiteralGetterName]() {
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
withinObjectLiteralSetterName: any = {
|
||||
set [this.withinObjectLiteralSetterName](_: any) {}
|
||||
};
|
||||
|
||||
withinClassDeclarationExtension: any = (class extends this.withinClassDeclarationExtension { });
|
||||
|
||||
// These error cases are ignored (not checked by control flow analysis)
|
||||
|
||||
assignedByArrowFunction: any = (() => this.assignedByFunction)();
|
||||
|
||||
assignedByFunction: any = (function () {
|
||||
return this.assignedByFunction;
|
||||
})();
|
||||
}
|
||||
8
tests/cases/compiler/incrementalConfig.ts
Normal file
8
tests/cases/compiler/incrementalConfig.ts
Normal file
@@ -0,0 +1,8 @@
|
||||
// @incremental: true
|
||||
|
||||
// @Filename: /a.ts
|
||||
const x = 10;
|
||||
|
||||
// @Filename: /tsconfig.json
|
||||
{ }
|
||||
|
||||
4
tests/cases/compiler/incrementalInvalid.ts
Normal file
4
tests/cases/compiler/incrementalInvalid.ts
Normal file
@@ -0,0 +1,4 @@
|
||||
// @incremental: true
|
||||
|
||||
const x = 10;
|
||||
|
||||
5
tests/cases/compiler/incrementalOut.ts
Normal file
5
tests/cases/compiler/incrementalOut.ts
Normal file
@@ -0,0 +1,5 @@
|
||||
// @incremental: true
|
||||
// @out: output.js
|
||||
|
||||
const x = 10;
|
||||
|
||||
8
tests/cases/compiler/incrementalTsBuildInfoFile.ts
Normal file
8
tests/cases/compiler/incrementalTsBuildInfoFile.ts
Normal file
@@ -0,0 +1,8 @@
|
||||
// @incremental: true
|
||||
// @tsBuildInfoFile: /a.tsbuildinfo
|
||||
|
||||
|
||||
// @Filename: /a.ts
|
||||
const x = 10;
|
||||
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
declare function f<T extends unknown = unknown>(x: { [x: string]: T }): T;
|
||||
|
||||
var stooges = [
|
||||
{ name: "moe", age: 40 },
|
||||
{ name: "larry", age: 50 },
|
||||
{ name: "curly", age: 60 }
|
||||
];
|
||||
|
||||
f(stooges); // Should throw
|
||||
@@ -7,4 +7,4 @@ type Omit1<U, K extends keyof U> = Pick<U, Diff<keyof U, K>>;
|
||||
type Omit2<T, K extends keyof T> = {[P in Diff<keyof T, K>]: T[P]};
|
||||
|
||||
type O = Omit<{ a: number, b: string }, 'a'>
|
||||
const o: O = { b: '' }
|
||||
export const o: O = { b: '' }
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
// @allowJs: true
|
||||
// @noEmit: true
|
||||
// @checkJs: true
|
||||
// @filename: a.js
|
||||
|
||||
exports.a.b.c = 0;
|
||||
@@ -143,3 +143,5 @@ const Test1 = connect(
|
||||
null,
|
||||
mapDispatchToProps
|
||||
)(TestComponent);
|
||||
|
||||
export {};
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
// @strictNullChecks: false
|
||||
declare const v: void;
|
||||
const {} = v;
|
||||
@@ -0,0 +1,3 @@
|
||||
// @strictNullChecks: true
|
||||
declare const v: void;
|
||||
const {} = v;
|
||||
@@ -0,0 +1,9 @@
|
||||
// @target: es5
|
||||
// @lib: es2015
|
||||
// @downlevelIteration: true
|
||||
// @noEmitHelpers: true
|
||||
|
||||
// https://github.com/Microsoft/TypeScript/issues/30653
|
||||
function * mergeStringLists(...strings: string[]) {
|
||||
for (var str of strings);
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
let a: any;
|
||||
const c = true ? (a) : function() {};
|
||||
@@ -122,12 +122,12 @@ function f23<T extends unknown>(x: T) {
|
||||
let y: object = x; // Error
|
||||
}
|
||||
|
||||
// Anything but primitive assignable to { [x: string]: unknown }
|
||||
// Anything fresh but primitive assignable to { [x: string]: unknown }
|
||||
|
||||
function f24(x: { [x: string]: unknown }) {
|
||||
x = {};
|
||||
x = { a: 5 };
|
||||
x = [1, 2, 3];
|
||||
x = [1, 2, 3]; // Error
|
||||
x = 123; // Error
|
||||
}
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ edit.deleteAtCaret('constructor(val: T) { }'.length);
|
||||
verify.quickInfos({
|
||||
Asig: "constructor A<string>(): A<string>",
|
||||
Bsig: "constructor B<string>(val: string): B<string>",
|
||||
Csig: "constructor C<{}>(): C<{}>", // Cannot resolve signature
|
||||
Csig: "constructor C<unknown>(): C<unknown>", // Cannot resolve signature
|
||||
Dsig: "constructor D<string>(val: string): D<string>" // Cannot resolve signature
|
||||
});
|
||||
|
||||
@@ -37,6 +37,6 @@ edit.deleteAtCaret("val: T".length);
|
||||
verify.quickInfos({
|
||||
Asig: "constructor A<string>(): A<string>",
|
||||
Bsig: "constructor B<string>(val: string): B<string>",
|
||||
Csig: "constructor C<{}>(): C<{}>", // Cannot resolve signature
|
||||
Csig: "constructor C<unknown>(): C<unknown>", // Cannot resolve signature
|
||||
Dsig: "constructor D<string>(): D<string>"
|
||||
});
|
||||
|
||||
@@ -8,6 +8,6 @@
|
||||
|
||||
verify.quickInfos({
|
||||
1: "var x1: SS<number>",
|
||||
2: "var x2: SS<{}>",
|
||||
3: "var x3: SS<{}>"
|
||||
2: "var x2: SS<unknown>",
|
||||
3: "var x3: SS<unknown>"
|
||||
});
|
||||
|
||||
@@ -75,8 +75,8 @@ verify.quickInfos({
|
||||
10: "var r1b: Collection<number, string>",
|
||||
11: "var r2a: Collection<Collection<number, number>, number>",
|
||||
12: "var r2b: Collection<Collection<number, number>, number>",
|
||||
13: "var r3a: Collection<number, {}>",
|
||||
14: "var r3b: Collection<number, {}>",
|
||||
13: "var r3a: Collection<number, unknown>",
|
||||
14: "var r3b: Collection<number, unknown>",
|
||||
15: "var r4a: Collection<number, any>",
|
||||
17: "var r5a: Collection<number, Date>",
|
||||
18: "var r5b: Collection<number, Date>",
|
||||
|
||||
@@ -18,5 +18,5 @@
|
||||
|
||||
verify.quickInfos({
|
||||
1: "var n2: N.D2<number>",
|
||||
2: "var n3: N.D2<{}>"
|
||||
2: "var n3: N.D2<unknown>"
|
||||
});
|
||||
|
||||
@@ -3,4 +3,4 @@
|
||||
////function f<T>(a: T): T { return null; }
|
||||
////f(/**/
|
||||
|
||||
verify.signatureHelp({ marker: "", text: "f(a: {}): {}" });
|
||||
verify.signatureHelp({ marker: "", text: "f(a: unknown): unknown" });
|
||||
|
||||
@@ -3,4 +3,4 @@
|
||||
////var f = <T>(a: T) => a;
|
||||
////f(/**/
|
||||
|
||||
verify.signatureHelp({ marker: "", text: "f(a: {}): {}" });
|
||||
verify.signatureHelp({ marker: "", text: "f(a: unknown): unknown" });
|
||||
|
||||
@@ -17,15 +17,15 @@
|
||||
////foo7(1, <string>(/*7*/ // signature help shows y as T
|
||||
|
||||
verify.signatureHelp(
|
||||
{ marker: "1", text: "foo1(x: number, callback: (y1: {}) => number): void" },
|
||||
{ marker: "2", text: "foo2(x: number, callback: (y2: {}) => number): void" },
|
||||
{ marker: "3", text: "callback(y3: {}): number" },
|
||||
{ marker: "1", text: "foo1(x: number, callback: (y1: unknown) => number): void" },
|
||||
{ marker: "2", text: "foo2(x: number, callback: (y2: unknown) => number): void" },
|
||||
{ marker: "3", text: "callback(y3: unknown): number" },
|
||||
{ marker: "4", text: "foo4(x: number, callback: (y4: string) => number): void" },
|
||||
{ marker: "5", text: "callback(y5: string): number" },
|
||||
);
|
||||
|
||||
goTo.marker('6');
|
||||
verify.signatureHelp({ text: "foo6(x: number, callback: (y6: {}) => number): void" });
|
||||
verify.signatureHelp({ text: "foo6(x: number, callback: (y6: unknown) => number): void" });
|
||||
edit.insert('string>(null,null);'); // need to make this line parse so we can get reasonable LS answers to later tests
|
||||
|
||||
verify.signatureHelp({ marker: "7", text: "foo7(x: number, callback: (y7: {}) => number): void" });
|
||||
verify.signatureHelp({ marker: "7", text: "foo7(x: number, callback: (y7: unknown) => number): void" });
|
||||
|
||||
@@ -24,15 +24,15 @@
|
||||
////foo7(1, <string>(/*7*/ // signature help shows y as T
|
||||
|
||||
verify.signatureHelp(
|
||||
{ marker: "1", text: "foo1(x: number, callback: (y1: {}) => number): void" },
|
||||
{ marker: "2", text: "foo2(x: number, callback: (y2: {}) => number): void" },
|
||||
{ marker: "3", text: "callback(y3: {}): number" },
|
||||
{ marker: "1", text: "foo1(x: number, callback: (y1: unknown) => number): void" },
|
||||
{ marker: "2", text: "foo2(x: number, callback: (y2: unknown) => number): void" },
|
||||
{ marker: "3", text: "callback(y3: unknown): number" },
|
||||
{ marker: "4", text: "foo4(x: number, callback: (y4: string) => number): void" },
|
||||
{ marker: "5", text: "callback(y5: string): number" },
|
||||
);
|
||||
|
||||
goTo.marker('6');
|
||||
verify.signatureHelp({ text: "foo6(x: number, callback: (y6: {}) => number): void" });
|
||||
verify.signatureHelp({ text: "foo6(x: number, callback: (y6: unknown) => number): void" });
|
||||
edit.insert('string>(null,null);'); // need to make this line parse so we can get reasonable LS answers to later tests
|
||||
|
||||
verify.signatureHelp({ marker: "7", text: "foo7(x: number, callback: (y7: {}) => number): void" })
|
||||
verify.signatureHelp({ marker: "7", text: "foo7(x: number, callback: (y7: unknown) => number): void" })
|
||||
|
||||
@@ -14,6 +14,6 @@
|
||||
//// (</*2*/SFC<string>/>);
|
||||
|
||||
goTo.marker("1");
|
||||
verify.signatureHelp({ text: "SFC(_props: Record<string, {}>): string" });
|
||||
verify.signatureHelp({ text: "SFC(_props: Record<string, unknown>): string" });
|
||||
goTo.marker("2");
|
||||
verify.signatureHelp({ text: "SFC(_props: Record<string, string>): string" });
|
||||
|
||||
@@ -3,4 +3,4 @@
|
||||
////declare function f<T>(x: number): T;
|
||||
////const x/**/ = f();
|
||||
|
||||
verify.quickInfoAt("", "const x: {}");
|
||||
verify.quickInfoAt("", "const x: unknown");
|
||||
|
||||
@@ -8,6 +8,6 @@
|
||||
|
||||
verify.quickInfos({
|
||||
1: "var x1: SS<number>",
|
||||
2: "var x2: SS<{}>",
|
||||
3: "var x3: SS<{}>"
|
||||
2: "var x2: SS<unknown>",
|
||||
3: "var x3: SS<unknown>"
|
||||
});
|
||||
|
||||
@@ -8,6 +8,6 @@
|
||||
|
||||
verify.quickInfos({
|
||||
1: "var x1: SS<number>",
|
||||
2: "var x2: SS<{}>",
|
||||
3: "var x3: SS<{}>"
|
||||
2: "var x2: SS<unknown>",
|
||||
3: "var x3: SS<unknown>"
|
||||
});
|
||||
|
||||
@@ -9,8 +9,8 @@
|
||||
verify.signatureHelp(
|
||||
{ marker: "1", text: "f(x: number, y: string): number" },
|
||||
{ marker: "2", text: "f(x: boolean, y: string): boolean" },
|
||||
// too few -- fill in rest with {}
|
||||
{ marker: "3", text: "f(x: number, y: {}): number" },
|
||||
// too few -- fill in rest with unknown
|
||||
{ marker: "3", text: "f(x: number, y: unknown): number" },
|
||||
// too many -- ignore extra type arguments
|
||||
{ marker: "4", text: "f(x: number, y: string): number" },
|
||||
);
|
||||
|
||||
@@ -4,4 +4,4 @@
|
||||
////}
|
||||
////foo(/*1*/
|
||||
|
||||
verify.signatureHelp({ marker: "1", text: "foo(x: number, callback: (x: {}) => number): void" });
|
||||
verify.signatureHelp({ marker: "1", text: "foo(x: number, callback: (x: unknown) => number): void" });
|
||||
|
||||
@@ -9,6 +9,6 @@
|
||||
|
||||
verify.signatureHelp(
|
||||
{ marker: "1", text: "f1(a: any): a is number" },
|
||||
{ marker: "2", text: "f2(a: any): a is {}" },
|
||||
{ marker: "2", text: "f2(a: any): a is unknown" },
|
||||
{ marker: "3", text: "f3(a: any, ...b: any[]): a is number", isVariadic: true },
|
||||
)
|
||||
|
||||
@@ -9,7 +9,7 @@ goTo.marker("1");
|
||||
|
||||
edit.insert("(");
|
||||
verify.signatureHelp({
|
||||
text: "bar(x: {}, y: {}): {}",
|
||||
text: "bar(x: unknown, y: unknown): unknown",
|
||||
triggerReason: {
|
||||
kind: "characterTyped",
|
||||
triggerCharacter: "(",
|
||||
|
||||
@@ -15,6 +15,6 @@ verify.signatureHelp({ marker: "", overloadsCount: 2 });
|
||||
edit.insert('a');
|
||||
verify.signatureHelp({ overloadsCount: 2, text: "B(v: A<number>): A<number>" });
|
||||
edit.insert('); A.B(');
|
||||
verify.signatureHelp({ overloadsCount: 2, text: "B(v: A<{}>): A<{}>" });
|
||||
verify.signatureHelp({ overloadsCount: 2, text: "B(v: A<unknown>): A<unknown>" });
|
||||
edit.insert('a');
|
||||
verify.signatureHelp({ overloadsCount: 2, text: "B(v: A<number>): A<number>" });
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
{
|
||||
"types": ["jest"]
|
||||
"types": ["jest"],
|
||||
"path": "TypeScript-React-Native-Starter/ExampleProject"
|
||||
}
|
||||
|
||||
Submodule tests/cases/user/axios-src/axios-src updated: 0b3db5d87a...283d7b306c
Submodule tests/cases/user/create-react-app/create-react-app updated: 1d4fdc2dd4...1a61db58d4
Submodule tests/cases/user/prettier/prettier updated: 67f1c4877e...1e471a0079
Submodule tests/cases/user/puppeteer/puppeteer updated: 98bb2615ad...2c6df6ddd1
Submodule tests/cases/user/webpack/webpack updated: 10282ea206...dc26688731
Reference in New Issue
Block a user