192: Fix InlayHintTypeTestUtil for 192
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
/*
|
||||
* Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.idea.parameterInfo
|
||||
|
||||
import com.intellij.codeInsight.hints.HintInfo
|
||||
import com.intellij.codeInsight.hints.InlayParameterHintsExtension
|
||||
import com.intellij.openapi.editor.Editor
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.PsiFile
|
||||
import com.intellij.psi.util.PsiTreeUtil
|
||||
import com.intellij.testFramework.fixtures.JavaCodeInsightTestFixture
|
||||
import org.junit.Assert
|
||||
|
||||
internal fun JavaCodeInsightTestFixture.checkHintType(text: String, hintType: HintType) {
|
||||
configureByText("A.kt", text.trimIndent())
|
||||
doHighlighting()
|
||||
|
||||
checkHintType(hintType)
|
||||
}
|
||||
|
||||
internal fun JavaCodeInsightTestFixture.checkHintType(hintType: HintType) {
|
||||
val hintInfo = getHintInfoFromProvider(caretOffset, file, editor)
|
||||
Assert.assertNotNull("No hint available at caret", hintInfo)
|
||||
Assert.assertEquals(hintType.option.name, (hintInfo as HintInfo.OptionInfo).optionName)
|
||||
}
|
||||
|
||||
// It's crucial for this method to be conformable with IDEA internals.
|
||||
// Originally copied from com.intellij.codeInsight.hints.getHintInfoFromProvider()
|
||||
private fun getHintInfoFromProvider(offset: Int, file: PsiFile, editor: Editor): HintInfo? {
|
||||
val element = file.findElementAt(offset) ?: return null
|
||||
val provider = InlayParameterHintsExtension.forLanguage(file.language) ?: return null
|
||||
|
||||
val isHintOwnedByElement: (PsiElement) -> Boolean = { e -> provider.getHintInfo(e)?.isOwnedByPsiElement(e, editor) ?: false }
|
||||
val method = PsiTreeUtil.findFirstParent(element, isHintOwnedByElement) ?: return null
|
||||
|
||||
return provider.getHintInfo(method)
|
||||
}
|
||||
Reference in New Issue
Block a user