diff --git a/j2k/src/org/jetbrains/kotlin/j2k/SpecialMethod.kt b/j2k/src/org/jetbrains/kotlin/j2k/SpecialMethod.kt index b16d6656435..2ca98e06b8b 100644 --- a/j2k/src/org/jetbrains/kotlin/j2k/SpecialMethod.kt +++ b/j2k/src/org/jetbrains/kotlin/j2k/SpecialMethod.kt @@ -109,6 +109,26 @@ enum class SpecialMethod(val qualifiedClassName: String?, val methodName: String = convertWithChangedName("removeAt", qualifier, arguments, typeArgumentsConverted, codeConverter) }, + THROWABLE_GET_MESSAGE(Throwable::class.java.name, "getMessage", 0) { + override fun convertCall(qualifier: PsiExpression?, arguments: Array, typeArgumentsConverted: List, codeConverter: CodeConverter) + = convertMethodCallToPropertyUse(codeConverter, qualifier, "message") + }, + + THROWABLE_GET_CAUSE(Throwable::class.java.name, "getCause", 0) { + override fun convertCall(qualifier: PsiExpression?, arguments: Array, typeArgumentsConverted: List, codeConverter: CodeConverter) + = convertMethodCallToPropertyUse(codeConverter, qualifier, "cause") + }, + + MAP_ENTRY_GET_KEY(Map::class.java.name + ".Entry", "getKey", 0) { + override fun convertCall(qualifier: PsiExpression?, arguments: Array, typeArgumentsConverted: List, codeConverter: CodeConverter) + = convertMethodCallToPropertyUse(codeConverter, qualifier, "key") + }, + + MAP_ENTRY_GET_VALUE(Map::class.java.name + ".Entry", "getValue", 0) { + override fun convertCall(qualifier: PsiExpression?, arguments: Array, typeArgumentsConverted: List, codeConverter: CodeConverter) + = convertMethodCallToPropertyUse(codeConverter, qualifier, "value") + }, + OBJECT_EQUALS(null, "equals", 1) { override fun matches(method: PsiMethod, superMethodsSearcher: SuperMethodsSearcher): Boolean = super.matches(method, superMethodsSearcher) && method.getParameterList().getParameters().single().getType().getCanonicalText() == JAVA_LANG_OBJECT diff --git a/j2k/testData/fileOrElement/issues/kt-807.kt b/j2k/testData/fileOrElement/issues/kt-807.kt index 9baf73cdf13..b682691866f 100644 --- a/j2k/testData/fileOrElement/issues/kt-807.kt +++ b/j2k/testData/fileOrElement/issues/kt-807.kt @@ -16,7 +16,7 @@ internal object FileRead { } `in`.close() } catch (e: Exception) { - System.err.println("Error: " + e.getMessage()) + System.err.println("Error: " + e.message) } } diff --git a/j2k/testData/fileOrElement/methodCallExpression/specialBuiltinMembers.java b/j2k/testData/fileOrElement/methodCallExpression/specialBuiltinMembers.java index 8cf4e37cad6..c83d04f42e6 100644 --- a/j2k/testData/fileOrElement/methodCallExpression/specialBuiltinMembers.java +++ b/j2k/testData/fileOrElement/methodCallExpression/specialBuiltinMembers.java @@ -16,7 +16,7 @@ class A { int h = map.entrySet().size(); } - void bar(List list) { + void bar(List list, HashMap map) { char c = "a".charAt(0); byte b = new Integer(10).byteValue(); int i = new Double(10.1).intValue(); @@ -24,7 +24,19 @@ class A { long l = new Double(10.1).longValue(); short s = new Double(10.1).shortValue(); - String removed = list.remove(10); - Boolean isRemoved = list.remove("a"); + try { + String removed = list.remove(10); + Boolean isRemoved = list.remove("a"); + } + catch(Exception e) { + System.err.println(e.getMessage()); + throw new RuntimeException(e.getCause()); + } + + for (Map.Entry entry : map.entrySet()) { + String key = entry.getKey(); + Integer value = entry.getValue(); + entry.setValue(value + 1); + } } } diff --git a/j2k/testData/fileOrElement/methodCallExpression/specialBuiltinMembers.kt b/j2k/testData/fileOrElement/methodCallExpression/specialBuiltinMembers.kt index 43195386811..bf613ab46c1 100644 --- a/j2k/testData/fileOrElement/methodCallExpression/specialBuiltinMembers.kt +++ b/j2k/testData/fileOrElement/methodCallExpression/specialBuiltinMembers.kt @@ -16,7 +16,7 @@ internal class A { val h = map.entries.size } - fun bar(list: MutableList) { + fun bar(list: MutableList, map: HashMap) { val c = "a"[0] val b = 10.toByte() val i = 10.1.toInt() @@ -24,7 +24,18 @@ internal class A { val l = 10.1.toLong() val s = 10.1.toShort() - val removed = list.removeAt(10) - val isRemoved = list.remove("a") + try { + val removed = list.removeAt(10) + val isRemoved = list.remove("a") + } catch (e: Exception) { + System.err.println(e.message) + throw RuntimeException(e.cause) + } + + for (entry in map.entries) { + val key = entry.key + val value = entry.value + entry.setValue(value + 1) + } } }