From 0ed16b5c9c716d2c0ab22d68c88725d273175b3a Mon Sep 17 00:00:00 2001 From: Sergey Ignatov Date: Mon, 16 Jan 2012 18:44:33 +0400 Subject: [PATCH] KT-1048 Need to replace missed generics parameters by theirs upper bounds --- .../jet/j2k/ast/StarProjectionType.java | 7 +++++++ .../jet/j2k/visitors/TypeVisitor.java | 9 +++++++-- testData/ast/class/file/kt-639.kt | 4 ++-- .../ast/constructors/file/genericIdentifier.kt | 4 ++-- testData/ast/issues/file/kt-1048.jav | 18 ++++++++++++++++++ testData/ast/issues/file/kt-1048.kt | 14 ++++++++++++++ testData/ast/issues/file/kt-638.kt | 4 ++-- .../file/fullQualifiedName.kt | 2 +- .../file/fullQualifiedName2.kt | 2 +- testData/ast/rawGenerics/file/kt-540-map.kt | 4 ++-- .../rawGenerics/file/kt-540-rawGenericClass.kt | 6 +++--- testData/ast/rawGenerics/file/kt-540.kt | 4 ++-- 12 files changed, 61 insertions(+), 17 deletions(-) create mode 100644 testData/ast/issues/file/kt-1048.jav create mode 100644 testData/ast/issues/file/kt-1048.kt diff --git a/src/org/jetbrains/jet/j2k/ast/StarProjectionType.java b/src/org/jetbrains/jet/j2k/ast/StarProjectionType.java index c409b98da49..145b322e2d3 100644 --- a/src/org/jetbrains/jet/j2k/ast/StarProjectionType.java +++ b/src/org/jetbrains/jet/j2k/ast/StarProjectionType.java @@ -9,6 +9,13 @@ public class StarProjectionType extends Type { @NotNull @Override public String toKotlin() { + G g = new G(""); + G g2 = new G(""); return STAR; } } + +class G { + public G(T t) { + } +} \ No newline at end of file diff --git a/src/org/jetbrains/jet/j2k/visitors/TypeVisitor.java b/src/org/jetbrains/jet/j2k/visitors/TypeVisitor.java index acaa8c6b9d6..dc7d1814e07 100644 --- a/src/org/jetbrains/jet/j2k/visitors/TypeVisitor.java +++ b/src/org/jetbrains/jet/j2k/visitors/TypeVisitor.java @@ -116,8 +116,13 @@ public class TypeVisitor extends PsiTypeVisitor { if (resolve != null) { if (resolve instanceof PsiClass) //noinspection UnusedDeclaration - for (PsiTypeParameter p : ((PsiClass) resolve).getTypeParameters()) - typeParams.add(new StarProjectionType()); + for (PsiTypeParameter p : ((PsiClass) resolve).getTypeParameters()) { + Type boundType = p.getSuperTypes().length > 0 ? + new ClassType(new IdentifierImpl(getClassTypeName(p.getSuperTypes()[0])), typesToTypeList(p.getSuperTypes()[0].getParameters()), true) : + new StarProjectionType(); + + typeParams.add(boundType); + } } } return typeParams; diff --git a/testData/ast/class/file/kt-639.kt b/testData/ast/class/file/kt-639.kt index 3164965fa1f..fe438a103ec 100644 --- a/testData/ast/class/file/kt-639.kt +++ b/testData/ast/class/file/kt-639.kt @@ -14,8 +14,8 @@ return __ } open class User() { open fun main() : Unit { -var m : HashMap<*, *>? = HashMap(1) -var m2 : HashMap<*, *>? = HashMap(10) +var m : HashMap? = HashMap(1) +var m2 : HashMap? = HashMap(10) var t1 : Test? = Test.init() var t2 : Test? = Test.init("") } diff --git a/testData/ast/constructors/file/genericIdentifier.kt b/testData/ast/constructors/file/genericIdentifier.kt index d4bbdd791bd..56c0cebadac 100644 --- a/testData/ast/constructors/file/genericIdentifier.kt +++ b/testData/ast/constructors/file/genericIdentifier.kt @@ -30,8 +30,8 @@ public open class User() { class object { open public fun main() : Unit { var i1 : Identifier<*>? = Identifier.init("name", false, true) -var i2 : Identifier<*>? = Identifier.init("name", false) -var i3 : Identifier<*>? = Identifier.init("name") +var i2 : Identifier? = Identifier.init("name", false) +var i3 : Identifier? = Identifier.init("name") } } } \ No newline at end of file diff --git a/testData/ast/issues/file/kt-1048.jav b/testData/ast/issues/file/kt-1048.jav new file mode 100644 index 00000000000..0b198292616 --- /dev/null +++ b/testData/ast/issues/file/kt-1048.jav @@ -0,0 +1,18 @@ +import java.util.HashMap; + +class G { + public G(T t) { + } +} + +public class Java { + void test() { + HashMap m = new HashMap(); + m.put(1, 1); + } + void test2() { + HashMap m = new HashMap(); + G g = new G(""); + G g2 = new G(""); + } +} \ No newline at end of file diff --git a/testData/ast/issues/file/kt-1048.kt b/testData/ast/issues/file/kt-1048.kt new file mode 100644 index 00000000000..69d30dfa1a3 --- /dev/null +++ b/testData/ast/issues/file/kt-1048.kt @@ -0,0 +1,14 @@ +import java.util.HashMap +open class G(t : T?) { +} +public open class Java() { +open fun test() : Unit { +var m : HashMap? = HashMap() +m?.put(1, 1) +} +open fun test2() : Unit { +var m : HashMap<*, *>? = HashMap() +var g : G? = G("") +var g2 : G? = G("") +} +} \ No newline at end of file diff --git a/testData/ast/issues/file/kt-638.kt b/testData/ast/issues/file/kt-638.kt index bb436c18cb7..3176bdd81f3 100644 --- a/testData/ast/issues/file/kt-638.kt +++ b/testData/ast/issues/file/kt-638.kt @@ -30,8 +30,8 @@ public open class User() { class object { open public fun main(args : Array?) : Unit { var i1 : Identifier<*>? = Identifier.init("name", false, true) -var i2 : Identifier<*>? = Identifier.init("name", false) -var i3 : Identifier<*>? = Identifier.init("name") +var i2 : Identifier? = Identifier.init("name", false) +var i3 : Identifier? = Identifier.init("name") } } } diff --git a/testData/ast/newClassExpression/file/fullQualifiedName.kt b/testData/ast/newClassExpression/file/fullQualifiedName.kt index e89453f3809..07d2dfb7204 100644 --- a/testData/ast/newClassExpression/file/fullQualifiedName.kt +++ b/testData/ast/newClassExpression/file/fullQualifiedName.kt @@ -2,6 +2,6 @@ package test import java.util.List open class User() { open fun main() : Unit { -var list : List<*>? = java.util.LinkedList() +var list : List? = 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 index bdcb458a76f..09e95bef826 100644 --- a/testData/ast/newClassExpression/file/fullQualifiedName2.kt +++ b/testData/ast/newClassExpression/file/fullQualifiedName2.kt @@ -1,6 +1,6 @@ package test open class User() { open fun main() : Unit { -var list : java.util.List<*>? = java.util.LinkedList() +var list : java.util.List? = java.util.LinkedList() } } \ No newline at end of file diff --git a/testData/ast/rawGenerics/file/kt-540-map.kt b/testData/ast/rawGenerics/file/kt-540-map.kt index 42fb66b7c4e..ce580f8680a 100644 --- a/testData/ast/rawGenerics/file/kt-540-map.kt +++ b/testData/ast/rawGenerics/file/kt-540-map.kt @@ -3,7 +3,7 @@ import java.util.HashMap open class Test() { open fun main() : Unit { var commonMap : HashMap? = HashMap() -var rawMap : HashMap<*, *>? = HashMap() -var superRawMap : HashMap<*, *>? = HashMap() +var rawMap : HashMap? = HashMap() +var superRawMap : HashMap? = HashMap() } } \ No newline at end of file diff --git a/testData/ast/rawGenerics/file/kt-540-rawGenericClass.kt b/testData/ast/rawGenerics/file/kt-540-rawGenericClass.kt index 426b2190bc9..976f317b913 100644 --- a/testData/ast/rawGenerics/file/kt-540-rawGenericClass.kt +++ b/testData/ast/rawGenerics/file/kt-540-rawGenericClass.kt @@ -6,8 +6,8 @@ System.out?.println(e) } open class Test() { open fun main() : Unit { -var raw1 : Collection<*>? = Collection(1) -var raw2 : Collection<*>? = Collection(1) -var raw3 : Collection<*>? = Collection("1") +var raw1 : Collection? = Collection(1) +var raw2 : Collection? = Collection(1) +var raw3 : Collection? = Collection("1") } } \ No newline at end of file diff --git a/testData/ast/rawGenerics/file/kt-540.kt b/testData/ast/rawGenerics/file/kt-540.kt index 6db46c17105..dd3f0d27c4c 100644 --- a/testData/ast/rawGenerics/file/kt-540.kt +++ b/testData/ast/rawGenerics/file/kt-540.kt @@ -4,7 +4,7 @@ import java.util.LinkedList open class Test() { open fun main() : Unit { var common : List? = LinkedList() -var raw : List<*>? = LinkedList() -var superRaw : List<*>? = LinkedList() +var raw : List? = LinkedList() +var superRaw : List? = LinkedList() } } \ No newline at end of file