From a08fb4fb0a3555de746bc23e83cc49fc417d4b35 Mon Sep 17 00:00:00 2001 From: Sergey Ignatov Date: Thu, 17 Nov 2011 18:08:44 +0400 Subject: [PATCH] qualified types supported --- .../jet/j2k/visitors/TypeVisitor.java | 19 ++++++++----------- .../file/libraryFieldCall.kt | 2 +- .../file/fullQualifiedName2.jav | 7 +++++++ .../file/fullQualifiedName2.kt | 7 +++++++ 4 files changed, 23 insertions(+), 12 deletions(-) create mode 100644 testData/ast/newClassExpression/file/fullQualifiedName2.jav create mode 100644 testData/ast/newClassExpression/file/fullQualifiedName2.kt diff --git a/src/org/jetbrains/jet/j2k/visitors/TypeVisitor.java b/src/org/jetbrains/jet/j2k/visitors/TypeVisitor.java index 340eb09240b..31a100edb0d 100644 --- a/src/org/jetbrains/jet/j2k/visitors/TypeVisitor.java +++ b/src/org/jetbrains/jet/j2k/visitors/TypeVisitor.java @@ -47,18 +47,15 @@ public class TypeVisitor extends PsiTypeVisitor { if (classType instanceof PsiClassReferenceType) { // TODO: simplify final PsiJavaCodeReferenceElement reference = ((PsiClassReferenceType) classType).getReference(); - PsiElement resolveClass = reference.resolve(); - if (resolveClass != null && resolveClass instanceof PsiClass) { - final PsiClass innerClass = (PsiClass) resolveClass; - PsiClass outerClass = innerClass.getContainingClass(); - if (outerClass != null) { - String result = new IdentifierImpl(innerClass.getName()).toKotlin(); - while (outerClass != null) { - result = new IdentifierImpl(outerClass.getName()).toKotlin() + "." + result; - outerClass = outerClass.getContainingClass(); - } - classTypeName = result; + if (reference.isQualified()) { + String result = new IdentifierImpl(reference.getReferenceName()).toKotlin(); + PsiElement qualifier = reference.getQualifier(); + while (qualifier != null) { + final PsiJavaCodeReferenceElement p = (PsiJavaCodeReferenceElement) qualifier; + result = new IdentifierImpl(p.getReferenceName()).toKotlin() + "." + result; // TODO: maybe need to replace by safe call? + qualifier = p.getQualifier(); } + classTypeName = result; } } diff --git a/testData/ast/callChainExpression/file/libraryFieldCall.kt b/testData/ast/callChainExpression/file/libraryFieldCall.kt index 868d83f109a..3de449db532 100644 --- a/testData/ast/callChainExpression/file/libraryFieldCall.kt +++ b/testData/ast/callChainExpression/file/libraryFieldCall.kt @@ -1,6 +1,6 @@ open class Library() { class object { -val ourOut : PrintStream? +val ourOut : java.io.PrintStream? } } open class User() { diff --git a/testData/ast/newClassExpression/file/fullQualifiedName2.jav b/testData/ast/newClassExpression/file/fullQualifiedName2.jav new file mode 100644 index 00000000000..e8ef97b8b9e --- /dev/null +++ b/testData/ast/newClassExpression/file/fullQualifiedName2.jav @@ -0,0 +1,7 @@ +package test; + +class User { + void main() { + java.util.List list = new java.util.LinkedList(); + } +} \ No newline at end of file diff --git a/testData/ast/newClassExpression/file/fullQualifiedName2.kt b/testData/ast/newClassExpression/file/fullQualifiedName2.kt new file mode 100644 index 00000000000..2196aa0fff2 --- /dev/null +++ b/testData/ast/newClassExpression/file/fullQualifiedName2.kt @@ -0,0 +1,7 @@ +namespace test { +open class User() { +open fun main() : Unit { +var list : java.util.List? = java.util.LinkedList() +} +} +} \ No newline at end of file