diff --git a/src/org/jetbrains/jet/j2k/Converter.kt b/src/org/jetbrains/jet/j2k/Converter.kt index 22aa988310a..72eef417389 100644 --- a/src/org/jetbrains/jet/j2k/Converter.kt +++ b/src/org/jetbrains/jet/j2k/Converter.kt @@ -108,7 +108,7 @@ public open class Converter() { val typeParameters: List = elementsToElementList(psiClass.getTypeParameters()) val implementsTypes: List = typesToNotNullableTypeList(psiClass.getImplementsListTypes()) val extendsTypes: List = typesToNotNullableTypeList(psiClass.getExtendsListTypes()) - val name: IdentifierImpl = IdentifierImpl(psiClass.getName()) + val name: Identifier = Identifier(psiClass.getName()) val baseClassParams: List = arrayList() val members: List = getMembers(psiClass) val visitor: SuperVisitor = SuperVisitor() @@ -188,10 +188,10 @@ public open class Converter() { private fun fieldToField(field: PsiField, psiClass: PsiClass?): Field { val modifiers: Set = modifiersListToModifiersSet(field.getModifierList()) if (field is PsiEnumConstant?) { - return EnumConstant(IdentifierImpl(field.getName()), modifiers, typeToType(field.getType()), elementToElement(field.getArgumentList())) + return EnumConstant(Identifier(field.getName()), modifiers, typeToType(field.getType()), elementToElement(field.getArgumentList())) } - return Field(IdentifierImpl(field.getName()), + return Field(Identifier(field.getName()), modifiers, typeToType(field.getType()), expressionToExpression(field.getInitializer(), field.getType()), @@ -210,7 +210,7 @@ public open class Converter() { dispatcher.expressionVisitor = ExpressionVisitor(this) } methodReturnType = method.getReturnType() - val identifier: IdentifierImpl = IdentifierImpl(method.getName()) + val identifier: Identifier = Identifier(method.getName()) val returnType: Type = typeToType(method.getReturnType(), ConverterUtil.isAnnotatedAsNotNull(method.getModifierList())) val body: Block = (if (hasFlag(J2KConverterFlags.SKIP_BODIES)) Block.EMPTY_BLOCK @@ -245,7 +245,7 @@ public open class Converter() { val result: List = arrayList() for (parameter : PsiParameter? in method.getParameterList().getParameters()) { - result.add(Parameter(IdentifierImpl(parameter?.getName()), + result.add(Parameter(Identifier(parameter?.getName()), typeToType(parameter?.getType(), ConverterUtil.isAnnotatedAsNotNull(parameter?.getModifierList())), ConverterUtil.isReadOnly(parameter, method.getBody()))) @@ -377,7 +377,7 @@ public open class Converter() { } public open fun parameterToParameter(parameter: PsiParameter): Parameter { - return Parameter(IdentifierImpl(parameter.getName()), + return Parameter(Identifier(parameter.getName()), typeToType(parameter.getType(), ConverterUtil.isAnnotatedAsNotNull(parameter.getModifierList())), true) } @@ -409,7 +409,7 @@ public open class Converter() { public open fun expressionToExpression(argument: PsiExpression?, expectedType: PsiType?): Expression { if (argument == null) - return (Identifier.EMPTY_IDENTIFIER as IdentifierImpl) + return Identifier.EMPTY_IDENTIFIER var expression: Expression = expressionToExpression(argument) val actualType: PsiType? = argument.getType() @@ -424,7 +424,7 @@ public open class Converter() { var conversion: String? = PRIMITIVE_TYPE_CONVERSIONS.get(expectedType?.getCanonicalText()) if (conversion != null) { - expression = DummyMethodCallExpression(expression, conversion, (Identifier.EMPTY_IDENTIFIER as IdentifierImpl?)) + expression = DummyMethodCallExpression(expression, conversion, Identifier.EMPTY_IDENTIFIER) } } @@ -454,7 +454,7 @@ public open class Converter() { ?.build()!! private fun quoteKeywords(packageName: String): String { - return packageName.split("\\.").map { IdentifierImpl(it).toKotlin() }.makeString(".") + return packageName.split("\\.").map { Identifier(it).toKotlin() }.makeString(".") } private fun getFinalOrWithEmptyInitializer(fields: List): List { @@ -468,7 +468,7 @@ public open class Converter() { } private fun createParametersFromFields(fields: List): List { - return fields.map { Parameter(IdentifierImpl("_" + it.identifier.getName()), it.`type`, true) } + return fields.map { Parameter(Identifier("_" + it.identifier.getName()), it.`type`, true) } } private fun createInitStatementsFromFields(fields: List): List { @@ -628,7 +628,7 @@ public open class Converter() { if (identifier == null) return Identifier.EMPTY_IDENTIFIER - return IdentifierImpl(identifier?.getText()) + return Identifier(identifier?.getText()) } public open fun modifiersListToModifiersSet(modifierList: PsiModifierList?): Set { diff --git a/src/org/jetbrains/jet/j2k/ast/AnonymousClass.kt b/src/org/jetbrains/jet/j2k/ast/AnonymousClass.kt index a2995a87743..a397f501658 100644 --- a/src/org/jetbrains/jet/j2k/ast/AnonymousClass.kt +++ b/src/org/jetbrains/jet/j2k/ast/AnonymousClass.kt @@ -7,7 +7,7 @@ import java.util.List public open class AnonymousClass(converter : Converter, members : List) : Class(converter, - IdentifierImpl("anonClass"), + Identifier("anonClass"), Collections.emptySet()!!, Collections.emptyList()!!, Collections.emptyList()!!, diff --git a/src/org/jetbrains/jet/j2k/ast/Class.kt b/src/org/jetbrains/jet/j2k/ast/Class.kt index 7db90c23184..240a8e85f28 100644 --- a/src/org/jetbrains/jet/j2k/ast/Class.kt +++ b/src/org/jetbrains/jet/j2k/ast/Class.kt @@ -66,12 +66,12 @@ public open class Class(converter : Converter, val modifiers : Set = HashSet(f.getModifiers()) modifiers.add(Modifier.STATIC) val statements : List = f.block?.statements ?: arrayList() - statements.add(ReturnStatement(IdentifierImpl("__"))) + statements.add(ReturnStatement(Identifier("__"))) val block : Block = Block(statements) val constructorTypeParameters : List = arrayList() constructorTypeParameters.addAll(typeParameters) constructorTypeParameters.addAll(f.typeParameters) - return Function(IdentifierImpl("init"), modifiers, ClassType(name, constructorTypeParameters, false), + return Function(Identifier("init"), modifiers, ClassType(name, constructorTypeParameters, false), constructorTypeParameters, f.params, block) } diff --git a/src/org/jetbrains/jet/j2k/ast/ForeachWithRangeStatement.java b/src/org/jetbrains/jet/j2k/ast/ForeachWithRangeStatement.java index ed9a5712a3a..57d085bce34 100644 --- a/src/org/jetbrains/jet/j2k/ast/ForeachWithRangeStatement.java +++ b/src/org/jetbrains/jet/j2k/ast/ForeachWithRangeStatement.java @@ -23,11 +23,11 @@ import org.jetbrains.annotations.NotNull; */ public class ForeachWithRangeStatement extends Statement { private final Expression myStart; - private final IdentifierImpl myIdentifier; + private final Identifier myIdentifier; private final Expression myEnd; private final Statement myBody; - public ForeachWithRangeStatement(IdentifierImpl identifier, Expression start, Expression end, Statement body) { + public ForeachWithRangeStatement(Identifier identifier, Expression start, Expression end, Statement body) { myStart = start; myIdentifier = identifier; myEnd = end; diff --git a/src/org/jetbrains/jet/j2k/ast/INode.java b/src/org/jetbrains/jet/j2k/ast/INode.java deleted file mode 100644 index a6847c33679..00000000000 --- a/src/org/jetbrains/jet/j2k/ast/INode.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright 2010-2012 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.jet.j2k.ast; - -import org.jetbrains.annotations.NotNull; - -/** - * @author ignatov - */ -public interface INode { - @NotNull - String toKotlin(); -} diff --git a/src/org/jetbrains/jet/j2k/ast/Identifier.java b/src/org/jetbrains/jet/j2k/ast/Identifier.java index f94be742be2..ce93ae46c91 100644 --- a/src/org/jetbrains/jet/j2k/ast/Identifier.java +++ b/src/org/jetbrains/jet/j2k/ast/Identifier.java @@ -21,11 +21,57 @@ import org.jetbrains.annotations.NotNull; /** * @author ignatov */ -public interface Identifier extends INode { +public class Identifier extends Expression { @NotNull - Identifier EMPTY_IDENTIFIER = new IdentifierImpl(""); + public static Identifier EMPTY_IDENTIFIER = new Identifier(""); - boolean isEmpty(); + private final String myName; + private boolean myIsNullable = true; + private boolean myQuotingNeeded = true; - String getName(); + public Identifier(String name) { + myName = name; + } + + public Identifier(String name, boolean isNullable) { + myName = name; + myIsNullable = isNullable; + } + + public Identifier(String name, boolean isNullable, boolean quotingNeeded) { + myName = name; + myIsNullable = isNullable; + myQuotingNeeded = quotingNeeded; + } + + public boolean isEmpty() { + return myName.length() == 0; + } + + public String getName() { + return myName; + } + + @NotNull + private static String quote(String str) { + return BACKTICK + str + BACKTICK; + } + + @Override + public boolean isNullable() { + return myIsNullable; + } + + private String ifNeedQuote() { + if (myQuotingNeeded && (ONLY_KOTLIN_KEYWORDS.contains(myName) || myName.contains("$"))) { + return quote(myName); + } + return myName; + } + + @NotNull + @Override + public String toKotlin() { + return ifNeedQuote(); + } } diff --git a/src/org/jetbrains/jet/j2k/ast/IdentifierImpl.java b/src/org/jetbrains/jet/j2k/ast/IdentifierImpl.java deleted file mode 100644 index fd543f23f91..00000000000 --- a/src/org/jetbrains/jet/j2k/ast/IdentifierImpl.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright 2010-2012 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.jet.j2k.ast; - -import org.jetbrains.annotations.NotNull; - -/** - * @author ignatov - */ -public class IdentifierImpl extends Expression implements Identifier { - private final String myName; - private boolean myIsNullable = true; - private boolean myQuotingNeeded = true; - - public IdentifierImpl(String name) { - myName = name; - } - - public IdentifierImpl(String name, boolean isNullable) { - myName = name; - myIsNullable = isNullable; - } - - public IdentifierImpl(String name, boolean isNullable, boolean quotingNeeded) { - myName = name; - myIsNullable = isNullable; - myQuotingNeeded = quotingNeeded; - } - - @Override - public boolean isEmpty() { - return myName.length() == 0; - } - - @Override - public String getName() { - return myName; - } - - @NotNull - private static String quote(String str) { - return BACKTICK + str + BACKTICK; - } - - @Override - public boolean isNullable() { - return myIsNullable; - } - - private String ifNeedQuote() { - if (myQuotingNeeded && (ONLY_KOTLIN_KEYWORDS.contains(myName) || myName.contains("$"))) { - return quote(myName); - } - return myName; - } - - @NotNull - @Override - public String toKotlin() { - return ifNeedQuote(); - } -} diff --git a/src/org/jetbrains/jet/j2k/ast/Node.java b/src/org/jetbrains/jet/j2k/ast/Node.java index 275dc82bc70..27efd1e975e 100644 --- a/src/org/jetbrains/jet/j2k/ast/Node.java +++ b/src/org/jetbrains/jet/j2k/ast/Node.java @@ -16,6 +16,7 @@ package org.jetbrains.jet.j2k.ast; +import org.eclipse.jdt.internal.core.search.StringOperation; import org.jetbrains.annotations.NotNull; import java.util.Arrays; @@ -25,7 +26,7 @@ import java.util.Set; /** * @author ignatov */ -public abstract class Node implements INode { +public abstract class Node { @NotNull final static Set ONLY_KOTLIN_KEYWORDS = new HashSet(Arrays.asList( "package", "as", "type", "val", "var", "fun", "is", "in", "object", "when", "trait", "This" @@ -65,4 +66,7 @@ public abstract class Node implements INode { static final String STAR = "*"; @NotNull protected static final String ZERO = "0"; + + @NotNull + public abstract String toKotlin(); } diff --git a/src/org/jetbrains/jet/j2k/ast/types/ArrayType.kt b/src/org/jetbrains/jet/j2k/ast/types/ArrayType.kt index cbac3c55c3a..d51e6ca1568 100644 --- a/src/org/jetbrains/jet/j2k/ast/types/ArrayType.kt +++ b/src/org/jetbrains/jet/j2k/ast/types/ArrayType.kt @@ -1,7 +1,5 @@ package org.jetbrains.jet.j2k.ast.types -import org.jetbrains.jet.j2k.ast.INode - public open class ArrayType(val elementType : Type, nullable: Boolean) : Type(nullable) { public override fun toKotlin() : String { if (elementType is PrimitiveType) { diff --git a/src/org/jetbrains/jet/j2k/ast/types/Type.kt b/src/org/jetbrains/jet/j2k/ast/types/Type.kt index db3f28c0791..3e5332da4ed 100644 --- a/src/org/jetbrains/jet/j2k/ast/types/Type.kt +++ b/src/org/jetbrains/jet/j2k/ast/types/Type.kt @@ -1,7 +1,6 @@ package org.jetbrains.jet.j2k.ast.types import org.jetbrains.jet.j2k.ast.Element -import org.jetbrains.jet.j2k.ast.INode public abstract class Type(val nullable: Boolean) : Element() { public open fun convertedToNotNull() : Type { diff --git a/src/org/jetbrains/jet/j2k/ast/types/VarArg.kt b/src/org/jetbrains/jet/j2k/ast/types/VarArg.kt index 3e0c50d0d90..919b93e3f4f 100644 --- a/src/org/jetbrains/jet/j2k/ast/types/VarArg.kt +++ b/src/org/jetbrains/jet/j2k/ast/types/VarArg.kt @@ -1,7 +1,6 @@ package org.jetbrains.jet.j2k.ast.types import org.jetbrains.jet.j2k.ast.types.Type -import org.jetbrains.jet.j2k.ast.INode public open class VarArg(val `type` : Type) : Type(false) { public override fun toKotlin() : String = `type`.toKotlin() diff --git a/src/org/jetbrains/jet/j2k/util/AstUtil.java b/src/org/jetbrains/jet/j2k/util/AstUtil.java index 3171a651301..64783525443 100644 --- a/src/org/jetbrains/jet/j2k/util/AstUtil.java +++ b/src/org/jetbrains/jet/j2k/util/AstUtil.java @@ -18,7 +18,7 @@ package org.jetbrains.jet.j2k.util; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import org.jetbrains.jet.j2k.ast.INode; +import org.jetbrains.jet.j2k.ast.Node; import java.util.LinkedList; import java.util.List; @@ -46,7 +46,7 @@ public class AstUtil { return buffer.toString(); } - public static String joinNodes(@NotNull final List nodes, final String delimiter) { + public static String joinNodes(@NotNull final List nodes, final String delimiter) { return join(nodesToKotlin(nodes), delimiter); } @@ -55,9 +55,9 @@ public class AstUtil { } @NotNull - public static List nodesToKotlin(@NotNull List nodes) { + public static List nodesToKotlin(@NotNull List nodes) { List result = new LinkedList(); - for (INode n : nodes) + for (Node n : nodes) result.add(n.toKotlin()); return result; } diff --git a/src/org/jetbrains/jet/j2k/visitors/ElementVisitor.kt b/src/org/jetbrains/jet/j2k/visitors/ElementVisitor.kt index 02cd86edfc9..e7ffcc7b7c0 100644 --- a/src/org/jetbrains/jet/j2k/visitors/ElementVisitor.kt +++ b/src/org/jetbrains/jet/j2k/visitors/ElementVisitor.kt @@ -20,7 +20,7 @@ public open class ElementVisitor(val myConverter : Converter) : JavaElementVisit public override fun visitLocalVariable(variable : PsiLocalVariable?) : Unit { val theVariable = variable!! - myResult = LocalVariable(IdentifierImpl(theVariable.getName()), + myResult = LocalVariable(Identifier(theVariable.getName()), Converter.modifiersListToModifiersSet(theVariable.getModifierList()), myConverter.typeToType(theVariable.getType(), isAnnotatedAsNotNull(theVariable.getModifierList())), myConverter.expressionToExpression(theVariable.getInitializer(), theVariable.getType())) @@ -34,18 +34,18 @@ public open class ElementVisitor(val myConverter : Converter) : JavaElementVisit val theReference = reference!! val types : List = myConverter.typesToTypeList(theReference.getTypeParameters()).requireNoNulls() if (!theReference.isQualified()) { - myResult = ReferenceElement(IdentifierImpl(theReference.getReferenceName()), types) + myResult = ReferenceElement(Identifier(theReference.getReferenceName()), types) } else { - var result : String = IdentifierImpl(reference?.getReferenceName()).toKotlin() + var result : String = Identifier(reference?.getReferenceName()).toKotlin() var qualifier : PsiElement? = theReference.getQualifier() while (qualifier != null) { val p : PsiJavaCodeReferenceElement = (qualifier as PsiJavaCodeReferenceElement) - result = IdentifierImpl(p.getReferenceName()).toKotlin() + "." + result + result = Identifier(p.getReferenceName()).toKotlin() + "." + result qualifier = p.getQualifier() } - myResult = ReferenceElement(IdentifierImpl(result), types) + myResult = ReferenceElement(Identifier(result), types) } } @@ -54,7 +54,7 @@ public open class ElementVisitor(val myConverter : Converter) : JavaElementVisit } public override fun visitTypeParameter(classParameter : PsiTypeParameter?) : Unit { - myResult = TypeParameter(IdentifierImpl(classParameter!!.getName()), + myResult = TypeParameter(Identifier(classParameter!!.getName()), classParameter!!.getExtendsListTypes().map { myConverter.typeToType(it) } ) } diff --git a/src/org/jetbrains/jet/j2k/visitors/ExpressionVisitor.java b/src/org/jetbrains/jet/j2k/visitors/ExpressionVisitor.java index 64262828ec8..3a64e069b7d 100644 --- a/src/org/jetbrains/jet/j2k/visitors/ExpressionVisitor.java +++ b/src/org/jetbrains/jet/j2k/visitors/ExpressionVisitor.java @@ -231,7 +231,7 @@ public class ExpressionVisitor extends StatementVisitor { isQuotingNeeded = false; } } - myResult = new LiteralExpression(new IdentifierImpl(text, false, isQuotingNeeded)); + myResult = new LiteralExpression(new Identifier(text, false, isQuotingNeeded)); } @Override @@ -289,9 +289,9 @@ public class ExpressionVisitor extends StatementVisitor { ? getConverter().typesToTypeList(reference.getTypeParameters()) : Collections.emptyList(); return new CallChainExpression( - new IdentifierImpl(constructor.getName(), false), + new Identifier(constructor.getName(), false), new MethodCallExpression( - new IdentifierImpl("init"), + new Identifier("init"), getConverter().expressionsToExpressionList(arguments), typeParameters, false)); } @@ -353,14 +353,14 @@ public class ExpressionVisitor extends StatementVisitor { final boolean isNullable = getConverter().typeToType(expression.getType()).getNullable(); final String className = getClassNameWithConstructor(expression); - Expression identifier = new IdentifierImpl(expression.getReferenceName(), isNullable); + Expression identifier = new Identifier(expression.getReferenceName(), isNullable); final String __ = "__"; if (hasReceiver) { - identifier = new CallChainExpression(new IdentifierImpl(__, false), new IdentifierImpl(expression.getReferenceName(), isNullable)); + identifier = new CallChainExpression(new Identifier(__, false), new Identifier(expression.getReferenceName(), isNullable)); } else if (insideSecondaryConstructor && isThis) { - identifier = new IdentifierImpl("val __ = " + className); // TODO: hack + identifier = new Identifier("val __ = " + className); // TODO: hack } myResult = new CallChainExpression( @@ -467,7 +467,7 @@ public class ExpressionVisitor extends StatementVisitor { final PsiJavaCodeReferenceElement qualifier = expression.getQualifier(); myResult = new SuperExpression( qualifier != null ? - new IdentifierImpl(qualifier.getQualifiedName()) : + new Identifier(qualifier.getQualifiedName()) : Identifier.EMPTY_IDENTIFIER ); } @@ -478,7 +478,7 @@ public class ExpressionVisitor extends StatementVisitor { final PsiJavaCodeReferenceElement qualifier = expression.getQualifier(); myResult = new ThisExpression( qualifier != null ? - new IdentifierImpl(qualifier.getQualifiedName()) : + new Identifier(qualifier.getQualifiedName()) : Identifier.EMPTY_IDENTIFIER ); } diff --git a/src/org/jetbrains/jet/j2k/visitors/ExpressionVisitorForDirectObjectInheritors.java b/src/org/jetbrains/jet/j2k/visitors/ExpressionVisitorForDirectObjectInheritors.java index bf3137d7a6a..edf5b3857e4 100644 --- a/src/org/jetbrains/jet/j2k/visitors/ExpressionVisitorForDirectObjectInheritors.java +++ b/src/org/jetbrains/jet/j2k/visitors/ExpressionVisitorForDirectObjectInheritors.java @@ -21,7 +21,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.j2k.Converter; import org.jetbrains.jet.j2k.ast.DummyMethodCallExpression; import org.jetbrains.jet.j2k.ast.DummyStringExpression; -import org.jetbrains.jet.j2k.ast.IdentifierImpl; +import org.jetbrains.jet.j2k.ast.Identifier; import static com.intellij.psi.CommonClassNames.JAVA_LANG_OBJECT; @@ -36,10 +36,10 @@ public class ExpressionVisitorForDirectObjectInheritors extends ExpressionVisito @Override public void visitMethodCallExpression(@NotNull final PsiMethodCallExpression expression) { if (superMethodInvocation(expression.getMethodExpression(), "hashCode")) { - myResult = new DummyMethodCallExpression(new IdentifierImpl("System"), "identityHashCode", new IdentifierImpl("this")); + myResult = new DummyMethodCallExpression(new Identifier("System"), "identityHashCode", new Identifier("this")); } else if (superMethodInvocation(expression.getMethodExpression(), "equals")) { - myResult = new DummyMethodCallExpression(new IdentifierImpl("this"), "identityEquals", getConverter().elementToElement(expression.getArgumentList())); + myResult = new DummyMethodCallExpression(new Identifier("this"), "identityEquals", getConverter().elementToElement(expression.getArgumentList())); } else if (superMethodInvocation(expression.getMethodExpression(), "toString")) { myResult = new DummyStringExpression(String.format("getJavaClass<%s>.getName() + '@' + Integer.toHexString(hashCode())", getClassName(expression.getMethodExpression()))); diff --git a/src/org/jetbrains/jet/j2k/visitors/StatementVisitor.java b/src/org/jetbrains/jet/j2k/visitors/StatementVisitor.java index 32aeef3a88b..6cd0d0b02c2 100644 --- a/src/org/jetbrains/jet/j2k/visitors/StatementVisitor.java +++ b/src/org/jetbrains/jet/j2k/visitors/StatementVisitor.java @@ -164,10 +164,10 @@ public class StatementVisitor extends ElementVisitor { ) { final Expression end = getConverter().expressionToExpression(((PsiBinaryExpression) condition).getROperand()); final Expression endExpression = operationTokenType == JavaTokenType.LT ? - new BinaryExpression(end, new IdentifierImpl("1"), "-") : + new BinaryExpression(end, new Identifier("1"), "-") : end; myResult = new ForeachWithRangeStatement( - new IdentifierImpl(firstChild.getName()), + new org.jetbrains.jet.j2k.ast.Identifier(firstChild.getName()), getConverter().expressionToExpression(firstChild.getInitializer()), endExpression, getConverter().statementToStatement(body) diff --git a/src/org/jetbrains/jet/j2k/visitors/TypeVisitor.kt b/src/org/jetbrains/jet/j2k/visitors/TypeVisitor.kt index 26b1f864f49..2af718eb647 100644 --- a/src/org/jetbrains/jet/j2k/visitors/TypeVisitor.kt +++ b/src/org/jetbrains/jet/j2k/visitors/TypeVisitor.kt @@ -18,15 +18,14 @@ public open class TypeVisitor(private val myConverter : Converter) : PsiTypeVisi public override fun visitPrimitiveType(primitiveType: PsiPrimitiveType?) : Type { val name : String = primitiveType?.getCanonicalText()!! - val identifier : IdentifierImpl = IdentifierImpl(name) if (name == "void") { - myResult = PrimitiveType(IdentifierImpl("Unit")) + myResult = PrimitiveType(Identifier("Unit")) } else if (Node.PRIMITIVE_TYPES.contains(name)) { - myResult = PrimitiveType(IdentifierImpl(AstUtil.upperFirstCharacter(name))) + myResult = PrimitiveType(Identifier(AstUtil.upperFirstCharacter(name))) } else { - myResult = PrimitiveType(identifier) + myResult = PrimitiveType(Identifier(name)) } return myResult } @@ -41,7 +40,7 @@ public open class TypeVisitor(private val myConverter : Converter) : PsiTypeVisi public override fun visitClassType(classType : PsiClassType?) : Type { if (classType == null) return myResult - val identifier : IdentifierImpl = constructClassTypeIdentifier(classType) + val identifier : Identifier = constructClassTypeIdentifier(classType) val resolvedClassTypeParams : List = createRawTypesForResolvedReference(classType) if (classType.getParameterCount() == 0 && resolvedClassTypeParams.size() > 0) { myResult = ClassType(identifier, resolvedClassTypeParams, true) @@ -52,21 +51,21 @@ public open class TypeVisitor(private val myConverter : Converter) : PsiTypeVisi return myResult } - private fun constructClassTypeIdentifier(classType : PsiClassType) : IdentifierImpl { + private fun constructClassTypeIdentifier(classType : PsiClassType) : Identifier { val psiClass : PsiClass? = classType.resolve() if (psiClass != null) { val qualifiedName: String? = psiClass.getQualifiedName() if (qualifiedName != null) { if (!qualifiedName.equals("java.lang.Object") && myConverter.hasFlag(J2KConverterFlags.FULLY_QUALIFIED_TYPE_NAMES)) { - return IdentifierImpl(qualifiedName) + return Identifier(qualifiedName) } if (qualifiedName.equals(CommonClassNames.JAVA_LANG_ITERABLE)) { - return IdentifierImpl(CommonClassNames.JAVA_LANG_ITERABLE) + return Identifier(CommonClassNames.JAVA_LANG_ITERABLE) } if (qualifiedName.equals(CommonClassNames.JAVA_UTIL_ITERATOR)) { - return IdentifierImpl(CommonClassNames.JAVA_UTIL_ITERATOR) + return Identifier(CommonClassNames.JAVA_UTIL_ITERATOR) } } } @@ -74,10 +73,10 @@ public open class TypeVisitor(private val myConverter : Converter) : PsiTypeVisi val classTypeName : String? = createQualifiedName(classType) if (classTypeName?.isEmpty().sure()) { - return IdentifierImpl(getClassTypeName(classType)) + return Identifier(getClassTypeName(classType)) } - return IdentifierImpl(classTypeName) + return Identifier(classTypeName) } private fun createRawTypesForResolvedReference(classType : PsiClassType) : List { @@ -89,7 +88,7 @@ public open class TypeVisitor(private val myConverter : Converter) : PsiTypeVisi for (p : PsiTypeParameter? in (resolve as PsiClass).getTypeParameters()) { val superTypes = p!!.getSuperTypes() val boundType : Type = (if (superTypes.size > 0) - ClassType(IdentifierImpl(getClassTypeName(superTypes[0]!!)), + ClassType(Identifier(getClassTypeName(superTypes[0]!!)), myConverter.typesToTypeList(superTypes[0]!!.getParameters()).requireNoNulls(), true) else @@ -130,12 +129,12 @@ public open class TypeVisitor(private val myConverter : Converter) : PsiTypeVisi val reference : PsiJavaCodeReferenceElement? = (classType as PsiClassReferenceType).getReference() if (reference != null && reference.isQualified()) { - var result : String = IdentifierImpl(reference.getReferenceName()).toKotlin() + var result : String = Identifier(reference.getReferenceName()).toKotlin() var qualifier : PsiElement? = reference.getQualifier() while (qualifier != null) { val p : PsiJavaCodeReferenceElement = (qualifier as PsiJavaCodeReferenceElement) - result = IdentifierImpl(p.getReferenceName()).toKotlin() + "." + result + result = Identifier(p.getReferenceName()).toKotlin() + "." + result qualifier = p.getQualifier() } return result