Move inner class to upper level: make outer field final

GitOrigin-RevId: 309caf35d99871f438f171ac3320b9314779132c
This commit is contained in:
Max Medvedev
2019-07-07 14:01:49 +03:00
committed by intellij-monorepo-bot
parent b1b2e9a35e
commit 9126ba4284
@@ -1,18 +1,4 @@
/*
* Copyright 2000-2015 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-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package com.intellij.refactoring.move.moveInner;
import com.intellij.codeInsight.ChangeContextUtil;
@@ -170,7 +156,7 @@ public class MoveInnerProcessor extends BaseRefactoringProcessor {
PsiField field = null;
if (myParameterNameOuterClass != null) {
// pass outer as a parameter
field = factory.createField(myFieldNameOuterClass, factory.createType(myOuterClass));
field = createOuterField(factory);
field = addOuterField(field);
myInnerClass = field.getContainingClass();
addFieldInitializationToConstructors(myInnerClass, field, myParameterNameOuterClass);
@@ -307,6 +293,17 @@ public class MoveInnerProcessor extends BaseRefactoringProcessor {
}
}
@NotNull
private PsiField createOuterField(@NotNull PsiElementFactory factory) {
PsiField field = factory.createField(myFieldNameOuterClass, factory.createType(myOuterClass));
PsiModifierList modifierList = field.getModifierList();
LOG.assertTrue(modifierList != null);
modifierList.setModifierProperty(PsiModifier.FINAL, true);
return field;
}
private PsiField addOuterField(PsiField field) {
final PsiMember[] members = PsiTreeUtil.getChildrenOfType(myInnerClass, PsiMember.class);
if (members != null) {