added default params for all primitive types
This commit is contained in:
@@ -87,10 +87,6 @@ public class Converter {
|
||||
final IdentifierImpl name = new IdentifierImpl(psiClass.getName());
|
||||
final List<Expression> baseClassParams = new LinkedList<Expression>();
|
||||
|
||||
// for (PsiType t : psiClass.getExtendsListTypes())
|
||||
// if (t != null && t instanceof PsiClassType) {
|
||||
// final PsiClass resolve = ((PsiClassType) t).resolve();
|
||||
// if (resolve != null) {
|
||||
final SuperVisitor visitor = new SuperVisitor();
|
||||
psiClass.accept(visitor);
|
||||
final HashSet<PsiExpressionList> resolvedSuperCallParameters = visitor.getResolvedSuperCallParameters();
|
||||
@@ -100,20 +96,18 @@ public class Converter {
|
||||
resolvedSuperCallParameters.toArray(new PsiExpressionList[1])[0].getExpressions()
|
||||
)
|
||||
);
|
||||
// }
|
||||
// }
|
||||
|
||||
// we create primary constructor
|
||||
if (!psiClass.isEnum() && !psiClass.isInterface() && getPrimaryConstructorForThisCase(psiClass) == null) {
|
||||
final List<Field> finalOrWithEmptyInitializer = getFinalOrWithEmptyInitializer(fields);
|
||||
final Map<String, String> initializers = new HashMap<String, String>();
|
||||
|
||||
for (Field f : finalOrWithEmptyInitializer) {
|
||||
String init = getDefaultInitializer(f);
|
||||
initializers.put(f.getIdentifier().toKotlin(), init);
|
||||
}
|
||||
|
||||
for (final Function f : methods) {
|
||||
for (Field fo : finalOrWithEmptyInitializer) {
|
||||
String init = getDefaultInitializer(fo);
|
||||
initializers.put(fo.getIdentifier().toKotlin(), init);
|
||||
}
|
||||
|
||||
// and modify secondaries
|
||||
if (f.getKind() == INode.Kind.CONSTRUCTOR && !((Constructor) f).isPrimary()) {
|
||||
final List<Statement> newStatements = new LinkedList<Statement>();
|
||||
@@ -126,7 +120,7 @@ public class Converter {
|
||||
if (assignmentExpression.getLeft().getKind() == INode.Kind.CALL_CHAIN) {
|
||||
for (Field fo : finalOrWithEmptyInitializer) {
|
||||
final String id = fo.getIdentifier().toKotlin();
|
||||
if (((CallChainExpression) assignmentExpression.getLeft()).getIdentifier().toKotlin().endsWith(id)) {
|
||||
if (((CallChainExpression) assignmentExpression.getLeft()).getIdentifier().toKotlin().endsWith("." + id)) {
|
||||
initializers.put(id, assignmentExpression.getRight().toKotlin());
|
||||
isRemoved = true;
|
||||
}
|
||||
@@ -172,12 +166,16 @@ public class Converter {
|
||||
}
|
||||
|
||||
private static String getDefaultInitializer(Field f) {
|
||||
if (f.getType().isNullable()) return "null";
|
||||
|
||||
final String typeToKotlin = f.getType().toKotlin();
|
||||
if (typeToKotlin.equals("Boolean")) return "false";
|
||||
if (typeToKotlin.equals("Int")) return "0";
|
||||
return "TYPE: " + typeToKotlin + " HAVEN'T DEFAULT VALUE";
|
||||
if (f.getType().isNullable())
|
||||
return "null";
|
||||
else {
|
||||
final String typeToKotlin = f.getType().toKotlin();
|
||||
if (typeToKotlin.equals("Boolean")) return "false";
|
||||
if (typeToKotlin.equals("Char")) return "' '";
|
||||
if (typeToKotlin.equals("Double")) return "0.dbl";
|
||||
if (typeToKotlin.equals("Float")) return "0.flt";
|
||||
return "0";
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: hack for enums
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
public class Test {
|
||||
private final String myName;
|
||||
private boolean a;
|
||||
private double b;
|
||||
private float c;
|
||||
private long d;
|
||||
private int e;
|
||||
private short f;
|
||||
private char g;
|
||||
|
||||
public Test() {}
|
||||
|
||||
public Test(String name) {
|
||||
myName = foo(name);
|
||||
}
|
||||
|
||||
static String foo(String n) {return "";}
|
||||
}
|
||||
|
||||
public class User {
|
||||
public static void main() {
|
||||
Test t = new Test("name");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
public open class Test(myName : String?, a : Boolean, b : Double, c : Float, d : Long, e : Int, f : Short, g : Char) {
|
||||
private val myName : String?
|
||||
private var a : Boolean
|
||||
private var b : Double
|
||||
private var c : Float
|
||||
private var d : Long
|
||||
private var e : Int
|
||||
private var f : Short
|
||||
private var g : Char
|
||||
class object {
|
||||
open public fun init() : Test {
|
||||
val __ = Test(null, false, 0.dbl, 0.flt, 0, 0, 0, ' ')
|
||||
return __
|
||||
}
|
||||
open public fun init(name : String?) : Test {
|
||||
val __ = Test(foo(name), false, 0.dbl, 0.flt, 0, 0, 0, ' ')
|
||||
return __
|
||||
}
|
||||
open fun foo(n : String?) : String? {
|
||||
return ""
|
||||
}
|
||||
}
|
||||
{
|
||||
$myName = myName
|
||||
$a = a
|
||||
$b = b
|
||||
$c = c
|
||||
$d = d
|
||||
$e = e
|
||||
$f = f
|
||||
$g = g
|
||||
}
|
||||
}
|
||||
public open class User() {
|
||||
class object {
|
||||
open public fun main() : Unit {
|
||||
var t : Test? = Test.init("name")
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user