tests/cases/compiler/spreadInvalidArgumentType.ts(31,16): error TS2698: Spread types may only be created from object types. tests/cases/compiler/spreadInvalidArgumentType.ts(33,16): error TS2698: Spread types may only be created from object types. tests/cases/compiler/spreadInvalidArgumentType.ts(35,16): error TS2698: Spread types may only be created from object types. tests/cases/compiler/spreadInvalidArgumentType.ts(36,16): error TS2698: Spread types may only be created from object types. tests/cases/compiler/spreadInvalidArgumentType.ts(38,16): error TS2698: Spread types may only be created from object types. tests/cases/compiler/spreadInvalidArgumentType.ts(41,16): error TS2698: Spread types may only be created from object types. tests/cases/compiler/spreadInvalidArgumentType.ts(42,16): error TS2698: Spread types may only be created from object types. tests/cases/compiler/spreadInvalidArgumentType.ts(44,17): error TS2698: Spread types may only be created from object types. tests/cases/compiler/spreadInvalidArgumentType.ts(45,17): error TS2698: Spread types may only be created from object types. tests/cases/compiler/spreadInvalidArgumentType.ts(47,17): error TS2698: Spread types may only be created from object types. tests/cases/compiler/spreadInvalidArgumentType.ts(48,17): error TS2698: Spread types may only be created from object types. tests/cases/compiler/spreadInvalidArgumentType.ts(55,17): error TS2698: Spread types may only be created from object types. tests/cases/compiler/spreadInvalidArgumentType.ts(56,17): error TS2698: Spread types may only be created from object types. tests/cases/compiler/spreadInvalidArgumentType.ts(58,17): error TS2698: Spread types may only be created from object types. ==== tests/cases/compiler/spreadInvalidArgumentType.ts (14 errors) ==== enum E { v1, v2 }; function f(p1: T, p2: T[]) { var t: T; var i: T["b"]; var k: keyof T; var mapped_generic: {[P in keyof T]: T[P]}; var mapped: {[P in "b"]: T[P]}; var union_generic: T | { a: number }; var union_primitive: { a: number } | number; var intersection_generic: T & { a: number }; var intersection_premitive: { a: number } | string; var num: number; var str: number; var u: undefined; var n: null; var a: any; var literal_string: "string"; var literal_number: 42; var e: E; var o1 = { ...p1 }; // Error, generic type paramterre ~~~~~ !!! error TS2698: Spread types may only be created from object types. var o2 = { ...p2 }; // OK var o3 = { ...t }; // Error, generic type paramter ~~~~ !!! error TS2698: Spread types may only be created from object types. var o4 = { ...i }; // Error, index access ~~~~ !!! error TS2698: Spread types may only be created from object types. var o5 = { ...k }; // Error, index ~~~~ !!! error TS2698: Spread types may only be created from object types. var o6 = { ...mapped_generic }; // Error, generic mapped object type ~~~~~~~~~~~~~~~~~ !!! error TS2698: Spread types may only be created from object types. var o7 = { ...mapped }; // OK, non-generic mapped type var o8 = { ...union_generic }; // Error, union with generic type parameter ~~~~~~~~~~~~~~~~ !!! error TS2698: Spread types may only be created from object types. var o9 = { ...union_primitive }; // Error, union with generic type parameter ~~~~~~~~~~~~~~~~~~ !!! error TS2698: Spread types may only be created from object types. var o10 = { ...intersection_generic }; // Error, intersection with generic type parameter ~~~~~~~~~~~~~~~~~~~~~~~ !!! error TS2698: Spread types may only be created from object types. var o11 = { ...intersection_premitive }; // Error, intersection with generic type parameter ~~~~~~~~~~~~~~~~~~~~~~~~~ !!! error TS2698: Spread types may only be created from object types. var o12 = { ...num }; // Error ~~~~~~ !!! error TS2698: Spread types may only be created from object types. var o13 = { ...str }; // Error ~~~~~~ !!! error TS2698: Spread types may only be created from object types. var o14 = { ...u }; // OK var o15 = { ...n }; // OK var o16 = { ...a }; // OK var o17 = { ...literal_string }; // Error ~~~~~~~~~~~~~~~~~ !!! error TS2698: Spread types may only be created from object types. var o18 = { ...literal_number }; // Error ~~~~~~~~~~~~~~~~~ !!! error TS2698: Spread types may only be created from object types. var o19 = { ...e }; // Error, enum ~~~~ !!! error TS2698: Spread types may only be created from object types. }