Introduce bitwise operations and/or/xor/inv for Byte and Short. #KT-13554
Annotate new bitwise operations with SinceKotlin.
This commit is contained in:
@@ -119,7 +119,10 @@ class GeneratePrimitives(out: PrintWriter) : BuiltInsSourceGenerator(out) {
|
||||
generateRangeTo(kind)
|
||||
|
||||
if (kind == PrimitiveType.INT || kind == PrimitiveType.LONG) {
|
||||
generateBitwiseOperators(className)
|
||||
generateBitShiftOperators(className)
|
||||
}
|
||||
if (kind == PrimitiveType.INT || kind == PrimitiveType.LONG || kind == PrimitiveType.BYTE || kind == PrimitiveType.SHORT) {
|
||||
generateBitwiseOperators(className, since = if (kind == PrimitiveType.BYTE || kind == PrimitiveType.SHORT) "1.1" else null)
|
||||
}
|
||||
|
||||
generateConversions(kind)
|
||||
@@ -189,16 +192,20 @@ class GeneratePrimitives(out: PrintWriter) : BuiltInsSourceGenerator(out) {
|
||||
out.println()
|
||||
}
|
||||
|
||||
private fun generateBitwiseOperators(className: String) {
|
||||
private fun generateBitShiftOperators(className: String) {
|
||||
for ((name, doc) in shiftOperators) {
|
||||
out.println(" /** $doc */")
|
||||
out.println(" public infix fun $name(bitCount: Int): $className")
|
||||
}
|
||||
}
|
||||
private fun generateBitwiseOperators(className: String, since: String?) {
|
||||
for ((name, doc) in bitwiseOperators) {
|
||||
out.println(" /** $doc */")
|
||||
since?.let { out.println(" @SinceKotlin(\"$it\")") }
|
||||
out.println(" public infix fun $name(other: $className): $className")
|
||||
}
|
||||
out.println(" /** Inverts the bits in this value/ */")
|
||||
since?.let { out.println(" @SinceKotlin(\"$it\")") }
|
||||
out.println(" public fun inv(): $className")
|
||||
out.println()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user