From 053caa01b55cdebd1f58804f220864c1f0ec005e Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Fri, 24 Nov 2023 13:25:34 +0200 Subject: [PATCH] Java: don't generate instanceof class check in equals for final classes (IDEA-209430) GitOrigin-RevId: 73f6b3e28dd466b9975f0c169b9c3d52fdf9ff82 --- .../generation/GenerateEqualsHandler.java | 24 ++++--------------- .../generation/ui/GenerateEqualsWizard.java | 5 ++-- 2 files changed, 8 insertions(+), 21 deletions(-) diff --git a/java/java-impl/src/com/intellij/codeInsight/generation/GenerateEqualsHandler.java b/java/java-impl/src/com/intellij/codeInsight/generation/GenerateEqualsHandler.java index 2ec0b9bd95f6..d3c172158298 100644 --- a/java/java-impl/src/com/intellij/codeInsight/generation/GenerateEqualsHandler.java +++ b/java/java-impl/src/com/intellij/codeInsight/generation/GenerateEqualsHandler.java @@ -1,18 +1,4 @@ -/* - * Copyright 2000-2016 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.codeInsight.generation; import com.intellij.codeInsight.CodeInsightSettings; @@ -127,12 +113,12 @@ public class GenerateEqualsHandler extends GenerateMembersHandlerBase { @Override @NotNull - protected List generateMemberPrototypes(PsiClass aClass, ClassMember[] originalMembers) throws IncorrectOperationException { - Project project = aClass.getProject(); - final boolean useInstanceofToCheckParameterType = CodeInsightSettings.getInstance().USE_INSTANCEOF_ON_EQUALS_PARAMETER; + protected List generateMemberPrototypes(PsiClass aClass, ClassMember[] originalMembers) { + boolean isFinal = aClass.hasModifierProperty(PsiModifier.FINAL); + final boolean useInstanceofToCheckParameterType = !isFinal && CodeInsightSettings.getInstance().USE_INSTANCEOF_ON_EQUALS_PARAMETER; final boolean useAccessors = CodeInsightSettings.getInstance().USE_ACCESSORS_IN_EQUALS_HASHCODE; - GenerateEqualsHelper helper = new GenerateEqualsHelper(project, aClass, myEqualsFields, myHashCodeFields, myNonNullFields, + GenerateEqualsHelper helper = new GenerateEqualsHelper(aClass.getProject(), aClass, myEqualsFields, myHashCodeFields, myNonNullFields, useInstanceofToCheckParameterType, useAccessors); return OverrideImplementUtil.convert2GenerationInfos(helper.generateMembers()); } diff --git a/java/java-impl/src/com/intellij/codeInsight/generation/ui/GenerateEqualsWizard.java b/java/java-impl/src/com/intellij/codeInsight/generation/ui/GenerateEqualsWizard.java index c1df71abdff9..ef3028e5efa7 100644 --- a/java/java-impl/src/com/intellij/codeInsight/generation/ui/GenerateEqualsWizard.java +++ b/java/java-impl/src/com/intellij/codeInsight/generation/ui/GenerateEqualsWizard.java @@ -252,7 +252,7 @@ public class GenerateEqualsWizard extends AbstractGenerateEqualsWizard