From 36c5befae9f74969fff170c7ab45012c61432b6b Mon Sep 17 00:00:00 2001 From: Arthur Ozga Date: Fri, 4 Nov 2016 16:34:10 -0700 Subject: [PATCH] Add tests and simplify existing ones --- .../codeFixChangeExtendsToImplements.ts | 6 ++++ .../codeFixChangeExtendsToImplementsFS1.ts | 6 ---- .../codeFixChangeExtendsToImplementsFS2.ts | 6 ---- ...eFixChangeExtendsToImplementsTypeParams.ts | 6 ++++ ...s => codeFixClassExtendsAbstractMethod.ts} | 0 ...FixClassExtendsAbstractPrivateProperty.ts} | 0 ...=> codeFixClassExtendsAbstractProperty.ts} | 0 ...xClassExtendsAbstractProtectedProperty.ts} | 0 ...eFixClassExtendsAbstractPublicProperty.ts} | 0 .../codeFixInterfaceInExtendsClause.ts | 9 ------ ...OrderSuper.ts => codeFixSuperAfterThis.ts} | 0 ...uperCall.ts => codeFixSuperCallMissing.ts} | 0 ...l.ts => codeFixSuperCallWithThisInside.ts} | 0 ...ImplementedClassMissingAbstractProperty.ts | 11 ++++++++ ...odeFixUnImplementedClassMissingFunction.ts | 13 +++++++++ ...ementedClassMissingPropertyViaHeritage.ts} | 6 ++-- ...ixUnImplementedInterfaceDuplicateMember.ts | 15 ++++++++++ ...ericParamExtendsNumberViaHeritageClause.ts | 18 ------------ ...ricParamExtendsNumberViaHeritageClause2.ts | 16 ----------- ...ctFunctionGenericParamViaHeritageClause.ts | 18 ------------ ...issingAbstractFunctionViaHeritageClause.ts | 18 ------------ ...ixUnImplementedInterfaceMissingFunction.ts | 18 ------------ ...tedInterfaceMissingFunctionFromAbstract.ts | 14 ---------- ...rfaceMissingFunctionFromHeritageClause1.ts | 17 ----------- ...rfaceMissingFunctionFromHeritageClause2.ts | 19 ------------- ...rfaceMissingFunctionFromHeritageClause3.ts | 19 ------------- ...rfaceMissingFunctionFromHeritageClause4.ts | 19 ------------- ...issingFunctionGenericParamExtendsString.ts | 15 ---------- ...edInterfaceMissingFunctionGenericParams.ts | 15 ---------- ...ntedInterfaceMissingFunctionNoSemicolon.ts | 18 ------------ ...entedInterfaceMissingFunctionWithParams.ts | 18 ------------ ...InterfaceMissingFunctionWithParamsClass.ts | 15 ---------- ...FixUnImplementedInterfaceMissingMethod.ts} | 8 ++---- ...ementedInterfaceMissingMethodWithParams.ts | 14 ++++++++++ ...mentedInterfaceMissingNumberNoSemicolon.ts | 16 ----------- ...ixUnImplementedInterfaceMissingProperty.ts | 11 ++++++++ ...tedInterfaceMissingPropertyIntersection.ts | 12 ++++++++ ...nImplementedInterfaceNamespaceConflict.ts} | 3 +- ...plementedInterfaceSomePropertiesPresent.ts | 14 ++++++++++ ...mplementedInterfaceTypeParamOnProperty.ts} | 10 +++---- ...=> codeFixUnimplementedDeepInheritance.ts} | 0 ...mentedInterfaceMissingMultipleFunctions.ts | 22 --------------- ...entedInterfaceMissingMultipleImplements.ts | 16 +++++++++++ ...aceMissingMultipleMembersAndPunctuation.ts | 28 +++++++++++++++++++ ...ntedInterfaceTypeParamInstantiateDeeply.ts | 17 +++++++++++ ...entedInterfaceTypeParamInstantiateError.ts | 11 ++++++++ ...ntedInterfaceTypeParamInstantiateNumber.ts | 17 +++++++++++ ...plementedInterfaceTypeParamInstantiateT.ts | 17 +++++++++++ ...plementedInterfaceTypeParamInstantiateU.ts | 17 +++++++++++ ...dInterfaceTypeParamInstantiationMissing.ts | 9 ++++++ ...xUnimplementedInterfaceUndeclaredSymbol.ts | 16 +++++++++++ 51 files changed, 261 insertions(+), 332 deletions(-) create mode 100644 tests/cases/fourslash/codeFixChangeExtendsToImplements.ts delete mode 100644 tests/cases/fourslash/codeFixChangeExtendsToImplementsFS1.ts delete mode 100644 tests/cases/fourslash/codeFixChangeExtendsToImplementsFS2.ts create mode 100644 tests/cases/fourslash/codeFixChangeExtendsToImplementsTypeParams.ts rename tests/cases/fourslash/{codeFixClassExtendsAbstractFunction.ts => codeFixClassExtendsAbstractMethod.ts} (100%) rename tests/cases/fourslash/{codeFixClassExtendsAbstractPrivateNumber.ts => codeFixClassExtendsAbstractPrivateProperty.ts} (100%) rename tests/cases/fourslash/{codeFixClassExtendsAbstractNumber.ts => codeFixClassExtendsAbstractProperty.ts} (100%) rename tests/cases/fourslash/{codeFixClassExtendsAbstractProtectedNumber.ts => codeFixClassExtendsAbstractProtectedProperty.ts} (100%) rename tests/cases/fourslash/{codeFixClassExtendsAbstractPublicNumber.ts => codeFixClassExtendsAbstractPublicProperty.ts} (100%) delete mode 100644 tests/cases/fourslash/codeFixInterfaceInExtendsClause.ts rename tests/cases/fourslash/{codeFixReOrderSuper.ts => codeFixSuperAfterThis.ts} (100%) rename tests/cases/fourslash/{codeFixAddSuperCall.ts => codeFixSuperCallMissing.ts} (100%) rename tests/cases/fourslash/{codeFixThisUsedInSuperCall.ts => codeFixSuperCallWithThisInside.ts} (100%) create mode 100644 tests/cases/fourslash/codeFixUnImplementedClassMissingAbstractProperty.ts create mode 100644 tests/cases/fourslash/codeFixUnImplementedClassMissingFunction.ts rename tests/cases/fourslash/{codeFixUnImplementedInterfaceMissingFunctionFromAbstractClassViaHeritageClause.ts => codeFixUnImplementedClassMissingPropertyViaHeritage.ts} (68%) create mode 100644 tests/cases/fourslash/codeFixUnImplementedInterfaceDuplicateMember.ts delete mode 100644 tests/cases/fourslash/codeFixUnImplementedInterfaceMissingAbstractFunctionGenericParamExtendsNumberViaHeritageClause.ts delete mode 100644 tests/cases/fourslash/codeFixUnImplementedInterfaceMissingAbstractFunctionGenericParamExtendsNumberViaHeritageClause2.ts delete mode 100644 tests/cases/fourslash/codeFixUnImplementedInterfaceMissingAbstractFunctionGenericParamViaHeritageClause.ts delete mode 100644 tests/cases/fourslash/codeFixUnImplementedInterfaceMissingAbstractFunctionViaHeritageClause.ts delete mode 100644 tests/cases/fourslash/codeFixUnImplementedInterfaceMissingFunction.ts delete mode 100644 tests/cases/fourslash/codeFixUnImplementedInterfaceMissingFunctionFromAbstract.ts delete mode 100644 tests/cases/fourslash/codeFixUnImplementedInterfaceMissingFunctionFromHeritageClause1.ts delete mode 100644 tests/cases/fourslash/codeFixUnImplementedInterfaceMissingFunctionFromHeritageClause2.ts delete mode 100644 tests/cases/fourslash/codeFixUnImplementedInterfaceMissingFunctionFromHeritageClause3.ts delete mode 100644 tests/cases/fourslash/codeFixUnImplementedInterfaceMissingFunctionFromHeritageClause4.ts delete mode 100644 tests/cases/fourslash/codeFixUnImplementedInterfaceMissingFunctionGenericParamExtendsString.ts delete mode 100644 tests/cases/fourslash/codeFixUnImplementedInterfaceMissingFunctionGenericParams.ts delete mode 100644 tests/cases/fourslash/codeFixUnImplementedInterfaceMissingFunctionNoSemicolon.ts delete mode 100644 tests/cases/fourslash/codeFixUnImplementedInterfaceMissingFunctionWithParams.ts delete mode 100644 tests/cases/fourslash/codeFixUnImplementedInterfaceMissingFunctionWithParamsClass.ts rename tests/cases/fourslash/{codeFixUnImplementedInterfaceMissingFunctionAndExtends.ts => codeFixUnImplementedInterfaceMissingMethod.ts} (57%) create mode 100644 tests/cases/fourslash/codeFixUnImplementedInterfaceMissingMethodWithParams.ts delete mode 100644 tests/cases/fourslash/codeFixUnImplementedInterfaceMissingNumberNoSemicolon.ts create mode 100644 tests/cases/fourslash/codeFixUnImplementedInterfaceMissingProperty.ts create mode 100644 tests/cases/fourslash/codeFixUnImplementedInterfaceMissingPropertyIntersection.ts rename tests/cases/fourslash/{codeFixUnImplementedInterfaceMissingNumber.ts => codeFixUnImplementedInterfaceNamespaceConflict.ts} (80%) create mode 100644 tests/cases/fourslash/codeFixUnImplementedInterfaceSomePropertiesPresent.ts rename tests/cases/fourslash/{codeFixUnImplementedInterfaceMissingAbstractFunctionGenericParamExtendsNumber.ts => codeFixUnImplementedInterfaceTypeParamOnProperty.ts} (54%) rename tests/cases/fourslash/{codeFixUnimplementedInterfaceMissingMultipleFunctionsDeepInheritance.ts => codeFixUnimplementedDeepInheritance.ts} (100%) delete mode 100644 tests/cases/fourslash/codeFixUnimplementedInterfaceMissingMultipleFunctions.ts create mode 100644 tests/cases/fourslash/codeFixUnimplementedInterfaceMissingMultipleImplements.ts create mode 100644 tests/cases/fourslash/codeFixUnimplementedInterfaceMissingMultipleMembersAndPunctuation.ts create mode 100644 tests/cases/fourslash/codeFixUnimplementedInterfaceTypeParamInstantiateDeeply.ts create mode 100644 tests/cases/fourslash/codeFixUnimplementedInterfaceTypeParamInstantiateError.ts create mode 100644 tests/cases/fourslash/codeFixUnimplementedInterfaceTypeParamInstantiateNumber.ts create mode 100644 tests/cases/fourslash/codeFixUnimplementedInterfaceTypeParamInstantiateT.ts create mode 100644 tests/cases/fourslash/codeFixUnimplementedInterfaceTypeParamInstantiateU.ts create mode 100644 tests/cases/fourslash/codeFixUnimplementedInterfaceTypeParamInstantiationMissing.ts create mode 100644 tests/cases/fourslash/codeFixUnimplementedInterfaceUndeclaredSymbol.ts diff --git a/tests/cases/fourslash/codeFixChangeExtendsToImplements.ts b/tests/cases/fourslash/codeFixChangeExtendsToImplements.ts new file mode 100644 index 00000000000..9d913c83f2d --- /dev/null +++ b/tests/cases/fourslash/codeFixChangeExtendsToImplements.ts @@ -0,0 +1,6 @@ +/// + +//// interface I {} +//// [|class C extends I|]{} + +verify.rangeAfterCodeFix("class C implements I"); \ No newline at end of file diff --git a/tests/cases/fourslash/codeFixChangeExtendsToImplementsFS1.ts b/tests/cases/fourslash/codeFixChangeExtendsToImplementsFS1.ts deleted file mode 100644 index 6721eda7367..00000000000 --- a/tests/cases/fourslash/codeFixChangeExtendsToImplementsFS1.ts +++ /dev/null @@ -1,6 +0,0 @@ -/// - -//// interface I1 {} -//// [|class c1 extends I1|]{} - -verify.rangeAfterCodeFix("class c1 implements I1"); \ No newline at end of file diff --git a/tests/cases/fourslash/codeFixChangeExtendsToImplementsFS2.ts b/tests/cases/fourslash/codeFixChangeExtendsToImplementsFS2.ts deleted file mode 100644 index 973795732ad..00000000000 --- a/tests/cases/fourslash/codeFixChangeExtendsToImplementsFS2.ts +++ /dev/null @@ -1,6 +0,0 @@ -/// - -////interface I1 {} -////[|class c1 extends I1|]{} - -verify.rangeAfterCodeFix("class c1 implements I1"); \ No newline at end of file diff --git a/tests/cases/fourslash/codeFixChangeExtendsToImplementsTypeParams.ts b/tests/cases/fourslash/codeFixChangeExtendsToImplementsTypeParams.ts new file mode 100644 index 00000000000..869bd1a5dc0 --- /dev/null +++ b/tests/cases/fourslash/codeFixChangeExtendsToImplementsTypeParams.ts @@ -0,0 +1,6 @@ +/// + +////interface I { x: X} +////[|class C extends I|]{} + +verify.rangeAfterCodeFix("class C implements I"); \ No newline at end of file diff --git a/tests/cases/fourslash/codeFixClassExtendsAbstractFunction.ts b/tests/cases/fourslash/codeFixClassExtendsAbstractMethod.ts similarity index 100% rename from tests/cases/fourslash/codeFixClassExtendsAbstractFunction.ts rename to tests/cases/fourslash/codeFixClassExtendsAbstractMethod.ts diff --git a/tests/cases/fourslash/codeFixClassExtendsAbstractPrivateNumber.ts b/tests/cases/fourslash/codeFixClassExtendsAbstractPrivateProperty.ts similarity index 100% rename from tests/cases/fourslash/codeFixClassExtendsAbstractPrivateNumber.ts rename to tests/cases/fourslash/codeFixClassExtendsAbstractPrivateProperty.ts diff --git a/tests/cases/fourslash/codeFixClassExtendsAbstractNumber.ts b/tests/cases/fourslash/codeFixClassExtendsAbstractProperty.ts similarity index 100% rename from tests/cases/fourslash/codeFixClassExtendsAbstractNumber.ts rename to tests/cases/fourslash/codeFixClassExtendsAbstractProperty.ts diff --git a/tests/cases/fourslash/codeFixClassExtendsAbstractProtectedNumber.ts b/tests/cases/fourslash/codeFixClassExtendsAbstractProtectedProperty.ts similarity index 100% rename from tests/cases/fourslash/codeFixClassExtendsAbstractProtectedNumber.ts rename to tests/cases/fourslash/codeFixClassExtendsAbstractProtectedProperty.ts diff --git a/tests/cases/fourslash/codeFixClassExtendsAbstractPublicNumber.ts b/tests/cases/fourslash/codeFixClassExtendsAbstractPublicProperty.ts similarity index 100% rename from tests/cases/fourslash/codeFixClassExtendsAbstractPublicNumber.ts rename to tests/cases/fourslash/codeFixClassExtendsAbstractPublicProperty.ts diff --git a/tests/cases/fourslash/codeFixInterfaceInExtendsClause.ts b/tests/cases/fourslash/codeFixInterfaceInExtendsClause.ts deleted file mode 100644 index 15b6833d899..00000000000 --- a/tests/cases/fourslash/codeFixInterfaceInExtendsClause.ts +++ /dev/null @@ -1,9 +0,0 @@ -/// - -//// interface I { } -//// class C extends I { } - -verify.fileAfterCodeFix(` -interface I { } -class C implements I { } -`); \ No newline at end of file diff --git a/tests/cases/fourslash/codeFixReOrderSuper.ts b/tests/cases/fourslash/codeFixSuperAfterThis.ts similarity index 100% rename from tests/cases/fourslash/codeFixReOrderSuper.ts rename to tests/cases/fourslash/codeFixSuperAfterThis.ts diff --git a/tests/cases/fourslash/codeFixAddSuperCall.ts b/tests/cases/fourslash/codeFixSuperCallMissing.ts similarity index 100% rename from tests/cases/fourslash/codeFixAddSuperCall.ts rename to tests/cases/fourslash/codeFixSuperCallMissing.ts diff --git a/tests/cases/fourslash/codeFixThisUsedInSuperCall.ts b/tests/cases/fourslash/codeFixSuperCallWithThisInside.ts similarity index 100% rename from tests/cases/fourslash/codeFixThisUsedInSuperCall.ts rename to tests/cases/fourslash/codeFixSuperCallWithThisInside.ts diff --git a/tests/cases/fourslash/codeFixUnImplementedClassMissingAbstractProperty.ts b/tests/cases/fourslash/codeFixUnImplementedClassMissingAbstractProperty.ts new file mode 100644 index 00000000000..89060b0dfb7 --- /dev/null +++ b/tests/cases/fourslash/codeFixUnImplementedClassMissingAbstractProperty.ts @@ -0,0 +1,11 @@ +/// + +//// abstract class C1 { +//// abstract x: number; +//// } +//// +//// class C3 implements C2 {[| |]} + +verify.rangeAfterCodeFix(` +x: number; +`); \ No newline at end of file diff --git a/tests/cases/fourslash/codeFixUnImplementedClassMissingFunction.ts b/tests/cases/fourslash/codeFixUnImplementedClassMissingFunction.ts new file mode 100644 index 00000000000..529db61fc71 --- /dev/null +++ b/tests/cases/fourslash/codeFixUnImplementedClassMissingFunction.ts @@ -0,0 +1,13 @@ +/// + +//// class A { +//// f() {} +//// } +//// +//// class B implements A {[| |]} + +verify.rangeAfterCodeFix(` +f(){ + throw new Error('Method not Implemented'); +} +`); diff --git a/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingFunctionFromAbstractClassViaHeritageClause.ts b/tests/cases/fourslash/codeFixUnImplementedClassMissingPropertyViaHeritage.ts similarity index 68% rename from tests/cases/fourslash/codeFixUnImplementedInterfaceMissingFunctionFromAbstractClassViaHeritageClause.ts rename to tests/cases/fourslash/codeFixUnImplementedClassMissingPropertyViaHeritage.ts index 7cbc606539b..d794c7a60d6 100644 --- a/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingFunctionFromAbstractClassViaHeritageClause.ts +++ b/tests/cases/fourslash/codeFixUnImplementedClassMissingPropertyViaHeritage.ts @@ -1,10 +1,10 @@ /// -//// abstract class C1 { -//// f1(){} +//// class C1 { +//// f1(); //// } //// -//// abstract class C2 extends C1 { +//// class C2 extends C1 { //// //// } //// diff --git a/tests/cases/fourslash/codeFixUnImplementedInterfaceDuplicateMember.ts b/tests/cases/fourslash/codeFixUnImplementedInterfaceDuplicateMember.ts new file mode 100644 index 00000000000..caf4d15df7e --- /dev/null +++ b/tests/cases/fourslash/codeFixUnImplementedInterfaceDuplicateMember.ts @@ -0,0 +1,15 @@ +/// + +//// interface I1 { +//// x: number; +//// } +//// interface I2 { +//// x: number; +//// } +//// +//// class C1 implements I1,I2 {[| +//// |]} + +verify.rangeAfterCodeFix(` +x: number; +`); \ No newline at end of file diff --git a/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingAbstractFunctionGenericParamExtendsNumberViaHeritageClause.ts b/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingAbstractFunctionGenericParamExtendsNumberViaHeritageClause.ts deleted file mode 100644 index 083f4301a11..00000000000 --- a/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingAbstractFunctionGenericParamExtendsNumberViaHeritageClause.ts +++ /dev/null @@ -1,18 +0,0 @@ -/// - -//// abstract class C1 { -//// abstract f1(); -//// } -//// -//// abstract class C2 extends C1 { -//// -//// } -//// -//// class C3 implements C2 {[| -//// |]f2(){} -//// } - -verify.rangeAfterCodeFix(`f1(){ - throw new Error('Method not Implemented'); -} -`); diff --git a/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingAbstractFunctionGenericParamExtendsNumberViaHeritageClause2.ts b/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingAbstractFunctionGenericParamExtendsNumberViaHeritageClause2.ts deleted file mode 100644 index aaa00cc791a..00000000000 --- a/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingAbstractFunctionGenericParamExtendsNumberViaHeritageClause2.ts +++ /dev/null @@ -1,16 +0,0 @@ -/// - -//// abstract class C1 { -//// abstract f1(); -//// } -//// -//// interface I1 extends C1 {} -//// -//// class C2 implements I1 {[| -//// -//// |]} - -verify.rangeAfterCodeFix(`f1(){ - throw new Error('Method not Implemented'); -} -`); diff --git a/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingAbstractFunctionGenericParamViaHeritageClause.ts b/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingAbstractFunctionGenericParamViaHeritageClause.ts deleted file mode 100644 index 24c9048015e..00000000000 --- a/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingAbstractFunctionGenericParamViaHeritageClause.ts +++ /dev/null @@ -1,18 +0,0 @@ -/// - -//// abstract class C1 { -//// abstract f1(); -//// } -//// -//// abstract class C2 extends C1 { -//// -//// } -//// -//// class C3 implements C2 {[| -//// |]f2(){} -//// } - -verify.rangeAfterCodeFix(`f1(){ - throw new Error('Method not Implemented'); -} -`); diff --git a/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingAbstractFunctionViaHeritageClause.ts b/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingAbstractFunctionViaHeritageClause.ts deleted file mode 100644 index b7b7271badd..00000000000 --- a/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingAbstractFunctionViaHeritageClause.ts +++ /dev/null @@ -1,18 +0,0 @@ -/// - -//// abstract class C1 { -//// abstract f1(); -//// } -//// -//// abstract class C2 extends C1 { -//// -//// } -//// -//// class C3 implements C2 {[| -//// |]f2(){} -//// } - -verify.rangeAfterCodeFix(`f1(){ - throw new Error('Method not Implemented'); -} -`); diff --git a/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingFunction.ts b/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingFunction.ts deleted file mode 100644 index 0459b90c99c..00000000000 --- a/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingFunction.ts +++ /dev/null @@ -1,18 +0,0 @@ -/// - -//// namespace N1 { -//// export interface I1 { -//// f1(); -//// } -//// } -//// interface I1 { -//// f1(); -//// } -//// -//// class C1 implements N1.I1 {[| -//// |]} - -verify.rangeAfterCodeFix(`f1(){ - throw new Error('Method not Implemented'); -} -`); diff --git a/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingFunctionFromAbstract.ts b/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingFunctionFromAbstract.ts deleted file mode 100644 index 4b17f315534..00000000000 --- a/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingFunctionFromAbstract.ts +++ /dev/null @@ -1,14 +0,0 @@ -/// - -//// abstract class C1 { -//// f1(){} -//// } -//// -//// class C2 implements C1 {[| -//// |]f2(){} -//// } - -verify.rangeAfterCodeFix(`f1(){ - throw new Error('Method not Implemented'); -} -`); diff --git a/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingFunctionFromHeritageClause1.ts b/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingFunctionFromHeritageClause1.ts deleted file mode 100644 index a6f7c5cdba7..00000000000 --- a/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingFunctionFromHeritageClause1.ts +++ /dev/null @@ -1,17 +0,0 @@ -/// - -//// interface I1 { -//// f1() -//// } -//// -//// interface I2 extends I1 { -//// -//// } -//// -//// class C1 implements I2 {[| -//// |]} - -verify.rangeAfterCodeFix(`f1(){ - throw new Error('Method not Implemented'); -} -`); diff --git a/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingFunctionFromHeritageClause2.ts b/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingFunctionFromHeritageClause2.ts deleted file mode 100644 index 01da0838679..00000000000 --- a/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingFunctionFromHeritageClause2.ts +++ /dev/null @@ -1,19 +0,0 @@ -/// - -//// interface I1 { -//// -//// } -//// -//// interface I2 extends I1 { -//// f1(); -//// } -//// -//// interface I3 extends I2 {} -//// -//// class C1 implements I3 {[| -//// |]} - -verify.rangeAfterCodeFix(`f1(){ - throw new Error('Method not Implemented'); -} -`); diff --git a/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingFunctionFromHeritageClause3.ts b/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingFunctionFromHeritageClause3.ts deleted file mode 100644 index ff91223f63a..00000000000 --- a/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingFunctionFromHeritageClause3.ts +++ /dev/null @@ -1,19 +0,0 @@ -/// - -//// interface I1 { -//// -//// } -//// -//// interface I2 { -//// f1(); -//// } -//// -//// interface I3 extends I2, I1 {} -//// -//// class C1 implements I3 {[| -//// |]} - -verify.rangeAfterCodeFix(`f1(){ - throw new Error('Method not Implemented'); -} -`); diff --git a/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingFunctionFromHeritageClause4.ts b/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingFunctionFromHeritageClause4.ts deleted file mode 100644 index 390a249f7c8..00000000000 --- a/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingFunctionFromHeritageClause4.ts +++ /dev/null @@ -1,19 +0,0 @@ -/// - -//// interface I1 { -//// f1(); -//// } -//// -//// interface I2 { -//// f1(); -//// } -//// -//// interface I3 extends I2, I1 {} -//// -//// class C1 implements I3 {[| -//// |]} - -verify.rangeAfterCodeFix(`f1(){ - throw new Error('Method not Implemented'); -} -`); diff --git a/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingFunctionGenericParamExtendsString.ts b/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingFunctionGenericParamExtendsString.ts deleted file mode 100644 index abf5848668e..00000000000 --- a/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingFunctionGenericParamExtendsString.ts +++ /dev/null @@ -1,15 +0,0 @@ -/// - -//// interface I1 { -//// f1(x: number, y: C2); -//// } -//// -//// class C2 {} -//// -//// class C1 implements I1 {[| -//// |]} - -verify.rangeAfterCodeFix(`f1(x: number,y: C2){ - throw new Error('Method not Implemented'); -} -`); diff --git a/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingFunctionGenericParams.ts b/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingFunctionGenericParams.ts deleted file mode 100644 index 51becc8c99c..00000000000 --- a/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingFunctionGenericParams.ts +++ /dev/null @@ -1,15 +0,0 @@ -/// - -//// interface I1 { -//// f1(x: number, y: C2); -//// } -//// -//// class C2 {} -//// -//// class C1 implements I1 {[| -//// |]} - -verify.rangeAfterCodeFix(`f1(x: number,y: C2){ - throw new Error('Method not Implemented'); -} -`); diff --git a/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingFunctionNoSemicolon.ts b/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingFunctionNoSemicolon.ts deleted file mode 100644 index 5b5f177741c..00000000000 --- a/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingFunctionNoSemicolon.ts +++ /dev/null @@ -1,18 +0,0 @@ -/// - -//// namespace N1 { -//// export interface I1 { -//// f1() -//// } -//// } -//// interface I1 { -//// f1(); -//// } -//// -//// class C1 implements N1.I1 {[| -//// |]} - -verify.rangeAfterCodeFix(`f1(){ - throw new Error('Method not Implemented'); -} -`); diff --git a/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingFunctionWithParams.ts b/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingFunctionWithParams.ts deleted file mode 100644 index 5a4537ff2d5..00000000000 --- a/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingFunctionWithParams.ts +++ /dev/null @@ -1,18 +0,0 @@ -/// - -//// namespace N1 { -//// export interface I1 { -//// f1(x: number, y: string) -//// } -//// } -//// interface I1 { -//// f1(); -//// } -//// -//// class C1 implements N1.I1 {[| -//// |]} - -verify.rangeAfterCodeFix(`f1(x: number,y: string){ - throw new Error('Method not Implemented'); -} -`); diff --git a/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingFunctionWithParamsClass.ts b/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingFunctionWithParamsClass.ts deleted file mode 100644 index 157c9bec04e..00000000000 --- a/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingFunctionWithParamsClass.ts +++ /dev/null @@ -1,15 +0,0 @@ -/// - -//// interface I1 { -//// f1(x: number, y: T); -//// } -//// -//// class T {} -//// -//// class C1 implements I1 {[| -//// |]} - -verify.rangeAfterCodeFix(`f1(x: number,y: T){ - throw new Error('Method not Implemented'); -} -`); diff --git a/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingFunctionAndExtends.ts b/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingMethod.ts similarity index 57% rename from tests/cases/fourslash/codeFixUnImplementedInterfaceMissingFunctionAndExtends.ts rename to tests/cases/fourslash/codeFixUnImplementedInterfaceMissingMethod.ts index 36f1c11dc82..976c0dba56d 100644 --- a/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingFunctionAndExtends.ts +++ b/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingMethod.ts @@ -1,14 +1,10 @@ /// -//// interface I1 { -//// -//// } -//// -//// interface I2 extends I1 { +//// interface I { //// f1(); //// } //// -//// class C1 implements I2 {[| +//// class C implements I {[| //// |]} verify.rangeAfterCodeFix(`f1(){ diff --git a/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingMethodWithParams.ts b/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingMethodWithParams.ts new file mode 100644 index 00000000000..a21c7074b50 --- /dev/null +++ b/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingMethodWithParams.ts @@ -0,0 +1,14 @@ +/// + +//// interface I { +//// f(x: number, y: string) +//// } +//// +//// class C implements I {[| +//// |]} + +verify.rangeAfterCodeFix(` +f(x: number,y: string){ + throw new Error('Method not Implemented'); +} +`); diff --git a/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingNumberNoSemicolon.ts b/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingNumberNoSemicolon.ts deleted file mode 100644 index f9aeb194fd7..00000000000 --- a/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingNumberNoSemicolon.ts +++ /dev/null @@ -1,16 +0,0 @@ -/// - -//// namespace N1 { -//// export interface I1 { -//// x: number -//// } -//// } -//// interface I1 { -//// f1(); -//// } -//// -//// class C1 implements N1.I1 {[| -//// |]} - -verify.rangeAfterCodeFix(`x: number; -`); diff --git a/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingProperty.ts b/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingProperty.ts new file mode 100644 index 00000000000..4e08a30cde4 --- /dev/null +++ b/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingProperty.ts @@ -0,0 +1,11 @@ +/// + +//// interface I1 { +//// x: number; +//// } +//// +//// class C1 implements I1 {[| +//// |]} + +verify.rangeAfterCodeFix(`x: number; +`); diff --git a/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingPropertyIntersection.ts b/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingPropertyIntersection.ts new file mode 100644 index 00000000000..9b10cf5d316 --- /dev/null +++ b/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingPropertyIntersection.ts @@ -0,0 +1,12 @@ +/// + +//// interface I1 { +//// x: number & { __iBrand: any }; +//// } +//// +//// class C1 implements I1 {[| +//// |]} + +verify.rangeAfterCodeFix(` +x: number & { __iBrand: any } +`); diff --git a/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingNumber.ts b/tests/cases/fourslash/codeFixUnImplementedInterfaceNamespaceConflict.ts similarity index 80% rename from tests/cases/fourslash/codeFixUnImplementedInterfaceMissingNumber.ts rename to tests/cases/fourslash/codeFixUnImplementedInterfaceNamespaceConflict.ts index e8a30703638..8e0a35c7fe7 100644 --- a/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingNumber.ts +++ b/tests/cases/fourslash/codeFixUnImplementedInterfaceNamespaceConflict.ts @@ -12,5 +12,6 @@ //// class C1 implements N1.I1 {[| //// |]} -verify.rangeAfterCodeFix(`x: number; +verify.rangeAfterCodeFix(` +x: number; `); diff --git a/tests/cases/fourslash/codeFixUnImplementedInterfaceSomePropertiesPresent.ts b/tests/cases/fourslash/codeFixUnImplementedInterfaceSomePropertiesPresent.ts new file mode 100644 index 00000000000..03c9e535d8d --- /dev/null +++ b/tests/cases/fourslash/codeFixUnImplementedInterfaceSomePropertiesPresent.ts @@ -0,0 +1,14 @@ +/// + +//// interface I { +//// x: number; +//// y: number; +//// } +//// +//// class C2 implements C {[| |] +//// x: number +//// } + +verify.rangeAfterCodeFix(` +y: number; +`); diff --git a/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingAbstractFunctionGenericParamExtendsNumber.ts b/tests/cases/fourslash/codeFixUnImplementedInterfaceTypeParamOnProperty.ts similarity index 54% rename from tests/cases/fourslash/codeFixUnImplementedInterfaceMissingAbstractFunctionGenericParamExtendsNumber.ts rename to tests/cases/fourslash/codeFixUnImplementedInterfaceTypeParamOnProperty.ts index 5a644dfb993..8c32be6b7f4 100644 --- a/tests/cases/fourslash/codeFixUnImplementedInterfaceMissingAbstractFunctionGenericParamExtendsNumber.ts +++ b/tests/cases/fourslash/codeFixUnImplementedInterfaceTypeParamOnProperty.ts @@ -1,14 +1,12 @@ /// -//// abstract class C1 { -//// abstract f1(); +//// interface I { +//// f1(); //// } //// -//// class C2 extends C1 {[| -//// -//// |]} +//// class C implements I {[| |]} verify.rangeAfterCodeFix(`f1(){ throw new Error('Method not Implemented'); } -`); +`); \ No newline at end of file diff --git a/tests/cases/fourslash/codeFixUnimplementedInterfaceMissingMultipleFunctionsDeepInheritance.ts b/tests/cases/fourslash/codeFixUnimplementedDeepInheritance.ts similarity index 100% rename from tests/cases/fourslash/codeFixUnimplementedInterfaceMissingMultipleFunctionsDeepInheritance.ts rename to tests/cases/fourslash/codeFixUnimplementedDeepInheritance.ts diff --git a/tests/cases/fourslash/codeFixUnimplementedInterfaceMissingMultipleFunctions.ts b/tests/cases/fourslash/codeFixUnimplementedInterfaceMissingMultipleFunctions.ts deleted file mode 100644 index 165edc92584..00000000000 --- a/tests/cases/fourslash/codeFixUnimplementedInterfaceMissingMultipleFunctions.ts +++ /dev/null @@ -1,22 +0,0 @@ -/// - -//// class C1 { -//// f1(); -//// } -//// -//// class C2 { -//// f2(); -//// } -//// -//// interface I1 extends C1, C2 {} -//// -//// class C3 implements I1 {[| -//// |]} - -verify.rangeAfterCodeFix(`f1(){ - throw new Error('Method not Implemented'); -} -f2(){ - throw new Error('Method not Implemented'); -} -`); \ No newline at end of file diff --git a/tests/cases/fourslash/codeFixUnimplementedInterfaceMissingMultipleImplements.ts b/tests/cases/fourslash/codeFixUnimplementedInterfaceMissingMultipleImplements.ts new file mode 100644 index 00000000000..5470258323e --- /dev/null +++ b/tests/cases/fourslash/codeFixUnimplementedInterfaceMissingMultipleImplements.ts @@ -0,0 +1,16 @@ +/// + +//// interface I1 { +//// x: number; +//// } +//// interface I2 { +//// y: number; +//// } +//// +//// class C1 implements I1,I2 {[| +//// |]} + +verify.rangeAfterCodeFix(` +x: number; +y: number; +`); \ No newline at end of file diff --git a/tests/cases/fourslash/codeFixUnimplementedInterfaceMissingMultipleMembersAndPunctuation.ts b/tests/cases/fourslash/codeFixUnimplementedInterfaceMissingMultipleMembersAndPunctuation.ts new file mode 100644 index 00000000000..01f7789620a --- /dev/null +++ b/tests/cases/fourslash/codeFixUnimplementedInterfaceMissingMultipleMembersAndPunctuation.ts @@ -0,0 +1,28 @@ +/// + +//// interface I1 { +//// x: number, +//// y: number +//// z: number; +//// f(), +//// g() +//// h(); +//// } +//// +//// class C1 implements I1 {[| +//// |]} + +verify.rangeAfterCodeFix(` +x: number; +y: number; +z: number; +f() { + throw new Error('Method not Implemented'); +} +g() { + throw new Error('Method not Implemented'); +} +h() { + throw new Error('Method not Implemented'); +} +`); \ No newline at end of file diff --git a/tests/cases/fourslash/codeFixUnimplementedInterfaceTypeParamInstantiateDeeply.ts b/tests/cases/fourslash/codeFixUnimplementedInterfaceTypeParamInstantiateDeeply.ts new file mode 100644 index 00000000000..a5bd006ec06 --- /dev/null +++ b/tests/cases/fourslash/codeFixUnimplementedInterfaceTypeParamInstantiateDeeply.ts @@ -0,0 +1,17 @@ +/// + +//// interface I { +//// x: { y: T, z: T[] }; +//// } +//// +//// class C implements I { } + +verify.fileAfterCodeFix(` +interface I { + x: { y: T, z: T[] }; +} + +class C implements I { + x: { y: number, z: number[] }; +} +`); diff --git a/tests/cases/fourslash/codeFixUnimplementedInterfaceTypeParamInstantiateError.ts b/tests/cases/fourslash/codeFixUnimplementedInterfaceTypeParamInstantiateError.ts new file mode 100644 index 00000000000..bc1c60d6dbe --- /dev/null +++ b/tests/cases/fourslash/codeFixUnimplementedInterfaceTypeParamInstantiateError.ts @@ -0,0 +1,11 @@ +/// + +//// interface I { +//// x: T; +//// } +//// +//// class C implements I { } + +// Don't know how to instantiate in codeFix +// if instantiation is invalid. +verify.not.codeFixAvailable(); \ No newline at end of file diff --git a/tests/cases/fourslash/codeFixUnimplementedInterfaceTypeParamInstantiateNumber.ts b/tests/cases/fourslash/codeFixUnimplementedInterfaceTypeParamInstantiateNumber.ts new file mode 100644 index 00000000000..932368a363c --- /dev/null +++ b/tests/cases/fourslash/codeFixUnimplementedInterfaceTypeParamInstantiateNumber.ts @@ -0,0 +1,17 @@ +/// + +//// interface I { +//// x: T; +//// } +//// +//// class C implements I { } + +verify.fileAfterCodeFix(` +interface I { + x: T; +} + +class C implements I { + x: number; +} +`); diff --git a/tests/cases/fourslash/codeFixUnimplementedInterfaceTypeParamInstantiateT.ts b/tests/cases/fourslash/codeFixUnimplementedInterfaceTypeParamInstantiateT.ts new file mode 100644 index 00000000000..0ec1c067445 --- /dev/null +++ b/tests/cases/fourslash/codeFixUnimplementedInterfaceTypeParamInstantiateT.ts @@ -0,0 +1,17 @@ +/// + +//// interface I { +//// x: T; +//// } +//// +//// class C implements I { } + +verify.fileAfterCodeFix(` +interface I { + x: T; +} + +class C implements I { + x: T; +} +`); diff --git a/tests/cases/fourslash/codeFixUnimplementedInterfaceTypeParamInstantiateU.ts b/tests/cases/fourslash/codeFixUnimplementedInterfaceTypeParamInstantiateU.ts new file mode 100644 index 00000000000..9608ac14cf4 --- /dev/null +++ b/tests/cases/fourslash/codeFixUnimplementedInterfaceTypeParamInstantiateU.ts @@ -0,0 +1,17 @@ +/// + +//// interface I { +//// x: T; +//// } +//// +//// class C implements I { } + +verify.fileAfterCodeFix(` +interface I { + x: T; +} + +class C implements I { + x: U; +} +`); diff --git a/tests/cases/fourslash/codeFixUnimplementedInterfaceTypeParamInstantiationMissing.ts b/tests/cases/fourslash/codeFixUnimplementedInterfaceTypeParamInstantiationMissing.ts new file mode 100644 index 00000000000..226aee47833 --- /dev/null +++ b/tests/cases/fourslash/codeFixUnimplementedInterfaceTypeParamInstantiationMissing.ts @@ -0,0 +1,9 @@ +/// + +//// interface I { +//// x: T; +//// } +//// +//// class C implements I { } + +verify.not.codeFixAvailable(); \ No newline at end of file diff --git a/tests/cases/fourslash/codeFixUnimplementedInterfaceUndeclaredSymbol.ts b/tests/cases/fourslash/codeFixUnimplementedInterfaceUndeclaredSymbol.ts new file mode 100644 index 00000000000..448986163f7 --- /dev/null +++ b/tests/cases/fourslash/codeFixUnimplementedInterfaceUndeclaredSymbol.ts @@ -0,0 +1,16 @@ +/// + +//// interface I { +//// x: T; +//// } +//// +//// class C implements I { } + +// T is not a declared symbol. There are a couple fixes: +// 1) Declare T. +// 2) Rename T to an existing symbol. +// 3) Make T a type parameter to I. +// +// In the latter two cases, it is premature to copy `x:T` into C. +// Since we can't guess the programmer's intent here, we do nothing. +verify.not.codeFixAvailable(); \ No newline at end of file