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.Converter;
|
||||||
import org.jetbrains.jet.j2k.ast.*;
|
import org.jetbrains.jet.j2k.ast.*;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import static org.jetbrains.jet.j2k.Converter.*;
|
import static org.jetbrains.jet.j2k.Converter.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -43,17 +45,24 @@ public class ElementVisitor extends JavaElementVisitor {
|
|||||||
public void visitReferenceElement(PsiJavaCodeReferenceElement reference) {
|
public void visitReferenceElement(PsiJavaCodeReferenceElement reference) {
|
||||||
super.visitReferenceElement(reference);
|
super.visitReferenceElement(reference);
|
||||||
|
|
||||||
if (!reference.isQualified())
|
final List<Type> types = typesToTypeList(reference.getTypeParameters());
|
||||||
myResult = new IdentifierImpl(reference.getReferenceName());
|
if (!reference.isQualified()) {
|
||||||
else {
|
myResult = new ReferenceElement(
|
||||||
String result = reference.getReferenceName();
|
new IdentifierImpl(reference.getReferenceName()),
|
||||||
|
types
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
String result = new IdentifierImpl(reference.getReferenceName()).toKotlin();
|
||||||
PsiElement qualifier = reference.getQualifier();
|
PsiElement qualifier = reference.getQualifier();
|
||||||
while (qualifier != null){
|
while (qualifier != null) {
|
||||||
final PsiJavaCodeReferenceElement p = (PsiJavaCodeReferenceElement) qualifier;
|
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();
|
qualifier = p.getQualifier();
|
||||||
}
|
}
|
||||||
myResult = new IdentifierImpl(result);
|
myResult = new ReferenceElement(
|
||||||
|
new IdentifierImpl(result),
|
||||||
|
types
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package org.jetbrains.jet.j2k.visitors;
|
package org.jetbrains.jet.j2k.visitors;
|
||||||
|
|
||||||
import com.intellij.psi.*;
|
import com.intellij.psi.*;
|
||||||
|
import com.intellij.psi.impl.source.PsiClassReferenceType;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.jet.j2k.ast.*;
|
import org.jetbrains.jet.j2k.ast.*;
|
||||||
import org.jetbrains.jet.j2k.util.AstUtil;
|
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 class User() {
|
||||||
open fun main() : Unit {
|
open fun main() : Unit {
|
||||||
var members : List<Member?>? = LinkedList()
|
var members : List<Member?>? = LinkedList<Member?>()
|
||||||
members?.add(Member())
|
members?.add(Member())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user