Java to Kotlin converter: minor code corrections after review

This commit is contained in:
Valentin Kipyatkov
2014-06-24 11:31:34 +04:00
parent 52994d69ca
commit 4f27dd63b5
2 changed files with 19 additions and 15 deletions
+17 -11
View File
@@ -51,7 +51,13 @@ class CodeBuilder(private val topElement: PsiElement?) {
private val commentsAndSpacesUsed = HashSet<PsiElement>() private val commentsAndSpacesUsed = HashSet<PsiElement>()
public fun append(text: String, endOfLineComment: Boolean = false): CodeBuilder { public fun append(text: String): CodeBuilder
= append(text, false)
private fun appendCommentOrWhiteSpace(element: PsiElement)
= append(element.getText()!!, element.isEndOfLineComment())
private fun append(text: String, endOfLineComment: Boolean = false): CodeBuilder {
if (text.isEmpty()) { if (text.isEmpty()) {
assert(!endOfLineComment) assert(!endOfLineComment)
return this return this
@@ -78,8 +84,8 @@ class CodeBuilder(private val topElement: PsiElement?) {
return this return this
} }
val prefixElements = ArrayList<PsiElement>(2) val prefixElements = ArrayList<PsiElement>(1)
val postfixElements = ArrayList<PsiElement>(2) val postfixElements = ArrayList<PsiElement>(1)
for ((prototype, inheritBlankLinesBefore) in element.prototypes) { for ((prototype, inheritBlankLinesBefore) in element.prototypes) {
assert(prototype !is PsiComment) assert(prototype !is PsiComment)
assert(prototype !is PsiWhiteSpace) assert(prototype !is PsiWhiteSpace)
@@ -95,11 +101,11 @@ class CodeBuilder(private val topElement: PsiElement?) {
val e = prefixElements[i] val e = prefixElements[i]
if (i == 0 && e is PsiWhiteSpace) { if (i == 0 && e is PsiWhiteSpace) {
if (e.newLinesCount() > 1) { // insert at maximum one blank line if (e.newLinesCount() > 1) { // insert at maximum one blank line
append("\n") append("\n", false)
} }
} }
else { else {
append(e.getText()!!, e.isEndOfLineComment()) appendCommentOrWhiteSpace(e)
} }
} }
@@ -110,21 +116,21 @@ class CodeBuilder(private val topElement: PsiElement?) {
prototype.accept(object : JavaRecursiveElementVisitor(){ prototype.accept(object : JavaRecursiveElementVisitor(){
override fun visitComment(comment: PsiComment) { override fun visitComment(comment: PsiComment) {
if (commentsAndSpacesUsed.add(comment)) { if (commentsAndSpacesUsed.add(comment)) {
append(comment.getText()!!, comment.isEndOfLineComment()) appendCommentOrWhiteSpace(comment)
} }
} }
}) })
} }
postfixElements.forEach { append(it.getText()!!, it.isEndOfLineComment()) } postfixElements.forEach { appendCommentOrWhiteSpace(it) }
return this return this
} }
private fun MutableList<PsiElement>.collectPrefixElements(element: PsiElement, allowBlankLinesBefore: Boolean) { private fun MutableList<PsiElement>.collectPrefixElements(element: PsiElement, allowBlankLinesBefore: Boolean) {
val atStart = ArrayList<PsiElement>(2).collectCommentsAndSpacesAtStart(element) val atStart = ArrayList<PsiElement>(1).collectCommentsAndSpacesAtStart(element)
val before = ArrayList<PsiElement>(2).collectCommentsAndSpacesBefore(element) val before = ArrayList<PsiElement>(1).collectCommentsAndSpacesBefore(element)
if (!allowBlankLinesBefore && before.lastOrNull() is PsiWhiteSpace) { if (!allowBlankLinesBefore && before.lastOrNull() is PsiWhiteSpace) {
before.remove(before.size - 1) before.remove(before.size - 1)
} }
@@ -134,9 +140,9 @@ class CodeBuilder(private val topElement: PsiElement?) {
} }
private fun MutableList<PsiElement>.collectPostfixElements(element: PsiElement) { private fun MutableList<PsiElement>.collectPostfixElements(element: PsiElement) {
val atEnd = ArrayList<PsiElement>(2).collectCommentsAndSpacesAtEnd(element) val atEnd = ArrayList<PsiElement>(1).collectCommentsAndSpacesAtEnd(element)
val after = ArrayList<PsiElement>(2).collectCommentsAndSpacesAfter(element) val after = ArrayList<PsiElement>(1).collectCommentsAndSpacesAfter(element)
if (after.isNotEmpty()) { if (after.isNotEmpty()) {
val last = after.last() val last = after.last()
if (last is PsiWhiteSpace) { if (last is PsiWhiteSpace) {
+2 -4
View File
@@ -315,12 +315,10 @@ public class Converter private(val project: Project, val settings: ConverterSett
parent.getOperationSign().getTokenType() == JavaTokenType.EQ && parent.getOperationSign().getTokenType() == JavaTokenType.EQ &&
isQualifierEmptyOrThis(write)) { isQualifierEmptyOrThis(write)) {
val constructor = write.getContainingConstructor() val constructor = write.getContainingConstructor()
if (constructor != null && return constructor != null &&
constructor.getContainingClass() == containingClass && constructor.getContainingClass() == containingClass &&
parent.getParent() is PsiExpressionStatement && parent.getParent() is PsiExpressionStatement &&
parent.getParent()?.getParent() == constructor.getBody()) { parent.getParent()?.getParent() == constructor.getBody()
return true
}
} }
return false return false
} }