fixed issue with full name constructor invocation
This commit is contained in:
@@ -9,23 +9,28 @@ import org.jetbrains.annotations.Nullable;
|
||||
public class NewClassExpression extends Expression {
|
||||
private final Element myName;
|
||||
private final Element myArguments;
|
||||
private Expression myQualifier;
|
||||
private AnonymousClass myAnonymousClass = null;
|
||||
|
||||
public NewClassExpression(Element name, Element arguments) {
|
||||
myName = name;
|
||||
myQualifier = EMPTY_EXPRESSION;
|
||||
myArguments = arguments;
|
||||
}
|
||||
|
||||
public NewClassExpression(Element name, Element arguments, @Nullable AnonymousClass anonymousClass) {
|
||||
public NewClassExpression(Expression qualifier, Element name, Element arguments, @Nullable AnonymousClass anonymousClass) {
|
||||
this(name, arguments);
|
||||
myQualifier = qualifier;
|
||||
myAnonymousClass = anonymousClass;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public String toKotlin() {
|
||||
final String callOperator = myQualifier.isNullable() ? QUESTDOT : DOT;
|
||||
final String qualifier = myQualifier.isEmpty() ? EMPTY : myQualifier.toKotlin() + callOperator;
|
||||
return myAnonymousClass != null ?
|
||||
myName.toKotlin() + "(" + myArguments.toKotlin() + ")" + myAnonymousClass.toKotlin() :
|
||||
myName.toKotlin() + "(" + myArguments.toKotlin() + ")";
|
||||
qualifier + myName.toKotlin() + "(" + myArguments.toKotlin() + ")" + myAnonymousClass.toKotlin() :
|
||||
qualifier + myName.toKotlin() + "(" + myArguments.toKotlin() + ")";
|
||||
}
|
||||
}
|
||||
@@ -42,7 +42,19 @@ public class ElementVisitor extends JavaElementVisitor {
|
||||
@Override
|
||||
public void visitReferenceElement(PsiJavaCodeReferenceElement reference) {
|
||||
super.visitReferenceElement(reference);
|
||||
myResult = new IdentifierImpl(reference.getQualifiedName()); // TODO
|
||||
|
||||
if (!reference.isQualified())
|
||||
myResult = new IdentifierImpl(reference.getReferenceName());
|
||||
else {
|
||||
String result = reference.getReferenceName();
|
||||
PsiElement qualifier = reference.getQualifier();
|
||||
while (qualifier != null){
|
||||
final PsiJavaCodeReferenceElement p = (PsiJavaCodeReferenceElement) qualifier;
|
||||
result = p.getReferenceName() + "." + result; // TODO: maybe need to replace by safe call?
|
||||
qualifier = p.getQualifier();
|
||||
}
|
||||
myResult = new IdentifierImpl(result);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -196,6 +196,7 @@ public class ExpressionVisitor extends StatementVisitor {
|
||||
} else { // new Class(): common case
|
||||
final PsiAnonymousClass anonymousClass = expression.getAnonymousClass();
|
||||
myResult = new NewClassExpression(
|
||||
expressionToExpression(expression.getQualifier()),
|
||||
elementToElement(expression.getClassOrAnonymousClassReference()),
|
||||
elementToElement(expression.getArgumentList()),
|
||||
anonymousClass != null ? anonymousClassToAnonymousClass(anonymousClass) : null
|
||||
@@ -369,4 +370,4 @@ public class ExpressionVisitor extends StatementVisitor {
|
||||
getOperatorString(expression.getOperationTokenType())
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -31,13 +31,13 @@ _lastName = lastName
|
||||
return this
|
||||
}
|
||||
open public fun Build() : Customer? {
|
||||
return org.test.customer.Customer(_firstName, _lastName)
|
||||
return Customer(_firstName, _lastName)
|
||||
}
|
||||
}
|
||||
public open class User() {
|
||||
class object {
|
||||
open public fun main() : Unit {
|
||||
var customer : Customer? = org.test.customer.CustomerBuilder().WithFirstName("Homer")?.WithLastName("Simpson")?.Build()
|
||||
var customer : Customer? = CustomerBuilder().WithFirstName("Homer")?.WithLastName("Simpson")?.Build()
|
||||
System.out?.println(customer?.getFirstName())
|
||||
System.out?.println(customer?.getLastName())
|
||||
}
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
new myApp.Foo();
|
||||
@@ -1 +0,0 @@
|
||||
myApp.Foo()
|
||||
@@ -1,4 +1,4 @@
|
||||
java.lang.Runnable() {
|
||||
Runnable() {
|
||||
override public fun run() : Unit {
|
||||
System.out?.println("Run")
|
||||
}
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
package test;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
class User {
|
||||
void main() {
|
||||
List list = new java.util.LinkedList();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
namespace test {
|
||||
import java.util.List
|
||||
open class User() {
|
||||
open fun main() : Unit {
|
||||
var list : List? = java.util.LinkedList()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3,7 +3,7 @@ open class Library() {
|
||||
}
|
||||
open class User() {
|
||||
open fun main() : Unit {
|
||||
var lib : Library? = org.test.Library()
|
||||
var lib : Library? = Library()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
class OuterClass {
|
||||
class InnerClass {
|
||||
}
|
||||
}
|
||||
|
||||
class User {
|
||||
void main() {
|
||||
OuterClass outerObject = new OuterClass();
|
||||
OuterClass.InnerClass innerObject = outerObject.new InnerClass();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
open class OuterClass() {
|
||||
open class InnerClass() {
|
||||
}
|
||||
}
|
||||
open class User() {
|
||||
open fun main() : Unit {
|
||||
var outerObject : OuterClass? = OuterClass()
|
||||
var innerObject : InnerClass? = outerObject?.InnerClass()
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package org.test;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.LinkedList;
|
||||
|
||||
class Member {}
|
||||
|
||||
class User {
|
||||
void main() {
|
||||
List<Member> members = new LinkedList<Member>();
|
||||
members.add(new Member());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
namespace org.test {
|
||||
import java.util.List
|
||||
import java.util.LinkedList
|
||||
open class Member() {
|
||||
}
|
||||
open class User() {
|
||||
open fun main() : Unit {
|
||||
var members : List<Member?>? = LinkedList()
|
||||
members?.add(Member())
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package demo;
|
||||
|
||||
class Foo {
|
||||
static class Bar {}
|
||||
}
|
||||
|
||||
class User {
|
||||
void main() {
|
||||
Foo.Bar boo = new Foo.Bar();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
namespace demo {
|
||||
open class Foo() {
|
||||
class object {
|
||||
open class Bar() {
|
||||
}
|
||||
}
|
||||
}
|
||||
open class User() {
|
||||
open fun main() : Unit {
|
||||
var boo : Bar? = Foo.Bar()
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user