Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
小 白蛋
Intellij Community
Commits
6302e7e5
Commit
6302e7e5
authored
1 year ago
by
Jinseong Jeon
Browse files
Options
Download
Email Patches
Plain Diff
KT UAST: delegate textRange of local variable
parent
0fd44a8c
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/psi/UastKotlinPsiVariable.kt
+3
-0
...rc/org/jetbrains/uast/kotlin/psi/UastKotlinPsiVariable.kt
plugins/kotlin/uast/uast-kotlin-base/tests/test/org/jetbrains/uast/test/common/kotlin/UastApiFixtureTestBase.kt
+34
-0
...tbrains/uast/test/common/kotlin/UastApiFixtureTestBase.kt
plugins/kotlin/uast/uast-kotlin-fir/tests/test/org/jetbrains/fir/uast/test/FirUastApiFixtureTest.kt
+4
-0
...test/org/jetbrains/fir/uast/test/FirUastApiFixtureTest.kt
plugins/kotlin/uast/uast-kotlin/tests/test/org/jetbrains/uast/test/kotlin/comparison/FE1UastApiFixtureTest.kt
+4
-0
...ains/uast/test/kotlin/comparison/FE1UastApiFixtureTest.kt
with
45 additions
and
0 deletions
+45
-0
plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/psi/UastKotlinPsiVariable.kt
+
3
-
0
View file @
6302e7e5
...
...
@@ -2,6 +2,7 @@
package
org.jetbrains.uast.kotlin.psi
import
com.intellij.openapi.application.ApplicationManager
import
com.intellij.openapi.util.TextRange
import
com.intellij.psi.*
import
com.intellij.psi.impl.light.LightTypeElement
import
org.jetbrains.annotations.ApiStatus
...
...
@@ -57,6 +58,8 @@ class UastKotlinPsiVariable private constructor(
override
fun
getText
():
String
=
ktElement
.
text
override
fun
getTextRange
():
TextRange
=
ktElement
.
textRange
override
fun
getParent
()
=
psiParent
override
fun
hasInitializer
()
=
ktInitializer
!=
null
...
...
This diff is collapsed.
Click to expand it.
plugins/kotlin/uast/uast-kotlin-base/tests/test/org/jetbrains/uast/test/common/kotlin/UastApiFixtureTestBase.kt
+
34
-
0
View file @
6302e7e5
...
...
@@ -18,6 +18,7 @@ import com.intellij.psi.PsiAnnotation
import
com.intellij.psi.PsiParameter
import
com.intellij.psi.PsiTypes
import
org.jetbrains.kotlin.psi.KtDestructuringDeclaration
import
org.jetbrains.kotlin.psi.KtNameReferenceExpression
import
org.jetbrains.kotlin.psi.psiUtil.getParentOfType
import
org.jetbrains.uast.kotlin.BaseKotlinUastResolveProviderService
import
org.jetbrains.uast.util.isConstructorCall
...
...
@@ -1080,4 +1081,37 @@ interface UastApiFixtureTestBase : UastPluginSelection {
.
orFail
(
"cant convert to UCallExpression"
)
TestCase
.
assertEquals
(
"Foo"
,
uCallExpression
.
receiverType
?.
canonicalText
)
}
fun
checkTextRangeOfLocalVariable
(
myFixture
:
JavaCodeInsightTestFixture
)
{
myFixture
.
configureByText
(
"main.kt"
,
"""
fun foo(p: Any) {
val bar = { arg ->
arg == p
}
boo(p = b<caret>ar)
}
fun boo(p: (Any) -> Boolean): Boolean {
return p.invoke(42)
}
"""
.
trimIndent
()
)
val
nameReferenceExpression
=
myFixture
.
file
.
findElementAt
(
myFixture
.
caretOffset
)
?.
getParentOfType
<
KtNameReferenceExpression
>(
strict
=
true
)
.
orFail
(
"Cannot find KtNameReferenceExpression"
)
val
uNameReferenceExpression
=
nameReferenceExpression
.
toUElementOfType
<
USimpleNameReferenceExpression
>()
.
orFail
(
"Cannot convert to KotlinUSimpleReferenceExpression"
)
val
localPsiVariable
=
uNameReferenceExpression
.
resolve
()
.
orFail
(
"Cannot find the local variable"
)
// val bar = ...
TestCase
.
assertNotNull
(
localPsiVariable
.
textRange
)
// boo(p = bar)
TestCase
.
assertNotNull
(
uNameReferenceExpression
.
textRange
)
TestCase
.
assertNotSame
(
localPsiVariable
.
textRange
,
uNameReferenceExpression
.
textRange
)
}
}
\ No newline at end of file
This diff is collapsed.
Click to expand it.
plugins/kotlin/uast/uast-kotlin-fir/tests/test/org/jetbrains/fir/uast/test/FirUastApiFixtureTest.kt
+
4
-
0
View file @
6302e7e5
...
...
@@ -128,4 +128,8 @@ class FirUastApiFixtureTest : KotlinLightCodeInsightFixtureTestCase(), UastApiFi
fun
testReceiverTypeOfExtensionFunction
()
{
checkReceiverTypeOfExtensionFunction
(
myFixture
)
}
fun
testTextRangeOfLocalVariable
()
{
checkTextRangeOfLocalVariable
(
myFixture
)
}
}
\ No newline at end of file
This diff is collapsed.
Click to expand it.
plugins/kotlin/uast/uast-kotlin/tests/test/org/jetbrains/uast/test/kotlin/comparison/FE1UastApiFixtureTest.kt
+
4
-
0
View file @
6302e7e5
...
...
@@ -126,4 +126,8 @@ class FE1UastApiFixtureTest : KotlinLightCodeInsightFixtureTestCase(), UastApiFi
fun
testReceiverTypeOfExtensionFunction
()
{
checkReceiverTypeOfExtensionFunction
(
myFixture
)
}
fun
testTextRangeOfLocalVariable
()
{
checkTextRangeOfLocalVariable
(
myFixture
)
}
}
\ No newline at end of file
This diff is collapsed.
Click to expand it.
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment