IDEA-229792 Support record declaration in complete statement

GitOrigin-RevId: f0257fa34cd4bc8e5445f8f4bc417747790c2538
This commit is contained in:
Tagir Valeev
2019-12-25 10:17:37 +07:00
committed by intellij-monorepo-bot
parent 42b6965a5d
commit abdf1f601d
8 changed files with 27 additions and 2 deletions

View File

@@ -3,6 +3,7 @@ package com.intellij.codeInsight.editorActions.smartEnter;
import com.intellij.openapi.editor.Editor;
import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiRecordComponent;
import com.intellij.psi.PsiTypeParameter;
import com.intellij.util.IncorrectOperationException;
@@ -12,13 +13,22 @@ import com.intellij.util.IncorrectOperationException;
public class MissingClassBodyFixer implements Fixer {
@Override
public void apply(Editor editor, JavaSmartEnterProcessor processor, PsiElement psiElement) throws IncorrectOperationException {
if (psiElement instanceof PsiRecordComponent) {
psiElement = ((PsiRecordComponent)psiElement).getContainingClass();
}
if (!(psiElement instanceof PsiClass) || psiElement instanceof PsiTypeParameter) return;
PsiClass psiClass = (PsiClass) psiElement;
if (psiClass.getLBrace() == null) {
int offset = psiClass.getTextRange().getEndOffset();
editor.getDocument().insertString(offset, "{\n}");
editor.getCaretModel().moveToOffset(offset);
if (psiClass.isRecord() && psiClass.getRecordHeader() == null) {
editor.getDocument().insertString(offset, "() {}");
editor.getCaretModel().moveToOffset(offset + 1);
processor.setSkipEnter(true);
} else {
editor.getDocument().insertString(offset, "{\n}");
editor.getCaretModel().moveToOffset(offset);
}
}
}
}