j2k: Generate class literals in throws
This commit is contained in:
@@ -566,7 +566,7 @@ class Converter private(
|
||||
if (types.isEmpty()) return Annotations.Empty
|
||||
val arguments = types.indices.map { index ->
|
||||
val convertedType = typeConverter.convertType(types[index], Nullability.NotNull)
|
||||
null to deferredElement<Expression> { MethodCallExpression.buildNotNull(null, "javaClass", listOf(), listOf(convertedType)).assignPrototype(refElements[index]) }
|
||||
null to deferredElement<Expression> { ClassLiteralExpression(convertedType.assignPrototype(refElements[index])) }
|
||||
}
|
||||
val annotation = Annotation(Identifier("throws").assignNoPrototype(), arguments, false, true)
|
||||
return Annotations(listOf(annotation.assignPrototype(throwsList))).assignPrototype(throwsList)
|
||||
|
||||
@@ -164,6 +164,12 @@ class DownToExpression(val start: Expression, val end: Expression): Expression()
|
||||
}
|
||||
}
|
||||
|
||||
class ClassLiteralExpression(val type: Type): Expression() {
|
||||
override fun generateCode(builder: CodeBuilder) {
|
||||
builder.append(type).append("::class")
|
||||
}
|
||||
}
|
||||
|
||||
fun createArrayInitializerExpression(arrayType: ArrayType, initializers: List<Expression>, needExplicitType: Boolean = true) : MethodCallExpression {
|
||||
val elementType = arrayType.elementType
|
||||
val createArrayFunction = if (elementType is PrimitiveType)
|
||||
|
||||
@@ -11,7 +11,7 @@ class Test : Base() {
|
||||
return super.equals(o)
|
||||
}
|
||||
|
||||
throws(javaClass<CloneNotSupportedException>())
|
||||
throws(CloneNotSupportedException::class)
|
||||
override fun clone(): Any {
|
||||
return super.clone()
|
||||
}
|
||||
@@ -20,7 +20,7 @@ class Test : Base() {
|
||||
return super.toString()
|
||||
}
|
||||
|
||||
throws(javaClass<Throwable>())
|
||||
throws(Throwable::class)
|
||||
override fun finalize() {
|
||||
super.finalize()
|
||||
}
|
||||
@@ -35,7 +35,7 @@ open class Base {
|
||||
return super.equals(o)
|
||||
}
|
||||
|
||||
throws(javaClass<CloneNotSupportedException>())
|
||||
throws(CloneNotSupportedException::class)
|
||||
protected open fun clone(): Any {
|
||||
return super.clone()
|
||||
}
|
||||
@@ -44,7 +44,7 @@ open class Base {
|
||||
return super.toString()
|
||||
}
|
||||
|
||||
throws(javaClass<Throwable>())
|
||||
throws(Throwable::class)
|
||||
protected open fun finalize() {
|
||||
super.finalize()
|
||||
}
|
||||
|
||||
@@ -12,14 +12,14 @@ class X {
|
||||
return super.toString()
|
||||
}
|
||||
|
||||
throws(javaClass<CloneNotSupportedException>())
|
||||
throws(CloneNotSupportedException::class)
|
||||
protected fun clone(): Any {
|
||||
return super.clone()
|
||||
}
|
||||
}
|
||||
|
||||
class Y : Thread() {
|
||||
throws(javaClass<CloneNotSupportedException>())
|
||||
throws(CloneNotSupportedException::class)
|
||||
override fun clone(): Any {
|
||||
return super.clone()
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ class X : Base() {
|
||||
return super.toString()
|
||||
}
|
||||
|
||||
throws(javaClass<CloneNotSupportedException>())
|
||||
throws(CloneNotSupportedException::class)
|
||||
protected fun clone(): Any {
|
||||
return super.clone()
|
||||
}
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
throws(javaClass<IOException>(), javaClass<SerializationException>())
|
||||
throws(IOException::class, SerializationException::class)
|
||||
fun foo()
|
||||
@@ -1,7 +1,7 @@
|
||||
import java.lang.reflect.Constructor
|
||||
|
||||
object X {
|
||||
throws(javaClass<Exception>())
|
||||
throws(Exception::class)
|
||||
fun <T> foo(constructor: Constructor<T>, args1: Array<Any>, args2: Array<Any>) {
|
||||
constructor.newInstance(*args1)
|
||||
constructor.newInstance(args1, args2)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import java.io.*
|
||||
|
||||
public class C {
|
||||
throws(javaClass<IOException>())
|
||||
throws(IOException::class)
|
||||
fun foo() {
|
||||
ByteArrayInputStream(ByteArray(10)).use { stream ->
|
||||
// reading something
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import java.io.*
|
||||
|
||||
public class C {
|
||||
throws(javaClass<IOException>())
|
||||
throws(IOException::class)
|
||||
fun foo() {
|
||||
ByteArrayInputStream(ByteArray(10)).use { input ->
|
||||
ByteArrayOutputStream().use { output ->
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import java.io.*
|
||||
|
||||
public class C {
|
||||
throws(javaClass<IOException>())
|
||||
throws(IOException::class)
|
||||
fun foo() {
|
||||
ByteArrayInputStream(ByteArray(10)).use { stream -> println(stream.read()) }
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import java.io.*
|
||||
|
||||
public class C {
|
||||
throws(javaClass<IOException>())
|
||||
throws(IOException::class)
|
||||
fun foo() {
|
||||
try {
|
||||
ByteArrayInputStream(ByteArray(10)).use { stream ->
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
import java.io.*
|
||||
|
||||
trait I {
|
||||
throws(javaClass<IOException>())
|
||||
throws(IOException::class)
|
||||
public fun doIt(stream: InputStream): Int
|
||||
}
|
||||
|
||||
public class C {
|
||||
throws(javaClass<IOException>())
|
||||
throws(IOException::class)
|
||||
fun foo() {
|
||||
ByteArrayInputStream(ByteArray(10)).use { stream ->
|
||||
bar(object : I {
|
||||
throws(javaClass<IOException>())
|
||||
throws(IOException::class)
|
||||
override fun doIt(stream: InputStream): Int {
|
||||
return stream.available()
|
||||
}
|
||||
@@ -18,7 +18,7 @@ public class C {
|
||||
}
|
||||
}
|
||||
|
||||
throws(javaClass<IOException>())
|
||||
throws(IOException::class)
|
||||
fun bar(i: I, stream: InputStream): Int {
|
||||
return i.doIt(stream)
|
||||
}
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
import java.io.*
|
||||
|
||||
trait I {
|
||||
throws(javaClass<IOException>())
|
||||
throws(IOException::class)
|
||||
public fun doIt(stream: InputStream): Int
|
||||
}
|
||||
|
||||
public class C {
|
||||
throws(javaClass<IOException>())
|
||||
throws(IOException::class)
|
||||
fun foo(): Int {
|
||||
ByteArrayInputStream(ByteArray(10)).use { stream ->
|
||||
return bar(object : I {
|
||||
throws(javaClass<IOException>())
|
||||
throws(IOException::class)
|
||||
override fun doIt(stream: InputStream): Int {
|
||||
return stream.available()
|
||||
}
|
||||
@@ -18,7 +18,7 @@ public class C {
|
||||
}
|
||||
}
|
||||
|
||||
throws(javaClass<IOException>())
|
||||
throws(IOException::class)
|
||||
fun bar(i: I, stream: InputStream): Int {
|
||||
return i.doIt(stream)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user