Java to Kotlin converter: do not generate redundant parenthesis for empty constructor parameters

This commit is contained in:
Valentin Kipyatkov
2014-06-25 18:21:15 +04:00
parent 947bf3c0ed
commit 5a5e553367
207 changed files with 266 additions and 268 deletions
@@ -39,9 +39,6 @@ open class Class(
if (body.primaryConstructorSignature != null) {
builder.append(body.primaryConstructorSignature)
}
else if (this !is Trait) { //TODO: drop this
builder.append("()")
}
appendBaseTypes(builder)
typeParameterList.appendWhere(builder)
body.append(builder, this)
@@ -55,6 +55,7 @@ class PrimaryConstructor(converter: Converter,
class PrimaryConstructorSignature(val modifiers: Modifiers, val parameterList: ParameterList) : Element() {
override fun generateCode(builder: CodeBuilder) {
val accessModifier = modifiers.filter { it in ACCESS_MODIFIERS && it != Modifier.PUBLIC }
if (accessModifier.isEmpty && parameterList.parameters.isEmpty()) return
if (!accessModifier.isEmpty) {
builder append " " append accessModifier
}
@@ -135,7 +135,7 @@ abstract class AbstractJavaToKotlinConverterTest() : LightIdeaTestCase() {
}
private fun methodToKotlin(text: String, settings: ConverterSettings, project: Project): String {
val result = fileToKotlin("final class C {" + text + "}", settings, project).replaceAll("class C\\(\\) \\{", "")
val result = fileToKotlin("final class C {" + text + "}", settings, project).replaceAll("class C \\{", "")
return result.substring(0, (result.lastIndexOf("}"))).trim()
}
@@ -8,7 +8,7 @@ Anon5(1)
Anon6(array("x", "y"))
Anon7(javaClass<String>(), javaClass<StringBuilder>())
Anon8(classes = *array(javaClass<String>(), javaClass<StringBuilder>()))
class C() {
class C {
Anon5(1) deprecated("") private val field1 = 0
Anon5(1)
@@ -2,17 +2,17 @@
// !specifyLocalVariableTypeByDefault: true
package test
class Foo() {
class Foo {
fun execute() {
}
}
class Bar() {
class Bar {
var fooNotNull = Foo()
var fooNullable: Foo? = null
}
class Test() {
class Test {
public fun test(barNotNull: Bar, barNullable: Bar?) {
barNotNull.fooNotNull.execute()
barNotNull.fooNullable!!.execute()
@@ -1,4 +1,4 @@
class Test() {
class Test {
var str: String = 0
{
str = "Ola"
@@ -1,4 +1,4 @@
class Test() {
class Test {
var str: String = 0
class object {
@@ -2,7 +2,7 @@
// !specifyLocalVariableTypeByDefault: true
import java.util.BitSet
class Foo() {
class Foo {
fun foo(o: BitSet?) {
val o2: BitSet? = o
var foo: Int = 0
@@ -1,6 +1,6 @@
import java.util.BitSet
class Foo() {
class Foo {
fun foo(o: BitSet) {
val o2 = o
var foo = 0
+1 -1
View File
@@ -1,6 +1,6 @@
import java.util.ArrayList
class Boxing() {
class Boxing {
fun test() {
var i: Int? = 0
val n = 0.0.toFloat()
+1 -1
View File
@@ -1,6 +1,6 @@
package demo
class Test() {
class Test {
fun test() {
val i = Integer.valueOf(100)
val s = 3
@@ -1,10 +1,10 @@
class Library() {
class Library {
class object {
val ourOut: java.io.PrintStream = 0
}
}
class User() {
class User {
fun main() {
Library.ourOut.print()
}
@@ -1,4 +1,4 @@
class Library() {
class Library {
class object {
fun call() {
}
@@ -9,7 +9,7 @@ class Library() {
}
}
class User() {
class User {
fun main() {
Library.call()
Library.getString().isEmpty()
@@ -1,6 +1,6 @@
// !forceNotNullTypes: false
// !specifyLocalVariableTypeByDefault: true
class Library() {
class Library {
fun call() {
}
@@ -9,7 +9,7 @@ class Library() {
}
}
class User() {
class User {
fun main() {
val lib: Library = Library()
lib.call()
@@ -1,4 +1,4 @@
class Library() {
class Library {
fun call() {
}
@@ -7,7 +7,7 @@ class Library() {
}
}
class User() {
class User {
fun main() {
val lib = Library()
lib.call()
@@ -1,8 +1,8 @@
class Library() {
class Library {
public val myString: String = 0
}
class User() {
class User {
fun main() {
Library.myString.isEmpty()
}
@@ -1,6 +1,6 @@
package test
public class Short() {
public class Short {
class object {
public fun valueOf(value: String): Short {
return Short()
@@ -8,7 +8,7 @@ public class Short() {
}
}
class Test() {
class Test {
class object {
public fun test() {
test.Short.valueOf("1")
@@ -1,4 +1,4 @@
abstract class A() {
abstract class A {
abstract fun callme()
fun callmetoo() {
@@ -1,4 +1,4 @@
abstract class Shape() {
abstract class Shape {
public var color: String = 0
public fun setColor(c: String) {
color = c
+1 -1
View File
@@ -1 +1 @@
class Test()
class Test
@@ -1,4 +1,4 @@
class T() {
class T {
fun main() {
}
fun i(): Int {
@@ -1,4 +1,4 @@
class T() {
class T {
var a = "abc"
var b = 10
}
@@ -1,4 +1,4 @@
class T() {
class T {
var a: String = 0
var b: String = 0
var c = "abc"
+1 -1
View File
@@ -1 +1 @@
class A()
class A
@@ -1 +1 @@
class A() : Base(), I
class A : Base(), I
@@ -1 +1 @@
class A() : Base(), I0, I1, I2
class A : Base(), I0, I1, I2
+1 -1
View File
@@ -1 +1 @@
class Test()
class Test
+1 -1
View File
@@ -1 +1 @@
class Entry<K, V>()
class Entry<K, V>
@@ -1,3 +1,3 @@
trait A {
public class B()
public class B
}
@@ -1,3 +1,3 @@
class A() {
inner class B()
class A {
inner class B
}
+1 -1
View File
@@ -1,4 +1,4 @@
class A() {
class A {
enum class E {
A
B
@@ -1,3 +1,3 @@
class A() {
class A {
trait I
}
@@ -1,3 +1,3 @@
class S() {
class Inner()
class S {
class Inner
}
@@ -1 +1 @@
class Test()
class Test
+1 -1
View File
@@ -15,7 +15,7 @@ class Test private() {
}
}
class User() {
class User {
fun main() {
val m = HashMap(1)
val m2 = HashMap(10)
@@ -1,4 +1,4 @@
class S() {
class S {
fun sB(): Boolean {
return true
}
@@ -1,4 +1,4 @@
class S() {
class S {
class object {
fun staticF(): Boolean {
return true
@@ -1,4 +1,4 @@
class S() {
class S {
fun sB(): Boolean {
return true
}
+1 -1
View File
@@ -1 +1 @@
private class Test()
private class Test
+1 -1
View File
@@ -1,4 +1,4 @@
public class MyClass() {
public class MyClass {
private fun init(arg1: Int, arg2: Int, arg3: Int) {
}
}
@@ -1 +1 @@
protected class Test()
protected class Test
+1 -1
View File
@@ -1 +1 @@
public class Test()
public class Test
@@ -1 +1 @@
class A() : Base()
class A : Base()
@@ -1,4 +1,4 @@
class S() {
class S {
class object {
fun sB(): Boolean {
return true
+1 -1
View File
@@ -8,7 +8,7 @@ import java.util.ArrayList
// we need ArrayList
// let's declare a class:
class A /* just a sample name*/() : Runnable /* let's implement Runnable */ {
class A /* just a sample name*/ : Runnable /* let's implement Runnable */ {
fun foo/* again a sample name */(p: Int /* parameter p */, c: Char /* parameter c */) {
// let's print something:
System.out.println("1") // print 1
+1 -1
View File
@@ -1,6 +1,6 @@
package foo
class A() {
class A {
fun /* nothing to return */ foo(/* no parameters at all */) {
// let declare a variable
// with 2 comments before
@@ -1,3 +1,3 @@
class A() {
class A {
private val isOpen = true // ideally should be atomic boolean
}
@@ -13,7 +13,7 @@ class C(arg1: Int, arg2: Int, arg3: Int) {
}
}
public class User() {
public class User {
class object {
public fun main() {
val c1 = C(100, 100, 100)
@@ -25,7 +25,7 @@ class C(val myArg1: Int) {
}
}
public class User() {
public class User {
class object {
public fun main() {
val c1 = C.create(100, 100, 100)
@@ -21,7 +21,7 @@ class Customer(public val _firstName: String, public val _lastName: String) {
}
}
class CustomerBuilder() {
class CustomerBuilder {
public var _firstName: String = "Homer"
public var _lastName: String = "Simpson"
@@ -40,7 +40,7 @@ class CustomerBuilder() {
}
}
public class User() {
public class User {
class object {
public fun main() {
val customer = CustomerBuilder().WithFirstName("Homer").WithLastName("Simpson").Build()
@@ -26,7 +26,7 @@ public class Identifier<T> private(private val myName: T, private val myHasDolla
}
}
public class User() {
public class User {
class object {
public fun main() {
val i1 = Identifier.create<String>("name", false, true)
@@ -26,7 +26,7 @@ public class Identifier private(private val myName: String, private val myHasDol
}
}
public class User() {
public class User {
class object {
public fun main() {
val i1 = Identifier.create("name", false, true)
@@ -26,7 +26,7 @@ class C(arg1: Int, arg2: Int, arg3: Int) {
}
}
public class User() {
public class User {
class object {
public fun main() {
val c1 = C(100, 100, 100)
@@ -17,7 +17,7 @@ public class Test private(private val myName: String, var a: Boolean, var b: Dou
}
}
public class User() {
public class User {
class object {
public fun main() {
val t = Test.create("name")
+1 -1
View File
@@ -1,6 +1,6 @@
trait I
class C() {
class C {
fun foo1(i1: I, i2: I): Boolean {
return i1 == i2
}
+1 -1
View File
@@ -1,4 +1,4 @@
class C() {
class C {
fun foo1(s1: String, s2: String): Boolean {
return s1 == s2
}
+1 -1
View File
@@ -1,4 +1,4 @@
class C() {
class C {
public fun equals(c: C): Boolean {
return false
}
+1 -1
View File
@@ -1,4 +1,4 @@
class C() {
class C {
fun foo(s1: String, s2: String, s3: String, s4: String): Boolean {
return s1 == s2 == (s3 != s4)
}
@@ -1,7 +1,7 @@
class Base() {
class Base {
private val myFirst: String = 0
}
class Child() : Base() {
class Child : Base() {
private val mySecond: String = 0
}
+1 -1
View File
@@ -1,4 +1,4 @@
class A() {
class A {
private var i: Int? = getByte().toInt()
fun foo() {
@@ -1,3 +1,3 @@
class C() {
class C {
var f: Foo = 0
}
+1 -1
View File
@@ -1,3 +1,3 @@
class C() {
class C {
private val f: Foo = 0
}
@@ -1,3 +1,3 @@
class C() {
class C {
protected var f: Foo = 0
}
+1 -1
View File
@@ -1,3 +1,3 @@
class C() {
class C {
public var f: Foo = 0
}
+1 -1
View File
@@ -1,7 +1,7 @@
import java.util.*
import kotlin.List
class A() {
class A {
private val field1 = ArrayList<String>()
val field2: List<String> = ArrayList<String>()
public val field3: Int = 0
+1 -1
View File
@@ -1,3 +1,3 @@
class C() {
class C {
val f = Foo(1, 2)
}
+1 -1
View File
@@ -1,3 +1,3 @@
class C() {
class C {
var f = Foo(1, 2)
}
@@ -1,3 +1,3 @@
class C() {
class C {
var f: Foo = 0
}
@@ -1,4 +1,4 @@
class F() {
class F {
fun f1() {
}
@@ -1,4 +1,4 @@
class F() {
class F {
//c1
@@ -1,4 +1,4 @@
class F() {
class F {
//c3
@@ -1,4 +1,4 @@
class F() {
class F {
class object {
//c1
@@ -1,6 +1,6 @@
package test
class Test() : Base() {
class Test : Base() {
override fun hashCode(): Int {
return super.hashCode()
}
@@ -24,7 +24,7 @@ class Test() : Base() {
}
}
class Base() {
class Base {
override fun hashCode(): Int {
return super.hashCode()
}
@@ -1,6 +1,6 @@
package demo
class Final() {
class Final {
fun test() {
}
}
+2 -2
View File
@@ -1,8 +1,8 @@
class A() {
class A {
fun a() {
}
}
class B() : A() {
class B : A() {
override fun a() {
}
}
@@ -1,14 +1,14 @@
class A() {
class A {
fun foo() {
}
}
class B() : A() {
class B : A() {
override fun foo() {
}
}
class C() : B() {
class C : B() {
override fun foo() {
}
}
@@ -1,4 +1,4 @@
class X() {
class X {
override fun hashCode(): Int {
return super.hashCode()
}
@@ -17,7 +17,7 @@ class X() {
}
}
class Y() : Thread() {
class Y : Thread() {
throws(javaClass<CloneNotSupportedException>())
override fun clone(): Any {
return super.clone()
@@ -1,6 +1,6 @@
class Base()
class Base
class X() : Base() {
class X : Base() {
override fun hashCode(): Int {
return super.hashCode()
}
@@ -1,10 +1,10 @@
class Base() {
class Base {
override fun equals(o: Any?): Boolean {
return super.equals(o)
}
}
class X() : Base() {
class X : Base() {
override fun equals(o: Any?): Boolean {
return super.equals(o)
}
+1 -1
View File
@@ -1,6 +1,6 @@
package demo
class Test() {
class Test {
fun test(vararg args: Any) {
var args = args
args = array<Int>(1, 2, 3)
@@ -1,6 +1,6 @@
class `$$$$$`()
class `$$$$$`
class `$`()
class `$`
class `$$`(val `$$$`: `$$$$$`) : `$`() {
@@ -2,4 +2,4 @@ package test
import `as`.`type`.`val`.`var`.`fun`.`is`.`in`.`object`.`when`.`trait`.`This`
class Test()
class Test
@@ -2,4 +2,4 @@ package org.jetbrains.jet.j2k
import org.jetbrains.annotations.*
public class Converter()
public class Converter
@@ -1,3 +1,3 @@
package org.jetbrains.jet.j2k
public class Converter()
public class Converter
@@ -1,3 +1,3 @@
class Base()
class Base
class One() : Base()
class One : Base()
+1 -1
View File
@@ -1,4 +1,4 @@
class Test() {
class Test {
class object {
public fun foo(args: Array<String>): Int {
return args.size
+1 -1
View File
@@ -9,7 +9,7 @@ This is a block comment
//one line comment of class
//another one
/*another doc*/
class C() {
class C {
// This is a class comment
/**
@@ -1,6 +1,6 @@
class Outer() {
class Outer {
public class Nested() {
public class Nested {
public fun foo() {
o = null
}
+1 -1
View File
@@ -2,7 +2,7 @@ import java.util.HashMap
class G<T : String>(t: T)
public class Java() {
public class Java {
fun test() {
val m = HashMap()
m.put(1, 1)
+1 -1
View File
@@ -1,6 +1,6 @@
package demo
class Test() {
class Test {
class object {
fun subListRangeCheck(fromIndex: Int, toIndex: Int, size: Int) {
if (fromIndex < 0)
@@ -1,6 +1,6 @@
package demo
class Test() {
class Test {
fun putInt(i: Int?) {
}
@@ -1,6 +1,6 @@
package demo
class Test() {
class Test {
fun putInt(i: Int?) {
}
+1 -1
View File
@@ -1,6 +1,6 @@
package demo
class Test() {
class Test {
fun putInt(i: Int) {
}
+1 -1
View File
@@ -26,7 +26,7 @@ public class Identifier<T> private(private val myName: T, private val myHasDolla
}
}
public class User() {
public class User {
class object {
public fun main(args: Array<String>) {
val i1 = Identifier.create<String>("name", false, true)
+2 -2
View File
@@ -1,6 +1,6 @@
package test
class Base() {
class Base {
override fun hashCode(): Int {
return super.hashCode()
}
@@ -14,7 +14,7 @@ class Base() {
}
}
class Child() : Base() {
class Child : Base() {
override fun hashCode(): Int {
return super.hashCode()
}
@@ -1,6 +1,6 @@
package demo
class Test() {
class Test {
fun getInteger(i: Int?): Int? {
return i
}
+1 -1
View File
@@ -1,4 +1,4 @@
class Test() {
class Test {
fun getInt(): Int {
val b = 10
return b.toInt()
@@ -1,10 +1,10 @@
package demo
class Container() {
class Container {
var myString = "1"
}
class One() {
class One {
class object {
var myContainer = Container()
}
@@ -12,7 +12,7 @@ class One() {
class StringContainer(s: String)
class Test() {
class Test {
fun putString(s: String) {
}
fun test() {
+3 -3
View File
@@ -1,10 +1,10 @@
package demo
class Container() {
class Container {
var myInt = 1
}
class One() {
class One {
class object {
var myContainer = Container()
}
@@ -12,7 +12,7 @@ class One() {
class IntContainer(i: Int)
class Test() {
class Test {
fun putInt(i: Int) {
}
fun test() {
@@ -1,15 +1,15 @@
package demo
class Container() {
class Container {
var myInt = 1
}
class One() {
class One {
class object {
var myContainer = Container()
}
}
class Test() {
class Test {
var b = One.myContainer.myInt.toByte()
}

Some files were not shown because too many files have changed in this diff Show More