qualified types supported

This commit is contained in:
Sergey Ignatov
2011-11-17 18:08:44 +04:00
parent 82fbc98757
commit a08fb4fb0a
4 changed files with 23 additions and 12 deletions
@@ -47,18 +47,15 @@ public class TypeVisitor extends PsiTypeVisitor<Type> {
if (classType instanceof PsiClassReferenceType) { // TODO: simplify if (classType instanceof PsiClassReferenceType) { // TODO: simplify
final PsiJavaCodeReferenceElement reference = ((PsiClassReferenceType) classType).getReference(); final PsiJavaCodeReferenceElement reference = ((PsiClassReferenceType) classType).getReference();
PsiElement resolveClass = reference.resolve(); if (reference.isQualified()) {
if (resolveClass != null && resolveClass instanceof PsiClass) { String result = new IdentifierImpl(reference.getReferenceName()).toKotlin();
final PsiClass innerClass = (PsiClass) resolveClass; PsiElement qualifier = reference.getQualifier();
PsiClass outerClass = innerClass.getContainingClass(); while (qualifier != null) {
if (outerClass != null) { final PsiJavaCodeReferenceElement p = (PsiJavaCodeReferenceElement) qualifier;
String result = new IdentifierImpl(innerClass.getName()).toKotlin(); result = new IdentifierImpl(p.getReferenceName()).toKotlin() + "." + result; // TODO: maybe need to replace by safe call?
while (outerClass != null) { qualifier = p.getQualifier();
result = new IdentifierImpl(outerClass.getName()).toKotlin() + "." + result;
outerClass = outerClass.getContainingClass();
}
classTypeName = result;
} }
classTypeName = result;
} }
} }
@@ -1,6 +1,6 @@
open class Library() { open class Library() {
class object { class object {
val ourOut : PrintStream? val ourOut : java.io.PrintStream?
} }
} }
open class User() { open class User() {
@@ -0,0 +1,7 @@
package test;
class User {
void main() {
java.util.List list = new java.util.LinkedList();
}
}
@@ -0,0 +1,7 @@
namespace test {
open class User() {
open fun main() : Unit {
var list : java.util.List? = java.util.LinkedList()
}
}
}