193 lines
4.9 KiB
TypeScript
193 lines
4.9 KiB
TypeScript
/// <reference path='fourslash.ts'/>
|
|
|
|
////interface RT_JQueryElement {
|
|
//// id: string;
|
|
////}
|
|
////
|
|
////interface RT_JQuery {
|
|
//// [n: number]: RT_JQueryElement;
|
|
////}
|
|
////
|
|
////module RT_StaticModule {
|
|
//// export class C {
|
|
//// x: number;
|
|
//// g: any;
|
|
//// constructor(public c1: number, public c2: number, c3: number) {
|
|
//// this.x = C.y + this.c1 + this.c2 + c3;
|
|
//// this.g = (v: number) => C.f(this.x + C.y + v + this.c1 + this.c2 + C.pub);
|
|
//// }
|
|
////
|
|
//// static priv = 2;
|
|
//// static pub = 3;
|
|
//// static y = C.priv;
|
|
//// static f(n: number) {
|
|
//// return "wow: " + (n + C.y + C.pub + C.priv);
|
|
////
|
|
//// }
|
|
//// }
|
|
//// var c = C.y;
|
|
//// export function f() {
|
|
//// var result = "";
|
|
//// result += (c);
|
|
//// result += (new C(0, 1, 2).x);
|
|
//// result += (C.f(10));
|
|
//// result += (new C(5, 10, 20).g(C.y));
|
|
//// return result;
|
|
//// }
|
|
////}
|
|
////
|
|
////module RT_SuperCalls {
|
|
//// class Base {
|
|
//// constructor() {
|
|
//// var x: any;
|
|
//// }
|
|
//// public foo() {
|
|
//// return "base";
|
|
//// }
|
|
////
|
|
//// public bar() {
|
|
//// return "basebar";
|
|
//// }
|
|
//// }
|
|
////
|
|
//// class Sub1 extends Base {
|
|
//// public foo() {
|
|
//// return "sub1" + super.foo() + super.bar();
|
|
//// }
|
|
//// }
|
|
////
|
|
//// class SubSub1 extends Sub1 {
|
|
//// public foo() {
|
|
//// return "subsub1" + super.foo();
|
|
//// }
|
|
//// }
|
|
////
|
|
//// var s = new Sub1();
|
|
//// var ss = new SubSub1();
|
|
//// export var result = s.foo() + ss.foo();
|
|
////}
|
|
////
|
|
////module RT_SuperCalls2 {
|
|
//// // Case 5
|
|
//// class Base5 {
|
|
//// public x() {
|
|
//// return "BaseX";
|
|
//// }
|
|
////
|
|
//// public y() {
|
|
//// return "BaseY";
|
|
//// }
|
|
//// }
|
|
////
|
|
//// class Sub5 extends Base5 {
|
|
//// public x() {
|
|
//// return "SubX";
|
|
//// }
|
|
//// }
|
|
////
|
|
//// class SubSub5 extends Sub5 {
|
|
//// public x() {
|
|
//// return super.x();
|
|
//// }
|
|
//// public y() {
|
|
//// return super.y();
|
|
//// }
|
|
//// }
|
|
////
|
|
//// // Case 6
|
|
//// class Base6 {
|
|
//// public x() {
|
|
//// return "BaseX";
|
|
//// }
|
|
//// }
|
|
////
|
|
//// class Sub6 extends Base6 {
|
|
//// public y() {
|
|
//// return "SubY";
|
|
//// }
|
|
//// }
|
|
////
|
|
//// class SubSub6 extends Sub6 {
|
|
//// public y() {
|
|
//// return super.y();
|
|
//// }
|
|
//// }
|
|
////
|
|
//// var results1 = new SubSub5();
|
|
//// var results2 = new SubSub6();
|
|
//// export var result = results1.x() + results1.y() + results2.y();
|
|
////}
|
|
////
|
|
////module RT_VarArgs {
|
|
//// module M {
|
|
//// export class C {
|
|
//// public f(x: string, ...rest: number[]) {
|
|
//// var sum = 0;
|
|
//// for (var i = 0; i < rest.length; i++) {
|
|
//// sum += rest[i];
|
|
//// }
|
|
//// result += (x + ": " + sum);
|
|
//// return result;
|
|
//// }
|
|
////
|
|
//// public fnope(x: string, ...rest: number[]) {
|
|
////
|
|
//// }
|
|
////
|
|
//// public fonly(...rest: string[]) {
|
|
//// var builder = "";
|
|
//// for (var i = 0; i < rest.length; i++) {
|
|
//// builder += rest[i];
|
|
//// }
|
|
//// return builder;
|
|
//// }
|
|
//// }
|
|
//// }
|
|
////
|
|
//// var x = new M.C();
|
|
//// export var result = "";
|
|
//// result += x.f("hello", 3, 3, 3, 3, 3); // ok
|
|
//// result += x.f("hello"); // ok varargs length 0
|
|
//// result += x.fonly("a"); // ok
|
|
//// result += x.fonly("a", "b", "c", "d"); //ok
|
|
////}
|
|
////
|
|
////
|
|
////var jq: RT_JQuery = { 0: { id: "a" }, 1: { id: "b" } };
|
|
////var r1 = jq[0].id
|
|
////
|
|
////var r2 = RT_StaticModule.f();
|
|
////
|
|
////var a = {
|
|
//// "foo": function () { },
|
|
//// "bar": 5
|
|
////};
|
|
////var r3 = a.bar.toString();
|
|
////
|
|
////var r4 = RT_SuperCalls.result;
|
|
////var r5 = RT_SuperCalls2.result;
|
|
////var r6 = false;
|
|
////var r7 = RT_VarArgs.result;
|
|
|
|
// Indexes propertly
|
|
verify.eval('r1', 'a');
|
|
|
|
// Calls static methods properly
|
|
verify.eval('r2', '25wow: 17wow: 66');
|
|
|
|
// Generates string indicies propertly
|
|
verify.eval('r3', '5');
|
|
|
|
// Calls super methods correctly (#1)
|
|
verify.eval('r4', 'sub1basebasebarsubsub1sub1basebasebar');
|
|
|
|
// Calls super methods correctly (#2)
|
|
verify.eval('r5', 'SubXBaseYSubY');
|
|
|
|
// Calls methods on primitives correctly
|
|
verify.eval('true.toString()', 'true');
|
|
verify.eval('r6.toString()', 'false');
|
|
verify.eval('1..toString()', '1');
|
|
|
|
// Copies vararg arrays correctly
|
|
verify.eval('r7', 'hello: 15hello: 15hello: 0aabcd');
|