convert .length on arrays to .size

This commit is contained in:
Dmitry Jemerov
2012-06-01 15:54:13 +02:00
committed by Pavel V. Talanov
parent 5664283a30
commit 21b280f413
3 changed files with 23 additions and 7 deletions
@@ -219,17 +219,21 @@ public open class ExpressionVisitor(converter: Converter): StatementVisitor(conv
val isThis: Boolean = isThisExpression(expression!!)
val isNullable: Boolean = getConverter().typeToType(expression?.getType()).nullable
val className: String = getClassNameWithConstructor(expression!!)
var identifier: Expression = Identifier(expression?.getReferenceName()!!, isNullable)
val referencedName = expression?.getReferenceName()!!
var identifier: Expression = Identifier(referencedName, isNullable)
val __: String = "__"
val qualifier = expression?.getQualifierExpression()
if (hasReceiver){
identifier = CallChainExpression(Identifier(__, false), Identifier(expression?.getReferenceName()!!, isNullable))
identifier = CallChainExpression(Identifier(__, false), Identifier(referencedName, isNullable))
}
else if (insideSecondaryConstructor && isThis) {
identifier = Identifier("val __ = " + className)
}
else if (qualifier != null && qualifier.getType() is PsiArrayType && referencedName == "length") {
identifier = Identifier("size", isNullable)
}
else
if (insideSecondaryConstructor && isThis) {
identifier = Identifier("val __ = " + className)
}
myResult = CallChainExpression(getConverter().expressionToExpression(expression?.getQualifierExpression()), identifier)
myResult = CallChainExpression(getConverter().expressionToExpression(qualifier), identifier)
}
public override fun visitSuperExpression(expression: PsiSuperExpression?): Unit {
@@ -0,0 +1,5 @@
class Test {
public static int foo(String[] args) {
return args.length;
}
}
@@ -0,0 +1,7 @@
open class Test() {
class object {
public open fun foo(args : Array<String?>?) : Int {
return args?.size!!
}
}
}