diff --git a/src/org/jetbrains/jet/j2k/ast/Class.java b/src/org/jetbrains/jet/j2k/ast/Class.java index c00c63a32e3..e1db54e456d 100644 --- a/src/org/jetbrains/jet/j2k/ast/Class.java +++ b/src/org/jetbrains/jet/j2k/ast/Class.java @@ -111,7 +111,7 @@ public class Class extends Member { result.add(new Function( new IdentifierImpl("init"), modifiers, - new ClassType(myName), + new ClassType(myName, typeParameters, false), typeParameters, f.getParams(), block diff --git a/src/org/jetbrains/jet/j2k/ast/ClassType.java b/src/org/jetbrains/jet/j2k/ast/ClassType.java index 830c3a49e5d..5e330877280 100644 --- a/src/org/jetbrains/jet/j2k/ast/ClassType.java +++ b/src/org/jetbrains/jet/j2k/ast/ClassType.java @@ -11,9 +11,15 @@ import java.util.List; */ public class ClassType extends Type { private final Identifier myType; - private final List myParameters; + private final List myParameters; - public ClassType(Identifier type, List parameters) { + public ClassType(Identifier type, List parameters, boolean nullable) { + myType = type; + myParameters = parameters; + myNullable = nullable; + } + + public ClassType(Identifier type, List parameters) { myType = type; myParameters = parameters; } diff --git a/testData/ast/constructors/file/genericIdentifier.kt b/testData/ast/constructors/file/genericIdentifier.kt index 249ba2f3b56..ed47317c8d5 100644 --- a/testData/ast/constructors/file/genericIdentifier.kt +++ b/testData/ast/constructors/file/genericIdentifier.kt @@ -10,16 +10,16 @@ open public fun getName() : T? { return myName } class object { -open public fun init(name : T?) : Identifier { +open public fun init(name : T?) : Identifier { val __ = Identifier(name, false) return __ } -open public fun init(name : T?, isNullable : Boolean) : Identifier { +open public fun init(name : T?, isNullable : Boolean) : Identifier { val __ = Identifier(name, false) __.myNullable = isNullable return __ } -open public fun init(name : T?, hasDollar : Boolean, isNullable : Boolean) : Identifier { +open public fun init(name : T?, hasDollar : Boolean, isNullable : Boolean) : Identifier { val __ = Identifier(name, hasDollar) __.myNullable = isNullable return __ diff --git a/testData/ast/issues/file/kt-638.jav b/testData/ast/issues/file/kt-638.jav new file mode 100644 index 00000000000..8a5b22477da --- /dev/null +++ b/testData/ast/issues/file/kt-638.jav @@ -0,0 +1,33 @@ +public class Identifier { + private final T myName; + private boolean myHasDollar; + private boolean myNullable = true; + + public Identifier(T name) { + myName = name; + } + + public Identifier(T name, boolean isNullable) { + myName = name; + myNullable = isNullable; + } + + public Identifier(T name, boolean hasDollar, boolean isNullable) { + myName = name; + myHasDollar = hasDollar; + myNullable = isNullable; + } + + @Override + public T getName() { + return myName; + } +} + +public class User { + public static void main(String[] args) { + Identifier i1 = new Identifier("name", false, true); + Identifier i2 = new Identifier("name", false); + Identifier i3 = new Identifier("name"); + } +} \ No newline at end of file diff --git a/testData/ast/issues/file/kt-638.kt b/testData/ast/issues/file/kt-638.kt new file mode 100644 index 00000000000..9b67dfd15bd --- /dev/null +++ b/testData/ast/issues/file/kt-638.kt @@ -0,0 +1,38 @@ +public open class Identifier(_myName : T?, _myHasDollar : Boolean) { +{ +myName = _myName +myHasDollar = _myHasDollar +} +private val myName : T? = null +private var myHasDollar : Boolean = false +private var myNullable : Boolean = true +open public fun getName() : T? { +return myName +} +class object { +open public fun init(name : T?) : Identifier { +val __ = Identifier(name, false) +return __ +} +open public fun init(name : T?, isNullable : Boolean) : Identifier { +val __ = Identifier(name, false) +__.myNullable = isNullable +return __ +} +open public fun init(name : T?, hasDollar : Boolean, isNullable : Boolean) : Identifier { +val __ = Identifier(name, hasDollar) +__.myNullable = isNullable +return __ +} +} +} +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") +} +} +} +fun main(args : Array?) = User.main(args) \ No newline at end of file