{"record":{"id":"87dff5028f9bed11","repo":"JetBrains/intellij-community","slug":"invalid-operation","errorCode":null,"errorMessage":"Invalid operation","messagePattern":"Invalid operation","errorType":"exception","errorClass":"IncorrectOperationException","httpStatus":null,"severity":"error","filePath":"java/java-psi-impl/src/com/intellij/psi/impl/source/PsiEnumConstantImpl.java","lineNumber":272,"sourceCode":"      }\n      else {\n        return TextRange.from(startOffsetInParent, nameIdentifier.getTextLength());\n      }\n    }\n\n    @Override\n    public boolean isSoft() {\n      return false;\n    }\n\n    @Override\n    public PsiElement handleElementRename(@NotNull String newElementName) throws IncorrectOperationException {\n      return getElement();\n    }\n\n    @Override\n    public PsiElement bindToElement(@NotNull PsiElement element) throws IncorrectOperationException {\n      throw new IncorrectOperationException(\"Invalid operation\");\n    }\n\n    @Override\n    public void processVariants(@NotNull PsiScopeProcessor processor) {\n    }\n\n    @Override\n    public JavaResolveResult @NotNull [] multiResolve(boolean incompleteCode) {\n      JavaPsiFacade facade = JavaPsiFacade.getInstance(getProject());\n      PsiClass containingClass = getContainingClass();\n      if (containingClass == null) return JavaResolveResult.EMPTY_ARRAY;\n      PsiClassType type = facade.getElementFactory().createType(containingClass);\n      return facade.getResolveHelper().multiResolveConstructor(type, getArgumentList(), getElement());\n    }\n\n    @Override\n    public @NotNull JavaResolveResult advancedResolve(boolean incompleteCode) {\n      JavaResolveResult[] results = multiResolve(incompleteCode);","sourceCodeStart":254,"sourceCodeEnd":290,"githubUrl":"https://github.com/JetBrains/intellij-community/blob/be881553f2a76ac8b4ea53950d93f0de78295c19/java/java-psi-impl/src/com/intellij/psi/impl/source/PsiEnumConstantImpl.java#L254-L290","documentation":"The reference inside a PsiEnumConstantImpl (an enum constant's reference to its enum class) supports handleElementRename as a no-op returning the element, but bindToElement is meaningless — an enum constant is declared inline in its enum, so it cannot be re-pointed at another element. bindToElement therefore always throws IncorrectOperationException(\"Invalid operation\").","triggerScenarios":"Calling bindToElement on the reference of an enum constant (e.g. the reference returned by an enum constant's name identifier context, or ((PsiReferenceExpression)enumConstant).bindToElement(...) style generic code) with any target element.","commonSituations":"Generic refactoring pipelines that call bindToElement on every PsiReference after moving/renaming a target; 'safe delete'/move refactorings that try to rebind enum constant references to other classes.","solutions":["Do not call bindToElement for references inside enum constants; treat handleElementRename (or plain text replacement) as the only supported mutation.","Filter such references before binding: check ref.getElement().getParent() instanceof PsiEnumConstant or skip references whose resolve() is the enum class itself.","If moving an enum constant, delete and re-create it in the target enum via PsiElementFactory instead of rebinding."],"exampleFix":"// before\nref.bindToElement(newTarget); // ref belongs to an enum constant -> always throws\n\n// after\nif (ref.getElement().getParent() instanceof PsiEnumConstant) {\n  // enum constants cannot be rebound; rename only\n  ref.handleElementRename(newName);\n} else {\n  ref.bindToElement(newTarget);\n}","handlingStrategy":"validation","validationCode":"if (ref.getElement().getParent() instanceof PsiEnumConstant) return; // bind unsupported","typeGuard":null,"tryCatchPattern":"try { ref.bindToElement(t); } catch (IncorrectOperationException e) { /* enum constant refs: rename only */ }","preventionTips":["Never rebind references belonging to enum constants.","Recreate enum constants via PsiElementFactory when moving them."],"tags":["java","psi","enum","references","bind"],"backgroundTag":null,"analyzedSha":"be881553f2a76ac8b4ea53950d93f0de78295c19","analyzedAt":"2026-08-14T14:13:06.425Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}