disable "create enum constant" when executing it would result in psi/text inconsistency

This commit is contained in:
peter
2017-11-30 16:39:43 +01:00
parent 92795f0d27
commit bf9a49d1be
2 changed files with 14 additions and 0 deletions

View File

@@ -30,6 +30,7 @@ import com.intellij.psi.JavaPsiFacade
import com.intellij.psi.PsiClass
import com.intellij.psi.PsiEnumConstant
import com.intellij.psi.PsiFile
import com.intellij.psi.util.PsiTreeUtil
class CreateEnumConstantAction(targetClass: PsiClass, request: CreateFieldRequest) : CreateFieldActionBase(targetClass, request) {
@@ -87,6 +88,10 @@ private class EnumConstantData(
private fun extractRenderData(targetClass: PsiClass, request: CreateFieldRequest): EnumConstantData? {
if (!targetClass.isEnum) return null
val lastConstant = targetClass.fields.filterIsInstance<PsiEnumConstant>().lastOrNull()
if (lastConstant != null && PsiTreeUtil.hasErrorElements(lastConstant)) return null
if (!checkExpectedTypes(request.fieldType, targetClass, targetClass.project)) return null
return EnumConstantData(targetClass, request.fieldName)
}

View File

@@ -0,0 +1,9 @@
// "Create enum constant 'Natural'" "false"
class ParagraphStyle {
TextDirection textDirection = TextDirection.Nat<caret>ural;
public enum TextDirection {
a(b;
int x;
}
}