Add and use NULLABLE_ANY type into KotlinTypes.kt
This commit is contained in:
committed by
Yan Zhulanow
parent
0d7e9d698e
commit
16768bd9e3
+5
-8
@@ -3,7 +3,7 @@ package com.intellij.debugger.streams.kotlin.psi.impl
|
|||||||
|
|
||||||
import com.intellij.debugger.streams.kotlin.psi.callName
|
import com.intellij.debugger.streams.kotlin.psi.callName
|
||||||
import com.intellij.debugger.streams.kotlin.psi.resolveType
|
import com.intellij.debugger.streams.kotlin.psi.resolveType
|
||||||
import com.intellij.debugger.streams.kotlin.trace.dsl.KotlinTypes
|
import com.intellij.debugger.streams.kotlin.trace.dsl.KotlinTypes.NULLABLE_ANY
|
||||||
import com.intellij.debugger.streams.psi.ChainTransformer
|
import com.intellij.debugger.streams.psi.ChainTransformer
|
||||||
import com.intellij.debugger.streams.wrapper.CallArgument
|
import com.intellij.debugger.streams.wrapper.CallArgument
|
||||||
import com.intellij.debugger.streams.wrapper.IntermediateStreamCall
|
import com.intellij.debugger.streams.wrapper.IntermediateStreamCall
|
||||||
@@ -28,24 +28,21 @@ class KotlinChainTransformerImpl : ChainTransformer<KtCallExpression> {
|
|||||||
val firstCall = callChain.first()
|
val firstCall = callChain.first()
|
||||||
val parent = firstCall.parent
|
val parent = firstCall.parent
|
||||||
val qualifier = if (parent is KtDotQualifiedExpression)
|
val qualifier = if (parent is KtDotQualifiedExpression)
|
||||||
QualifierExpressionImpl(parent.receiverExpression.text, parent.receiverExpression.textRange, KotlinTypes.ANY)
|
QualifierExpressionImpl(parent.receiverExpression.text, parent.receiverExpression.textRange, NULLABLE_ANY)
|
||||||
else
|
else
|
||||||
QualifierExpressionImpl("", TextRange.EMPTY_RANGE, KotlinTypes.nullable { KotlinTypes.ANY }) // This is possible only when this inherits Stream
|
QualifierExpressionImpl("", TextRange.EMPTY_RANGE, NULLABLE_ANY) // This is possible only when this inherits Stream
|
||||||
|
|
||||||
val intermediateCalls = mutableListOf<IntermediateStreamCall>()
|
val intermediateCalls = mutableListOf<IntermediateStreamCall>()
|
||||||
for (call in callChain.subList(0, callChain.size - 1)) {
|
for (call in callChain.subList(0, callChain.size - 1)) {
|
||||||
intermediateCalls += IntermediateStreamCallImpl(call.callName(),
|
intermediateCalls += IntermediateStreamCallImpl(call.callName(),
|
||||||
call.valueArguments.map { createCallArgument(call, it) },
|
call.valueArguments.map { createCallArgument(call, it) }, NULLABLE_ANY, NULLABLE_ANY, call.textRange)
|
||||||
KotlinTypes.nullable { KotlinTypes.ANY }, KotlinTypes.nullable { KotlinTypes.ANY },
|
|
||||||
call.textRange)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
val terminationsPsiCall = callChain.last()
|
val terminationsPsiCall = callChain.last()
|
||||||
// TODO: infer true types
|
// TODO: infer true types
|
||||||
val terminationCall = TerminatorStreamCallImpl(terminationsPsiCall.callName(),
|
val terminationCall = TerminatorStreamCallImpl(terminationsPsiCall.callName(),
|
||||||
terminationsPsiCall.valueArguments.map { createCallArgument(terminationsPsiCall, it) },
|
terminationsPsiCall.valueArguments.map { createCallArgument(terminationsPsiCall, it) },
|
||||||
KotlinTypes.nullable { KotlinTypes.ANY }, KotlinTypes.nullable { KotlinTypes.ANY },
|
NULLABLE_ANY, NULLABLE_ANY, terminationsPsiCall.textRange)
|
||||||
terminationsPsiCall.textRange)
|
|
||||||
|
|
||||||
return StreamChainImpl(qualifier, intermediateCalls, terminationCall, context)
|
return StreamChainImpl(qualifier, intermediateCalls, terminationCall, context)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,6 +17,8 @@ object KotlinTypes : Types {
|
|||||||
override val EXCEPTION: GenericType = ClassTypeImpl("kotlin.Throwable", "kotlin.Throwable()")
|
override val EXCEPTION: GenericType = ClassTypeImpl("kotlin.Throwable", "kotlin.Throwable()")
|
||||||
override val VOID: GenericType = ClassTypeImpl("kotlin.Unit", "Unit")
|
override val VOID: GenericType = ClassTypeImpl("kotlin.Unit", "Unit")
|
||||||
|
|
||||||
|
val NULLABLE_ANY: GenericType = nullable { ANY }
|
||||||
|
|
||||||
override val TIME: GenericType = ClassTypeImpl("java.util.concurrent.atomic.AtomicInteger",
|
override val TIME: GenericType = ClassTypeImpl("java.util.concurrent.atomic.AtomicInteger",
|
||||||
"java.util.concurrent.atomic.AtomicInteger()")
|
"java.util.concurrent.atomic.AtomicInteger()")
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user