J2K: convert array.length to array.size()

This commit is contained in:
Alexander Udalov
2015-03-07 02:29:13 +03:00
parent 3e85b97e1a
commit 6287055475
3 changed files with 15 additions and 19 deletions
@@ -17,26 +17,22 @@
package org.jetbrains.kotlin.j2k
import com.intellij.psi.*
import com.intellij.psi.CommonClassNames.JAVA_LANG_DOUBLE
import com.intellij.psi.CommonClassNames.JAVA_LANG_FLOAT
import com.intellij.psi.CommonClassNames.JAVA_LANG_INTEGER
import com.intellij.psi.CommonClassNames.JAVA_LANG_LONG
import com.intellij.psi.tree.IElementType
import org.jetbrains.kotlin.j2k.ast.*
import org.jetbrains.kotlin.types.expressions.OperatorConventions
import com.intellij.psi.CommonClassNames.*
import com.intellij.psi.util.PsiTreeUtil
import org.jetbrains.kotlin.builtins.PrimitiveType
import org.jetbrains.kotlin.j2k.*
import org.jetbrains.kotlin.asJava.KotlinLightMethod
import org.jetbrains.kotlin.psi.JetProperty
import org.jetbrains.kotlin.psi.JetFunction
import org.jetbrains.kotlin.psi.JetClassOrObject
import org.jetbrains.kotlin.psi.psiUtil.isExtensionDeclaration
import org.jetbrains.kotlin.psi.JetPropertyAccessor
import org.jetbrains.kotlin.psi.JetParameter
import org.jetbrains.kotlin.psi.JetNamedDeclaration
import org.jetbrains.kotlin.resolve.jvm.JvmPrimitiveType
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.asJava.KotlinLightField
import org.jetbrains.kotlin.psi.JetObjectDeclaration
import org.jetbrains.kotlin.asJava.KotlinLightMethod
import org.jetbrains.kotlin.builtins.PrimitiveType
import org.jetbrains.kotlin.j2k.ast.*
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType
import org.jetbrains.kotlin.psi.psiUtil.isExtensionDeclaration
import org.jetbrains.kotlin.resolve.jvm.JvmPrimitiveType
import org.jetbrains.kotlin.types.expressions.OperatorConventions
trait ExpressionConverter {
fun convertExpression(expression: PsiExpression, codeConverter: CodeConverter): Expression
@@ -357,7 +353,7 @@ class DefaultExpressionConverter : JavaElementVisitor(), ExpressionConverter {
var identifier = Identifier(referenceName, isNullable).assignNoPrototype()
if (qualifier != null && qualifier.getType() is PsiArrayType && referenceName == "length") {
identifier = Identifier("size", isNullable).assignNoPrototype()
identifier = Identifier("size()", isNullable).assignNoPrototype()
}
else if (qualifier != null) {
if (target is KotlinLightField<*, *> && target.getOrigin() is JetObjectDeclaration) {
@@ -1,7 +1,7 @@
class Test {
default object {
public fun foo(args: Array<String>): Int {
return args.size
return args.size()
}
}
}
@@ -1,7 +1,7 @@
public class C {
default object {
public fun main(args: Array<String>) {
when (args.size) {
when (args.size()) {
1 -> {
run {
val a = 1