diff --git a/js/js.translator/src/org/jetbrains/kotlin/js/translate/declaration/ClassTranslator.kt b/js/js.translator/src/org/jetbrains/kotlin/js/translate/declaration/ClassTranslator.kt index 9eb675300ee..4e12ae168db 100644 --- a/js/js.translator/src/org/jetbrains/kotlin/js/translate/declaration/ClassTranslator.kt +++ b/js/js.translator/src/org/jetbrains/kotlin/js/translate/declaration/ClassTranslator.kt @@ -51,9 +51,8 @@ import org.jetbrains.kotlin.resolve.DescriptorUtils.* import org.jetbrains.kotlin.types.JetType import org.jetbrains.kotlin.types.TypeConstructor import org.jetbrains.kotlin.types.TypeUtils.topologicallySortSuperclassesAndRecordAllInstances -import java.util.ArrayList -import java.util.HashMap -import java.util.HashSet +import org.jetbrains.kotlin.utils.identity +import java.util.* /** * Generates a definition of a single class. @@ -243,7 +242,7 @@ public class ClassTranslator private constructor( private fun generateOtherBridges(properties: MutableList) { for (memberDescriptor in descriptor.getDefaultType().getMemberScope().getAllDescriptors()) { if (memberDescriptor is FunctionDescriptor) { - val bridgesToGenerate = generateBridgesForFunctionDescriptor(memberDescriptor, ID) + val bridgesToGenerate = generateBridgesForFunctionDescriptor(memberDescriptor, identity()) for (bridge in bridgesToGenerate) { generateBridge(bridge, properties) diff --git a/js/js.translator/src/org/jetbrains/kotlin/js/translate/intrinsic/functions/factories/LongOperationFIF.kt b/js/js.translator/src/org/jetbrains/kotlin/js/translate/intrinsic/functions/factories/LongOperationFIF.kt index 49a8f30e1d9..0db915f2edd 100644 --- a/js/js.translator/src/org/jetbrains/kotlin/js/translate/intrinsic/functions/factories/LongOperationFIF.kt +++ b/js/js.translator/src/org/jetbrains/kotlin/js/translate/intrinsic/functions/factories/LongOperationFIF.kt @@ -16,14 +16,14 @@ package org.jetbrains.kotlin.js.translate.intrinsic.functions.factories -import com.google.dart.compiler.backend.js.ast.* +import com.google.dart.compiler.backend.js.ast.JsExpression import org.jetbrains.kotlin.descriptors.FunctionDescriptor import org.jetbrains.kotlin.js.patterns.PatternBuilder.pattern import org.jetbrains.kotlin.js.translate.context.Namer import org.jetbrains.kotlin.js.translate.context.TranslationContext import org.jetbrains.kotlin.js.translate.intrinsic.functions.basic.FunctionIntrinsic -import org.jetbrains.kotlin.js.translate.utils.ID import org.jetbrains.kotlin.js.translate.utils.JsAstUtils.* +import org.jetbrains.kotlin.utils.identity as ID // TODO Move to FunctionCallCases public object LongOperationFIF : FunctionIntrinsicFactory { @@ -88,17 +88,17 @@ public object LongOperationFIF : FunctionIntrinsicFactory { LONG_EQUALS_ANY.apply(descriptor) || LONG_BINARY_OPERATION_LONG.apply(descriptor) || LONG_BIT_SHIFTS.apply(descriptor) -> longBinaryIntrinsics[operationName] INTEGER_BINARY_OPERATION_LONG.apply(descriptor) -> - wrapIntrinsicIfPresent(longBinaryIntrinsics[operationName], { longFromInt(it) }, ID) + wrapIntrinsicIfPresent(longBinaryIntrinsics[operationName], { longFromInt(it) }, ID()) LONG_BINARY_OPERATION_INTEGER.apply(descriptor) -> - wrapIntrinsicIfPresent(longBinaryIntrinsics[operationName], ID, { longFromInt(it) }) + wrapIntrinsicIfPresent(longBinaryIntrinsics[operationName], ID(), { longFromInt(it) }) CHAR_BINARY_OPERATION_LONG.apply(descriptor) -> - wrapIntrinsicIfPresent(longBinaryIntrinsics[operationName], { longFromInt(charToInt(it)) }, ID) + wrapIntrinsicIfPresent(longBinaryIntrinsics[operationName], { longFromInt(charToInt(it)) }, ID()) LONG_BINARY_OPERATION_CHAR.apply(descriptor) -> - wrapIntrinsicIfPresent(longBinaryIntrinsics[operationName], ID, { longFromInt(charToInt(it)) }) + wrapIntrinsicIfPresent(longBinaryIntrinsics[operationName], ID(), { longFromInt(charToInt(it)) }) FLOATING_POINT_BINARY_OPERATION_LONG.apply(descriptor) -> - wrapIntrinsicIfPresent(floatBinaryIntrinsics[operationName], ID, { invokeMethod(it, Namer.LONG_TO_NUMBER) }) + wrapIntrinsicIfPresent(floatBinaryIntrinsics[operationName], ID(), { invokeMethod(it, Namer.LONG_TO_NUMBER) }) LONG_BINARY_OPERATION_FLOATING_POINT.apply(descriptor) -> - wrapIntrinsicIfPresent(floatBinaryIntrinsics[operationName], { invokeMethod(it, Namer.LONG_TO_NUMBER) }, ID) + wrapIntrinsicIfPresent(floatBinaryIntrinsics[operationName], { invokeMethod(it, Namer.LONG_TO_NUMBER) }, ID()) else -> null } diff --git a/js/js.translator/src/org/jetbrains/kotlin/js/translate/intrinsic/functions/factories/NumberAndCharConversionFIF.kt b/js/js.translator/src/org/jetbrains/kotlin/js/translate/intrinsic/functions/factories/NumberAndCharConversionFIF.kt index abe057d367c..b96dd96955d 100644 --- a/js/js.translator/src/org/jetbrains/kotlin/js/translate/intrinsic/functions/factories/NumberAndCharConversionFIF.kt +++ b/js/js.translator/src/org/jetbrains/kotlin/js/translate/intrinsic/functions/factories/NumberAndCharConversionFIF.kt @@ -21,8 +21,8 @@ import com.google.dart.compiler.backend.js.ast.JsExpression import org.jetbrains.kotlin.js.patterns.PatternBuilder.pattern import org.jetbrains.kotlin.js.translate.context.TranslationContext import org.jetbrains.kotlin.js.translate.intrinsic.functions.basic.FunctionIntrinsic -import org.jetbrains.kotlin.js.translate.utils.ID import org.jetbrains.kotlin.js.translate.utils.JsAstUtils.* +import org.jetbrains.kotlin.utils.identity public object NumberAndCharConversionFIF : CompositeFIF() { val USE_AS_IS = Predicates.or( @@ -71,7 +71,7 @@ public object NumberAndCharConversionFIF : CompositeFIF() { } init { - add(USE_AS_IS!!, ConversionUnaryIntrinsic(ID)) + add(USE_AS_IS!!, ConversionUnaryIntrinsic(identity())) for((stringPattern, intrinsic) in convertOperations) { add(pattern(stringPattern), intrinsic) } diff --git a/js/js.translator/src/org/jetbrains/kotlin/js/translate/intrinsic/operation/LongCompareToBOIF.kt b/js/js.translator/src/org/jetbrains/kotlin/js/translate/intrinsic/operation/LongCompareToBOIF.kt index fc486ab5e51..769b5c8e933 100644 --- a/js/js.translator/src/org/jetbrains/kotlin/js/translate/intrinsic/operation/LongCompareToBOIF.kt +++ b/js/js.translator/src/org/jetbrains/kotlin/js/translate/intrinsic/operation/LongCompareToBOIF.kt @@ -16,20 +16,23 @@ package org.jetbrains.kotlin.js.translate.intrinsic.operation -import com.google.common.collect.ImmutableSet -import com.google.dart.compiler.backend.js.ast.* +import com.google.dart.compiler.backend.js.ast.JsBinaryOperation +import com.google.dart.compiler.backend.js.ast.JsExpression +import com.google.dart.compiler.backend.js.ast.JsNumberLiteral import org.jetbrains.kotlin.descriptors.FunctionDescriptor -import org.jetbrains.kotlin.psi.JetBinaryExpression -import org.jetbrains.kotlin.types.expressions.OperatorConventions -import org.jetbrains.kotlin.lexer.JetToken import org.jetbrains.kotlin.js.patterns.PatternBuilder.pattern import org.jetbrains.kotlin.js.translate.context.Namer import org.jetbrains.kotlin.js.translate.context.TranslationContext import org.jetbrains.kotlin.js.translate.operation.OperatorTable -import org.jetbrains.kotlin.js.translate.utils.ID -import org.jetbrains.kotlin.js.translate.utils.JsAstUtils.* +import org.jetbrains.kotlin.js.translate.utils.JsAstUtils.charToInt +import org.jetbrains.kotlin.js.translate.utils.JsAstUtils.compareForObject +import org.jetbrains.kotlin.js.translate.utils.JsAstUtils.invokeMethod +import org.jetbrains.kotlin.js.translate.utils.JsAstUtils.longFromInt import org.jetbrains.kotlin.js.translate.utils.JsDescriptorUtils import org.jetbrains.kotlin.js.translate.utils.PsiUtils.getOperationToken +import org.jetbrains.kotlin.psi.JetBinaryExpression +import org.jetbrains.kotlin.types.expressions.OperatorConventions +import org.jetbrains.kotlin.utils.identity as ID public object LongCompareToBOIF : BinaryOperationIntrinsicFactory { @@ -63,11 +66,11 @@ public object LongCompareToBOIF : BinaryOperationIntrinsicFactory { } } - private val INTEGER_COMPARE_TO_LONG = CompareToBinaryIntrinsic( { longFromInt(it) }, ID) - private val CHAR_COMPARE_TO_LONG = CompareToBinaryIntrinsic( { longFromInt(charToInt(it)) }, ID) - private val LONG_COMPARE_TO_INTEGER = CompareToBinaryIntrinsic( ID, { longFromInt(it) }) - private val LONG_COMPARE_TO_CHAR = CompareToBinaryIntrinsic( ID, { longFromInt(charToInt(it)) }) - private val LONG_COMPARE_TO_LONG = CompareToBinaryIntrinsic( ID, ID ) + private val INTEGER_COMPARE_TO_LONG = CompareToBinaryIntrinsic( { longFromInt(it) }, ID()) + private val CHAR_COMPARE_TO_LONG = CompareToBinaryIntrinsic( { longFromInt(charToInt(it)) }, ID()) + private val LONG_COMPARE_TO_INTEGER = CompareToBinaryIntrinsic( ID(), { longFromInt(it) }) + private val LONG_COMPARE_TO_CHAR = CompareToBinaryIntrinsic( ID(), { longFromInt(charToInt(it)) }) + private val LONG_COMPARE_TO_LONG = CompareToBinaryIntrinsic( ID(), ID() ) override public fun getSupportTokens() = OperatorConventions.COMPARISON_OPERATIONS diff --git a/js/js.translator/src/org/jetbrains/kotlin/js/translate/utils/utils.kt b/js/js.translator/src/org/jetbrains/kotlin/js/translate/utils/utils.kt index 2b89a40c96a..db642b0ba7e 100644 --- a/js/js.translator/src/org/jetbrains/kotlin/js/translate/utils/utils.kt +++ b/js/js.translator/src/org/jetbrains/kotlin/js/translate/utils/utils.kt @@ -16,11 +16,7 @@ package org.jetbrains.kotlin.js.translate.utils -import com.google.dart.compiler.backend.js.ast.JsExpression -import com.google.dart.compiler.backend.js.ast.JsInvocation -import com.google.dart.compiler.backend.js.ast.JsNameRef -import com.google.dart.compiler.backend.js.ast.JsParameter -import com.google.dart.compiler.backend.js.ast.JsPropertyInitializer +import com.google.dart.compiler.backend.js.ast.* import com.intellij.util.SmartList import org.jetbrains.kotlin.descriptors.FunctionDescriptor import org.jetbrains.kotlin.js.translate.context.Namer @@ -28,8 +24,6 @@ import org.jetbrains.kotlin.js.translate.context.TranslationContext import org.jetbrains.kotlin.js.translate.utils.TranslationUtils.simpleReturnFunction import org.jetbrains.kotlin.resolve.DescriptorUtils -public val ID: (T) -> T = { it } - public fun generateDelegateCall( fromDescriptor: FunctionDescriptor, toDescriptor: FunctionDescriptor,