From 3769fd8e07f0def4e4630411d6a4c725df93c82d Mon Sep 17 00:00:00 2001 From: Jinseong Jeon Date: Wed, 9 Jun 2021 22:51:54 -0700 Subject: [PATCH] FIR UAST: fix import resolve test The `resolve` failure (or `null` return) of import directive for `java.lang.Thread.sleep` is legitimate, since there are two static methods in `java.lang.Thread`: https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/lang/Thread.html hence not able to resolve to a single method. Unless we change `UImportStatement` to be a subtype of `UMultiResolvable`, instead of `UResolvable`, we can't properly test `resolve` API for that. --- .../uast/test/kotlin/FirUastResolveApiTest.kt | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/plugins/uast-kotlin-fir/tests/org/jetbrains/uast/test/kotlin/FirUastResolveApiTest.kt b/plugins/uast-kotlin-fir/tests/org/jetbrains/uast/test/kotlin/FirUastResolveApiTest.kt index 97d8eb9adce..6c2232da202 100644 --- a/plugins/uast-kotlin-fir/tests/org/jetbrains/uast/test/kotlin/FirUastResolveApiTest.kt +++ b/plugins/uast-kotlin-fir/tests/org/jetbrains/uast/test/kotlin/FirUastResolveApiTest.kt @@ -40,8 +40,10 @@ class FirUastResolveApiTest : AbstractFirUastTest() { fun testImports() { doCheck("plugins/uast-kotlin/testData/Imports.kt") { _, uFile -> uFile.imports.forEach { uImport -> - if ((uImport.sourcePsi as? KtImportDirective)?.text?.contains("sleep") == true) { - //todo investigate + if ((uImport.sourcePsi as? KtImportDirective)?.text?.endsWith("sleep") == true) { + // There are two static [sleep] in [java.lang.Thread], so the import (w/o knowing its usage) can't be resolved to + // a single function, hence `null` (as [resolve] result). + // TODO: make [UImportStatement] a subtype of [UMultiResolvable], instead of [UResolvable]? return@forEach } val resolvedImport = uImport.resolve() @@ -52,8 +54,8 @@ class FirUastResolveApiTest : AbstractFirUastTest() { resolvedImport.name == "Thread" || resolvedImport.name == "UncaughtExceptionHandler" } is PsiMethod -> { - // import java.lang.Thread.(currentThread/sleep) - resolvedImport.name == "currentThread" || resolvedImport.name == "sleep" + // import java.lang.Thread.currentThread + resolvedImport.name == "currentThread" } is PsiField -> { // import java.lang.Thread.NORM_PRIORITY