diff --git a/plugins/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUThrowExpression.kt b/plugins/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUThrowExpression.kt new file mode 100644 index 00000000000..306c679fa9d --- /dev/null +++ b/plugins/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUThrowExpression.kt @@ -0,0 +1,19 @@ +/* + * Copyright 2010-2021 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.uast.kotlin + +import org.jetbrains.kotlin.psi.KtThrowExpression +import org.jetbrains.uast.UElement +import org.jetbrains.uast.UThrowExpression + +class KotlinUThrowExpression( + override val sourcePsi: KtThrowExpression, + givenParent: UElement? +) : KotlinAbstractUExpression(givenParent), UThrowExpression, KotlinUElementWithType { + override val thrownExpression by lz { + baseResolveProviderService.baseKotlinConverter.convertOrEmpty(sourcePsi.thrownExpression, this) + } +} diff --git a/plugins/uast-kotlin-fir/src/org/jetbrains/uast/kotlin/FirKotlinConverter.kt b/plugins/uast-kotlin-fir/src/org/jetbrains/uast/kotlin/FirKotlinConverter.kt index 7b136ed88c3..1ed247ccec8 100644 --- a/plugins/uast-kotlin-fir/src/org/jetbrains/uast/kotlin/FirKotlinConverter.kt +++ b/plugins/uast-kotlin-fir/src/org/jetbrains/uast/kotlin/FirKotlinConverter.kt @@ -277,6 +277,7 @@ internal object FirKotlinConverter : BaseKotlinConverter { FirKotlinUBlockExpression(expression, givenParent) } is KtReturnExpression -> expr(build(::KotlinUReturnExpression)) + is KtThrowExpression -> expr(build(::KotlinUThrowExpression)) is KtBreakExpression -> expr(build(::KotlinUBreakExpression)) is KtContinueExpression -> expr(build(::KotlinUContinueExpression)) diff --git a/plugins/uast-kotlin-fir/testData/legacyRenderLog/UnexpectedContainerException.log.fir.txt b/plugins/uast-kotlin-fir/testData/legacyRenderLog/UnexpectedContainerException.log.fir.txt index 7aefb675c98..be02edfb8d8 100644 --- a/plugins/uast-kotlin-fir/testData/legacyRenderLog/UnexpectedContainerException.log.fir.txt +++ b/plugins/uast-kotlin-fir/testData/legacyRenderLog/UnexpectedContainerException.log.fir.txt @@ -8,4 +8,5 @@ UFile (package = ) UParameter (name = clazz) UParameter (name = factory) UBlockExpression - [!] UnknownKotlinExpression (THROW) + UThrowExpression + [!] UnknownKotlinExpression (CALL_EXPRESSION) diff --git a/plugins/uast-kotlin-fir/testData/legacyRenderLog/UnexpectedContainerException.render.fir.txt b/plugins/uast-kotlin-fir/testData/legacyRenderLog/UnexpectedContainerException.render.fir.txt index 39c2b2d10e1..bfa91ef9e40 100644 --- a/plugins/uast-kotlin-fir/testData/legacyRenderLog/UnexpectedContainerException.render.fir.txt +++ b/plugins/uast-kotlin-fir/testData/legacyRenderLog/UnexpectedContainerException.render.fir.txt @@ -5,6 +5,6 @@ public abstract interface Callback { public final class Model { public fun Model() = UastEmptyExpression public final fun crashMe(clazz: java.lang.Class, factory: kotlin.jvm.functions.Function0) : void { - [!] UnknownKotlinExpression (THROW) + throw [!] UnknownKotlinExpression (CALL_EXPRESSION) } } diff --git a/plugins/uast-kotlin-fir/testData/legacyTypes/UnexpectedContainerException.types.fir.txt b/plugins/uast-kotlin-fir/testData/legacyTypes/UnexpectedContainerException.types.fir.txt index 9508e7c9d7f..ccfcf429c7e 100644 --- a/plugins/uast-kotlin-fir/testData/legacyTypes/UnexpectedContainerException.types.fir.txt +++ b/plugins/uast-kotlin-fir/testData/legacyTypes/UnexpectedContainerException.types.fir.txt @@ -8,4 +8,5 @@ UFile (package = ) [public abstract interface Callback {...] UParameter (name = clazz) [var clazz: java.lang.Class] UParameter (name = factory) [var factory: kotlin.jvm.functions.Function0] UBlockExpression [{...}] - [!] UnknownKotlinExpression (THROW) [[!] UnknownKotlinExpression (THROW)] + UThrowExpression [throw [!] UnknownKotlinExpression (CALL_EXPRESSION)] + [!] UnknownKotlinExpression (CALL_EXPRESSION) [[!] UnknownKotlinExpression (CALL_EXPRESSION)] diff --git a/plugins/uast-kotlin-fir/testData/legacyValues/UnexpectedContainerException.values.fir.txt b/plugins/uast-kotlin-fir/testData/legacyValues/UnexpectedContainerException.values.fir.txt index f0c3b314be7..f4eb9986e27 100644 --- a/plugins/uast-kotlin-fir/testData/legacyValues/UnexpectedContainerException.values.fir.txt +++ b/plugins/uast-kotlin-fir/testData/legacyValues/UnexpectedContainerException.values.fir.txt @@ -7,5 +7,6 @@ UFile (package = ) [public abstract interface Callback {...] UMethod (name = crashMe) [public final fun crashMe(clazz: java.lang.Class, factory: kotlin.jvm.functions.Function0) : void {...}] UParameter (name = clazz) [var clazz: java.lang.Class] UParameter (name = factory) [var factory: kotlin.jvm.functions.Function0] - UBlockExpression [{...}] = Undetermined - [!] UnknownKotlinExpression (THROW) [[!] UnknownKotlinExpression (THROW)] = Undetermined + UBlockExpression [{...}] = Nothing + UThrowExpression [throw [!] UnknownKotlinExpression (CALL_EXPRESSION)] = Nothing + [!] UnknownKotlinExpression (CALL_EXPRESSION) [[!] UnknownKotlinExpression (CALL_EXPRESSION)] = Undetermined diff --git a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/expressions/KotlinUThrowExpression.kt b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/expressions/KotlinUThrowExpression.kt deleted file mode 100644 index b46a6b59acd..00000000000 --- a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/expressions/KotlinUThrowExpression.kt +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright 2010-2016 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.uast.kotlin - -import org.jetbrains.kotlin.psi.KtThrowExpression -import org.jetbrains.uast.UElement -import org.jetbrains.uast.UThrowExpression - -class KotlinUThrowExpression( - override val sourcePsi: KtThrowExpression, - givenParent: UElement? -) : KotlinAbstractUExpression(givenParent), UThrowExpression, KotlinUElementWithType { - override val thrownExpression by lz { KotlinConverter.convertOrEmpty(sourcePsi.thrownExpression, this) } -} \ No newline at end of file