// Code generated by convertFourslash; DO NOT EDIT. // To modify this test, run "npm run makemanual genericRespecialization1" package fourslash_test import ( "testing" "github.com/microsoft/typescript-go/internal/fourslash" "github.com/microsoft/typescript-go/internal/testutil" ) func TestGenericRespecialization1(t *testing.T) { fourslash.SkipIfFailing(t) t.Parallel() defer testutil.RecoverAndFail(t, "Panic on fourslash test") const content = `// @strict: false class Food { private amount: number; constructor(public name: string) { this.amount = 100; } public eat(amountToEat: number): boolean { this.amount -= amountToEat; if (this.amount <= 0) { this.amount = 0; return false; } else { return true; } } } class IceCream extends Food { private isDairyFree: boolean; constructor(public flavor: string) { super("Ice Cream"); } } class Cookie extends Food { constructor(public flavor: string, public isGlutenFree: boolean) { super("Cookie"); } } class Slug { // This is NOT a food!!! } class GenericMonster { private name: string; private age: number; private isFriendly: boolean; constructor(name: string, age: number, isFriendly: boolean, private food: T, public variant: V) { this.name = name; this.age = age; this.isFriendly = isFriendly; } public getFood(): T { return this.food; } public getVariant(): V { return this.variant; } public eatFood(amountToEat: number): boolean { return this.food.eat(amountToEat); } public sayGreeting(): string { return ("My name is " + this.name + ", and my age is " + this.age + ". I enjoy eating " + this.food.name + " and my variant is " + this.variant); } } class GenericPlanet> { constructor(public name: string, public solarSystem: string, public species: T) { } } var cookie = new Cookie("Chocolate Chip", false); var cookieMonster = new GenericMonster("Cookie Monster", 50, true, cookie, "hello"); var sesameStreet = new GenericPlanet>("Sesame Street", "Alpha Centuri", cookieMonster); class GenericPlanet2{ constructor(public name: string, public solarSystem: string, public species: GenericMonster) { } } /*1*/` f, done := fourslash.NewFourslash(t, nil /*capabilities*/, content) defer done() f.VerifyNoErrors(t) f.GoToMarker(t, "1") f.InsertLine(t, "") f.InsertLine(t, "") f.VerifyNoErrors(t) f.GoToMarker(t, "2") f.DeleteAtCaret(t, 6) f.Insert(t, "any") f.VerifyNoErrors(t) f.InsertLine(t, "var narnia = new GenericPlanet2(") }