diff --git a/uast/uast-java/src/org/jetbrains/uast/java/expressions/javaUCallExpressions.kt b/uast/uast-java/src/org/jetbrains/uast/java/expressions/javaUCallExpressions.kt index 21021ec8cc7a..34f968845257 100644 --- a/uast/uast-java/src/org/jetbrains/uast/java/expressions/javaUCallExpressions.kt +++ b/uast/uast-java/src/org/jetbrains/uast/java/expressions/javaUCallExpressions.kt @@ -184,7 +184,7 @@ class JavaConstructorUCallExpression( val methodResolve = sourcePsi.resolveMethodGenerics() if (methodResolve != JavaResolveResult.EMPTY) { // if there is a non-default constructor - return arrayOf(methodResolve).asIterable() + return listOf(methodResolve) } // unable to resolve constructor method - resolve to class val classResolve = sourcePsi.classReference?.multiResolve(false) ?: emptyArray() diff --git a/uast/uast-tests/java/Simple/ConstructorCallWithParameters.resolved.txt b/uast/uast-tests/java/Simple/ConstructorCallWithParameters.resolved.txt index 36b6be1c5f80..d64b443d21a1 100644 --- a/uast/uast-tests/java/Simple/ConstructorCallWithParameters.resolved.txt +++ b/uast/uast-tests/java/Simple/ConstructorCallWithParameters.resolved.txt @@ -1,14 +1,14 @@ - UField (name = number) -> UTypeReferenceExpression (name = int) -> null - UParameter (name = number) -> UTypeReferenceExpression (name = int) -> null - UMethod (name = Foo) -> UBlockExpression -> null - UBlockExpression -> UBinaryExpression (operator = =) -> null - UBlockExpression -> UBinaryExpression (operator = =) -> null - UBinaryExpression (operator = =) -> UQualifiedReferenceExpression -> [M] PsiFieldImpl - UQualifiedReferenceExpression -> UThisExpression (label = null) -> [M] - UBinaryExpression (operator = =) -> USimpleNameReferenceExpression (identifier = number) -> [M] PsiParameterImpl - UMethod (name = test) -> UTypeReferenceExpression (name = void) -> null - UMethod (name = test) -> UBlockExpression -> null - UBlockExpression -> UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1)) -> [M] PsiMethodImpl - UBlockExpression -> UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1)) -> [M] PsiMethodImpl - UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1)) -> USimpleNameReferenceExpression (identifier = Foo) -> [M] PsiClassImpl - UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1)) -> ULiteralExpression (value = 10) -> null + UField (name = number) -> UTypeReferenceExpression (name = int) -> [] ~= [] + UParameter (name = number) -> UTypeReferenceExpression (name = int) -> [] ~= [] + UMethod (name = Foo) -> UBlockExpression -> [] ~= [] + UBlockExpression -> UBinaryExpression (operator = =) -> [] ~= [] + UBlockExpression -> UBinaryExpression (operator = =) -> [] ~= [] + UBinaryExpression (operator = =) -> UQualifiedReferenceExpression -> [M] PsiFieldImpl ~= PsiField:number + UQualifiedReferenceExpression -> UThisExpression (label = null) -> [M] ~= [] + UBinaryExpression (operator = =) -> USimpleNameReferenceExpression (identifier = number) -> [M] PsiParameterImpl ~= PsiParameter:number + UMethod (name = test) -> UTypeReferenceExpression (name = void) -> [] ~= [] + UMethod (name = test) -> UBlockExpression -> [] ~= [] + UBlockExpression -> UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1)) -> [M] PsiMethodImpl ~= PsiMethod:Foo + UBlockExpression -> UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1)) -> [M] PsiMethodImpl ~= PsiMethod:Foo + UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1)) -> USimpleNameReferenceExpression (identifier = Foo) -> [M] PsiClassImpl ~= PsiClass:Foo + UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 1)) -> ULiteralExpression (value = 10) -> [] ~= [] diff --git a/uast/uast-tests/java/Simple/DefaultConstructorCall.resolved.txt b/uast/uast-tests/java/Simple/DefaultConstructorCall.resolved.txt index c2f88315573d..bcfac2b75b3b 100644 --- a/uast/uast-tests/java/Simple/DefaultConstructorCall.resolved.txt +++ b/uast/uast-tests/java/Simple/DefaultConstructorCall.resolved.txt @@ -1,5 +1,5 @@ - UMethod (name = test) -> UTypeReferenceExpression (name = void) -> null - UMethod (name = test) -> UBlockExpression -> null - UBlockExpression -> UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 0)) -> [M] PsiClassImpl - UBlockExpression -> UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 0)) -> [M] PsiClassImpl - UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 0)) -> USimpleNameReferenceExpression (identifier = Foo) -> [M] PsiClassImpl + UMethod (name = test) -> UTypeReferenceExpression (name = void) -> [] ~= [] + UMethod (name = test) -> UBlockExpression -> [] ~= [] + UBlockExpression -> UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 0)) -> [M] PsiClassImpl ~= [] + UBlockExpression -> UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 0)) -> [M] PsiClassImpl ~= [] + UCallExpression (kind = UastCallKind(name='constructor_call'), argCount = 0)) -> USimpleNameReferenceExpression (identifier = Foo) -> [M] PsiClassImpl ~= PsiClass:Foo diff --git a/uast/uast-tests/test/org/jetbrains/uast/test/java/AbstractJavaExpressionMultiResolveTest.kt b/uast/uast-tests/test/org/jetbrains/uast/test/java/AbstractJavaExpressionMultiResolveTest.kt index 88b9b06665e3..8b6266fdb12b 100644 --- a/uast/uast-tests/test/org/jetbrains/uast/test/java/AbstractJavaExpressionMultiResolveTest.kt +++ b/uast/uast-tests/test/org/jetbrains/uast/test/java/AbstractJavaExpressionMultiResolveTest.kt @@ -24,18 +24,27 @@ abstract class AbstractJavaExpressionMultiResolveTest : AbstractJavaUastTest() { append(ref.asLogString()) append(" -> ") append(multiResolve(ref)) + append(" ~= ") + append(resolve(ref)) } } }.visitUFileAndGetResult(this) private fun multiResolve(ref: UExpression): String { if (ref is UMultiResolvable) { - return "[M] " + ref.multiResolve().joinToString(",") { it.element?.javaClass?.simpleName ?: "null" } + return "[M] " + ref.multiResolve().joinToString(",") { it.element?.javaClass?.simpleName ?: "[]" } } if (ref is UResolvable) { - return "[S] " + (ref.resolve()?.toString() ?: "null") + return "[S] " + (ref.resolve()?.toString() ?: "[]") } - return "null" + return "[]" + } + + private fun resolve(ref: UExpression): String { + if (ref is UResolvable) { + return (ref.resolve()?.toString() ?: "[]") + } + return "[]" } override fun check(testName: String, file: UFile) {