diff --git a/Makefile b/Makefile index f2b7eb174f3..3b2e38e499f 100644 --- a/Makefile +++ b/Makefile @@ -8,4 +8,4 @@ disable-sandbox: cd ~/.IdeaIC11/system/ && mv plugins-sandbox plugins-sandbox.tmp enable-sandbox: - cd ~/.IdeaIC11/system/ && mv plugins-sandbox.tmp ./plugins-sandbox \ No newline at end of file + cd ~/.IdeaIC11/system/ && rm -rf plugins-sandbox && mv plugins-sandbox.tmp ./plugins-sandbox \ No newline at end of file diff --git a/src/org/jetbrains/jet/j2k/Converter.java b/src/org/jetbrains/jet/j2k/Converter.java index 0c63e555730..e0b8c5c88df 100644 --- a/src/org/jetbrains/jet/j2k/Converter.java +++ b/src/org/jetbrains/jet/j2k/Converter.java @@ -135,15 +135,22 @@ public class Converter { if (method.getParent() instanceof PsiClass && ((PsiClass) method.getParent()).isInterface()) modifiers.remove(Modifier.ABSTRACT); - if (method.isConstructor()) + + if (method.isConstructor()) { + boolean isPrimary = false; + if (method.getParent() instanceof PsiClass && ((PsiClass) method.getParent()).getConstructors().length == 1) + isPrimary = true; + return new Constructor( identifier, modifiers, type, typeParameters, params, - body + body, + isPrimary ); + } return new Function( identifier, modifiers, diff --git a/src/org/jetbrains/jet/j2k/ast/Class.java b/src/org/jetbrains/jet/j2k/ast/Class.java index 4d2ea0238ef..4c0ddded791 100644 --- a/src/org/jetbrains/jet/j2k/ast/Class.java +++ b/src/org/jetbrains/jet/j2k/ast/Class.java @@ -1,6 +1,7 @@ package org.jetbrains.jet.j2k.ast; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.j2k.util.AstUtil; import java.util.LinkedList; @@ -32,6 +33,29 @@ public class Class extends Member { myFields = fields; } + @Nullable + private Constructor getPrimaryConstructor() { + for (Function m : myMethods) + if (m.getKind() == Kind.CONSTRUCTOR) + if (((Constructor) m).isPrimary()) + return (Constructor) m; + return null; + } + + String primaryConstructorSignatureToKotlin() { + Constructor maybeConstructor = getPrimaryConstructor(); + if (maybeConstructor != null) + return maybeConstructor.primarySignatureToKotlin(); + return "(" + ")"; + } + + String primaryConstructorBodyToKotlin() { + Constructor maybeConstructor = getPrimaryConstructor(); + if (maybeConstructor != null) + return maybeConstructor.primaryBodyToKotlin(); + return EMPTY; + } + private boolean hasWhere() { for (Element t : myTypeParameters) if (t instanceof TypeParameter && ((TypeParameter) t).hasWhere()) @@ -99,8 +123,10 @@ public class Class extends Member { } String bodyToKotlin() { - return SPACE + "{" + N + classObjectToKotlin() + N + + return SPACE + "{" + N + + classObjectToKotlin() + N + AstUtil.joinNodes(getNonStatic(myFields), N) + N + + primaryConstructorBodyToKotlin() + N + AstUtil.joinNodes(getNonStatic(methodsExceptConstructors()), N) + N + AstUtil.joinNodes(getNonStatic(myInnerClasses), N) + N + "}"; @@ -139,9 +165,9 @@ public class Class extends Member { @NotNull @Override public String toKotlin() { - return modifiersToKotlin() + TYPE + SPACE + myName.toKotlin() + typeParametersToKotlin() + + return modifiersToKotlin() + TYPE + SPACE + myName.toKotlin() + typeParametersToKotlin() + primaryConstructorSignatureToKotlin() + implementTypesToKotlin() + typeParameterWhereToKotlin() + bodyToKotlin(); } -} +} \ No newline at end of file diff --git a/src/org/jetbrains/jet/j2k/ast/Constructor.java b/src/org/jetbrains/jet/j2k/ast/Constructor.java index 3e97cadd26f..c3231f7fafd 100644 --- a/src/org/jetbrains/jet/j2k/ast/Constructor.java +++ b/src/org/jetbrains/jet/j2k/ast/Constructor.java @@ -9,11 +9,26 @@ import java.util.Set; * @author ignatov */ public class Constructor extends Function { - public Constructor(Identifier identifier, Set modifiers, Type type, List typeParameters, Element params, Block block) { + private boolean myIsPrimary; + + public Constructor(Identifier identifier, Set modifiers, Type type, List typeParameters, Element params, Block block, boolean isPrimary) { super(identifier, modifiers, type, typeParameters, params, block); + myIsPrimary = isPrimary; } - public String primary() { + public String primarySignatureToKotlin() { + return "(" + myParams.toKotlin() + ")"; + } + + public String primaryBodyToKotlin() { + return myBlock.toKotlin(); + } + + public boolean isPrimary() { + return myIsPrimary; + } + + public String privatePrimaryToKotlin() { return modifiersToKotlin() + "(" + myParams.toKotlin() + ")" + SPACE + myBlock.toKotlin(); } diff --git a/src/org/jetbrains/jet/j2k/ast/Enum.java b/src/org/jetbrains/jet/j2k/ast/Enum.java index 4f69eb11f23..e7c7dd0867f 100644 --- a/src/org/jetbrains/jet/j2k/ast/Enum.java +++ b/src/org/jetbrains/jet/j2k/ast/Enum.java @@ -26,7 +26,7 @@ public class Enum extends Class { private String primaryConstructorToKotlin() { Constructor maybeConstructor = getPrimaryConstructor(); if (maybeConstructor != null) - return maybeConstructor.primary(); + return maybeConstructor.privatePrimaryToKotlin(); return EMPTY; } @@ -45,4 +45,4 @@ public class Enum extends Class { AstUtil.joinNodes(myInnerClasses, N) + N + "}"; } -} +} \ No newline at end of file diff --git a/src/org/jetbrains/jet/j2k/ast/Trait.java b/src/org/jetbrains/jet/j2k/ast/Trait.java index 14fea577b6e..db6d5a8af86 100644 --- a/src/org/jetbrains/jet/j2k/ast/Trait.java +++ b/src/org/jetbrains/jet/j2k/ast/Trait.java @@ -14,6 +14,11 @@ public class Trait extends Class { TYPE = "trait"; } + @Override + String primaryConstructorSignatureToKotlin() { + return EMPTY; + } + boolean needOpenModifier() { return false; } diff --git a/src/org/jetbrains/jet/j2k/visitors/ExpressionVisitor.java b/src/org/jetbrains/jet/j2k/visitors/ExpressionVisitor.java index ebdb7d80e3e..65e2ba87160 100644 --- a/src/org/jetbrains/jet/j2k/visitors/ExpressionVisitor.java +++ b/src/org/jetbrains/jet/j2k/visitors/ExpressionVisitor.java @@ -229,10 +229,33 @@ public class ExpressionVisitor extends StatementVisitor implements Visitor { @Override public void visitReferenceExpression(PsiReferenceExpression expression) { super.visitReferenceExpression(expression); + + boolean hasDollar = false; + final PsiReference reference = expression.getReference(); + if (reference != null) { + final PsiElement resolvedReference = reference.resolve(); + if (resolvedReference != null) { + if (resolvedReference instanceof PsiField) { + final PsiModifierList modifierList = ((PsiField) resolvedReference).getModifierList(); + if (modifierList != null && modifierList.hasExplicitModifier(PsiModifier.FINAL)) { + PsiElement context = expression.getContext(); + while (context != null) { + if (context instanceof PsiMethod && ((PsiMethod) context).isConstructor()) { + hasDollar = true; + break; + } + context = context.getContext(); + } + } + } + } + } + boolean isNullable = typeToType(expression.getType()).isNullable(); + final IdentifierImpl identifier = hasDollar ? new IdentifierImpl("$" + expression.getReferenceName(), isNullable) : new IdentifierImpl(expression.getReferenceName(), isNullable); myResult = new CallChainExpression( expressionToExpression(expression.getQualifierExpression()), - new IdentifierImpl(expression.getReferenceName(), isNullable) // TODO: if type exists so id is nullable + identifier // TODO: if type exists so id is nullable ); } diff --git a/test/org/jetbrains/jet/j2k/JavaToKotlinConverterTest.java b/test/org/jetbrains/jet/j2k/JavaToKotlinConverterTest.java index 339675b623f..7c91759fc90 100644 --- a/test/org/jetbrains/jet/j2k/JavaToKotlinConverterTest.java +++ b/test/org/jetbrains/jet/j2k/JavaToKotlinConverterTest.java @@ -47,15 +47,20 @@ public class JavaToKotlinConverterTest extends LightDaemonAnalyzerTestCase { else if (javaFile.getParent().endsWith("/class")) actual = classToKotlin(javaCode); else if (javaFile.getParent().endsWith("/file")) actual = fileToKotlin(javaCode); - assert !actual.equals(""); + assert !actual.equals("") : "Specify what is it: file, class, method, statement or expression"; + final File tmp = new File(kotlinPath + ".tmp"); - if (!expected.equals(actual)) - writeStringToFile(tmp, actual); - if (expected.equals(actual) && tmp.exists()) - tmp.delete(); + if (!expected.equals(actual)) writeStringToFile(tmp, actual); + if (expected.equals(actual) && tmp.exists()) tmp.delete(); + Assert.assertEquals(expected, actual); } + @Override + protected void setUp() throws Exception { + super.setUp(); + } + @NotNull protected String getTestFilePath() { return myDataPath + File.separator + myName + ".jav"; @@ -114,7 +119,7 @@ public class JavaToKotlinConverterTest extends LightDaemonAnalyzerTestCase { @NotNull protected String methodToKotlin(String text) throws IOException { String result = classToKotlin("final class C {" + text + "}") - .replaceAll("class C \\{", ""); + .replaceAll("class C\\(\\) \\{", ""); result = result.substring(0, result.lastIndexOf("}")); return prettify(result); } diff --git a/testData/ast/callChainExpression/file/libraryFieldCall.kt b/testData/ast/callChainExpression/file/libraryFieldCall.kt index 23aed853064..a2964383fe6 100644 --- a/testData/ast/callChainExpression/file/libraryFieldCall.kt +++ b/testData/ast/callChainExpression/file/libraryFieldCall.kt @@ -1,10 +1,10 @@ namespace { -open class Library { +open class Library() { class object { val ourOut : PrintStream? } } -open class User { +open class User() { open fun main() : Unit { Library.ourOut?.print() } diff --git a/testData/ast/callChainExpression/file/libraryMethodCall.kt b/testData/ast/callChainExpression/file/libraryMethodCall.kt index 18c230c50f7..6edfbe4c62e 100644 --- a/testData/ast/callChainExpression/file/libraryMethodCall.kt +++ b/testData/ast/callChainExpression/file/libraryMethodCall.kt @@ -1,5 +1,5 @@ namespace { -open class Library { +open class Library() { class object { open fun call() : Unit { } @@ -8,7 +8,7 @@ return "" } } } -open class User { +open class User() { open fun main() : Unit { Library.call() Library.getString()?.isEmpty() diff --git a/testData/ast/callChainExpression/file/libraryMethodCallFromInstance.kt b/testData/ast/callChainExpression/file/libraryMethodCallFromInstance.kt index 25c9bffb924..c51089095b2 100644 --- a/testData/ast/callChainExpression/file/libraryMethodCallFromInstance.kt +++ b/testData/ast/callChainExpression/file/libraryMethodCallFromInstance.kt @@ -1,12 +1,12 @@ namespace { -open class Library { +open class Library() { open fun call() : Unit { } open fun getString() : String? { return "" } } -open class User { +open class User() { open fun main() : Unit { var lib : Library? = Library() lib?.call() diff --git a/testData/ast/callChainExpression/file/libraryStringFieldCall.kt b/testData/ast/callChainExpression/file/libraryStringFieldCall.kt index 82210f26905..5a349644206 100644 --- a/testData/ast/callChainExpression/file/libraryStringFieldCall.kt +++ b/testData/ast/callChainExpression/file/libraryStringFieldCall.kt @@ -1,8 +1,8 @@ namespace { -open class Library { +open class Library() { public val myString : String? } -open class User { +open class User() { open fun main() : Unit { Library.myString?.isEmpty() } diff --git a/testData/ast/class/class/abstractClass.kt b/testData/ast/class/class/abstractClass.kt index 6bbb45f4c22..7f1ee42ef6f 100644 --- a/testData/ast/class/class/abstractClass.kt +++ b/testData/ast/class/class/abstractClass.kt @@ -1,4 +1,4 @@ -abstract open class A { +abstract open class A() { abstract open fun callme() : Unit open fun callmetoo() : Unit { print("This is a concrete method.") diff --git a/testData/ast/class/class/abstractClassShape.kt b/testData/ast/class/class/abstractClassShape.kt index 747d1875178..a4a33c15910 100644 --- a/testData/ast/class/class/abstractClassShape.kt +++ b/testData/ast/class/class/abstractClassShape.kt @@ -1,5 +1,7 @@ -abstract open class Shape { +abstract open class Shape() { public var color : String? +{ +} open public fun setColor(c : String?) : Unit { color = c } diff --git a/testData/ast/class/class/class.kt b/testData/ast/class/class/class.kt index 23873d0aaa3..bc29d4b27a1 100644 --- a/testData/ast/class/class/class.kt +++ b/testData/ast/class/class/class.kt @@ -1,2 +1,2 @@ -open class Test { +open class Test() { } \ No newline at end of file diff --git a/testData/ast/class/class/classWithEmptyMethods.kt b/testData/ast/class/class/classWithEmptyMethods.kt index 6d0b778a365..d92d545ffa0 100644 --- a/testData/ast/class/class/classWithEmptyMethods.kt +++ b/testData/ast/class/class/classWithEmptyMethods.kt @@ -1,4 +1,4 @@ -class T { +class T() { open fun main() : Unit { } open fun i() : Int { diff --git a/testData/ast/class/class/classWithFields.kt b/testData/ast/class/class/classWithFields.kt index e4b83fcd5fa..defec3e4ac3 100644 --- a/testData/ast/class/class/classWithFields.kt +++ b/testData/ast/class/class/classWithFields.kt @@ -1,4 +1,4 @@ -class T { +class T() { var a : String? = "abc" var b : Int = 10 } \ No newline at end of file diff --git a/testData/ast/class/class/classWithMultiplyFields.kt b/testData/ast/class/class/classWithMultiplyFields.kt index 43274e811c8..03b2647a157 100644 --- a/testData/ast/class/class/classWithMultiplyFields.kt +++ b/testData/ast/class/class/classWithMultiplyFields.kt @@ -1,4 +1,4 @@ -class T { +class T() { var a : String? var b : String? var c : String? = "abc" diff --git a/testData/ast/class/class/emptyClass.kt b/testData/ast/class/class/emptyClass.kt index a7ca22abab4..161cb193d08 100644 --- a/testData/ast/class/class/emptyClass.kt +++ b/testData/ast/class/class/emptyClass.kt @@ -1,2 +1,2 @@ -class A { +class A() { } \ No newline at end of file diff --git a/testData/ast/class/class/extendsOneClassAndImplementsOneInterface.kt b/testData/ast/class/class/extendsOneClassAndImplementsOneInterface.kt index 0567238ee84..99eb1856528 100644 --- a/testData/ast/class/class/extendsOneClassAndImplementsOneInterface.kt +++ b/testData/ast/class/class/extendsOneClassAndImplementsOneInterface.kt @@ -1,2 +1,2 @@ -class A : Base, I { +class A() : Base, I { } \ No newline at end of file diff --git a/testData/ast/class/class/extendsOneClassAndImplementsSeveralInterfaces.kt b/testData/ast/class/class/extendsOneClassAndImplementsSeveralInterfaces.kt index dc9dddf3cba..25348484337 100644 --- a/testData/ast/class/class/extendsOneClassAndImplementsSeveralInterfaces.kt +++ b/testData/ast/class/class/extendsOneClassAndImplementsSeveralInterfaces.kt @@ -1,2 +1,2 @@ -class A : Base, I0, I1, I2 { +class A() : Base, I0, I1, I2 { } \ No newline at end of file diff --git a/testData/ast/class/class/finalClass.kt b/testData/ast/class/class/finalClass.kt index 96d83e0c503..98c16b37053 100644 --- a/testData/ast/class/class/finalClass.kt +++ b/testData/ast/class/class/finalClass.kt @@ -1,2 +1,2 @@ -class Test { +class Test() { } \ No newline at end of file diff --git a/testData/ast/class/class/genericClass.kt b/testData/ast/class/class/genericClass.kt index 3bdd861a5fd..f3565e5ec30 100644 --- a/testData/ast/class/class/genericClass.kt +++ b/testData/ast/class/class/genericClass.kt @@ -1,2 +1,2 @@ -class Entry { +class Entry() { } \ No newline at end of file diff --git a/testData/ast/class/class/innerEmptyClass.kt b/testData/ast/class/class/innerEmptyClass.kt index 22bcf13b976..983e65e757e 100644 --- a/testData/ast/class/class/innerEmptyClass.kt +++ b/testData/ast/class/class/innerEmptyClass.kt @@ -1,4 +1,4 @@ -class A { -class B { +class A() { +class B() { } } \ No newline at end of file diff --git a/testData/ast/class/class/innerStaticClass.kt b/testData/ast/class/class/innerStaticClass.kt index 96ce2d1beab..dc0ae41dff2 100644 --- a/testData/ast/class/class/innerStaticClass.kt +++ b/testData/ast/class/class/innerStaticClass.kt @@ -1,6 +1,6 @@ -class S { +class S() { class object { -open class Inner { +open class Inner() { } } } \ No newline at end of file diff --git a/testData/ast/class/class/internalClass.kt b/testData/ast/class/class/internalClass.kt index 23873d0aaa3..bc29d4b27a1 100644 --- a/testData/ast/class/class/internalClass.kt +++ b/testData/ast/class/class/internalClass.kt @@ -1,2 +1,2 @@ -open class Test { +open class Test() { } \ No newline at end of file diff --git a/testData/ast/class/class/oneStaticFieldOneNonStatic.kt b/testData/ast/class/class/oneStaticFieldOneNonStatic.kt index c3fb86321a3..ebff54572d4 100644 --- a/testData/ast/class/class/oneStaticFieldOneNonStatic.kt +++ b/testData/ast/class/class/oneStaticFieldOneNonStatic.kt @@ -1,4 +1,4 @@ -class S { +class S() { class object { var myI : Int = 10 } diff --git a/testData/ast/class/class/oneStaticMethod.kt b/testData/ast/class/class/oneStaticMethod.kt index 90a9a2ece81..6906f476300 100644 --- a/testData/ast/class/class/oneStaticMethod.kt +++ b/testData/ast/class/class/oneStaticMethod.kt @@ -1,4 +1,4 @@ -class S { +class S() { class object { open fun staticF() : Boolean { return true diff --git a/testData/ast/class/class/oneStaticMethodOneNonStatic.kt b/testData/ast/class/class/oneStaticMethodOneNonStatic.kt index baad5b8c59f..a50ebaff602 100644 --- a/testData/ast/class/class/oneStaticMethodOneNonStatic.kt +++ b/testData/ast/class/class/oneStaticMethodOneNonStatic.kt @@ -1,4 +1,4 @@ -class S { +class S() { class object { open fun sI() : Int { return 1 diff --git a/testData/ast/class/class/pivateClass.kt b/testData/ast/class/class/pivateClass.kt index 8085e2675d2..96001c69f28 100644 --- a/testData/ast/class/class/pivateClass.kt +++ b/testData/ast/class/class/pivateClass.kt @@ -1,2 +1,2 @@ -private open class Test { +private open class Test() { } \ No newline at end of file diff --git a/testData/ast/class/class/protectedClass.kt b/testData/ast/class/class/protectedClass.kt index 60bd6ecdb0c..e82caa26cd0 100644 --- a/testData/ast/class/class/protectedClass.kt +++ b/testData/ast/class/class/protectedClass.kt @@ -1,2 +1,2 @@ -protected open class Test { +protected open class Test() { } \ No newline at end of file diff --git a/testData/ast/class/class/publicClass.kt b/testData/ast/class/class/publicClass.kt index 44aae358376..98e32f1aca0 100644 --- a/testData/ast/class/class/publicClass.kt +++ b/testData/ast/class/class/publicClass.kt @@ -1,2 +1,2 @@ -public open class Test { +public open class Test() { } \ No newline at end of file diff --git a/testData/ast/class/class/simpleInheritance.kt b/testData/ast/class/class/simpleInheritance.kt index 9fe01fc7381..7292c1b424c 100644 --- a/testData/ast/class/class/simpleInheritance.kt +++ b/testData/ast/class/class/simpleInheritance.kt @@ -1,2 +1,2 @@ -class A : Base { +class A() : Base { } \ No newline at end of file diff --git a/testData/ast/class/class/twoStaticMethod.kt b/testData/ast/class/class/twoStaticMethod.kt index 64df630cc7e..0500e4be576 100644 --- a/testData/ast/class/class/twoStaticMethod.kt +++ b/testData/ast/class/class/twoStaticMethod.kt @@ -1,4 +1,4 @@ -class S { +class S() { class object { open fun sB() : Boolean { return true diff --git a/testData/ast/class/file/privateInit.kt b/testData/ast/class/file/privateInit.kt index 907ba769b3f..9b62ed9464a 100644 --- a/testData/ast/class/file/privateInit.kt +++ b/testData/ast/class/file/privateInit.kt @@ -1,5 +1,5 @@ namespace { -public open class MyClass { +public open class MyClass() { open private fun init(arg1 : Int, arg2 : Int, arg3 : Int) : Unit { } } diff --git a/testData/ast/constructors/file/customerBuilder.jav b/testData/ast/constructors/file/customerBuilder.jav new file mode 100644 index 00000000000..4f99ad3c63d --- /dev/null +++ b/testData/ast/constructors/file/customerBuilder.jav @@ -0,0 +1,54 @@ +package org.test.customer + +class Customer { + public final String _firstName; + public final String _lastName; + + Customer(String first, String last) { + doSmthBefore(); + _firstName = first; + _lastName = last; + doSmthAfter(); + } + + public String getFirstName() { + return _firstName; + } + + public String getLastName() { + return _lastName; + } + + private void doSmthBefore() {} + private void doSmthAfter() {} +} + +class CustomerBuilder { + public String _firstName = "Homer"; + public String _lastName = "Simpson"; + + public CustomerBuilder WithFirstName(String firstName) { + _firstName = firstName; + return this; + } + + public CustomerBuilder WithLastName(String lastName) { + _lastName = lastName; + return this; + } + + public Customer Build() { + return new Customer(_firstName, _lastName); + } +} + +public class User { + public static void main(Array[String] args) { + Customer customer = new CustomerBuilder() + .WithFirstName("Homer") + .WithLastName("Simpson") + .Build(); + System.out.println(customer.getFirstName()); + System.out.println(customer.getLastName()); + } +} \ No newline at end of file diff --git a/testData/ast/constructors/file/customerBuilder.kt b/testData/ast/constructors/file/customerBuilder.kt new file mode 100644 index 00000000000..8d59f2c5543 --- /dev/null +++ b/testData/ast/constructors/file/customerBuilder.kt @@ -0,0 +1,46 @@ +namespace org.test.customer { +open class Customer(first : String?, last : String?) { +public val _firstName : String? +public val _lastName : String? +{ +doSmthBefore() +$_firstName = first +$_lastName = last +doSmthAfter() +} +open public fun getFirstName() : String? { +return _firstName +} +open public fun getLastName() : String? { +return _lastName +} +open private fun doSmthBefore() : Unit { +} +open private fun doSmthAfter() : Unit { +} +} +open class CustomerBuilder() { +public var _firstName : String? = "Homer" +public var _lastName : String? = "Simpson" +open public fun WithFirstName(firstName : String?) : CustomerBuilder? { +_firstName = firstName +return this +} +open public fun WithLastName(lastName : String?) : CustomerBuilder? { +_lastName = lastName +return this +} +open public fun Build() : Customer? { +return org.test.customer.Customer(_firstName, _lastName) +} +} +public open class User() { +class object { +open public fun main() : Unit { +var customer : Customer? = org.test.customer.CustomerBuilder().WithFirstName("Homer")?.WithLastName("Simpson")?.Build() +System.`out`?.println(customer?.getFirstName()) +System.`out`?.println(customer?.getLastName()) +} +} +} +} \ No newline at end of file diff --git a/testData/ast/file/file/packageWithClass.kt b/testData/ast/file/file/packageWithClass.kt index f08440c2d5d..48abf7a9bbf 100644 --- a/testData/ast/file/file/packageWithClass.kt +++ b/testData/ast/file/file/packageWithClass.kt @@ -1,4 +1,4 @@ namespace test { -class C { +class C() { } } \ No newline at end of file diff --git a/testData/ast/file/file/packageWithClasses.kt b/testData/ast/file/file/packageWithClasses.kt index c57933a501a..cee28676b2a 100644 --- a/testData/ast/file/file/packageWithClasses.kt +++ b/testData/ast/file/file/packageWithClasses.kt @@ -1,6 +1,6 @@ namespace { -class A { +class A() { } -class B { +class B() { } } \ No newline at end of file diff --git a/testData/ast/file/file/packageWithOpenClass.kt b/testData/ast/file/file/packageWithOpenClass.kt index 17aa91ce5cb..e229fa8c6ee 100644 --- a/testData/ast/file/file/packageWithOpenClass.kt +++ b/testData/ast/file/file/packageWithOpenClass.kt @@ -1,4 +1,4 @@ namespace test { -open class C { +open class C() { } } \ No newline at end of file diff --git a/testData/ast/function/file/override.kt b/testData/ast/function/file/override.kt index c080ae67068..3e876fa6a4e 100644 --- a/testData/ast/function/file/override.kt +++ b/testData/ast/function/file/override.kt @@ -1,9 +1,9 @@ namespace { -open class A { +open class A() { open fun a() : Unit { } } -class B : A { +class B() : A { override fun a() : Unit { } } diff --git a/testData/ast/function/file/overrideAndOpen.kt b/testData/ast/function/file/overrideAndOpen.kt index 10b231c8b89..9d8da0fbbbb 100644 --- a/testData/ast/function/file/overrideAndOpen.kt +++ b/testData/ast/function/file/overrideAndOpen.kt @@ -1,13 +1,13 @@ namespace { -open class A { +open class A() { open fun foo() : Unit { } } -open class B : A { +open class B() : A { override fun foo() : Unit { } } -open class C : B { +open class C() : B { override fun foo() : Unit { } } diff --git a/testData/ast/newClassExpression/file/newClassByFullName.kt b/testData/ast/newClassExpression/file/newClassByFullName.kt index 127e33a9fea..560846c9186 100644 --- a/testData/ast/newClassExpression/file/newClassByFullName.kt +++ b/testData/ast/newClassExpression/file/newClassByFullName.kt @@ -1,7 +1,7 @@ namespace org.test { -open class Library { +open class Library() { } -open class User { +open class User() { open fun main() : Unit { var lib : Library? = org.test.Library() } diff --git a/testData/ast/superExpression/class/classAextendsB.kt b/testData/ast/superExpression/class/classAextendsB.kt index 51a5d46232a..1ecd361e2e6 100644 --- a/testData/ast/superExpression/class/classAextendsB.kt +++ b/testData/ast/superExpression/class/classAextendsB.kt @@ -1,8 +1,11 @@ -open class B { +open class B() { open fun call() : Unit { } } -open class A : B { +open class A() : B { +{ +super() +} override fun call() : Unit { return super.call() } diff --git a/testData/ast/superExpression/file/classAdotSuperFoo.kt b/testData/ast/superExpression/file/classAdotSuperFoo.kt index a6669abc1e1..09bf6db3f67 100644 --- a/testData/ast/superExpression/file/classAdotSuperFoo.kt +++ b/testData/ast/superExpression/file/classAdotSuperFoo.kt @@ -1,9 +1,9 @@ namespace { -open class Base { +open class Base() { open fun foo() : Unit } -open class A : Base { -open class C { +open class A() : Base { +open class C() { open fun test() : Unit { super@A.foo() } diff --git a/testData/ast/thisExpression/file/classAdotThisFoo.kt b/testData/ast/thisExpression/file/classAdotThisFoo.kt index 066258741cf..201ba4f7bd7 100644 --- a/testData/ast/thisExpression/file/classAdotThisFoo.kt +++ b/testData/ast/thisExpression/file/classAdotThisFoo.kt @@ -1,10 +1,10 @@ namespace { -open class Base { +open class Base() { open fun foo() : Unit { } } -open class A : Base { -open class C { +open class A() : Base { +open class C() { open fun test() : Unit { this@A.foo() } diff --git a/testData/ast/typeParameters/class/classDoubleParametrizationWithTwoBoundsWithExtending.kt b/testData/ast/typeParameters/class/classDoubleParametrizationWithTwoBoundsWithExtending.kt index d85353e99f4..ee954ff1105 100644 --- a/testData/ast/typeParameters/class/classDoubleParametrizationWithTwoBoundsWithExtending.kt +++ b/testData/ast/typeParameters/class/classDoubleParametrizationWithTwoBoundsWithExtending.kt @@ -1,2 +1,2 @@ -class CC : A where T : Comparable?, K : Collection? { +class CC() : A where T : Comparable?, K : Collection? { } \ No newline at end of file diff --git a/testData/ast/typeParameters/class/classParametrizationWithTwoBounds.kt b/testData/ast/typeParameters/class/classParametrizationWithTwoBounds.kt index ef570ae9618..e6fa0f4ce21 100644 --- a/testData/ast/typeParameters/class/classParametrizationWithTwoBounds.kt +++ b/testData/ast/typeParameters/class/classParametrizationWithTwoBounds.kt @@ -1,2 +1,2 @@ -class C where T : Comparable? { +class C() where T : Comparable? { } \ No newline at end of file diff --git a/testData/ast/typeParameters/class/classParametrizationWithTwoBoundsWithExtending.kt b/testData/ast/typeParameters/class/classParametrizationWithTwoBoundsWithExtending.kt index 7ac90335e6e..e7c258a0f24 100644 --- a/testData/ast/typeParameters/class/classParametrizationWithTwoBoundsWithExtending.kt +++ b/testData/ast/typeParameters/class/classParametrizationWithTwoBoundsWithExtending.kt @@ -1,2 +1,2 @@ -class C : A where T : Comparable? { +class C() : A where T : Comparable? { } \ No newline at end of file diff --git a/testData/ast/typeParameters/class/genericClass.kt b/testData/ast/typeParameters/class/genericClass.kt index c2be9da34e3..dd8d1147200 100644 --- a/testData/ast/typeParameters/class/genericClass.kt +++ b/testData/ast/typeParameters/class/genericClass.kt @@ -1,2 +1,2 @@ -class Comparable { +class Comparable() { } \ No newline at end of file