Introduce bitwise operations and/or/xor/inv for Byte and Short. #KT-13554

Annotate new bitwise operations with SinceKotlin.
This commit is contained in:
Ilya Gorbunov
2016-09-28 06:57:17 +03:00
parent 7f86ce0a20
commit 62fb47d137
11 changed files with 304 additions and 2 deletions
@@ -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()
}