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