2015-09-03 03:33:45 +02:00
|
|
|
/// <reference path="fourslash.ts" />
|
|
|
|
|
|
|
|
//// type MixinCtor<A, B> = new () => A & B & { constructor: MixinCtor<A, B> };
|
|
|
|
//// function merge<A, B>(a: { prototype: A }, b: { prototype: B }): MixinCtor<A, B> {
|
|
|
|
//// let merged = function() { }
|
|
|
|
//// Object.assign(merged.prototype, a.prototype, b.prototype);
|
|
|
|
//// return <MixinCtor<A, B>><any>merged;
|
|
|
|
//// }
|
|
|
|
////
|
|
|
|
//// class TreeNode {
|
|
|
|
//// value: any;
|
|
|
|
//// }
|
|
|
|
////
|
|
|
|
//// abstract class LeftSideNode extends TreeNode {
|
|
|
|
//// abstract right(): TreeNode;
|
|
|
|
//// left(): TreeNode {
|
|
|
|
//// return null;
|
|
|
|
//// }
|
|
|
|
//// }
|
|
|
|
////
|
|
|
|
//// abstract class RightSideNode extends TreeNode {
|
|
|
|
//// abstract left(): TreeNode;
|
|
|
|
//// right(): TreeNode {
|
|
|
|
//// return null;
|
|
|
|
//// };
|
|
|
|
//// }
|
|
|
|
////
|
|
|
|
//// var obj = new (merge(LeftSideNode, RightSideNode))();
|
|
|
|
//// obj./**/
|
|
|
|
|
2018-10-29 18:03:25 +01:00
|
|
|
verify.completions({ marker: "", exact: ["right", "left", "value", "constructor"] });
|