Migrating to Kotlin M4: Most compilation errors outside AST fixed

This commit is contained in:
Andrey Breslav
2013-01-19 08:57:52 -08:00
committed by Pavel V. Talanov
parent 0f6533bf7b
commit b828aaf733
42 changed files with 93 additions and 139 deletions
+45 -45
View File
@@ -21,10 +21,10 @@ import java.text.MessageFormat
import com.intellij.psi.util.PsiUtil
public open class Converter() {
private var classIdentifiers: Set<String> = hashSet()
private var classIdentifiers: MutableSet<String> = Sets.newHashSet()!!
private val dispatcher: Dispatcher = Dispatcher(this)
private var methodReturnType: PsiType? = null
private val flags: Set<J2KConverterFlags?>? = Sets.newHashSet()
private val flags: MutableSet<J2KConverterFlags?>? = Sets.newHashSet()
public open fun addFlag(flag: J2KConverterFlags): Boolean {
return flags?.add(flag)!!
}
@@ -32,7 +32,7 @@ public open class Converter() {
return flags?.contains(flag)!!
}
public open fun setClassIdentifiers(identifiers: Set<String>) {
public open fun setClassIdentifiers(identifiers: MutableSet<String>) {
classIdentifiers = identifiers
}
@@ -74,10 +74,10 @@ public open class Converter() {
private fun fileToFile(javaFile: PsiJavaFile, additionalImports: List<String>): File {
val importList: PsiImportList? = javaFile.getImportList()
val imports: List<Import> = (if (importList == null)
val imports: MutableList<Import> = (if (importList == null)
arrayList()
else
importsToImportList(importList.getAllImportStatements()))
ArrayList(importsToImportList(importList.getAllImportStatements())))
for (i : String in additionalImports)
imports.add(Import(i))
@@ -97,8 +97,8 @@ public open class Converter() {
return AnonymousClass(this, getMembers(anonymousClass))
}
private fun getMembers(psiClass: PsiClass): List<Node> {
val members: List<Node> = arrayList()
private fun getMembers(psiClass: PsiClass): MutableList<Node> {
val members = ArrayList<Node>()
val lbraceOffset = psiClass.getLBrace()?.getTextRange()?.getStartOffset() ?: 0
for (e : PsiElement? in psiClass.getChildren()) {
val isDocComment = e?.getTextRange()?.getStartOffset() ?: 0 < lbraceOffset
@@ -110,7 +110,7 @@ public open class Converter() {
}
private fun getDocComments(element: PsiElement): List<Node> {
val comments: List<Node> = arrayList()
val comments = ArrayList<Node>()
val textOffset = element.getTextOffset()
for (e : PsiElement? in element.getChildren()) {
if (e is PsiComment && e.getTextRange()?.getStartOffset() ?: 0 < textOffset) {
@@ -136,8 +136,8 @@ public open class Converter() {
val implementsTypes: List<Type> = typesToNotNullableTypeList(psiClass.getImplementsListTypes())
val extendsTypes: List<Type> = typesToNotNullableTypeList(psiClass.getExtendsListTypes())
val name: Identifier = Identifier(psiClass.getName()!!)
val baseClassParams: List<Expression> = arrayList()
val members: List<Node> = getMembers(psiClass)
val baseClassParams= ArrayList<Expression>()
val members = getMembers(psiClass)
val docComments = getDocComments(psiClass)
val visitor: SuperVisitor = SuperVisitor()
psiClass.accept(visitor)
@@ -150,7 +150,7 @@ public open class Converter() {
if (!psiClass.isEnum() && !psiClass.isInterface() && psiClass.getConstructors().size > 1 &&
getPrimaryConstructorForThisCase(psiClass) == null) {
val finalOrWithEmptyInitializer: List<Field> = getFinalOrWithEmptyInitializer(fields)
val initializers: Map<String, String> = HashMap<String, String>()
val initializers = HashMap<String, String>()
for (m in members) {
if (m is Constructor) {
if (!m.isPrimary) {
@@ -158,7 +158,7 @@ public open class Converter() {
val init: String = getDefaultInitializer(fo)
initializers.put(fo.identifier.toKotlin(), init)
}
val newStatements: List<Element> = arrayList()
val newStatements = ArrayList<Element>()
for (s in m.block!!.statements) {
var isRemoved: Boolean = false
if (s is AssignmentExpression) {
@@ -209,7 +209,7 @@ public open class Converter() {
return Initializer(blockToBlock(i.getBody(), true), modifiersListToModifiersSet(i.getModifierList()))
}
private fun fieldsToFieldList(fields: Array<PsiField?>, psiClass: PsiClass): List<Field> {
private fun fieldsToFieldList(fields: Array<PsiField>, psiClass: PsiClass): List<Field> {
return fields.map { fieldToField(it!!, psiClass) }
}
@@ -283,7 +283,7 @@ public open class Converter() {
}
private fun createFunctionParameters(method: PsiMethod): ParameterList {
val result: List<Parameter> = arrayList()
val result = ArrayList<Parameter>()
for (parameter : PsiParameter? in method.getParameterList().getParameters()) {
result.add(Parameter(Identifier(parameter?.getName()!!),
typeToType(parameter?.getType(),
@@ -332,11 +332,11 @@ public open class Converter() {
return blockToBlock(block, true)
}
public open fun statementsToStatementList(statements: Array<PsiElement?>): List<Element> {
public open fun statementsToStatementList(statements: Array<PsiElement>): List<Element> {
return statements.filterNot { it is PsiWhiteSpace }.map { statementToStatement(it) }
}
public open fun statementsToStatementList(statements: List<PsiElement?>): List<Element> {
public open fun statementsToStatementList(statements: List<PsiElement>): List<Element> {
return statements.filterNot { it is PsiWhiteSpace }.map { statementToStatement(it) }
}
@@ -349,8 +349,8 @@ public open class Converter() {
return statementVisitor.getResult()
}
public open fun expressionsToExpressionList(expressions: Array<PsiExpression?>): List<Expression> {
val result: List<Expression> = arrayList()
public open fun expressionsToExpressionList(expressions: Array<PsiExpression>): List<Expression> {
val result = ArrayList<Expression>()
for (e : PsiExpression? in expressions)
result.add(expressionToExpression(e))
return result
@@ -375,7 +375,7 @@ public open class Converter() {
}
public open fun elementsToElementList(elements: Array<out PsiElement?>): List<Element> {
val result: List<Element> = arrayList()
val result = ArrayList<Element>()
for(element in elements) {
result.add(elementToElement(element))
}
@@ -398,7 +398,7 @@ public open class Converter() {
return typeVisitor.getResult()
}
public open fun typesToTypeList(types: Array<PsiType?>): List<Type> {
public open fun typesToTypeList(types: Array<PsiType>): List<Type> {
return types.map { typeToType(it) }
}
@@ -412,14 +412,14 @@ public open class Converter() {
}
private fun typesToNotNullableTypeList(types: Array<out PsiType?>): List<Type> {
val result: List<Type> = arrayList()
val result = ArrayList<Type>()
for(aType in types) {
result.add(typeToType(aType).convertedToNotNull())
}
return result
}
public open fun parametersToParameterList(parameters: Array<PsiParameter?>): List<Parameter?> {
public open fun parametersToParameterList(parameters: Array<PsiParameter>): List<Parameter?> {
return parameters.map { parameterToParameter(it!!) }
}
@@ -431,13 +431,13 @@ public open class Converter() {
public open fun argumentsToExpressionList(expression: PsiCallExpression): List<Expression> {
val argumentList: PsiExpressionList? = expression.getArgumentList()
val arguments: Array<PsiExpression?> = (if (argumentList != null)
val arguments: Array<PsiExpression> = (if (argumentList != null)
argumentList.getExpressions()
else
PsiExpression.EMPTY_ARRAY)
val result: List<Expression> = ArrayList<Expression>()
val result = ArrayList<Expression>()
val resolved: PsiMethod? = expression.resolveMethod()
val expectedTypes: List<PsiType?> = ArrayList<PsiType?>()
val expectedTypes = ArrayList<PsiType?>()
if (resolved != null) {
for (p : PsiParameter? in resolved.getParameterList().getParameters())
expectedTypes.add(p?.getType())
@@ -503,7 +503,7 @@ public open class Converter() {
}
private fun getFinalOrWithEmptyInitializer(fields: List<out Field>): List<Field> {
val result: List<Field> = arrayList()
val result = ArrayList<Field>()
for (f : Field in fields)
if (f.isVal() || f.initializer.toKotlin().isEmpty()) {
result.add(f)
@@ -517,7 +517,7 @@ public open class Converter() {
}
private fun createInitStatementsFromFields(fields: List<out Field>): List<Element> {
val result: List<Element> = arrayList()
val result = ArrayList<Element>()
for (f : Field in fields) {
val identifierToKotlin: String? = f.identifier.toKotlin()
result.add(DummyStringExpression(identifierToKotlin + " = " + "_" + identifierToKotlin))
@@ -612,7 +612,7 @@ public open class Converter() {
}
private fun isInheritFromObject(method: PsiMethod): Boolean {
var superSignatures: List<HierarchicalMethodSignature?>? = method.getHierarchicalMethodSignature().getSuperSignatures()
var superSignatures: List<HierarchicalMethodSignature?> = method.getHierarchicalMethodSignature().getSuperSignatures()!!
for (s : HierarchicalMethodSignature? in superSignatures) {
var containingClass: PsiClass? = s?.getMethod()?.getContainingClass()
var qualifiedName: String? = (if (containingClass != null)
@@ -644,8 +644,8 @@ public open class Converter() {
return false
}
private fun importsToImportList(imports: Array<PsiImportStatementBase?>): List<Import> {
val result: List<Import> = arrayList()
private fun importsToImportList(imports: Array<PsiImportStatementBase>): List<Import> {
val result = ArrayList<Import>()
for (i : PsiImportStatementBase? in imports) {
if (i == null) continue
val anImport: Import = importToImport(i)
@@ -677,7 +677,7 @@ public open class Converter() {
return Identifier(identifier.getText()!!)
}
public open fun modifiersListToModifiersSet(modifierList: PsiModifierList?): Set<Modifier> {
public open fun modifiersListToModifiersSet(modifierList: PsiModifierList?): MutableSet<Modifier> {
val modifiersSet: HashSet<Modifier> = hashSet()
if (modifierList != null) {
if (modifierList.hasExplicitModifier(PsiModifier.ABSTRACT))
@@ -710,7 +710,7 @@ public open class Converter() {
return false
}
val typeMap: Map<String, String> = HashMap<String, String>()
val typeMap = HashMap<String, String>()
typeMap.put(JAVA_LANG_BYTE, "byte")
typeMap.put(JAVA_LANG_SHORT, "short")
typeMap.put(JAVA_LANG_INTEGER, "int")
@@ -727,8 +727,8 @@ public open class Converter() {
}
}
public open fun createMainFunction(file: PsiFile): String {
val classNamesWithMains: List<Pair<String?, PsiMethod?>?> = arrayList()
public fun createMainFunction(file: PsiFile): String {
val classNamesWithMains = ArrayList<Pair<String?, PsiMethod?>?>()
for (c : PsiClass? in (file as PsiJavaFile).getClasses()) {
var main: PsiMethod? = findMainMethod(c)
if (main != null) {
@@ -747,7 +747,7 @@ public open fun createMainFunction(file: PsiFile): String {
private fun findMainMethod(aClass: PsiClass?): PsiMethod? {
if (isMainClass(aClass)) {
val mainMethods: Array<PsiMethod?>? = aClass?.findMethodsByName("main", false)
val mainMethods: Array<PsiMethod>? = aClass?.findMethodsByName("main", false)
if (mainMethods != null) {
return findMainMethod(mainMethods)
}
@@ -766,11 +766,11 @@ private fun isMainClass(psiClass: PsiClass?): Boolean {
}
private fun findMainMethod(mainMethods: Array<PsiMethod?>): PsiMethod? {
private fun findMainMethod(mainMethods: Array<PsiMethod>): PsiMethod? {
return mainMethods.find { isMainMethod(it) }
}
public open fun isMainMethod(method: PsiMethod?): Boolean {
public fun isMainMethod(method: PsiMethod?): Boolean {
if (method == null || method.getContainingClass() == null)
return false
@@ -783,7 +783,7 @@ public open fun isMainMethod(method: PsiMethod?): Boolean {
if (!method.hasModifierProperty(PsiModifier.PUBLIC))
return false
val parameters: Array<PsiParameter?>? = method.getParameterList().getParameters()
val parameters: Array<PsiParameter>? = method.getParameterList().getParameters()
if (parameters?.size!! != 1)
return false
@@ -795,12 +795,12 @@ public open fun isMainMethod(method: PsiMethod?): Boolean {
return componentType?.equalsToText("java.lang.String")!!
}
public open fun countWritingAccesses(element: PsiElement?, container: PsiElement?): Int {
public fun countWritingAccesses(element: PsiElement?, container: PsiElement?): Int {
var counter: Int = 0
if (container != null) {
val visitor: ReferenceCollector = ReferenceCollector()
container.accept(visitor)
for (e : PsiReferenceExpression? in visitor.getCollectedReferences())
for (e : PsiReferenceExpression in visitor.getCollectedReferences())
if (e?.isReferenceTo(element)!! && PsiUtil.isAccessedForWriting(e)) {
counter++
}
@@ -810,7 +810,7 @@ public open fun countWritingAccesses(element: PsiElement?, container: PsiElement
}
open class ReferenceCollector(): JavaRecursiveElementVisitor() {
private val myCollectedReferences: List<PsiReferenceExpression> = arrayList()
private val myCollectedReferences = ArrayList<PsiReferenceExpression>()
public open fun getCollectedReferences(): List<PsiReferenceExpression> {
return myCollectedReferences
@@ -824,14 +824,14 @@ open class ReferenceCollector(): JavaRecursiveElementVisitor() {
}
}
public open fun isReadOnly(element: PsiElement?, container: PsiElement?): Boolean {
public fun isReadOnly(element: PsiElement?, container: PsiElement?): Boolean {
return countWritingAccesses(element, container) == 0
}
public open fun isAnnotatedAsNotNull(modifierList: PsiModifierList?): Boolean {
public fun isAnnotatedAsNotNull(modifierList: PsiModifierList?): Boolean {
if (modifierList != null) {
val annotations: Array<PsiAnnotation?>? = modifierList.getAnnotations()
for (a : PsiAnnotation? in annotations) {
val annotations: Array<PsiAnnotation> = modifierList.getAnnotations()
for (a : PsiAnnotation in annotations) {
val qualifiedName: String? = a?.getQualifiedName()
if (qualifiedName != null && Converter.NOT_NULL_ANNOTATIONS.contains(qualifiedName)) {
return true
@@ -15,7 +15,8 @@
*/
package org.jetbrains.jet.j2k;
import com.intellij.core.JavaCoreEnvironment;
import com.intellij.core.JavaCoreApplicationEnvironment;
import com.intellij.core.JavaCoreProjectEnvironment;
import com.intellij.lang.java.JavaLanguage;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.util.text.StringUtil;
@@ -45,31 +46,33 @@ public class JavaToKotlinTranslator {
@Nullable
private static PsiFile createFile(@NotNull String text) {
JavaCoreEnvironment javaCoreEnvironment = setUpJavaCoreEnvironment();
JavaCoreProjectEnvironment javaCoreEnvironment = setUpJavaCoreEnvironment();
return PsiFileFactory.getInstance(javaCoreEnvironment.getProject()).createFileFromText(
"test.java", JavaLanguage.INSTANCE, text
);
}
@Nullable
static PsiFile createFile(@NotNull JavaCoreEnvironment javaCoreEnvironment, @NotNull String text) {
static PsiFile createFile(@NotNull JavaCoreProjectEnvironment javaCoreEnvironment, @NotNull String text) {
return PsiFileFactory.getInstance(javaCoreEnvironment.getProject()).createFileFromText(
"test.java", JavaLanguage.INSTANCE, text
);
}
@NotNull
static JavaCoreEnvironment setUpJavaCoreEnvironment() {
JavaCoreEnvironment javaCoreEnvironment = new JavaCoreEnvironment(new Disposable() {
static JavaCoreProjectEnvironment setUpJavaCoreEnvironment() {
Disposable parentDisposable = new Disposable() {
@Override
public void dispose() {
}
});
};
JavaCoreApplicationEnvironment applicationEnvironment = new JavaCoreApplicationEnvironment(parentDisposable);
JavaCoreProjectEnvironment javaCoreEnvironment = new JavaCoreProjectEnvironment(parentDisposable, applicationEnvironment);
javaCoreEnvironment.addToClasspath(findRtJar());
javaCoreEnvironment.addJarToClassPath(findRtJar());
File annotations = findAnnotations();
if (annotations != null && annotations.exists()) {
javaCoreEnvironment.addToClasspath(annotations);
javaCoreEnvironment.addJarToClassPath(annotations);
}
return javaCoreEnvironment;
}
@@ -3,7 +3,6 @@ package org.jetbrains.jet.j2k.ast
import org.jetbrains.jet.j2k.Converter
import org.jetbrains.jet.j2k.ast.types.Type
import java.util.Collections
import java.util.List
public open class AnonymousClass(converter : Converter, members : List<Node>)
: Class(converter,
@@ -48,10 +48,10 @@ public open class ArrayInitializerExpression(val `type` : Type, val initializers
class object {
private open fun getConversion(afterReplace : String) : String {
if (afterReplace.contains("double").sure())
if (afterReplace.contains("double")!!)
return "." + OperatorConventions.DOUBLE + "()"
if (afterReplace.contains("float").sure())
if (afterReplace.contains("float")!!)
return "." + OperatorConventions.FLOAT + "()"
return ""
@@ -1,7 +1,6 @@
package org.jetbrains.jet.j2k.ast
import org.jetbrains.jet.j2k.ast.types.ArrayType
import java.util.List
import org.jetbrains.jet.j2k.ast.types.Type
public open class ArrayWithoutInitializationExpression(val `type` : Type, val expressions : List<Expression>) : Expression() {
-1
View File
@@ -1,7 +1,6 @@
package org.jetbrains.jet.j2k.ast
import java.util.LinkedList
import java.util.List
public open class Block(val statements: List<Element>, val notEmpty: Boolean = false): Statement() {
public override fun isEmpty(): Boolean {
@@ -1,8 +1,5 @@
package org.jetbrains.jet.j2k.ast
import a.h.id
public open class CallChainExpression(val expression : Expression, val identifier : Expression) : Expression() {
public override fun isNullable() : Boolean {
if (!expression.isEmpty() && expression.isNullable()) return true
+2 -4
View File
@@ -7,8 +7,6 @@ import org.jetbrains.jet.j2k.ast.types.ClassType
import org.jetbrains.jet.j2k.ast.types.Type
import java.util.HashSet
import java.util.LinkedList
import java.util.List
import java.util.Set
import java.util.ArrayList
public open class Class(converter : Converter,
@@ -60,12 +58,12 @@ public open class Class(converter : Converter,
}
private fun constructorToInit(f: Function): Function {
val modifiers : Set<Modifier> = HashSet<Modifier>(f.modifiers)
val modifiers = HashSet<Modifier>(f.modifiers)
modifiers.add(Modifier.STATIC)
val statements : List<Element> = f.block?.statements ?: arrayList()
statements.add(ReturnStatement(Identifier("__")))
val block = Block(statements)
val constructorTypeParameters : List<Element> = arrayList()
val constructorTypeParameters = ArrayList<Element>()
constructorTypeParameters.addAll(typeParameters)
constructorTypeParameters.addAll(f.typeParameters)
return Function(Identifier("init"), arrayList(), modifiers, ClassType(name, constructorTypeParameters, false),
@@ -1,7 +1,5 @@
package org.jetbrains.jet.j2k.ast
import java.util.List
import java.util.Set
import org.jetbrains.jet.j2k.ast.types.Type
public open class Constructor(identifier : Identifier,
-2
View File
@@ -2,8 +2,6 @@ package org.jetbrains.jet.j2k.ast
import org.jetbrains.jet.j2k.Converter
import org.jetbrains.jet.j2k.ast.types.Type
import java.util.List
import java.util.Set
public open class Enum(converter : Converter,
name : Identifier,
@@ -1,8 +1,6 @@
package org.jetbrains.jet.j2k.ast
import org.jetbrains.jet.j2k.ast.types.Type
import java.util.Set
import java.util.List
public open class EnumConstant(identifier : Identifier,
docComments: List<Node>,
@@ -1,7 +1,6 @@
package org.jetbrains.jet.j2k.ast
import org.jetbrains.jet.j2k.ast.types.Type
import java.util.List
public open class ExpressionList(val expressions: List<Expression>): Expression() {
public override fun toKotlin(): String = expressions.map { it.toKotlin() }.makeString(", ")
-2
View File
@@ -2,8 +2,6 @@ package org.jetbrains.jet.j2k.ast
import org.jetbrains.jet.j2k.ast.types.Type
import java.util.LinkedList
import java.util.List
import java.util.Set
import org.jetbrains.jet.j2k.Converter
public open class Field(val identifier : Identifier,
+2 -4
View File
@@ -1,10 +1,8 @@
package org.jetbrains.jet.j2k.ast
import java.util.List
public open class File(val packageName: String,
val imports: List<Import>,
val body: List<Node>,
val imports: MutableList<Import>,
val body: MutableList<Node>,
val mainFunction: String): Node() {
public override fun toKotlin(): String {
@@ -1,8 +1,6 @@
package org.jetbrains.jet.j2k.ast
import java.util.LinkedList
import java.util.List
import java.util.Set
import org.jetbrains.jet.j2k.ast.types.Type
public open class Function(val name : Identifier,
@@ -1,6 +1,5 @@
package org.jetbrains.jet.j2k.ast
import java.util.Set
public open class Identifier(val name: String,
@@ -1,6 +1,5 @@
package org.jetbrains.jet.j2k.ast
import java.util.Set
public open class Initializer(val block : Block, modifiers : Set<Modifier>) : Member(modifiers) {
public override fun toKotlin() : String {
@@ -1,7 +1,6 @@
package org.jetbrains.jet.j2k.ast
import org.jetbrains.jet.j2k.ast.types.Type
import java.util.Set
public open class LocalVariable(val identifier: Identifier,
val modifiersSet: Set<Modifier>,
-2
View File
@@ -1,7 +1,5 @@
package org.jetbrains.jet.j2k.ast
import java.util.Set
public abstract class Member(val modifiers : Set<Modifier>) : Node() {
open fun accessModifier() : Modifier? {
return modifiers.find { m -> m == Modifier.PUBLIC || m == Modifier.PROTECTED || m == Modifier.PRIVATE }
@@ -1,7 +1,6 @@
package org.jetbrains.jet.j2k.ast
import org.jetbrains.jet.j2k.ast.types.Type
import java.util.List
public open class MethodCallExpression(val methodCall: Expression,
val arguments: List<Expression>,
@@ -1,18 +1,17 @@
package org.jetbrains.jet.j2k.ast
import org.jetbrains.annotations.Nullable
import java.util.List
public open class NewClassExpression(val name: Element,
val arguments: List<Expression>,
val qualifier: Expression = Expression.EMPTY_EXPRESSION,
val anonymousClass: AnonymousClass? = null): Expression() {
public override fun toKotlin(): String {
val callOperator: String? = (if (qualifier.isNullable().sure())
val callOperator: String? = (if (qualifier.isNullable()!!)
"?."
else
".")
val qualifier: String? = (if (qualifier.isEmpty().sure())
val qualifier: String? = (if (qualifier.isEmpty()!!)
""
else
qualifier.toKotlin() + callOperator)
-1
View File
@@ -1,6 +1,5 @@
package org.jetbrains.jet.j2k.ast
import java.util.Set
public abstract class Node() {
public abstract fun toKotlin(): String
@@ -1,6 +1,5 @@
package org.jetbrains.jet.j2k.ast
import java.util.List
public open class ParameterList(val parameters : List<Parameter>) : Expression() {
public override fun toKotlin() = parameters.map { it.toKotlin() }.makeString(", ")
@@ -1,6 +1,5 @@
package org.jetbrains.jet.j2k.ast
import java.util.List
public open class PolyadicExpression(val expressions: List<Expression>, val token: String): Expression() {
public override fun toKotlin(): String {
@@ -1,7 +1,6 @@
package org.jetbrains.jet.j2k.ast
import org.jetbrains.jet.j2k.ast.types.Type
import java.util.List
public open class ReferenceElement(val reference : Identifier, val types : List<Type>) : Element() {
public override fun toKotlin() = reference.toKotlin() + types.toKotlin(", ", "<", ">")
@@ -1,6 +1,5 @@
package org.jetbrains.jet.j2k.ast
import java.util.List
public abstract class Statement(): Element() {
class object {
-2
View File
@@ -2,8 +2,6 @@ package org.jetbrains.jet.j2k.ast
import org.jetbrains.jet.j2k.Converter
import org.jetbrains.jet.j2k.ast.types.Type
import java.util.List
import java.util.Set
public open class Trait(converter : Converter,
name : Identifier,
@@ -1,7 +1,6 @@
package org.jetbrains.jet.j2k.ast
import org.jetbrains.jet.j2k.ast.types.Type
import java.util.List
public open class TypeParameter(val name : Identifier, val extendsTypes : List<Type>) : Element() {
public open fun hasWhere() : Boolean = extendsTypes.size() > 1
+3 -6
View File
@@ -1,9 +1,6 @@
package org.jetbrains.jet.j2k.ast
import java.util.List
import java.util.Collection
fun List<out Node>.toKotlin(separator: String, prefix: String = "", suffix: String = ""): String {
fun List<Node>.toKotlin(separator: String, prefix: String = "", suffix: String = ""): String {
val result = StringBuilder()
if (size() > 0) {
result.append(prefix)
@@ -15,7 +12,7 @@ fun List<out Node>.toKotlin(separator: String, prefix: String = "", suffix: Stri
}
result.append(suffix)
}
return result.toString()!!
return result.toString()
}
fun Collection<Modifier>.toKotlin(separator: String = " "): String {
@@ -24,7 +21,7 @@ fun Collection<Modifier>.toKotlin(separator: String = " "): String {
result.append(x.name)
result.append(separator)
}
return result.toString()!!
return result.toString()
}
fun String.withPrefix(prefix: String) = if (isEmpty()) "" else prefix + this
@@ -3,12 +3,12 @@ package org.jetbrains.jet.j2k.ast.types
import org.jetbrains.jet.j2k.ast.Element
import org.jetbrains.jet.j2k.ast.Identifier
import java.util.Collections
import java.util.List
import java.util.ArrayList
public open class ClassType(val `type` : Identifier, val parameters : List<out Element>, nullable : Boolean) : Type(nullable) {
public override fun toKotlin() : String {
// TODO change to map() when KT-2051 is fixed
val parametersToKotlin: List<String> = arrayList()
val parametersToKotlin = ArrayList<String>()
for(val param in parameters) {
parametersToKotlin.add(param.toKotlin())
}
@@ -3,10 +3,9 @@ package org.jetbrains.jet.j2k.visitors
import com.intellij.psi.JavaRecursiveElementVisitor
import com.intellij.psi.PsiClass
import java.util.HashSet
import java.util.Set
public open class ClassVisitor(): JavaRecursiveElementVisitor() {
private val myClassIdentifiers: Set<String> = HashSet<String>()
private val myClassIdentifiers = HashSet<String>()
public open fun getClassIdentifiers(): Set<String> {
return HashSet<String>(myClassIdentifiers)
@@ -4,7 +4,6 @@ import com.intellij.psi.*
import org.jetbrains.jet.j2k.Converter
import org.jetbrains.jet.j2k.ast.*
import org.jetbrains.jet.j2k.ast.types.Type
import java.util.List
import org.jetbrains.jet.j2k.isAnnotatedAsNotNull
import org.jetbrains.jet.j2k.isDefinitelyNotNull
@@ -10,7 +10,6 @@ import org.jetbrains.jet.j2k.ast.types.Type
import org.jetbrains.jet.lang.types.expressions.OperatorConventions
import java.util.ArrayList
import java.util.Collections
import java.util.List
import com.intellij.psi.CommonClassNames.*
import com.intellij.psi.util.PsiTreeUtil
@@ -160,10 +159,10 @@ public open class ExpressionVisitor(converter: Converter): StatementVisitor(conv
var classReference: PsiJavaCodeReferenceElement? = expression?.getClassOrAnonymousClassReference()
val isNotConvertedClass: Boolean = classReference != null && !getConverter().getClassIdentifiers().contains(classReference?.getQualifiedName())
var argumentList: PsiExpressionList? = expression?.getArgumentList()
var arguments: Array<PsiExpression?> = (if (argumentList != null)
var arguments: Array<PsiExpression> = (if (argumentList != null)
argumentList?.getExpressions()!!
else
array<PsiExpression?>())
array<PsiExpression>())
if (constructor == null || Converter.isConstructorPrimary(constructor) || isNotConvertedClass)
{
return NewClassExpression(getConverter().elementToElement(classReference),
@@ -288,8 +287,8 @@ public open class ExpressionVisitor(converter: Converter): StatementVisitor(conv
}
public override fun visitPolyadicExpression(expression: PsiPolyadicExpression?): Unit {
var parameters: List<Expression> = ArrayList<Expression>()
for (operand : PsiExpression? in expression?.getOperands()) {
var parameters = ArrayList<Expression>()
for (operand : PsiExpression in expression?.getOperands()!!) {
parameters.add(getConverter().expressionToExpression(operand, expression?.getType()))
}
myResult = PolyadicExpression(parameters, getOperatorString(expression?.getOperationTokenType()!!))
@@ -17,7 +17,7 @@ public open class ExpressionVisitorForDirectObjectInheritors(converter: Converte
myResult = MethodCallExpression.build(Identifier("this", false), "identityEquals", getConverter().argumentsToExpressionList(expression!!))
}
else if (superMethodInvocation(methodExpression, "toString")) {
myResult = DummyStringExpression(String.format("getJavaClass<%s>.getName() + '@' + Integer.toHexString(hashCode())",
myResult = DummyStringExpression(java.lang.String.format("getJavaClass<%s>.getName() + '@' + Integer.toHexString(hashCode())",
ExpressionVisitor.getClassName(methodExpression))!!)
}
else {
@@ -8,8 +8,8 @@ import org.jetbrains.jet.j2k.ast.*
import java.util.Arrays
import java.util.Collections
import java.util.LinkedList
import java.util.List
import org.jetbrains.jet.j2k.countWritingAccesses
import java.util.ArrayList
public open class StatementVisitor(converter: Converter): ElementVisitor(converter) {
public override fun visitAssertStatement(statement: PsiAssertStatement?): Unit {
@@ -97,7 +97,7 @@ public open class StatementVisitor(converter: Converter): ElementVisitor(convert
getConverter().statementToStatement(body))
}
else {
var forStatements: List<Element> = arrayList()
var forStatements = ArrayList<Element>()
forStatements.add(getConverter().statementToStatement(initialization))
forStatements.add(WhileStatement(getConverter().expressionToExpression(condition),
Block(arrayList(getConverter().statementToStatement(body),
@@ -126,7 +126,7 @@ public open class StatementVisitor(converter: Converter): ElementVisitor(convert
}
public override fun visitSwitchLabelStatement(statement: PsiSwitchLabelStatement?): Unit {
myResult = (if (statement?.isDefaultCase().sure())
myResult = (if (statement?.isDefaultCase()!!)
DefaultSwitchLabelStatement()
else
SwitchLabelStatement(getConverter().expressionToExpression(statement?.getCaseValue())))
@@ -138,14 +138,14 @@ public open class StatementVisitor(converter: Converter): ElementVisitor(convert
}
private open fun switchBodyToCases(body: PsiCodeBlock?): List<CaseContainer> {
val cases: List<List<PsiElement?>> = splitToCases(body)
val allSwitchStatements: List<PsiElement?> = arrayList()
val cases: List<List<PsiElement>> = splitToCases(body)
val allSwitchStatements = ArrayList<PsiElement>()
if (body != null) {
// TODO Arrays.asList()
for(s in body.getStatements()) allSwitchStatements.add(s)
}
val result: List<CaseContainer> = arrayList()
var pendingLabels: List<Element> = arrayList()
val result = ArrayList<CaseContainer>()
var pendingLabels = ArrayList<Element>()
var i: Int = 0
for (ls in cases) {
// TODO assert {(ls?.size()).sure() > 0}
@@ -154,9 +154,9 @@ public open class StatementVisitor(converter: Converter): ElementVisitor(convert
// TODO assert("not a right index") {allSwitchStatements?.get(i) == label}
if (ls.size() > 1) {
pendingLabels.add(getConverter().statementToStatement(label))
val slice: List<PsiElement?> = ls.subList(1, (ls.size()))
val slice: List<PsiElement> = ls.subList(1, (ls.size()))
if (!containsBreak(slice)) {
val statements = getConverter().statementsToStatementList(slice)
val statements = ArrayList(getConverter().statementsToStatementList(slice))
statements.addAll(getConverter().statementsToStatementList(getAllToNextBreak(allSwitchStatements, i + ls.size())))
result.add(CaseContainer(pendingLabels, statements))
pendingLabels = arrayList()
@@ -184,7 +184,7 @@ public open class StatementVisitor(converter: Converter): ElementVisitor(convert
}
public override fun visitTryStatement(statement: PsiTryStatement?): Unit {
val catches: List<CatchStatement> = arrayList()
val catches = ArrayList<CatchStatement>()
val catchBlocks = statement?.getCatchBlocks()!!
val catchBlockParameters = statement?.getCatchBlockParameters()!!
for (i in 0..catchBlocks.size - 1) {
@@ -222,8 +222,8 @@ public open class StatementVisitor(converter: Converter): ElementVisitor(convert
private fun containsBreak(slice: List<PsiElement?>) = slice.any { it is PsiBreakStatement }
private open fun getAllToNextBreak(allStatements: List<PsiElement?>, start: Int): List<PsiElement?> {
val result: List<PsiElement?> = arrayList()
private open fun getAllToNextBreak(allStatements: List<PsiElement>, start: Int): List<PsiElement> {
val result = ArrayList<PsiElement>()
for (i in start..allStatements.size() - 1) {
val s = allStatements.get(i)
if (s is PsiBreakStatement || s is PsiReturnStatement) {
@@ -238,9 +238,9 @@ public open class StatementVisitor(converter: Converter): ElementVisitor(convert
return result
}
private open fun splitToCases(body: PsiCodeBlock?): List<List<PsiElement?>> {
val cases: List<List<PsiElement?>> = arrayList()
var currentCaseStatements: List<PsiElement?> = arrayList()
private open fun splitToCases(body: PsiCodeBlock?): List<List<PsiElement>> {
val cases = ArrayList<List<PsiElement>>()
var currentCaseStatements = ArrayList<PsiElement>()
var isFirst: Boolean = true
if (body != null) {
for (s in body.getChildren()) {
@@ -2,14 +2,13 @@ package org.jetbrains.jet.j2k.visitors
import com.intellij.psi.*
import org.jetbrains.annotations.Nullable
import java.util.Set
import java.util.LinkedHashSet
public open class ThisVisitor(): JavaRecursiveElementVisitor() {
private val myResolvedConstructors: Set<PsiMethod> = LinkedHashSet<PsiMethod>()
private val myResolvedConstructors = LinkedHashSet<PsiMethod>()
public override fun visitReferenceExpression(expression: PsiReferenceExpression?): Unit {
for (r : PsiReference? in expression?.getReferences()) {
for (r : PsiReference? in expression?.getReferences()!!) {
if (r?.getCanonicalText() == "this") {
val res: PsiElement? = r?.resolve()
if (res is PsiMethod && res.isConstructor()) {
@@ -7,7 +7,6 @@ import org.jetbrains.jet.j2k.J2KConverterFlags
import org.jetbrains.jet.j2k.ast.*
import org.jetbrains.jet.j2k.ast.types.*
import java.util.LinkedList
import java.util.List
import com.intellij.openapi.util.text.StringUtil
public open class TypeVisitor(private val myConverter : Converter) : PsiTypeVisitor<Type>() {
@@ -79,7 +78,7 @@ public open class TypeVisitor(private val myConverter : Converter) : PsiTypeVisi
}
private fun createRawTypesForResolvedReference(classType : PsiClassType) : List<Type> {
val typeParams : List<Type> = LinkedList<Type>()
val typeParams = LinkedList<Type>()
if (classType is PsiClassReferenceType) {
val reference : PsiJavaCodeReferenceElement? = (classType as PsiClassReferenceType).getReference()
val resolve : PsiElement? = reference?.resolve()
@@ -1,5 +1,4 @@
package demo
import java.util.Iterator
open class Test() : java.lang.Iterable<String?> {
public override fun iterator() : java.util.Iterator<String?>? {
return null
@@ -1,5 +1,4 @@
package test
import java.util.List
open class User() {
open fun main() : Unit {
var list : List<Any?>? = java.util.LinkedList()
@@ -1,4 +1,3 @@
import java.util.List
import java.util.LinkedList
open class User() {
open fun main() : Unit {
@@ -1,5 +1,4 @@
package org.test
import java.util.List
import java.util.LinkedList
open class Member() {
}
@@ -1,5 +1,4 @@
package demo
import java.util.List
import java.util.LinkedList
open class Test() {
open fun main() : Unit {