Clean code
This commit is contained in:
@@ -37,7 +37,6 @@ import org.jetbrains.kotlin.load.kotlin.PackageClassUtils;
|
|||||||
import org.jetbrains.kotlin.load.kotlin.PackagePartClassUtils;
|
import org.jetbrains.kotlin.load.kotlin.PackagePartClassUtils;
|
||||||
import org.jetbrains.kotlin.load.kotlin.VirtualFileFinder;
|
import org.jetbrains.kotlin.load.kotlin.VirtualFileFinder;
|
||||||
import org.jetbrains.kotlin.name.ClassId;
|
import org.jetbrains.kotlin.name.ClassId;
|
||||||
import org.jetbrains.kotlin.name.FqName;
|
|
||||||
import org.jetbrains.kotlin.name.FqNameUnsafe;
|
import org.jetbrains.kotlin.name.FqNameUnsafe;
|
||||||
import org.jetbrains.kotlin.name.Name;
|
import org.jetbrains.kotlin.name.Name;
|
||||||
import org.jetbrains.kotlin.psi.JetFile;
|
import org.jetbrains.kotlin.psi.JetFile;
|
||||||
@@ -45,7 +44,6 @@ import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils;
|
|||||||
import org.jetbrains.kotlin.resolve.DescriptorUtils;
|
import org.jetbrains.kotlin.resolve.DescriptorUtils;
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.DescriptorUtilPackage;
|
import org.jetbrains.kotlin.resolve.descriptorUtil.DescriptorUtilPackage;
|
||||||
import org.jetbrains.kotlin.resolve.jvm.AsmTypes;
|
import org.jetbrains.kotlin.resolve.jvm.AsmTypes;
|
||||||
import org.jetbrains.kotlin.resolve.jvm.JvmClassName;
|
|
||||||
import org.jetbrains.kotlin.serialization.ProtoBuf;
|
import org.jetbrains.kotlin.serialization.ProtoBuf;
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedSimpleFunctionDescriptor;
|
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedSimpleFunctionDescriptor;
|
||||||
import org.jetbrains.kotlin.serialization.jvm.JvmProtoBuf;
|
import org.jetbrains.kotlin.serialization.jvm.JvmProtoBuf;
|
||||||
@@ -61,7 +59,8 @@ import java.io.StringWriter;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.ListIterator;
|
import java.util.ListIterator;
|
||||||
|
|
||||||
import static org.jetbrains.kotlin.resolve.DescriptorUtils.*;
|
import static org.jetbrains.kotlin.resolve.DescriptorUtils.getFqName;
|
||||||
|
import static org.jetbrains.kotlin.resolve.DescriptorUtils.isTrait;
|
||||||
|
|
||||||
public class InlineCodegenUtil {
|
public class InlineCodegenUtil {
|
||||||
public static final int API = Opcodes.ASM5;
|
public static final int API = Opcodes.ASM5;
|
||||||
@@ -365,22 +364,10 @@ public class InlineCodegenUtil {
|
|||||||
return new MethodNode(API, 0, "fake", "()V", null, null);
|
return new MethodNode(API, 0, "fake", "()V", null, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean isLastGoto(@NotNull AbstractInsnNode insnNode, @NotNull AbstractInsnNode stopAt) {
|
|
||||||
if (insnNode.getOpcode() == Opcodes.GOTO) {
|
|
||||||
insnNode = insnNode.getNext();
|
|
||||||
while (insnNode != stopAt && isLineNumberOrLabel(insnNode)) {
|
|
||||||
insnNode = insnNode.getNext();
|
|
||||||
}
|
|
||||||
return stopAt == insnNode;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
static boolean isLineNumberOrLabel(@Nullable AbstractInsnNode node) {
|
static boolean isLineNumberOrLabel(@Nullable AbstractInsnNode node) {
|
||||||
return node instanceof LineNumberNode || node instanceof LabelNode;
|
return node instanceof LineNumberNode || node instanceof LabelNode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public static LabelNode firstLabelInChain(@NotNull LabelNode node) {
|
public static LabelNode firstLabelInChain(@NotNull LabelNode node) {
|
||||||
LabelNode curNode = node;
|
LabelNode curNode = node;
|
||||||
|
|||||||
@@ -255,19 +255,14 @@ public class JetPositionManager(private val myDebugProcess: DebugProcess) : Mult
|
|||||||
return myDebugProcess.getRequestsManager().createClassPrepareRequest(classPrepareRequestor, className.replace('/', '.'))
|
return myDebugProcess.getRequestsManager().createClassPrepareRequest(classPrepareRequestor, className.replace('/', '.'))
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun createPrepareRequests(classPrepareRequestor: ClassPrepareRequestor, sourcePosition: SourcePosition): MutableList<ClassPrepareRequest> {
|
override fun createPrepareRequests(requestor: ClassPrepareRequestor, position: SourcePosition): List<ClassPrepareRequest> {
|
||||||
if (sourcePosition.getFile() !is JetFile) {
|
if (position.getFile() !is JetFile) {
|
||||||
throw NoDataException.INSTANCE
|
throw NoDataException.INSTANCE
|
||||||
}
|
}
|
||||||
val classNames = classNameForPositionAndInlinedOnes(sourcePosition)
|
|
||||||
if (classNames.isEmpty()) {
|
return classNameForPositionAndInlinedOnes(position).map {
|
||||||
return Collections.emptyList()
|
className -> myDebugProcess.getRequestsManager().createClassPrepareRequest(requestor, className.replace('/', '.'))
|
||||||
}
|
}
|
||||||
val requests = arrayListOf<ClassPrepareRequest>()
|
|
||||||
for (className in classNames) {
|
|
||||||
requests.add(myDebugProcess.getRequestsManager().createClassPrepareRequest(classPrepareRequestor, className.replace('/', '.')))
|
|
||||||
}
|
|
||||||
return requests
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TestOnly
|
TestOnly
|
||||||
@@ -436,36 +431,36 @@ public class JetPositionManager(private val myDebugProcess: DebugProcess) : Mult
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun findInlinedCalls(element: PsiElement?, jetFile: PsiFile?): List<String> {
|
private fun findInlinedCalls(element: PsiElement?, jetFile: PsiFile?): List<String> {
|
||||||
|
if (element == null || jetFile !is JetFile) {
|
||||||
|
return emptyList()
|
||||||
|
}
|
||||||
|
|
||||||
return runReadAction {
|
return runReadAction {
|
||||||
var result = emptyList<String>()
|
val result = arrayListOf<String>()
|
||||||
if (element != null && jetFile is JetFile) {
|
val isInLibrary = LibraryUtil.findLibraryEntry(jetFile.getVirtualFile(), jetFile.getProject()) != null
|
||||||
val isInLibrary = LibraryUtil.findLibraryEntry(jetFile.getVirtualFile(), jetFile.getProject()) != null
|
val typeMapper = if (!isInLibrary) prepareTypeMapper(jetFile) else createTypeMapperForLibraryFile(element, jetFile)
|
||||||
val typeMapper = if (!isInLibrary) prepareTypeMapper(jetFile) else createTypeMapperForLibraryFile(element, jetFile)
|
val psiElement = getInternalClassNameForElement(element, typeMapper, jetFile, isInLibrary).element;
|
||||||
val psiElement = getInternalClassNameForElement(element, typeMapper, jetFile, isInLibrary).element;
|
|
||||||
|
|
||||||
if (psiElement is JetNamedFunction) {
|
if (psiElement is JetNamedFunction) {
|
||||||
val descriptor = typeMapper.getBindingContext().get(BindingContext.DECLARATION_TO_DESCRIPTOR, psiElement)
|
val descriptor = typeMapper.getBindingContext().get(BindingContext.DECLARATION_TO_DESCRIPTOR, psiElement)
|
||||||
if (descriptor is SimpleFunctionDescriptor && descriptor.getInlineStrategy().isInline()) {
|
|
||||||
|
|
||||||
val project = myDebugProcess.getProject()
|
if (descriptor is SimpleFunctionDescriptor && descriptor.getInlineStrategy().isInline()) {
|
||||||
val usagesSearchTarget = FindUsagesOptions(project).toSearchTarget(psiElement, true)
|
val project = myDebugProcess.getProject()
|
||||||
|
val usagesSearchTarget = FindUsagesOptions(project).toSearchTarget(psiElement, true)
|
||||||
|
|
||||||
result = arrayListOf<String>()
|
val usagesSearchRequest = DefaultSearchHelper<JetNamedFunction>(true).newRequest(usagesSearchTarget)
|
||||||
val usagesSearchRequest = DefaultSearchHelper<JetNamedFunction>(true).newRequest(usagesSearchTarget)
|
usagesSearchRequest.search().forEach {
|
||||||
usagesSearchRequest.search().forEach {
|
val psiElement = it.getElement()
|
||||||
val psiElement = it.getElement()
|
if (psiElement is JetElement) {
|
||||||
if (psiElement is JetElement) {
|
//TODO recursive search
|
||||||
//TODO recursive search
|
val name = classNameForPosition(psiElement)
|
||||||
val name = classNameForPosition(psiElement)
|
if (name != null) {
|
||||||
if (name != null) {
|
result.add(name)
|
||||||
(result as MutableList<String>).add(name)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
result
|
result
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user