1010import com .intellij .openapi .command .WriteCommandAction ;
1111import com .intellij .openapi .project .Project ;
1212import com .intellij .openapi .ui .DialogBuilder ;
13+ import com .intellij .psi .codeStyle .CodeStyleManager ;
1314import com .intellij .psi .PsiElement ;
1415import com .jetbrains .php .lang .psi .PhpPsiElementFactory ;
1516import com .jetbrains .php .lang .psi .elements .PhpClass ;
@@ -36,10 +37,16 @@ public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descri
3637 DialogBuilder dialogBox = createDialogBox (expectedInterfaceDropdown , project );
3738 if (dialogBox .showAndGet ()) {
3839 String getSelectedInterface = expectedInterfaceDropdown .getSelectedItem ().toString ();
39- PsiElement correctInterface = PhpPsiElementFactory .createImplementsList (project , getSelectedInterface );
40- PhpClass graphQlResolverClass = (PhpClass ) descriptor .getPsiElement ().getParent ();
41- WriteCommandAction .writeCommandAction (project ).run (() -> {
42- graphQlResolverClass .getImplementsList ().replace (correctInterface );
40+ final PsiElement erroredElement = descriptor .getPsiElement ();
41+ final PsiElement correctInterface = PhpPsiElementFactory .createImplementsList (project , getSelectedInterface );
42+ final PhpClass graphQlResolverClass = (PhpClass ) erroredElement .getParent ();
43+ String [] implementedInterfaceNames = graphQlResolverClass .getInterfaceNames ();
44+ WriteCommandAction .runWriteCommandAction (project , () -> {
45+ if (implementedInterfaceNames .length == 0 ) {
46+ graphQlResolverClass .getImplementsList ().addAfter (correctInterface , erroredElement );
47+ } else {
48+ graphQlResolverClass .getImplementsList ().replace (correctInterface );
49+ }
4350 });
4451 }
4552 }
0 commit comments