Use KotlinExceptionWithAttachments for ToFromOriginalFileMapper and MainFunctionDetector
This commit is contained in:
@@ -30,6 +30,7 @@ import org.jetbrains.kotlin.resolve.annotations.hasJvmStaticAnnotation
|
|||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.module
|
import org.jetbrains.kotlin.resolve.descriptorUtil.module
|
||||||
import org.jetbrains.kotlin.resolve.scopes.MemberScope
|
import org.jetbrains.kotlin.resolve.scopes.MemberScope
|
||||||
import org.jetbrains.kotlin.types.Variance
|
import org.jetbrains.kotlin.types.Variance
|
||||||
|
import org.jetbrains.kotlin.utils.KotlinExceptionWithAttachments
|
||||||
|
|
||||||
class MainFunctionDetector {
|
class MainFunctionDetector {
|
||||||
private val getFunctionDescriptor: (KtNamedFunction) -> FunctionDescriptor?
|
private val getFunctionDescriptor: (KtNamedFunction) -> FunctionDescriptor?
|
||||||
@@ -39,7 +40,8 @@ class MainFunctionDetector {
|
|||||||
constructor(bindingContext: BindingContext, languageVersionSettings: LanguageVersionSettings) {
|
constructor(bindingContext: BindingContext, languageVersionSettings: LanguageVersionSettings) {
|
||||||
this.getFunctionDescriptor = { function ->
|
this.getFunctionDescriptor = { function ->
|
||||||
bindingContext.get(BindingContext.FUNCTION, function)
|
bindingContext.get(BindingContext.FUNCTION, function)
|
||||||
?: throw IllegalStateException("No descriptor resolved for " + function + " " + function.text)
|
?: throw throw KotlinExceptionWithAttachments("No descriptor resolved for $function")
|
||||||
|
.withAttachment("function.text", function.text)
|
||||||
}
|
}
|
||||||
this.languageVersionSettings = languageVersionSettings
|
this.languageVersionSettings = languageVersionSettings
|
||||||
}
|
}
|
||||||
|
|||||||
+11
-1
@@ -21,6 +21,7 @@ import com.intellij.psi.PsiElement
|
|||||||
import com.intellij.psi.util.PsiTreeUtil
|
import com.intellij.psi.util.PsiTreeUtil
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.startOffset
|
import org.jetbrains.kotlin.psi.psiUtil.startOffset
|
||||||
|
import org.jetbrains.kotlin.utils.KotlinExceptionWithAttachments
|
||||||
import kotlin.math.min
|
import kotlin.math.min
|
||||||
|
|
||||||
class ToFromOriginalFileMapper private constructor(
|
class ToFromOriginalFileMapper private constructor(
|
||||||
@@ -46,7 +47,16 @@ class ToFromOriginalFileMapper private constructor(
|
|||||||
init {
|
init {
|
||||||
val originalText = originalFile.text
|
val originalText = originalFile.text
|
||||||
val syntheticText = syntheticFile.text
|
val syntheticText = syntheticFile.text
|
||||||
assert(originalText.subSequence(0, completionOffset) == syntheticText.subSequence(0, completionOffset))
|
val originalSubSequence = originalText.subSequence(0, completionOffset)
|
||||||
|
val syntheticSubSequence = syntheticText.subSequence(0, completionOffset)
|
||||||
|
if (originalSubSequence != syntheticSubSequence) {
|
||||||
|
throw KotlinExceptionWithAttachments(
|
||||||
|
"original subText [len: ${originalSubSequence.length}]" +
|
||||||
|
" does not match synthetic subText [len: ${syntheticSubSequence.length}]"
|
||||||
|
)
|
||||||
|
.withAttachment("original subText", originalSubSequence.toString())
|
||||||
|
.withAttachment("synthetic subText", syntheticSubSequence.toString())
|
||||||
|
}
|
||||||
|
|
||||||
syntheticLength = syntheticText.length
|
syntheticLength = syntheticText.length
|
||||||
originalLength = originalText.length
|
originalLength = originalText.length
|
||||||
|
|||||||
Reference in New Issue
Block a user