UAST: Fix possible TypeCastException when creating KotlinUNamedExpression
This commit is contained in:
+14
-10
@@ -22,10 +22,10 @@ import org.jetbrains.kotlin.psi.ValueArgument
|
|||||||
import org.jetbrains.uast.*
|
import org.jetbrains.uast.*
|
||||||
|
|
||||||
class KotlinUNamedExpression private constructor(
|
class KotlinUNamedExpression private constructor(
|
||||||
override val name: String?,
|
override val name: String?,
|
||||||
override val sourcePsi: PsiElement?,
|
override val sourcePsi: PsiElement?,
|
||||||
givenParent: UElement?,
|
givenParent: UElement?,
|
||||||
expressionProducer: (UElement) -> UExpression
|
expressionProducer: (UElement) -> UExpression
|
||||||
) : KotlinAbstractUElement(givenParent), UNamedExpression {
|
) : KotlinAbstractUElement(givenParent), UNamedExpression {
|
||||||
|
|
||||||
override val expression: UExpression by lz { expressionProducer(this) }
|
override val expression: UExpression by lz { expressionProducer(this) }
|
||||||
@@ -40,22 +40,26 @@ class KotlinUNamedExpression private constructor(
|
|||||||
internal fun create(name: String?, valueArgument: ValueArgument, uastParent: UElement?): UNamedExpression {
|
internal fun create(name: String?, valueArgument: ValueArgument, uastParent: UElement?): UNamedExpression {
|
||||||
val expression = valueArgument.getArgumentExpression()
|
val expression = valueArgument.getArgumentExpression()
|
||||||
return KotlinUNamedExpression(name, valueArgument.asElement(), uastParent) { expressionParent ->
|
return KotlinUNamedExpression(name, valueArgument.asElement(), uastParent) { expressionParent ->
|
||||||
expression?.let { expressionParent.getLanguagePlugin().convert<UExpression>(it, expressionParent) } ?: UastEmptyExpression
|
expression?.let { expressionParent.getLanguagePlugin().convertOpt<UExpression>(it, expressionParent) }
|
||||||
|
?: UastEmptyExpression(expressionParent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun create(
|
internal fun create(
|
||||||
name: String?,
|
name: String?,
|
||||||
valueArguments: List<ValueArgument>,
|
valueArguments: List<ValueArgument>,
|
||||||
uastParent: UElement?): UNamedExpression {
|
uastParent: UElement?
|
||||||
|
): UNamedExpression {
|
||||||
return KotlinUNamedExpression(name, null, uastParent) { expressionParent ->
|
return KotlinUNamedExpression(name, null, uastParent) { expressionParent ->
|
||||||
KotlinUVarargExpression(valueArguments, expressionParent)
|
KotlinUVarargExpression(valueArguments, expressionParent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
class KotlinUVarargExpression(private val valueArgs: List<ValueArgument>,
|
|
||||||
uastParent: UElement?
|
class KotlinUVarargExpression(
|
||||||
|
private val valueArgs: List<ValueArgument>,
|
||||||
|
uastParent: UElement?
|
||||||
) : KotlinAbstractUExpression(uastParent), UCallExpressionEx {
|
) : KotlinAbstractUExpression(uastParent), UCallExpressionEx {
|
||||||
override val kind: UastCallKind = UastCallKind.NESTED_ARRAY_INITIALIZER
|
override val kind: UastCallKind = UastCallKind.NESTED_ARRAY_INITIALIZER
|
||||||
|
|
||||||
|
|||||||
+15
-9
@@ -22,10 +22,11 @@ import org.jetbrains.kotlin.psi.ValueArgument
|
|||||||
import org.jetbrains.uast.*
|
import org.jetbrains.uast.*
|
||||||
|
|
||||||
class KotlinUNamedExpression private constructor(
|
class KotlinUNamedExpression private constructor(
|
||||||
override val name: String?,
|
override val name: String?,
|
||||||
givenParent: UElement?,
|
givenParent: UElement?,
|
||||||
expressionProducer: (UElement) -> UExpression
|
expressionProducer: (UElement) -> UExpression
|
||||||
) : KotlinAbstractUElement(givenParent), UNamedExpression {
|
) : KotlinAbstractUElement(givenParent), UNamedExpression {
|
||||||
|
|
||||||
override val expression: UExpression by lz { expressionProducer(this) }
|
override val expression: UExpression by lz { expressionProducer(this) }
|
||||||
|
|
||||||
override val annotations: List<UAnnotation> = emptyList()
|
override val annotations: List<UAnnotation> = emptyList()
|
||||||
@@ -36,22 +37,27 @@ class KotlinUNamedExpression private constructor(
|
|||||||
internal fun create(name: String?, valueArgument: ValueArgument, uastParent: UElement?): UNamedExpression {
|
internal fun create(name: String?, valueArgument: ValueArgument, uastParent: UElement?): UNamedExpression {
|
||||||
val expression = valueArgument.getArgumentExpression()
|
val expression = valueArgument.getArgumentExpression()
|
||||||
return KotlinUNamedExpression(name, uastParent) { expressionParent ->
|
return KotlinUNamedExpression(name, uastParent) { expressionParent ->
|
||||||
expression?.let { expressionParent.getLanguagePlugin().convert<UExpression>(it, expressionParent) } ?: UastEmptyExpression
|
expression?.let { expressionParent.getLanguagePlugin().convertOpt<UExpression>(it, expressionParent) }
|
||||||
|
?: UastEmptyExpression
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun create(
|
internal fun create(
|
||||||
name: String?,
|
name: String?,
|
||||||
valueArguments: List<ValueArgument>,
|
valueArguments: List<ValueArgument>,
|
||||||
uastParent: UElement?): UNamedExpression {
|
uastParent: UElement?
|
||||||
|
): UNamedExpression {
|
||||||
return KotlinUNamedExpression(name, uastParent) { expressionParent ->
|
return KotlinUNamedExpression(name, uastParent) { expressionParent ->
|
||||||
KotlinUVarargExpression(valueArguments, expressionParent)
|
KotlinUVarargExpression(valueArguments, expressionParent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
class KotlinUVarargExpression(private val valueArgs: List<ValueArgument>,
|
|
||||||
uastParent: UElement?) : KotlinAbstractUExpression(uastParent), UCallExpression {
|
class KotlinUVarargExpression(
|
||||||
|
private val valueArgs: List<ValueArgument>,
|
||||||
|
uastParent: UElement?
|
||||||
|
) : KotlinAbstractUExpression(uastParent), UCallExpression {
|
||||||
override val kind: UastCallKind = UastCallKind.NESTED_ARRAY_INITIALIZER
|
override val kind: UastCallKind = UastCallKind.NESTED_ARRAY_INITIALIZER
|
||||||
|
|
||||||
override val valueArguments: List<UExpression> by lz {
|
override val valueArguments: List<UExpression> by lz {
|
||||||
|
|||||||
+15
-10
@@ -22,10 +22,10 @@ import org.jetbrains.kotlin.psi.ValueArgument
|
|||||||
import org.jetbrains.uast.*
|
import org.jetbrains.uast.*
|
||||||
|
|
||||||
class KotlinUNamedExpression private constructor(
|
class KotlinUNamedExpression private constructor(
|
||||||
override val name: String?,
|
override val name: String?,
|
||||||
override val sourcePsi: PsiElement?,
|
override val sourcePsi: PsiElement?,
|
||||||
givenParent: UElement?,
|
givenParent: UElement?,
|
||||||
expressionProducer: (UElement) -> UExpression
|
expressionProducer: (UElement) -> UExpression
|
||||||
) : KotlinAbstractUElement(givenParent), UNamedExpression {
|
) : KotlinAbstractUElement(givenParent), UNamedExpression {
|
||||||
|
|
||||||
override val expression: UExpression by lz { expressionProducer(this) }
|
override val expression: UExpression by lz { expressionProducer(this) }
|
||||||
@@ -40,22 +40,27 @@ class KotlinUNamedExpression private constructor(
|
|||||||
internal fun create(name: String?, valueArgument: ValueArgument, uastParent: UElement?): UNamedExpression {
|
internal fun create(name: String?, valueArgument: ValueArgument, uastParent: UElement?): UNamedExpression {
|
||||||
val expression = valueArgument.getArgumentExpression()
|
val expression = valueArgument.getArgumentExpression()
|
||||||
return KotlinUNamedExpression(name, valueArgument.asElement(), uastParent) { expressionParent ->
|
return KotlinUNamedExpression(name, valueArgument.asElement(), uastParent) { expressionParent ->
|
||||||
expression?.let { expressionParent.getLanguagePlugin().convert<UExpression>(it, expressionParent) } ?: UastEmptyExpression
|
expression?.let { expressionParent.getLanguagePlugin().convertOpt<UExpression>(it, expressionParent) }
|
||||||
|
?: UastEmptyExpression
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun create(
|
internal fun create(
|
||||||
name: String?,
|
name: String?,
|
||||||
valueArguments: List<ValueArgument>,
|
valueArguments: List<ValueArgument>,
|
||||||
uastParent: UElement?): UNamedExpression {
|
uastParent: UElement?
|
||||||
|
): UNamedExpression {
|
||||||
return KotlinUNamedExpression(name, null, uastParent) { expressionParent ->
|
return KotlinUNamedExpression(name, null, uastParent) { expressionParent ->
|
||||||
KotlinUVarargExpression(valueArguments, expressionParent)
|
KotlinUVarargExpression(valueArguments, expressionParent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
class KotlinUVarargExpression(private val valueArgs: List<ValueArgument>,
|
|
||||||
uastParent: UElement?) : KotlinAbstractUExpression(uastParent), UCallExpression {
|
class KotlinUVarargExpression(
|
||||||
|
private val valueArgs: List<ValueArgument>,
|
||||||
|
uastParent: UElement?
|
||||||
|
) : KotlinAbstractUExpression(uastParent), UCallExpression {
|
||||||
override val kind: UastCallKind = UastCallKind.NESTED_ARRAY_INITIALIZER
|
override val kind: UastCallKind = UastCallKind.NESTED_ARRAY_INITIALIZER
|
||||||
|
|
||||||
override val valueArguments: List<UExpression> by lz {
|
override val valueArguments: List<UExpression> by lz {
|
||||||
|
|||||||
Reference in New Issue
Block a user