[FIR] Support constructor call of unsigned in checker
This commit is contained in:
committed by
TeamCityServer
parent
7f2eaab02b
commit
dce8bd4e62
+10
@@ -89,6 +89,15 @@ internal fun checkConstantArguments(
|
|||||||
)
|
)
|
||||||
return ConstantArgumentKind.NOT_CONST
|
return ConstantArgumentKind.NOT_CONST
|
||||||
}
|
}
|
||||||
|
expressionSymbol is FirConstructor -> {
|
||||||
|
if (expression.typeRef.coneType.isUnsignedType) {
|
||||||
|
(expression as FirFunctionCall).arguments.forEach { argumentExpression ->
|
||||||
|
checkConstantArguments(argumentExpression, session)?.let { return it }
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return ConstantArgumentKind.NOT_CONST
|
||||||
|
}
|
||||||
|
}
|
||||||
expression is FirFunctionCall -> {
|
expression is FirFunctionCall -> {
|
||||||
val calleeReference = expression.calleeReference
|
val calleeReference = expression.calleeReference
|
||||||
if (calleeReference is FirErrorNamedReference) {
|
if (calleeReference is FirErrorNamedReference) {
|
||||||
@@ -103,6 +112,7 @@ internal fun checkConstantArguments(
|
|||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
when (calleeReference.name) {
|
when (calleeReference.name) {
|
||||||
in OperatorNameConventions.BINARY_OPERATION_NAMES, in OperatorNameConventions.UNARY_OPERATION_NAMES,
|
in OperatorNameConventions.BINARY_OPERATION_NAMES, in OperatorNameConventions.UNARY_OPERATION_NAMES,
|
||||||
OperatorNameConventions.SHL, OperatorNameConventions.SHR, OperatorNameConventions.USHR,
|
OperatorNameConventions.SHL, OperatorNameConventions.SHR, OperatorNameConventions.USHR,
|
||||||
|
|||||||
+3
-1
@@ -1,5 +1,4 @@
|
|||||||
// !LANGUAGE: +InlineClasses
|
// !LANGUAGE: +InlineClasses
|
||||||
// IGNORE_BACKEND_FIR: JVM_IR
|
|
||||||
|
|
||||||
// FILE: uint.kt
|
// FILE: uint.kt
|
||||||
|
|
||||||
@@ -9,6 +8,9 @@ inline class UInt(val value: Int)
|
|||||||
|
|
||||||
// FILE: test.kt
|
// FILE: test.kt
|
||||||
|
|
||||||
|
//this import in required in FIR because default imports don't search in local sources atm
|
||||||
|
import kotlin.UInt
|
||||||
|
|
||||||
const val u = UInt(14)
|
const val u = UInt(14)
|
||||||
|
|
||||||
fun foo() {
|
fun foo() {
|
||||||
|
|||||||
-12
@@ -1,12 +0,0 @@
|
|||||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
|
||||||
|
|
||||||
fun ubyte(vararg a: UByte) {}
|
|
||||||
fun ushort(vararg a: UShort) {}
|
|
||||||
fun uint(vararg a: UInt) {}
|
|
||||||
fun ulong(vararg a: ULong) {}
|
|
||||||
|
|
||||||
class ValueParam(vararg val a: ULong)
|
|
||||||
|
|
||||||
annotation class Ann(vararg val a: <!INVALID_TYPE_OF_ANNOTATION_MEMBER!>UInt<!>)
|
|
||||||
|
|
||||||
fun array(<!FORBIDDEN_VARARG_PARAMETER_TYPE!>vararg<!> a: UIntArray) {}
|
|
||||||
+1
@@ -1,3 +1,4 @@
|
|||||||
|
// FIR_IDENTICAL
|
||||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||||
|
|
||||||
fun ubyte(vararg a: UByte) {}
|
fun ubyte(vararg a: UByte) {}
|
||||||
|
|||||||
Reference in New Issue
Block a user