[java] avoids setting a package name for module-info files

This commit is contained in:
Roman Shevchenko
2016-06-30 15:16:07 +03:00
parent bfd9423360
commit 9559f7f371
7 changed files with 64 additions and 28 deletions
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2014 JetBrains s.r.o.
* 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.
@@ -18,13 +18,13 @@ package com.intellij.psi.impl.file;
import com.intellij.openapi.roots.JavaProjectRootsUtil;
import com.intellij.psi.*;
import com.intellij.psi.templateLanguages.TemplateLanguageFileViewProvider;
import com.intellij.psi.util.PsiUtil;
import com.intellij.util.IncorrectOperationException;
import org.jetbrains.annotations.NotNull;
/**
* @author Maxim.Mossienko
* Date: Sep 18, 2008
* Time: 3:33:07 PM
* @since Sep 18, 2008
*/
public class JavaUpdateAddedFileProcessor extends UpdateAddedFileProcessor {
@Override
@@ -34,14 +34,17 @@ public class JavaUpdateAddedFileProcessor extends UpdateAddedFileProcessor {
@Override
public void update(final PsiFile element, PsiFile originalElement) throws IncorrectOperationException {
if (element.getViewProvider() instanceof TemplateLanguageFileViewProvider) return;
if (element.getViewProvider() instanceof TemplateLanguageFileViewProvider || PsiUtil.isModuleFile(element)) {
return;
}
PsiDirectory dir = element.getContainingDirectory();
if (dir == null) return;
PsiPackage aPackage = JavaDirectoryService.getInstance().getPackage(dir);
if (aPackage == null) return;
String packageName = aPackage.getQualifiedName();
((PsiClassOwner)element).setPackageName(packageName);
if (dir != null) {
PsiPackage aPackage = JavaDirectoryService.getInstance().getPackage(dir);
if (aPackage != null) {
String packageName = aPackage.getQualifiedName();
((PsiClassOwner)element).setPackageName(packageName);
}
}
}
}
}
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2009 JetBrains s.r.o.
* 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.
@@ -26,13 +26,13 @@ import com.intellij.openapi.roots.ProjectRootManager;
import com.intellij.openapi.util.Comparing;
import com.intellij.openapi.util.Computable;
import com.intellij.openapi.util.TextRange;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.VfsUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.*;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.search.searches.ReferencesSearch;
import com.intellij.psi.util.FileTypeUtils;
import com.intellij.psi.util.PsiUtil;
import com.intellij.refactoring.MoveDestination;
import com.intellij.refactoring.PackageWrapper;
import com.intellij.refactoring.move.moveFilesOrDirectories.MoveFilesOrDirectoriesUtil;
@@ -40,7 +40,6 @@ import com.intellij.refactoring.util.MoveRenameUsageInfo;
import com.intellij.refactoring.util.RefactoringUtil;
import com.intellij.refactoring.util.TextOccurrencesUtil;
import com.intellij.usageView.UsageInfo;
import com.intellij.util.Function;
import com.intellij.util.IncorrectOperationException;
import com.intellij.util.containers.HashMap;
import org.jetbrains.annotations.Nullable;
@@ -236,16 +235,15 @@ public class MoveClassesOrPackagesUtil {
final PsiDirectory containingDirectory = file.getContainingDirectory();
if (!Comparing.equal(moveDestination.getVirtualFile(), containingDirectory != null ? containingDirectory.getVirtualFile() : null)) {
LOG.assertTrue(file.getVirtualFile() != null, aClass);
MoveFilesOrDirectoriesUtil.doMoveFile(file, moveDestination);
if (file instanceof PsiClassOwner && newPackage != null && !FileTypeUtils.isInServerPageFile(file)) {
if (newPackage != null && file instanceof PsiClassOwner && !FileTypeUtils.isInServerPageFile(file) && !PsiUtil.isModuleFile(file)) {
// Do not rely on class instance identity retention after setPackageName (Scala)
String aClassName = aClass.getName();
((PsiClassOwner)file).setPackageName(newPackage.getQualifiedName());
newClass = findClassByName((PsiClassOwner)file, aClassName);
LOG.assertTrue(newClass != null, "name: " + aClassName +
", file: " + file +
", classes: " + StringUtil.join(((PsiClassOwner)file).getClasses(),
psiClass -> psiClass.getName(), " "));
LOG.assertTrue(newClass != null, "name:" + aClassName + " file:" + file + " classes:" + Arrays.toString(((PsiClassOwner)file).getClasses()));
}
}
return newClass;