code cleanup: eval4j, ide-common, idea-analysis
This commit is contained in:
@@ -16,23 +16,16 @@
|
||||
|
||||
package org.jetbrains.eval4j
|
||||
|
||||
import org.jetbrains.org.objectweb.asm.tree.analysis.*
|
||||
import org.jetbrains.org.objectweb.asm.Handle
|
||||
import org.jetbrains.org.objectweb.asm.Opcodes.*
|
||||
import org.jetbrains.org.objectweb.asm.Type
|
||||
import org.jetbrains.org.objectweb.asm.tree.AbstractInsnNode
|
||||
import org.jetbrains.org.objectweb.asm.tree.FieldInsnNode
|
||||
import org.jetbrains.org.objectweb.asm.tree.IntInsnNode
|
||||
import org.jetbrains.org.objectweb.asm.tree.LdcInsnNode
|
||||
import org.jetbrains.org.objectweb.asm.tree.MethodInsnNode
|
||||
import org.jetbrains.org.objectweb.asm.tree.MultiANewArrayInsnNode
|
||||
import org.jetbrains.org.objectweb.asm.tree.TypeInsnNode
|
||||
import org.jetbrains.org.objectweb.asm.tree.JumpInsnNode
|
||||
import org.jetbrains.org.objectweb.asm.tree.IincInsnNode
|
||||
import org.jetbrains.org.objectweb.asm.tree.*
|
||||
import org.jetbrains.org.objectweb.asm.tree.analysis.AnalyzerException
|
||||
import org.jetbrains.org.objectweb.asm.tree.analysis.Interpreter
|
||||
|
||||
class UnsupportedByteCodeException(message: String) : RuntimeException(message)
|
||||
|
||||
public trait Eval {
|
||||
public interface Eval {
|
||||
public fun loadClass(classType: Type): Value
|
||||
public fun loadString(str: String): Value
|
||||
public fun newInstance(classType: Type): Value
|
||||
@@ -97,7 +90,7 @@ class SingleInstructionInterpreter(private val eval: Eval) : Interpreter<Value>(
|
||||
is Double -> double(cst)
|
||||
is String -> eval.loadString(cst)
|
||||
is Type -> {
|
||||
val sort = (cst as Type).getSort()
|
||||
val sort = cst.getSort()
|
||||
when (sort) {
|
||||
Type.OBJECT, Type.ARRAY -> eval.loadClass(cst)
|
||||
Type.METHOD -> throw UnsupportedByteCodeException("Mothod handles are not supported")
|
||||
|
||||
@@ -24,7 +24,7 @@ import org.jetbrains.org.objectweb.asm.tree.analysis.Frame
|
||||
import org.jetbrains.org.objectweb.asm.util.Printer
|
||||
import java.util.ArrayList
|
||||
|
||||
public trait InterpreterResult {
|
||||
public interface InterpreterResult {
|
||||
override fun toString(): String
|
||||
}
|
||||
|
||||
@@ -46,7 +46,7 @@ public class AbnormalTermination(public val message: String): InterpreterResult
|
||||
override fun toString(): String = "Terminated abnormally: $message"
|
||||
}
|
||||
|
||||
public trait InterpretationEventHandler {
|
||||
public interface InterpretationEventHandler {
|
||||
object NONE : InterpretationEventHandler {
|
||||
override fun instructionProcessed(insn: AbstractInsnNode): InterpreterResult? = null
|
||||
override fun exceptionThrown(currentState: Frame<Value>, currentInsn: AbstractInsnNode, exception: Value): InterpreterResult? = null
|
||||
@@ -80,7 +80,7 @@ public fun interpreterLoop(
|
||||
val firstInsn = m.instructions.getFirst()
|
||||
if (firstInsn == null) throw IllegalArgumentException("Empty method")
|
||||
|
||||
var currentInsn = firstInsn!!
|
||||
var currentInsn = firstInsn
|
||||
|
||||
fun goto(nextInsn: AbstractInsnNode?) {
|
||||
if (nextInsn == null) throw IllegalArgumentException("Instruction flow ended with no RETURN")
|
||||
|
||||
@@ -19,7 +19,7 @@ package org.jetbrains.eval4j
|
||||
import org.jetbrains.org.objectweb.asm.Type
|
||||
import org.jetbrains.org.objectweb.asm.tree.LabelNode
|
||||
|
||||
public trait Value : org.jetbrains.org.objectweb.asm.tree.analysis.Value {
|
||||
public interface Value : org.jetbrains.org.objectweb.asm.tree.analysis.Value {
|
||||
public val asmType: Type
|
||||
public val valid: Boolean
|
||||
override fun getSize(): Int = asmType.getSize()
|
||||
|
||||
@@ -53,7 +53,7 @@ public fun JetScope.getImplicitReceiversWithInstanceToExpression(): Map<Receiver
|
||||
val classDescriptor = current as? ClassDescriptor
|
||||
if (classDescriptor != null && !classDescriptor.isInner() && !DescriptorUtils.isLocal(classDescriptor)) break
|
||||
|
||||
current = current!!.getContainingDeclaration()
|
||||
current = current.getContainingDeclaration()
|
||||
}
|
||||
|
||||
val result = LinkedHashMap<ReceiverParameterDescriptor, ReceiverExpressionFactory?>()
|
||||
|
||||
+1
-1
@@ -16,7 +16,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.resolve.lazy
|
||||
|
||||
public trait ProbablyNothingCallableNames {
|
||||
public interface ProbablyNothingCallableNames {
|
||||
public fun functionNames(): Collection<String>
|
||||
public fun propertyNames(): Collection<String>
|
||||
}
|
||||
|
||||
+3
-9
@@ -21,7 +21,6 @@ import com.intellij.openapi.project.DumbService
|
||||
import com.intellij.openapi.project.IndexNotReadyException
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.PsiFile
|
||||
import com.intellij.psi.util.CachedValueProvider
|
||||
import com.intellij.psi.util.CachedValuesManager
|
||||
import com.intellij.psi.util.PsiModificationTracker
|
||||
@@ -42,17 +41,12 @@ import org.jetbrains.kotlin.idea.project.TargetPlatform
|
||||
import org.jetbrains.kotlin.idea.project.TargetPlatformDetector
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.resolve.*
|
||||
import org.jetbrains.kotlin.resolve.bindingContextUtil.getDataFlowInfo
|
||||
import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowInfo
|
||||
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
|
||||
import org.jetbrains.kotlin.resolve.lazy.descriptors.LazyClassDescriptor
|
||||
import org.jetbrains.kotlin.resolve.scopes.ChainedScope
|
||||
import org.jetbrains.kotlin.resolve.scopes.JetScope
|
||||
import org.jetbrains.kotlin.resolve.util.getScopeAndDataFlowForAnalyzeFragment
|
||||
import org.jetbrains.kotlin.types.TypeUtils
|
||||
import java.util.HashMap
|
||||
|
||||
public trait CacheExtension<T> {
|
||||
public interface CacheExtension<T> {
|
||||
public val platform: TargetPlatform
|
||||
public fun getData(resolverProvider: ModuleResolverProvider): T
|
||||
}
|
||||
@@ -129,8 +123,8 @@ private class PerFileAnalysisCache(val file: JetFile, val resolveSession: Resolv
|
||||
descendantsOfCurrent.clear()
|
||||
}
|
||||
|
||||
descendantsOfCurrent.add(current!!)
|
||||
current = current!!.getParent()
|
||||
descendantsOfCurrent.add(current)
|
||||
current = current.getParent()
|
||||
}
|
||||
|
||||
cache.keySet().removeAll(toRemove)
|
||||
|
||||
+1
-1
@@ -111,7 +111,7 @@ private fun collectAllModuleInfosFromIdeaModel(project: Project): List<IdeaModul
|
||||
return collectAllModuleInfos
|
||||
}
|
||||
|
||||
trait ModuleResolverProvider {
|
||||
interface ModuleResolverProvider {
|
||||
val exceptionTracker: ExceptionTracker
|
||||
fun resolverByModule(module: IdeaModuleInfo): ResolverForModule = resolverForProject.resolverForModule(module)
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ import org.jetbrains.kotlin.resolve.BindingContext
|
||||
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
|
||||
import org.jetbrains.kotlin.resolve.scopes.JetScope
|
||||
|
||||
public trait ResolutionFacade {
|
||||
public interface ResolutionFacade {
|
||||
|
||||
public fun analyze(element: JetElement, bodyResolveMode: BodyResolveMode = BodyResolveMode.FULL): BindingContext
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ class SynchronizedCachedValue<V>(project: Project, provider: () -> CachedValuePr
|
||||
|
||||
public fun getValue(): V {
|
||||
return synchronized(cachedValue) {
|
||||
cachedValue.getValue() as V
|
||||
cachedValue.getValue()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -59,7 +59,7 @@ private fun Project.getOrCreateElementsToShorten(): MutableSet<ShorteningRequest
|
||||
elementsToShorten = elements
|
||||
}
|
||||
|
||||
return elements!!
|
||||
return elements
|
||||
}
|
||||
|
||||
public fun JetElement.addToShorteningWaitSet(options: Options = Options.DEFAULT) {
|
||||
|
||||
@@ -17,10 +17,8 @@
|
||||
package org.jetbrains.kotlin.idea.decompiler
|
||||
|
||||
import com.intellij.openapi.util.TextRange
|
||||
import com.intellij.psi.FileViewProvider
|
||||
import com.intellij.psi.util.PsiTreeUtil
|
||||
import org.jetbrains.annotations.TestOnly
|
||||
import org.jetbrains.kotlin.descriptors.CallableDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.ConstructorDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor
|
||||
@@ -39,7 +37,7 @@ public abstract class KotlinClsFileBase(val provider: KotlinClassFileViewProvide
|
||||
val original = descriptor.getOriginal()
|
||||
|
||||
if (original is ValueParameterDescriptor) {
|
||||
val callable = original.getContainingDeclaration() as? CallableDescriptor ?: return null
|
||||
val callable = original.getContainingDeclaration()
|
||||
val callableDeclaration = getDeclarationForDescriptor(callable) as? JetCallableDeclaration ?: return null
|
||||
return callableDeclaration.getValueParameters()[original.getIndex()]
|
||||
}
|
||||
|
||||
+1
-1
@@ -107,7 +107,7 @@ private class ClassClsStubBuilder(
|
||||
val superTypeRefs = supertypeIds.filterNot {
|
||||
//TODO: filtering function types should go away
|
||||
KotlinBuiltIns.isNumberedFunctionClassFqName(it.asSingleFqName().toUnsafe())
|
||||
}.map { it.getShortClassName().ref()!! }.toTypedArray()
|
||||
}.map { it.getShortClassName().ref() }.toTypedArray()
|
||||
return when (classKind) {
|
||||
ProtoBuf.Class.Kind.OBJECT, ProtoBuf.Class.Kind.CLASS_OBJECT -> {
|
||||
KotlinObjectStubImpl(
|
||||
|
||||
+2
-3
@@ -23,12 +23,11 @@ import org.jetbrains.kotlin.name.ClassId
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.serialization.ProtoBuf
|
||||
import org.jetbrains.kotlin.serialization.deserialization.AnnotationAndConstantLoader
|
||||
import org.jetbrains.kotlin.serialization.deserialization.ClassDataFinder
|
||||
import org.jetbrains.kotlin.serialization.deserialization.ErrorReporter
|
||||
import org.jetbrains.kotlin.serialization.deserialization.NameResolver
|
||||
import org.jetbrains.kotlin.storage.LockBasedStorageManager
|
||||
import org.jetbrains.kotlin.load.kotlin.KotlinJvmBinaryClass
|
||||
import org.jetbrains.kotlin.serialization.deserialization.AnnotationAndConstantLoader
|
||||
|
||||
class ClsStubBuilderComponents(
|
||||
val classDataFinder: ClassDataFinder,
|
||||
@@ -42,7 +41,7 @@ class ClsStubBuilderComponents(
|
||||
}
|
||||
}
|
||||
|
||||
trait TypeParameters {
|
||||
interface TypeParameters {
|
||||
fun get(id: Int): Name
|
||||
|
||||
fun child(nameResolver: NameResolver, innerTypeParameters: List<ProtoBuf.TypeParameter>)
|
||||
|
||||
+1
-1
@@ -216,7 +216,7 @@ class TypeClsStubBuilder(private val c: ClsStubBuilderContext) {
|
||||
val typeConstraintListStub = KotlinPlaceHolderStubImpl<JetTypeConstraintList>(parent, JetStubElementTypes.TYPE_CONSTRAINT_LIST)
|
||||
for ((name, type) in protosForTypeConstraintList) {
|
||||
val typeConstraintStub = KotlinPlaceHolderStubImpl<JetTypeConstraint>(typeConstraintListStub, JetStubElementTypes.TYPE_CONSTRAINT)
|
||||
KotlinNameReferenceExpressionStubImpl(typeConstraintStub, name.ref()!!)
|
||||
KotlinNameReferenceExpressionStubImpl(typeConstraintStub, name.ref())
|
||||
createTypeReferenceStub(typeConstraintStub, type)
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -21,7 +21,7 @@ import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
|
||||
public trait ResolverForDecompiler {
|
||||
public interface ResolverForDecompiler {
|
||||
public fun resolveTopLevelClass(classId: ClassId): ClassDescriptor?
|
||||
|
||||
public fun resolveDeclarationsInPackage(packageFqName: FqName): Collection<DeclarationDescriptor>
|
||||
|
||||
+1
-1
@@ -173,7 +173,7 @@ public class HtmlTabledDescriptorRenderer extends TabledDescriptorRenderer {
|
||||
|
||||
@Override
|
||||
public void appendAfterValueParameter(@NotNull ValueParameterDescriptor parameter, @NotNull StringBuilder builder) {
|
||||
boolean last = ((FunctionDescriptor) parameter.getContainingDeclaration()).getValueParameters().size() - 1 == parameter.getIndex();
|
||||
boolean last = parameter.getContainingDeclaration().getValueParameters().size() - 1 == parameter.getIndex();
|
||||
if (!last) {
|
||||
builder.append(",");
|
||||
}
|
||||
|
||||
+8
-9
@@ -16,16 +16,16 @@
|
||||
|
||||
package org.jetbrains.kotlin.idea.highlighter
|
||||
|
||||
import com.intellij.codeInspection.SuppressIntentionAction
|
||||
import com.intellij.codeInspection.SuppressableProblemGroup
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.codeInspection.SuppressIntentionAction
|
||||
import org.jetbrains.kotlin.diagnostics.DiagnosticFactory
|
||||
import org.jetbrains.kotlin.diagnostics.Severity
|
||||
import java.util.Collections
|
||||
import org.jetbrains.kotlin.idea.quickfix.AnnotationHostKind
|
||||
import org.jetbrains.kotlin.idea.quickfix.KotlinSuppressIntentionAction
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.idea.quickfix.AnnotationHostKind
|
||||
import org.jetbrains.kotlin.diagnostics.DiagnosticFactory
|
||||
import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType
|
||||
import java.util.Collections
|
||||
|
||||
class KotlinSuppressableWarningProblemGroup(
|
||||
private val diagnosticFactory: DiagnosticFactory<*>
|
||||
@@ -55,7 +55,7 @@ fun createSuppressWarningActions(element: PsiElement, diagnosticFactory: Diagnos
|
||||
var suppressAtStatementAllowed = true
|
||||
while (current != null) {
|
||||
if (current is JetDeclaration) {
|
||||
val declaration = current as JetDeclaration
|
||||
val declaration = current
|
||||
val kind = DeclarationKindDetector.detect(declaration)
|
||||
if (kind != null) {
|
||||
actions.add(KotlinSuppressIntentionAction(declaration, diagnosticFactory, kind))
|
||||
@@ -64,15 +64,14 @@ fun createSuppressWarningActions(element: PsiElement, diagnosticFactory: Diagnos
|
||||
}
|
||||
else if (current is JetExpression && suppressAtStatementAllowed) {
|
||||
// Add suppress action at first statement
|
||||
if ((current as PsiElement).getParent() is JetBlockExpression) {
|
||||
val expression = current as JetExpression
|
||||
actions.add(KotlinSuppressIntentionAction(expression, diagnosticFactory,
|
||||
if (current.getParent() is JetBlockExpression) {
|
||||
actions.add(KotlinSuppressIntentionAction(current, diagnosticFactory,
|
||||
AnnotationHostKind("statement", "", true)))
|
||||
suppressAtStatementAllowed = false
|
||||
}
|
||||
}
|
||||
|
||||
current = current?.getParent()
|
||||
current = current.getParent()
|
||||
}
|
||||
return actions
|
||||
}
|
||||
|
||||
+3
-3
@@ -29,12 +29,12 @@ import java.util.HashSet
|
||||
import com.intellij.openapi.progress.ProgressIndicatorProvider
|
||||
import org.jetbrains.kotlin.psi.psiUtil.contains
|
||||
|
||||
trait DeclarationSearchRequest<in T> {
|
||||
interface DeclarationSearchRequest<in T> {
|
||||
val project: Project
|
||||
val searchScope: SearchScope
|
||||
}
|
||||
|
||||
public trait SearchRequestWithElement<T : PsiElement> : DeclarationSearchRequest<T> {
|
||||
public interface SearchRequestWithElement<T : PsiElement> : DeclarationSearchRequest<T> {
|
||||
val originalElement: T
|
||||
override val project: Project get() = originalElement.getProject()
|
||||
}
|
||||
@@ -65,7 +65,7 @@ public class HierarchySearchRequest<T: PsiElement> (
|
||||
HierarchySearchRequest(newOriginalElement, searchScope, searchDeeply)
|
||||
}
|
||||
|
||||
trait HierarchyTraverser<T> {
|
||||
interface HierarchyTraverser<T> {
|
||||
protected fun nextElements(current: T): Iterable<T>
|
||||
protected fun shouldDescend(element: T): Boolean
|
||||
|
||||
|
||||
+16
-16
@@ -16,29 +16,29 @@
|
||||
|
||||
package org.jetbrains.kotlin.idea.search.usagesSearch
|
||||
|
||||
import com.intellij.psi.PsiReference
|
||||
import org.jetbrains.kotlin.idea.search.usagesSearch.*
|
||||
import org.jetbrains.kotlin.idea.search.usagesSearch.UsagesSearchFilter.*
|
||||
import java.util.Collections
|
||||
import java.util.ArrayList
|
||||
import com.intellij.psi.PsiNamedElement
|
||||
import com.intellij.psi.PsiReference
|
||||
import com.intellij.util.Processor
|
||||
import com.intellij.util.containers.ContainerUtil
|
||||
import org.jetbrains.kotlin.asJava.LightClassUtil
|
||||
import org.jetbrains.kotlin.asJava.LightClassUtil.PropertyAccessorsPsiMethods
|
||||
import org.jetbrains.kotlin.psi.psiUtil.*
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.lexer.JetSingleValueToken
|
||||
import org.jetbrains.kotlin.resolve.BindingContext
|
||||
import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor
|
||||
import org.jetbrains.kotlin.lexer.JetTokens
|
||||
import org.jetbrains.kotlin.idea.references.*
|
||||
import com.intellij.util.containers.ContainerUtil
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.analyzeFully
|
||||
import org.jetbrains.kotlin.idea.references.matchesTarget
|
||||
import org.jetbrains.kotlin.idea.search.usagesSearch.UsagesSearchFilter.False
|
||||
import org.jetbrains.kotlin.idea.search.usagesSearch.UsagesSearchFilter.True
|
||||
import org.jetbrains.kotlin.lexer.JetSingleValueToken
|
||||
import org.jetbrains.kotlin.lexer.JetTokens
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.resolve.calls.callUtil.getResolvedCall
|
||||
import org.jetbrains.kotlin.psi.psiUtil.effectiveDeclarations
|
||||
import org.jetbrains.kotlin.psi.psiUtil.getNonStrictParentOfType
|
||||
import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType
|
||||
import org.jetbrains.kotlin.resolve.BindingContext
|
||||
import org.jetbrains.kotlin.resolve.scopes.receivers.ClassReceiver
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.singletonOrEmptyList
|
||||
import java.util.ArrayList
|
||||
import java.util.Collections
|
||||
|
||||
val isTargetUsage = (PsiReference::matchesTarget).searchFilter
|
||||
|
||||
@@ -130,7 +130,7 @@ public abstract class UsagesSearchHelper<T : PsiNamedElement> {
|
||||
|
||||
val isNotImportUsage = !((PsiReference::isImportUsage).searchFilter)
|
||||
|
||||
trait ImportAwareSearchHelper {
|
||||
interface ImportAwareSearchHelper {
|
||||
public val skipImports: Boolean
|
||||
|
||||
protected val isFilteredImport: UsagesSearchFilter
|
||||
@@ -206,7 +206,7 @@ class ClassDeclarationsUsagesSearchHelper(
|
||||
|
||||
val isOverrideUsage = (PsiReference::isCallableOverrideUsage).searchFilter
|
||||
|
||||
trait OverrideSearchHelper {
|
||||
interface OverrideSearchHelper {
|
||||
public val selfUsages: Boolean
|
||||
public val overrideUsages: Boolean
|
||||
|
||||
|
||||
+1
-1
@@ -88,7 +88,7 @@ public data class UsagesSearchTarget<out T : PsiElement>(
|
||||
get() = if (restrictByTargetScope) scope and element.effectiveScope else scope
|
||||
}
|
||||
|
||||
public trait UsagesSearchFilter {
|
||||
public interface UsagesSearchFilter {
|
||||
object False: UsagesSearchFilter {
|
||||
override fun accepts(ref: PsiReference, item: UsagesSearchRequestItem): Boolean = false
|
||||
}
|
||||
|
||||
+1
-1
@@ -21,7 +21,7 @@ import org.jetbrains.kotlin.idea.references.JetSimpleNameReference
|
||||
import com.intellij.psi.PsiElement
|
||||
import org.jetbrains.kotlin.psi.JetPsiFactory
|
||||
|
||||
public trait SimpleNameReferenceExtension {
|
||||
public interface SimpleNameReferenceExtension {
|
||||
companion object {
|
||||
public val EP_NAME: ExtensionPointName<SimpleNameReferenceExtension> = ExtensionPointName.create("org.jetbrains.kotlin.simpleNameReferenceExtension")!!
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user