Java to Kotlin converter: minor code corrections after review
This commit is contained in:
@@ -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) {
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user