[kotlin] Convert UpdateKotlinCopyright to Kotlin

^KTIJ-16705

GitOrigin-RevId: 6280f37fefe9a3ee748cfb69d0d6b1355d2c4ab0
This commit is contained in:
Alexey Belkov
2023-05-19 16:43:08 +04:00
committed by intellij-monorepo-bot
parent 3b9c1c7fd9
commit 9481ea9954

View File

@@ -1,55 +1,45 @@
// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package org.jetbrains.kotlin.idea.copyright
package org.jetbrains.kotlin.idea.copyright;
import com.intellij.openapi.module.Module
import com.intellij.openapi.project.Project
import com.intellij.openapi.vfs.VirtualFile
import com.intellij.psi.*
import com.intellij.util.containers.TreeTraversal
import com.maddyhome.idea.copyright.CopyrightProfile
import com.maddyhome.idea.copyright.psi.UpdatePsiFileCopyright
import org.jetbrains.kotlin.idea.KotlinFileType
import org.jetbrains.kotlin.kdoc.psi.api.KDoc
import org.jetbrains.kotlin.psi.KtDeclaration
import com.intellij.openapi.module.Module;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiComment;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiWhiteSpace;
import com.intellij.psi.SyntaxTraverser;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.containers.TreeTraversal;
import com.maddyhome.idea.copyright.CopyrightProfile;
import com.maddyhome.idea.copyright.psi.UpdatePsiFileCopyright;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.kotlin.idea.KotlinFileType;
import org.jetbrains.kotlin.kdoc.psi.api.KDoc;
import org.jetbrains.kotlin.psi.KtDeclaration;
class UpdateKotlinCopyright(
project: Project?,
module: Module?,
root: VirtualFile?,
copyrightProfile: CopyrightProfile?
) : UpdatePsiFileCopyright(project, module, root, copyrightProfile) {
import java.util.List;
override fun accept(): Boolean =
file.fileType === KotlinFileType.INSTANCE
public class UpdateKotlinCopyright extends UpdatePsiFileCopyright {
UpdateKotlinCopyright(Project project, Module module, VirtualFile root, CopyrightProfile copyrightProfile) {
super(project, module, root, copyrightProfile);
override fun scanFile() {
val comments = getExistentComments(file)
checkComments(comments.lastOrNull(), true, comments)
}
@Override
protected boolean accept() {
return getFile().getFileType() == KotlinFileType.INSTANCE;
}
@Override
protected void scanFile() {
List<PsiComment> comments = getExistentComments(getFile());
checkComments(ContainerUtil.getLastItem(comments), true, comments);
}
@NotNull
public static List<PsiComment> getExistentComments(@NotNull PsiFile psiFile) {
return SyntaxTraverser.psiTraverser(psiFile)
companion object {
fun getExistentComments(psiFile: PsiFile): List<PsiComment> =
SyntaxTraverser.psiTraverser(psiFile)
.withTraversal(TreeTraversal.LEAVES_DFS)
.traverse()
.takeWhile(
element ->
(element instanceof PsiComment && !(element.getParent() instanceof KtDeclaration)) ||
element instanceof PsiWhiteSpace ||
element.getText().isEmpty() ||
element.getParent() instanceof KDoc
)
.map(e -> e.getParent() instanceof KDoc ? e.getParent() : e)
.filter(PsiComment.class)
.toList();
.takeWhile { element: PsiElement ->
(element is PsiComment && element.getParent() !is KtDeclaration) ||
element is PsiWhiteSpace ||
element.text.isEmpty() ||
element.parent is KDoc
}
.map { element: PsiElement -> if (element.parent is KDoc) element.parent else element }
.filterIsInstance<PsiComment>()
.toList()
}
}