diff --git a/j2k/src/org/jetbrains/jet/j2k/AnnotationConverter.kt b/j2k/src/org/jetbrains/jet/j2k/AnnotationConverter.kt index 55a52eb81e9..6140cab447d 100644 --- a/j2k/src/org/jetbrains/jet/j2k/AnnotationConverter.kt +++ b/j2k/src/org/jetbrains/jet/j2k/AnnotationConverter.kt @@ -68,8 +68,8 @@ class AnnotationConverter(private val converter: Converter) { public fun convertAnnotation(annotation: PsiAnnotation, brackets: Boolean, newLineAfter: Boolean): Annotation? { val qualifiedName = annotation.getQualifiedName() if (qualifiedName == CommonClassNames.JAVA_LANG_DEPRECATED && annotation.getParameterList().getAttributes().isEmpty()) { - val lazyExpression = converter.lazyElement { LiteralExpression("\"\"").assignNoPrototype() } - return Annotation(Identifier("deprecated").assignNoPrototype(), listOf(null to lazyExpression), brackets, newLineAfter).assignPrototype(annotation) //TODO: insert comment + val deferredExpression = converter.deferredElement { LiteralExpression("\"\"").assignNoPrototype() } + return Annotation(Identifier("deprecated").assignNoPrototype(), listOf(null to deferredExpression), brackets, newLineAfter).assignPrototype(annotation) //TODO: insert comment } val nameRef = annotation.getNameReferenceElement() @@ -86,14 +86,14 @@ class AnnotationConverter(private val converter: Converter) { val isVarArg = method == lastMethod /* converted to vararg in Kotlin */ val attrValues = convertAttributeValue(value, expectedType, isVarArg, it.getName() == null) - attrValues.map { attrName to converter.lazyElement(it) } + attrValues.map { attrName to converter.deferredElement(it) } } return Annotation(name, arguments, brackets, newLineAfter).assignPrototype(annotation) } - public fun convertAnnotationMethodDefault(method: PsiAnnotationMethod): LazyElement? { + public fun convertAnnotationMethodDefault(method: PsiAnnotationMethod): DeferredElement? { val value = method.getDefaultValue() ?: return null - return converter.lazyElement(convertAttributeValue(value, method.getReturnType(), false, false).single()) + return converter.deferredElement(convertAttributeValue(value, method.getReturnType(), false, false).single()) } private fun convertAttributeValue(value: PsiAnnotationMemberValue?, expectedType: PsiType?, isVararg: Boolean, isUnnamed: Boolean): List<(CodeConverter) -> Expression> { diff --git a/j2k/src/org/jetbrains/jet/j2k/ConstructorConverter.kt b/j2k/src/org/jetbrains/jet/j2k/ConstructorConverter.kt index 5147481f9d8..7fe694949c4 100644 --- a/j2k/src/org/jetbrains/jet/j2k/ConstructorConverter.kt +++ b/j2k/src/org/jetbrains/jet/j2k/ConstructorConverter.kt @@ -149,7 +149,7 @@ class ConstructorConverter(private val psiClass: PsiClass, } } - public var baseClassParams: List> = listOf() + public var baseClassParams: List> = listOf() private set public fun convertConstructor(constructor: PsiMethod, @@ -193,7 +193,7 @@ class ConstructorConverter(private val psiClass: PsiClass, } return FactoryFunction(constructor.declarationIdentifier(), annotations, correctFactoryFunctionAccess(modifiers), - factoryFunctionType, params, typeParameterList, converter.lazyElement(::convertBody)) + factoryFunctionType, params, typeParameterList, converter.deferredElement(::convertBody)) } } @@ -267,7 +267,7 @@ class ConstructorConverter(private val psiClass: PsiClass, val methodCall = (statement as? PsiExpressionStatement)?.getExpression() as? PsiMethodCallExpression if (methodCall != null && methodCall.isSuperConstructorCall()) { baseClassParams = methodCall.getArgumentList().getExpressions().map { - correctedConverter.lazyElement { codeConverter -> codeConverter.correct().convertExpression(it) } + correctedConverter.deferredElement { codeConverter -> codeConverter.correct().convertExpression(it) } } } @@ -275,7 +275,7 @@ class ConstructorConverter(private val psiClass: PsiClass, val parameter = params[i] val indexFromEnd = params.size - i - 1 val defaultValue = if (indexFromEnd < lastParamDefaults.size) - correctedConverter.lazyElement { codeConverter -> codeConverter.correct().convertExpression(lastParamDefaults[indexFromEnd], parameter.getType()) } + correctedConverter.deferredElement { codeConverter -> codeConverter.correct().convertExpression(lastParamDefaults[indexFromEnd], parameter.getType()) } else null if (!parameterToField.containsKey(parameter)) { @@ -297,7 +297,7 @@ class ConstructorConverter(private val psiClass: PsiClass, defaultValue).assignPrototypes(listOf(parameter, field), CommentsAndSpacesInheritance(blankLinesBefore = false)) } }).assignPrototype(primaryConstructor.getParameterList()) - return PrimaryConstructor(annotations, modifiers, parameterList, converter.lazyElement(bodyGenerator)).assignPrototype(primaryConstructor) + return PrimaryConstructor(annotations, modifiers, parameterList, converter.deferredElement(bodyGenerator)).assignPrototype(primaryConstructor) } private fun findBackingFieldForConstructorParameter(parameter: PsiParameter, constructor: PsiMethod): Pair? { diff --git a/j2k/src/org/jetbrains/jet/j2k/Converter.kt b/j2k/src/org/jetbrains/jet/j2k/Converter.kt index c823dd858b7..e5a51853be2 100644 --- a/j2k/src/org/jetbrains/jet/j2k/Converter.kt +++ b/j2k/src/org/jetbrains/jet/j2k/Converter.kt @@ -42,7 +42,7 @@ class Converter private(private val elementToConvert: PsiElement, // state which is shared between all converter's based on this one private class CommonState { val importsToAdd = LinkedHashSet() - val lazyElements = ArrayList>() + val deferredElements = ArrayList>() val usageProcessings = ArrayList() val postUnfoldActions = ArrayList<() -> Unit>() } @@ -83,7 +83,7 @@ class Converter private(private val elementToConvert: PsiElement, val element = convertTopElement(elementToConvert) ?: return null return object: IntermediateResult { override fun finishConversion(usageProcessings: Collection): String { - unfoldLazyElements(usageProcessings) + unfoldDeferredElements(usageProcessings) val builder = CodeBuilder(elementToConvert) builder.append(element) @@ -108,22 +108,22 @@ class Converter private(private val elementToConvert: PsiElement, else -> null } - private fun unfoldLazyElements(usageProcessings: Collection) { + private fun unfoldDeferredElements(usageProcessings: Collection) { val codeConverter = createDefaultCodeConverter().withSpecialExpressionConverter(UsageProcessingExpressionConverter(usageProcessings)) - // we use loop with index because new lazy elements can be added during unfolding + // we use loop with index because new deferred elements can be added during unfolding var i = 0 - while (i < commonState.lazyElements.size) { - val lazyElement = commonState.lazyElements[i++] - lazyElement.unfold(codeConverter.withConverter(this.withState(lazyElement.converterState))) + while (i < commonState.deferredElements.size) { + val deferredElement = commonState.deferredElements[i++] + deferredElement.unfold(codeConverter.withConverter(this.withState(deferredElement.converterState))) } commonState.postUnfoldActions.forEach { it() } } - public fun lazyElement(generator: (CodeConverter) -> TResult): LazyElement { - val element = LazyElement(generator, personalState) - commonState.lazyElements.add(element) + public fun deferredElement(generator: (CodeConverter) -> TResult): DeferredElement { + val element = DeferredElement(generator, personalState) + commonState.deferredElements.add(element) return element } @@ -131,7 +131,7 @@ class Converter private(private val elementToConvert: PsiElement, commonState.usageProcessings.add(processing) } - public fun addPostUnfoldLazyElementsAction(action: () -> Unit) { + public fun addPostUnfoldDeferredElementsAction(action: () -> Unit) { commonState.postUnfoldActions.add(action) } @@ -146,7 +146,7 @@ class Converter private(private val elementToConvert: PsiElement, } }.filterNotNull() - addPostUnfoldLazyElementsAction { + addPostUnfoldDeferredElementsAction { assert(importList != null) if (importsToAdd.isNotEmpty()) { importList!!.imports = importList.imports + importsToAdd.map { Import(it).assignNoPrototype() } @@ -254,7 +254,7 @@ class Converter private(private val elementToConvert: PsiElement, } public fun convertInitializer(initializer: PsiClassInitializer): Initializer { - return Initializer(lazyElement { codeConverter -> codeConverter.convertBlock(initializer.getBody()) }, + return Initializer(deferredElement { codeConverter -> codeConverter.convertBlock(initializer.getBody()) }, convertModifiers(initializer)).assignPrototype(initializer) } @@ -273,7 +273,7 @@ class Converter private(private val elementToConvert: PsiElement, annotations, modifiers, typeConverter.convertType(field.getType(), Nullability.NotNull), - lazyElement { codeConverter -> ExpressionList(codeConverter.convertExpressions(argumentList?.getExpressions() ?: array())).assignPrototype(argumentList) }) + deferredElement { codeConverter -> ExpressionList(codeConverter.convertExpressions(argumentList?.getExpressions() ?: array())).assignPrototype(argumentList) }) } else { val isVal = isVal(referenceSearcher, field) @@ -288,7 +288,7 @@ class Converter private(private val elementToConvert: PsiElement, annotations, modifiers, propertyType, - lazyElement { codeConverter -> codeConverter.convertExpression(field.getInitializer(), field.getType()) }, + deferredElement { codeConverter -> codeConverter.convertExpression(field.getInitializer(), field.getType()) }, isVal, typeToDeclare != null, shouldGenerateDefaultInitializer(referenceSearcher, field), @@ -369,7 +369,7 @@ class Converter private(private val elementToConvert: PsiElement, var params = convertParameterList(method.getParameterList()) val typeParameterList = convertTypeParameterList(method.getTypeParameterList()) - var body = lazyElement { (codeConverter: CodeConverter) -> + var body = deferredElement { (codeConverter: CodeConverter) -> val body = codeConverter.withMethodReturnType(method.getReturnType()).convertBlock(method.getBody()) postProcessBody(body) } @@ -480,7 +480,7 @@ class Converter private(private val elementToConvert: PsiElement, nullability: Nullability = Nullability.Default, varValModifier: Parameter.VarValModifier = Parameter.VarValModifier.None, modifiers: Modifiers = Modifiers.Empty(), - defaultValue: LazyElement? = null): Parameter { + defaultValue: DeferredElement? = null): Parameter { var type = typeConverter.convertVariableType(parameter) when (nullability) { Nullability.NotNull -> type = type.toNotNullType() @@ -516,7 +516,7 @@ class Converter private(private val elementToConvert: PsiElement, if (types.isEmpty()) return Annotations.Empty() val arguments = types.indices.map { index -> val convertedType = typeConverter.convertType(types[index], Nullability.NotNull) - null to lazyElement { MethodCallExpression.buildNotNull(null, "javaClass", listOf(), listOf(convertedType)).assignPrototype(refElements[index]) } + null to deferredElement { MethodCallExpression.buildNotNull(null, "javaClass", listOf(), listOf(convertedType)).assignPrototype(refElements[index]) } } val annotation = Annotation(Identifier("throws").assignNoPrototype(), arguments, false, true) return Annotations(listOf(annotation.assignPrototype(throwsList))).assignPrototype(throwsList) diff --git a/j2k/src/org/jetbrains/jet/j2k/ast/Annotation.kt b/j2k/src/org/jetbrains/jet/j2k/ast/Annotation.kt index 080cfdf609c..52a4d42a1f1 100644 --- a/j2k/src/org/jetbrains/jet/j2k/ast/Annotation.kt +++ b/j2k/src/org/jetbrains/jet/j2k/ast/Annotation.kt @@ -18,7 +18,7 @@ package org.jetbrains.jet.j2k.ast import org.jetbrains.jet.j2k.* -class Annotation(val name: Identifier, val arguments: List>>, val brackets: Boolean, val newLineAfter: Boolean) : Element() { +class Annotation(val name: Identifier, val arguments: List>>, val brackets: Boolean, val newLineAfter: Boolean) : Element() { private fun CodeBuilder.surroundWithBrackets(action: () -> Unit) { if (brackets) append("[") action() diff --git a/j2k/src/org/jetbrains/jet/j2k/ast/Class.kt b/j2k/src/org/jetbrains/jet/j2k/ast/Class.kt index 8c55f569483..d6c4399eec9 100644 --- a/j2k/src/org/jetbrains/jet/j2k/ast/Class.kt +++ b/j2k/src/org/jetbrains/jet/j2k/ast/Class.kt @@ -24,7 +24,7 @@ open class Class( modifiers: Modifiers, val typeParameterList: TypeParameterList, val extendsTypes: List, - val baseClassParams: List>, + val baseClassParams: List>, val implementsTypes: List, val body: ClassBody ) : Member(annotations, modifiers) { diff --git a/j2k/src/org/jetbrains/jet/j2k/ast/ClassBody.kt b/j2k/src/org/jetbrains/jet/j2k/ast/ClassBody.kt index ebd40bf9f82..9e3ffb3136e 100644 --- a/j2k/src/org/jetbrains/jet/j2k/ast/ClassBody.kt +++ b/j2k/src/org/jetbrains/jet/j2k/ast/ClassBody.kt @@ -22,7 +22,7 @@ abstract class Member(val annotations: Annotations, val modifiers: Modifiers) : class ClassBody ( val primaryConstructorSignature: PrimaryConstructorSignature?, - val baseClassParams: List>, + val baseClassParams: List>, val members: List, val classObjectMembers: List, val factoryFunctions: List, diff --git a/j2k/src/org/jetbrains/jet/j2k/ast/Constructors.kt b/j2k/src/org/jetbrains/jet/j2k/ast/Constructors.kt index f941db0aed4..5bfa163c0bc 100644 --- a/j2k/src/org/jetbrains/jet/j2k/ast/Constructors.kt +++ b/j2k/src/org/jetbrains/jet/j2k/ast/Constructors.kt @@ -22,7 +22,7 @@ import com.intellij.util.IncorrectOperationException class PrimaryConstructor(annotations: Annotations, modifiers: Modifiers, val parameterList: ParameterList, - val body: LazyElement) + val body: DeferredElement) : Member(annotations, modifiers) { override fun generateCode(builder: CodeBuilder) { throw IncorrectOperationException() } @@ -34,7 +34,7 @@ class PrimaryConstructor(annotations: Annotations, val signature = PrimaryConstructorSignature(annotations, modifiers, parameterList) // assign prototypes later because we don't know yet whether the body is empty or not - converter.addPostUnfoldLazyElementsAction { + converter.addPostUnfoldDeferredElementsAction { val inheritance = CommentsAndSpacesInheritance(blankLinesBefore = false, commentsAfter = body.isEmpty, commentsInside = body.isEmpty) signature.assignPrototypesFrom(this, inheritance) } @@ -66,5 +66,5 @@ class FactoryFunction(name: Identifier, returnType: Type, parameterList: ParameterList, typeParameterList: TypeParameterList, - body: LazyElement) + body: DeferredElement) : Function(name, annotations, modifiers, returnType, typeParameterList, parameterList, body, false) diff --git a/j2k/src/org/jetbrains/jet/j2k/ast/Element.kt b/j2k/src/org/jetbrains/jet/j2k/ast/Element.kt index 63e96125956..75fc1d3d6ea 100644 --- a/j2k/src/org/jetbrains/jet/j2k/ast/Element.kt +++ b/j2k/src/org/jetbrains/jet/j2k/ast/Element.kt @@ -88,8 +88,8 @@ object EmptyElementPrototypes { public fun set(thisRef: Element, desc: PropertyMetadata, value: List?) { } } -// this class should never be created directly - Converter.lazyElement() should be used! -class LazyElement( +// this class should never be created directly - Converter.deferredElement() should be used! +class DeferredElement( private var generator: (CodeConverter) -> TResult, public val converterState: Converter.PersonalState ) : Element() { @@ -114,7 +114,7 @@ class LazyElement( private val resultNotNull: TResult get() { - assert(result != null) { "No code generated for lazy element $this. Possible reason is that it has been created directly instead of Converter.lazyElement() call." } + assert(result != null) { "No code generated for deferred element $this. Possible reason is that it has been created directly instead of Converter.lazyElement() call." } return result!! } diff --git a/j2k/src/org/jetbrains/jet/j2k/ast/Enum.kt b/j2k/src/org/jetbrains/jet/j2k/ast/Enum.kt index 3ca04608bb7..17b45d779a3 100644 --- a/j2k/src/org/jetbrains/jet/j2k/ast/Enum.kt +++ b/j2k/src/org/jetbrains/jet/j2k/ast/Enum.kt @@ -24,7 +24,7 @@ class Enum( modifiers: Modifiers, typeParameterList: TypeParameterList, extendsTypes: List, - baseClassParams: List>, + baseClassParams: List>, implementsTypes: List, body: ClassBody ) : Class(name, annotations, modifiers, typeParameterList, extendsTypes, baseClassParams, implementsTypes, body) { diff --git a/j2k/src/org/jetbrains/jet/j2k/ast/EnumConstant.kt b/j2k/src/org/jetbrains/jet/j2k/ast/EnumConstant.kt index 2dc770ab980..caa0a5db1ce 100644 --- a/j2k/src/org/jetbrains/jet/j2k/ast/EnumConstant.kt +++ b/j2k/src/org/jetbrains/jet/j2k/ast/EnumConstant.kt @@ -23,7 +23,7 @@ class EnumConstant( annotations: Annotations, modifiers: Modifiers, val type: Type, - val params: LazyElement + val params: DeferredElement ) : Member(annotations, modifiers) { override fun generateCode(builder: CodeBuilder) { diff --git a/j2k/src/org/jetbrains/jet/j2k/ast/Function.kt b/j2k/src/org/jetbrains/jet/j2k/ast/Function.kt index 95f3d21a14e..3dbd7c34770 100644 --- a/j2k/src/org/jetbrains/jet/j2k/ast/Function.kt +++ b/j2k/src/org/jetbrains/jet/j2k/ast/Function.kt @@ -25,7 +25,7 @@ open class Function( val returnType: Type, val typeParameterList: TypeParameterList, val parameterList: ParameterList, - val body: LazyElement?, + val body: DeferredElement?, val isInTrait: Boolean ) : Member(annotations, modifiers) { diff --git a/j2k/src/org/jetbrains/jet/j2k/ast/Initializer.kt b/j2k/src/org/jetbrains/jet/j2k/ast/Initializer.kt index a57326d76bd..0aee67021ef 100644 --- a/j2k/src/org/jetbrains/jet/j2k/ast/Initializer.kt +++ b/j2k/src/org/jetbrains/jet/j2k/ast/Initializer.kt @@ -18,7 +18,7 @@ package org.jetbrains.jet.j2k.ast import org.jetbrains.jet.j2k.* -class Initializer(val body: LazyElement, modifiers: Modifiers) : Member(Annotations.Empty(), modifiers) { +class Initializer(val body: DeferredElement, modifiers: Modifiers) : Member(Annotations.Empty(), modifiers) { override fun generateCode(builder: CodeBuilder) { builder.append(body) } diff --git a/j2k/src/org/jetbrains/jet/j2k/ast/Parameter.kt b/j2k/src/org/jetbrains/jet/j2k/ast/Parameter.kt index 5173f632299..0bc78fab702 100644 --- a/j2k/src/org/jetbrains/jet/j2k/ast/Parameter.kt +++ b/j2k/src/org/jetbrains/jet/j2k/ast/Parameter.kt @@ -23,7 +23,7 @@ class Parameter(val identifier: Identifier, val varVal: Parameter.VarValModifier, val annotations: Annotations, val modifiers: Modifiers, - val defaultValue: LazyElement? = null) : Element() { + val defaultValue: DeferredElement? = null) : Element() { public enum class VarValModifier { None Val diff --git a/j2k/src/org/jetbrains/jet/j2k/ast/Property.kt b/j2k/src/org/jetbrains/jet/j2k/ast/Property.kt index e069449cf32..212336ddc66 100644 --- a/j2k/src/org/jetbrains/jet/j2k/ast/Property.kt +++ b/j2k/src/org/jetbrains/jet/j2k/ast/Property.kt @@ -23,7 +23,7 @@ class Property( annotations: Annotations, modifiers: Modifiers, val type: Type, - private val initializer: LazyElement, + private val initializer: DeferredElement, val isVal: Boolean, val explicitType: Boolean, private val defaultInitializer: Boolean, diff --git a/j2k/src/org/jetbrains/jet/j2k/ast/Trait.kt b/j2k/src/org/jetbrains/jet/j2k/ast/Trait.kt index 85ffca2f00e..8f80ce4ac0c 100644 --- a/j2k/src/org/jetbrains/jet/j2k/ast/Trait.kt +++ b/j2k/src/org/jetbrains/jet/j2k/ast/Trait.kt @@ -23,7 +23,7 @@ class Trait(name: Identifier, modifiers: Modifiers, typeParameterList: TypeParameterList, extendsTypes: List, - baseClassParams: List>, + baseClassParams: List>, implementsTypes: List, body: ClassBody ) : Class(name, annotations, modifiers, typeParameterList, extendsTypes, baseClassParams, implementsTypes, body) {