support generic params in constructor invocation
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
package org.jetbrains.jet.j2k.ast;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jet.j2k.util.AstUtil;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author ignatov
|
||||
*/
|
||||
public class ReferenceElement extends Element {
|
||||
private Identifier myReference;
|
||||
private List<Type> myTypes;
|
||||
|
||||
public ReferenceElement(@NotNull Identifier reference, @NotNull List<Type> types) {
|
||||
myReference = reference;
|
||||
myTypes = types;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public String toKotlin() {
|
||||
String typesIfNeeded = myTypes.size() > 0 ? "<" + AstUtil.joinNodes(myTypes, COMMA_WITH_SPACE) + ">" : EMPTY;
|
||||
return myReference.toKotlin() + typesIfNeeded;
|
||||
}
|
||||
}
|
||||
@@ -5,6 +5,8 @@ import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jet.j2k.Converter;
|
||||
import org.jetbrains.jet.j2k.ast.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static org.jetbrains.jet.j2k.Converter.*;
|
||||
|
||||
/**
|
||||
@@ -43,17 +45,24 @@ public class ElementVisitor extends JavaElementVisitor {
|
||||
public void visitReferenceElement(PsiJavaCodeReferenceElement reference) {
|
||||
super.visitReferenceElement(reference);
|
||||
|
||||
if (!reference.isQualified())
|
||||
myResult = new IdentifierImpl(reference.getReferenceName());
|
||||
else {
|
||||
String result = reference.getReferenceName();
|
||||
final List<Type> types = typesToTypeList(reference.getTypeParameters());
|
||||
if (!reference.isQualified()) {
|
||||
myResult = new ReferenceElement(
|
||||
new IdentifierImpl(reference.getReferenceName()),
|
||||
types
|
||||
);
|
||||
} else {
|
||||
String result = new IdentifierImpl(reference.getReferenceName()).toKotlin();
|
||||
PsiElement qualifier = reference.getQualifier();
|
||||
while (qualifier != null){
|
||||
while (qualifier != null) {
|
||||
final PsiJavaCodeReferenceElement p = (PsiJavaCodeReferenceElement) qualifier;
|
||||
result = p.getReferenceName() + "." + result; // TODO: maybe need to replace by safe call?
|
||||
result = new IdentifierImpl(p.getReferenceName()).toKotlin() + "." + result; // TODO: maybe need to replace by safe call?
|
||||
qualifier = p.getQualifier();
|
||||
}
|
||||
myResult = new IdentifierImpl(result);
|
||||
myResult = new ReferenceElement(
|
||||
new IdentifierImpl(result),
|
||||
types
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package org.jetbrains.jet.j2k.visitors;
|
||||
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.impl.source.PsiClassReferenceType;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jet.j2k.ast.*;
|
||||
import org.jetbrains.jet.j2k.util.AstUtil;
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
import java.util.List;
|
||||
import java.util.LinkedList;
|
||||
|
||||
class User {
|
||||
void main() {
|
||||
List<String> list = new LinkedList<String>();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
import java.util.List
|
||||
import java.util.LinkedList
|
||||
open class User() {
|
||||
open fun main() : Unit {
|
||||
var list : List<String?>? = LinkedList<String?>()
|
||||
}
|
||||
}
|
||||
@@ -5,7 +5,7 @@ open class Member() {
|
||||
}
|
||||
open class User() {
|
||||
open fun main() : Unit {
|
||||
var members : List<Member?>? = LinkedList()
|
||||
var members : List<Member?>? = LinkedList<Member?>()
|
||||
members?.add(Member())
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user