Use of Block.of()

This commit is contained in:
Valentin Kipyatkov
2016-08-19 17:27:13 +03:00
parent 7016ce9b41
commit 20c17fc435
6 changed files with 16 additions and 21 deletions
@@ -354,7 +354,7 @@ class Converter private constructor(
val superExpression = SuperExpression(Identifier.Empty).assignNoPrototype() val superExpression = SuperExpression(Identifier.Empty).assignNoPrototype()
val superAccess = QualifiedExpression(superExpression, propertyInfo.identifier).assignNoPrototype() val superAccess = QualifiedExpression(superExpression, propertyInfo.identifier).assignNoPrototype()
val returnStatement = ReturnStatement(superAccess).assignNoPrototype() val returnStatement = ReturnStatement(superAccess).assignNoPrototype()
val body = Block(listOf(returnStatement), LBrace().assignNoPrototype(), RBrace().assignNoPrototype()).assignNoPrototype() val body = Block.of(returnStatement).assignNoPrototype()
val parameterList = ParameterList(emptyList()).assignNoPrototype() val parameterList = ParameterList(emptyList()).assignNoPrototype()
getter = PropertyAccessor(AccessorKind.GETTER, Annotations.Empty, Modifiers.Empty, parameterList, deferredElement { body }) getter = PropertyAccessor(AccessorKind.GETTER, Annotations.Empty, Modifiers.Empty, parameterList, deferredElement { body })
getter.assignNoPrototype() getter.assignNoPrototype()
@@ -388,7 +388,7 @@ class Converter private constructor(
val superAccess = QualifiedExpression(superExpression, propertyInfo.identifier).assignNoPrototype() val superAccess = QualifiedExpression(superExpression, propertyInfo.identifier).assignNoPrototype()
val valueIdentifier = Identifier("value", false).assignNoPrototype() val valueIdentifier = Identifier("value", false).assignNoPrototype()
val assignment = AssignmentExpression(superAccess, valueIdentifier, Operator.EQ).assignNoPrototype() val assignment = AssignmentExpression(superAccess, valueIdentifier, Operator.EQ).assignNoPrototype()
val body = Block(listOf(assignment), LBrace().assignNoPrototype(), RBrace().assignNoPrototype()).assignNoPrototype() val body = Block.of(assignment).assignNoPrototype()
val parameter = FunctionParameter(valueIdentifier, propertyType, FunctionParameter.VarValModifier.None, Annotations.Empty, Modifiers.Empty).assignNoPrototype() val parameter = FunctionParameter(valueIdentifier, propertyType, FunctionParameter.VarValModifier.None, Annotations.Empty, Modifiers.Empty).assignNoPrototype()
val parameterList = ParameterList(listOf(parameter)).assignNoPrototype() val parameterList = ParameterList(listOf(parameter)).assignNoPrototype()
setter = PropertyAccessor(AccessorKind.SETTER, Annotations.Empty, accessorModifiers, parameterList, deferredElement { body }) setter = PropertyAccessor(AccessorKind.SETTER, Annotations.Empty, accessorModifiers, parameterList, deferredElement { body })
@@ -698,7 +698,7 @@ class DefaultExpressionConverter : JavaElementVisitor(), ExpressionConverter {
when (body) { when (body) {
is PsiExpression -> { is PsiExpression -> {
val convertedBody = codeConverter.convertExpression(body).assignPrototype(body) val convertedBody = codeConverter.convertExpression(body).assignPrototype(body)
result = LambdaExpression(convertedParameters, Block(listOf(convertedBody), LBrace().assignNoPrototype(), RBrace().assignNoPrototype())) result = LambdaExpression(convertedParameters, Block.of(convertedBody).assignNoPrototype())
} }
is PsiCodeBlock -> { is PsiCodeBlock -> {
val convertedBlock = codeConverter.withSpecialStatementConverter(object: SpecialStatementConverter { val convertedBlock = codeConverter.withSpecialStatementConverter(object: SpecialStatementConverter {
@@ -812,12 +812,7 @@ class DefaultExpressionConverter : JavaElementVisitor(), ExpressionConverter {
parameters.map { LambdaParameter(it.first, it.second).assignNoPrototype() } parameters.map { LambdaParameter(it.first, it.second).assignNoPrototype() }
}).assignNoPrototype() }).assignNoPrototype()
val lambdaExpression = LambdaExpression( val lambdaExpression = LambdaExpression(lambdaParameterList, Block.of(statement).assignNoPrototype()).assignNoPrototype()
lambdaParameterList,
Block(listOf(statement),
LBrace().assignNoPrototype(),
RBrace().assignNoPrototype()).assignNoPrototype()
).assignNoPrototype()
if (isKotlinFunctionType) { if (isKotlinFunctionType) {
result = lambdaExpression result = lambdaExpression
@@ -69,7 +69,7 @@ class ForConverter(
} }
} }
else { else {
return Block(statements, LBrace().assignNoPrototype(), RBrace().assignNoPrototype()) return Block.of(statements)
} }
} }
}) })
@@ -85,7 +85,7 @@ class ForConverter(
if (nameConflict) { if (nameConflict) {
val statements = listOf(codeConverterToUse.convertStatement(body), updateConverted) val statements = listOf(codeConverterToUse.convertStatement(body), updateConverted)
Block(statements, LBrace().assignNoPrototype(), RBrace().assignNoPrototype(), true).assignNoPrototype() Block.of(statements).assignNoPrototype()
} }
else { else {
val block = codeConverterToUse.convertBlock(body.codeBlock, true) val block = codeConverterToUse.convertBlock(body.codeBlock, true)
@@ -94,7 +94,7 @@ class ForConverter(
} }
else { else {
val statements = listOf(codeConverterToUse.convertStatement(body), updateConverted) val statements = listOf(codeConverterToUse.convertStatement(body), updateConverted)
Block(statements, LBrace().assignNoPrototype(), RBrace().assignNoPrototype(), true).assignNoPrototype() Block.of(statements).assignNoPrototype()
} }
} }
@@ -133,7 +133,7 @@ class ForConverter(
builder.append(statements, "\n") builder.append(statements, "\n")
} }
else { else {
val block = Block(statements, LBrace().assignNoPrototype(), RBrace().assignNoPrototype()).assignNoPrototype() val block = Block.of(statements).assignNoPrototype()
if (kind == Kind.WITH_BLOCK) { if (kind == Kind.WITH_BLOCK) {
block.generateCode(builder) block.generateCode(builder)
} }
@@ -58,8 +58,7 @@ class DefaultStatementConverter : JavaElementVisitor(), StatementConverter {
} }
else { else {
val description = codeConverter.convertExpression(descriptionExpr) val description = codeConverter.convertExpression(descriptionExpr)
val block = Block(listOf(description), LBrace().assignNoPrototype(), RBrace().assignNoPrototype()) val lambda = LambdaExpression(null, Block.of(description).assignNoPrototype())
val lambda = LambdaExpression(null, block.assignNoPrototype())
result = MethodCallExpression.build(null, "assert", listOf(condition, lambda), listOf(), false) result = MethodCallExpression.build(null, "assert", listOf(condition, lambda), listOf(), false)
} }
} }
@@ -210,8 +209,8 @@ class DefaultStatementConverter : JavaElementVisitor(), StatementConverter {
} }
private fun convertTryWithResources(tryBlock: PsiCodeBlock?, resourceVariables: List<PsiResourceVariable>, catchesConverted: List<CatchStatement>, finallyConverted: Block): Statement { private fun convertTryWithResources(tryBlock: PsiCodeBlock?, resourceVariables: List<PsiResourceVariable>, catchesConverted: List<CatchStatement>, finallyConverted: Block): Statement {
var wrapResultStatement: (Expression) -> Statement = { it } val wrapResultStatement: (Expression) -> Statement = { it }
var converterForBody = codeConverter val converterForBody = codeConverter
var block = converterForBody.convertBlock(tryBlock) var block = converterForBody.convertBlock(tryBlock)
var expression: Expression = Expression.Empty var expression: Expression = Expression.Empty
@@ -221,7 +220,7 @@ class DefaultStatementConverter : JavaElementVisitor(), StatementConverter {
val lambda = LambdaExpression(parameterList, block) val lambda = LambdaExpression(parameterList, block)
expression = MethodCallExpression.build(codeConverter.convertExpression(variable.initializer), "use", listOf(lambda), listOf(), false) expression = MethodCallExpression.build(codeConverter.convertExpression(variable.initializer), "use", listOf(lambda), listOf(), false)
expression.assignNoPrototype() expression.assignNoPrototype()
block = Block(listOf(expression), LBrace().assignNoPrototype(), RBrace().assignNoPrototype()).assignNoPrototype() block = Block.of(expression).assignNoPrototype()
} }
if (catchesConverted.isEmpty() && finallyConverted.isEmpty) { if (catchesConverted.isEmpty() && finallyConverted.isEmpty) {
@@ -108,7 +108,7 @@ class SwitchConverter(private val codeConverter: CodeConverter) {
return if (statements.size == 1) return if (statements.size == 1)
statements.single() statements.single()
else else
Block(statements, LBrace().assignNoPrototype(), RBrace().assignNoPrototype(), true).assignNoPrototype() Block.of(statements).assignNoPrototype()
} }
private fun isSwitchBreak(statement: PsiStatement) = statement is PsiBreakStatement && statement.labelIdentifier == null private fun isSwitchBreak(statement: PsiStatement) = statement is PsiBreakStatement && statement.labelIdentifier == null
@@ -40,13 +40,14 @@ class Block(val statements: List<Statement>, val lBrace: LBrace, val rBrace: RBr
} }
// we use LBrace and RBrace elements to better handle comments around them // we use LBrace and RBrace elements to better handle comments around them
class LBrace() : Element() { class LBrace : Element() {
override fun generateCode(builder: CodeBuilder) { override fun generateCode(builder: CodeBuilder) {
builder.append("{") builder.append("{")
} }
} }
class RBrace() : Element() {
class RBrace : Element() {
override fun generateCode(builder: CodeBuilder) { override fun generateCode(builder: CodeBuilder) {
builder.append("}") builder.append("}")
} }