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
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;
}
}
@@ -1,6 +1,6 @@
open class Library() {
class object {
val ourOut : PrintStream?
val ourOut : java.io.PrintStream?
}
}
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()
}
}
}