JS: moved PatternBuilder to JS frontend
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
/*
|
||||
* Copyright 2010-2015 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.kotlin.js.descriptorUtils
|
||||
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||
import org.jetbrains.kotlin.descriptors.ClassifierDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
||||
import org.jetbrains.kotlin.types.JetType
|
||||
import org.jetbrains.kotlin.types.TypeProjection
|
||||
|
||||
import com.intellij.openapi.util.text.StringUtil
|
||||
|
||||
public val JetType.nameIfStandardType: Name?
|
||||
get() {
|
||||
val descriptor = getConstructor().getDeclarationDescriptor()
|
||||
|
||||
if (descriptor?.getContainingDeclaration() == KotlinBuiltIns.getInstance().getBuiltInsPackageFragment()) {
|
||||
return descriptor?.getName()
|
||||
}
|
||||
|
||||
return null
|
||||
}
|
||||
|
||||
public fun JetType.getJetTypeFqName(printTypeArguments: Boolean): String {
|
||||
val declaration = requireNotNull(getConstructor().getDeclarationDescriptor())
|
||||
if (declaration is TypeParameterDescriptor) {
|
||||
return StringUtil.join(declaration.getUpperBounds(), { (type) -> type.getJetTypeFqName(printTypeArguments) }, "&")
|
||||
}
|
||||
|
||||
val typeArguments = getArguments()
|
||||
val typeArgumentsAsString: String
|
||||
|
||||
if (printTypeArguments && !typeArguments.isEmpty()) {
|
||||
val joinedTypeArguments = StringUtil.join(typeArguments, { (projection) -> projection.getType().getJetTypeFqName(false) }, ", ")
|
||||
|
||||
typeArgumentsAsString = "<" + joinedTypeArguments + ">"
|
||||
} else {
|
||||
typeArgumentsAsString = ""
|
||||
}
|
||||
|
||||
return DescriptorUtils.getFqName(declaration).asString() + typeArgumentsAsString
|
||||
}
|
||||
+1
-1
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.js.translate.intrinsic.functions.patterns;
|
||||
package org.jetbrains.kotlin.js.patterns;
|
||||
|
||||
import com.google.common.base.Predicate;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
+1
-1
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.js.translate.intrinsic.functions.patterns;
|
||||
package org.jetbrains.kotlin.js.patterns;
|
||||
|
||||
import com.google.common.base.Predicate;
|
||||
import com.google.common.collect.Lists;
|
||||
+8
-7
@@ -14,29 +14,30 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.js.translate.intrinsic.functions.patterns;
|
||||
package org.jetbrains.kotlin.js.patterns;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.kotlin.descriptors.*;
|
||||
import org.jetbrains.kotlin.js.translate.context.Namer;
|
||||
import org.jetbrains.kotlin.js.translate.utils.JsDescriptorUtils;
|
||||
import org.jetbrains.kotlin.js.translate.utils.TranslationUtils;
|
||||
import org.jetbrains.kotlin.name.Name;
|
||||
import org.jetbrains.kotlin.idea.JetLanguage;
|
||||
import org.jetbrains.kotlin.resolve.DescriptorUtils;
|
||||
import org.jetbrains.kotlin.resolve.OverrideResolver;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import static org.jetbrains.kotlin.js.descriptorUtils.DescriptorUtilsPackage.getNameIfStandardType;
|
||||
import static org.jetbrains.kotlin.js.descriptorUtils.DescriptorUtilsPackage.getJetTypeFqName;
|
||||
|
||||
public final class PatternBuilder {
|
||||
|
||||
@NotNull
|
||||
private static final NamePredicate KOTLIN_NAME_PREDICATE = new NamePredicate("kotlin");
|
||||
|
||||
@NotNull
|
||||
private static final Name KOTLIN_NAME = Name.identifier(Namer.KOTLIN_LOWER_NAME);
|
||||
private static final Name KOTLIN_NAME = Name.identifier(JetLanguage.NAME.toLowerCase());
|
||||
|
||||
private PatternBuilder() {
|
||||
}
|
||||
@@ -161,7 +162,7 @@ public final class PatternBuilder {
|
||||
}
|
||||
for (int i = 0; i < valueParameterDescriptors.size(); i++) {
|
||||
ValueParameterDescriptor valueParameterDescriptor = valueParameterDescriptors.get(i);
|
||||
Name name = JsDescriptorUtils.getNameIfStandardType(valueParameterDescriptor.getType());
|
||||
Name name = getNameIfStandardType(valueParameterDescriptor.getType());
|
||||
NamePredicate namePredicate = argumentCheckers.get(i);
|
||||
if (!namePredicate.apply(name)) return false;
|
||||
}
|
||||
@@ -241,7 +242,7 @@ public final class PatternBuilder {
|
||||
if (actualReceiver != null) {
|
||||
if (receiverFqName == null) return false;
|
||||
|
||||
String actualReceiverFqName = TranslationUtils.getJetTypeFqName(actualReceiver.getType(), false);
|
||||
String actualReceiverFqName = getJetTypeFqName(actualReceiver.getType(), false);
|
||||
|
||||
if (!actualReceiverFqName.equals(receiverFqName)) return false;
|
||||
}
|
||||
+3
-1
@@ -23,6 +23,7 @@ import org.jetbrains.kotlin.resolve.BindingContext
|
||||
import org.jetbrains.kotlin.resolve.BindingContextUtils.getNotNull
|
||||
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||
import org.jetbrains.kotlin.js.patterns.*;
|
||||
import org.jetbrains.kotlin.js.translate.context.TranslationContext
|
||||
import org.jetbrains.kotlin.js.translate.general.AbstractTranslator
|
||||
import org.jetbrains.kotlin.js.translate.general.Translation.patternTranslator
|
||||
@@ -30,6 +31,7 @@ import org.jetbrains.kotlin.js.translate.general.Translation.translateAsStatemen
|
||||
import org.jetbrains.kotlin.js.translate.utils.JsAstUtils.convertToBlock
|
||||
import org.jetbrains.kotlin.js.translate.utils.TranslationUtils
|
||||
import org.jetbrains.kotlin.js.translate.utils.JsAstUtils
|
||||
import org.jetbrains.kotlin.js.descriptorUtils.getJetTypeFqName
|
||||
|
||||
class CatchTranslator(
|
||||
val catches: List<JetCatchClause>,
|
||||
@@ -113,7 +115,7 @@ class CatchTranslator(
|
||||
private val JetTypeReference.isThrowable: Boolean
|
||||
get() {
|
||||
val jetType = getNotNull(bindingContext(), BindingContext.TYPE, this)
|
||||
val jetTypeName = TranslationUtils.getJetTypeFqName(jetType, false)
|
||||
val jetTypeName = jetType.getJetTypeFqName(false)
|
||||
|
||||
val throwable = KotlinBuiltIns.getInstance().getThrowable()
|
||||
val throwableClassName = DescriptorUtils.getFqNameSafe(throwable).asString()
|
||||
|
||||
+2
-2
@@ -25,7 +25,7 @@ import org.jetbrains.kotlin.descriptors.ClassDescriptor;
|
||||
import org.jetbrains.kotlin.js.translate.context.TranslationContext;
|
||||
import org.jetbrains.kotlin.js.translate.general.AbstractTranslator;
|
||||
import org.jetbrains.kotlin.js.translate.general.Translation;
|
||||
import org.jetbrains.kotlin.js.translate.intrinsic.functions.patterns.NamePredicate;
|
||||
import org.jetbrains.kotlin.js.patterns.NamePredicate;
|
||||
import org.jetbrains.kotlin.js.translate.utils.BindingUtils;
|
||||
import org.jetbrains.kotlin.js.translate.utils.JsAstUtils;
|
||||
import org.jetbrains.kotlin.js.translate.utils.TranslationUtils;
|
||||
@@ -36,7 +36,7 @@ import org.jetbrains.kotlin.psi.JetTypeReference;
|
||||
|
||||
import static org.jetbrains.kotlin.js.translate.utils.BindingUtils.getTypeByReference;
|
||||
import static org.jetbrains.kotlin.js.translate.utils.JsAstUtils.*;
|
||||
import static org.jetbrains.kotlin.js.translate.utils.JsDescriptorUtils.getNameIfStandardType;
|
||||
import static org.jetbrains.kotlin.js.descriptorUtils.DescriptorUtilsPackage.getNameIfStandardType;
|
||||
|
||||
public final class PatternTranslator extends AbstractTranslator {
|
||||
|
||||
|
||||
+2
-2
@@ -22,11 +22,11 @@ import com.google.dart.compiler.backend.js.ast.JsNameRef;
|
||||
import com.google.dart.compiler.backend.js.ast.JsNumberLiteral;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.kotlin.js.patterns.NamePredicate;
|
||||
import org.jetbrains.kotlin.js.translate.context.TranslationContext;
|
||||
import org.jetbrains.kotlin.js.translate.general.AbstractTranslator;
|
||||
import org.jetbrains.kotlin.js.translate.general.Translation;
|
||||
import org.jetbrains.kotlin.js.translate.intrinsic.functions.factories.TopLevelFIF;
|
||||
import org.jetbrains.kotlin.js.translate.intrinsic.functions.patterns.NamePredicate;
|
||||
import org.jetbrains.kotlin.name.Name;
|
||||
import org.jetbrains.kotlin.psi.*;
|
||||
import org.jetbrains.kotlin.resolve.BindingContext;
|
||||
@@ -36,7 +36,7 @@ import java.util.Collections;
|
||||
|
||||
import static org.jetbrains.kotlin.js.translate.utils.ErrorReportingUtils.message;
|
||||
import static org.jetbrains.kotlin.js.translate.utils.JsAstUtils.sum;
|
||||
import static org.jetbrains.kotlin.js.translate.utils.JsDescriptorUtils.getNameIfStandardType;
|
||||
import static org.jetbrains.kotlin.js.descriptorUtils.DescriptorUtilsPackage.getNameIfStandardType;
|
||||
|
||||
public final class StringTemplateTranslator extends AbstractTranslator {
|
||||
private final JetStringTemplateEntry[] expressionEntries;
|
||||
|
||||
+3
-3
@@ -25,14 +25,14 @@ import org.jetbrains.kotlin.builtins.PrimitiveType;
|
||||
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.intrinsic.functions.patterns.DescriptorPredicate;
|
||||
import org.jetbrains.kotlin.js.translate.intrinsic.functions.patterns.NamePredicate;
|
||||
import org.jetbrains.kotlin.js.patterns.DescriptorPredicate;
|
||||
import org.jetbrains.kotlin.js.patterns.NamePredicate;
|
||||
import org.jetbrains.kotlin.name.Name;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static com.intellij.openapi.util.text.StringUtil.decapitalize;
|
||||
import static org.jetbrains.kotlin.js.translate.intrinsic.functions.patterns.PatternBuilder.pattern;
|
||||
import static org.jetbrains.kotlin.js.patterns.PatternBuilder.pattern;
|
||||
import static org.jetbrains.kotlin.js.translate.utils.JsAstUtils.assignment;
|
||||
|
||||
public final class ArrayFIF extends CompositeFIF {
|
||||
|
||||
+1
-1
@@ -18,10 +18,10 @@ package org.jetbrains.kotlin.js.translate.intrinsic.functions.factories
|
||||
|
||||
import com.google.dart.compiler.backend.js.ast.*
|
||||
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.intrinsic.functions.patterns.PatternBuilder.pattern
|
||||
import org.jetbrains.kotlin.js.translate.utils.ID
|
||||
import org.jetbrains.kotlin.js.translate.utils.JsAstUtils.*
|
||||
|
||||
|
||||
+1
-1
@@ -18,9 +18,9 @@ package org.jetbrains.kotlin.js.translate.intrinsic.functions.factories
|
||||
|
||||
import com.google.common.base.Predicates
|
||||
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.intrinsic.functions.patterns.PatternBuilder.pattern
|
||||
import org.jetbrains.kotlin.js.translate.utils.ID
|
||||
import org.jetbrains.kotlin.js.translate.utils.JsAstUtils.*
|
||||
|
||||
|
||||
+3
-3
@@ -25,10 +25,10 @@ import com.google.dart.compiler.backend.js.ast.JsExpression;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor;
|
||||
import org.jetbrains.kotlin.js.patterns.DescriptorPredicate;
|
||||
import org.jetbrains.kotlin.js.patterns.NamePredicate;
|
||||
import org.jetbrains.kotlin.js.translate.context.TranslationContext;
|
||||
import org.jetbrains.kotlin.js.translate.intrinsic.functions.basic.FunctionIntrinsic;
|
||||
import org.jetbrains.kotlin.js.translate.intrinsic.functions.patterns.DescriptorPredicate;
|
||||
import org.jetbrains.kotlin.js.translate.intrinsic.functions.patterns.NamePredicate;
|
||||
import org.jetbrains.kotlin.js.translate.operation.OperatorTable;
|
||||
import org.jetbrains.kotlin.js.translate.utils.JsAstUtils;
|
||||
import org.jetbrains.kotlin.js.translate.utils.JsDescriptorUtils;
|
||||
@@ -38,7 +38,7 @@ import org.jetbrains.kotlin.types.expressions.OperatorConventions;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static org.jetbrains.kotlin.js.translate.intrinsic.functions.patterns.PatternBuilder.pattern;
|
||||
import static org.jetbrains.kotlin.js.patterns.PatternBuilder.pattern;
|
||||
|
||||
public enum PrimitiveBinaryOperationFIF implements FunctionIntrinsicFactory {
|
||||
INSTANCE;
|
||||
|
||||
+4
-4
@@ -22,10 +22,10 @@ import com.google.dart.compiler.backend.js.ast.*;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor;
|
||||
import org.jetbrains.kotlin.js.patterns.DescriptorPredicate;
|
||||
import org.jetbrains.kotlin.js.patterns.NamePredicate;
|
||||
import org.jetbrains.kotlin.js.translate.context.TranslationContext;
|
||||
import org.jetbrains.kotlin.js.translate.intrinsic.functions.basic.FunctionIntrinsic;
|
||||
import org.jetbrains.kotlin.js.translate.intrinsic.functions.patterns.DescriptorPredicate;
|
||||
import org.jetbrains.kotlin.js.translate.intrinsic.functions.patterns.NamePredicate;
|
||||
import org.jetbrains.kotlin.js.translate.operation.OperatorTable;
|
||||
import org.jetbrains.kotlin.js.translate.utils.JsAstUtils;
|
||||
import org.jetbrains.kotlin.js.translate.utils.JsDescriptorUtils;
|
||||
@@ -35,8 +35,8 @@ import org.jetbrains.kotlin.types.expressions.OperatorConventions;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static org.jetbrains.kotlin.js.translate.intrinsic.functions.patterns.NamePredicate.PRIMITIVE_NUMBERS;
|
||||
import static org.jetbrains.kotlin.js.translate.intrinsic.functions.patterns.PatternBuilder.pattern;
|
||||
import static org.jetbrains.kotlin.js.patterns.NamePredicate.PRIMITIVE_NUMBERS;
|
||||
import static org.jetbrains.kotlin.js.patterns.PatternBuilder.pattern;
|
||||
|
||||
public enum PrimitiveUnaryOperationFIF implements FunctionIntrinsicFactory {
|
||||
|
||||
|
||||
+1
-1
@@ -19,7 +19,7 @@ package org.jetbrains.kotlin.js.translate.intrinsic.functions.factories;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.kotlin.js.translate.intrinsic.functions.basic.BuiltInFunctionIntrinsic;
|
||||
|
||||
import static org.jetbrains.kotlin.js.translate.intrinsic.functions.patterns.PatternBuilder.pattern;
|
||||
import static org.jetbrains.kotlin.js.patterns.PatternBuilder.pattern;
|
||||
|
||||
public final class StringOperationFIF extends CompositeFIF {
|
||||
@NotNull
|
||||
|
||||
+5
-5
@@ -23,15 +23,14 @@ import org.jetbrains.kotlin.builtins.KotlinBuiltIns;
|
||||
import org.jetbrains.kotlin.builtins.PrimitiveType;
|
||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor;
|
||||
import org.jetbrains.kotlin.descriptors.PropertyDescriptor;
|
||||
import org.jetbrains.kotlin.js.patterns.DescriptorPredicate;
|
||||
import org.jetbrains.kotlin.js.patterns.NamePredicate;
|
||||
import org.jetbrains.kotlin.js.translate.callTranslator.CallInfo;
|
||||
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.intrinsic.functions.patterns.DescriptorPredicate;
|
||||
import org.jetbrains.kotlin.js.translate.intrinsic.functions.patterns.NamePredicate;
|
||||
import org.jetbrains.kotlin.js.translate.utils.AnnotationsUtils;
|
||||
import org.jetbrains.kotlin.js.translate.utils.BindingUtils;
|
||||
import org.jetbrains.kotlin.js.translate.utils.JsDescriptorUtils;
|
||||
import org.jetbrains.kotlin.name.Name;
|
||||
import org.jetbrains.kotlin.psi.JetExpression;
|
||||
import org.jetbrains.kotlin.psi.JetQualifiedExpression;
|
||||
@@ -43,8 +42,9 @@ import org.jetbrains.kotlin.types.JetType;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static org.jetbrains.kotlin.js.descriptorUtils.DescriptorUtilsPackage.getNameIfStandardType;
|
||||
import static org.jetbrains.kotlin.js.patterns.PatternBuilder.pattern;
|
||||
import static org.jetbrains.kotlin.js.translate.intrinsic.functions.basic.FunctionIntrinsic.CallParametersAwareFunctionIntrinsic;
|
||||
import static org.jetbrains.kotlin.js.translate.intrinsic.functions.patterns.PatternBuilder.pattern;
|
||||
import static org.jetbrains.kotlin.js.translate.utils.ManglingUtils.getStableMangledNameForDescriptor;
|
||||
|
||||
public final class TopLevelFIF extends CompositeFIF {
|
||||
@@ -233,7 +233,7 @@ public final class TopLevelFIF extends CompositeFIF {
|
||||
@NotNull TranslationContext context
|
||||
) {
|
||||
JetType keyType = callInfo.getResolvedCall().getTypeArguments().values().iterator().next();
|
||||
Name keyTypeName = JsDescriptorUtils.getNameIfStandardType(keyType);
|
||||
Name keyTypeName = getNameIfStandardType(keyType);
|
||||
String collectionClassName = null;
|
||||
if (keyTypeName != null) {
|
||||
if (NamePredicate.PRIMITIVE_NUMBERS.apply(keyTypeName)) {
|
||||
|
||||
+1
-1
@@ -22,8 +22,8 @@ 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.TranslationContext
|
||||
import org.jetbrains.kotlin.js.translate.intrinsic.functions.patterns.PatternBuilder.pattern
|
||||
import org.jetbrains.kotlin.js.translate.operation.OperatorTable
|
||||
import org.jetbrains.kotlin.js.translate.utils.JsAstUtils
|
||||
import org.jetbrains.kotlin.js.translate.utils.JsDescriptorUtils
|
||||
|
||||
+8
-7
@@ -18,23 +18,24 @@ package org.jetbrains.kotlin.js.translate.intrinsic.operation
|
||||
|
||||
import com.google.dart.compiler.backend.js.ast.*
|
||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
||||
import org.jetbrains.kotlin.psi.JetBinaryExpression
|
||||
import org.jetbrains.kotlin.types.expressions.OperatorConventions
|
||||
import org.jetbrains.kotlin.js.patterns.NamePredicate
|
||||
import org.jetbrains.kotlin.js.patterns.PatternBuilder.pattern
|
||||
import org.jetbrains.kotlin.js.translate.context.TranslationContext
|
||||
import org.jetbrains.kotlin.js.translate.intrinsic.functions.factories.TopLevelFIF
|
||||
import org.jetbrains.kotlin.js.translate.intrinsic.functions.patterns.NamePredicate
|
||||
import org.jetbrains.kotlin.js.translate.utils.JsAstUtils
|
||||
import org.jetbrains.kotlin.js.translate.utils.JsDescriptorUtils
|
||||
import org.jetbrains.kotlin.js.translate.utils.TranslationUtils
|
||||
import java.util.Arrays
|
||||
import org.jetbrains.kotlin.js.translate.utils.PsiUtils.getOperationToken
|
||||
import org.jetbrains.kotlin.js.translate.utils.TranslationUtils
|
||||
import org.jetbrains.kotlin.lexer.JetToken
|
||||
import org.jetbrains.kotlin.lexer.JetTokens
|
||||
import com.google.common.collect.ImmutableSet
|
||||
import org.jetbrains.kotlin.js.translate.intrinsic.functions.patterns.PatternBuilder.pattern
|
||||
import org.jetbrains.kotlin.psi.JetBinaryExpression
|
||||
import org.jetbrains.kotlin.resolve.calls.callUtil.getResolvedCall
|
||||
import org.jetbrains.kotlin.types.expressions.OperatorConventions
|
||||
import org.jetbrains.kotlin.types.isDynamic
|
||||
|
||||
import java.util.Arrays
|
||||
import com.google.common.collect.ImmutableSet
|
||||
|
||||
object EqualsBOIF : BinaryOperationIntrinsicFactory {
|
||||
|
||||
val LONG_EQUALS_ANY = pattern("Long.equals")
|
||||
|
||||
+1
-1
@@ -22,9 +22,9 @@ 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.intrinsic.functions.patterns.PatternBuilder.pattern
|
||||
import org.jetbrains.kotlin.js.translate.operation.OperatorTable
|
||||
import org.jetbrains.kotlin.js.translate.utils.ID
|
||||
import org.jetbrains.kotlin.js.translate.utils.JsAstUtils.*
|
||||
|
||||
+6
-7
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2010-2015 JetBrains s.r.o.
|
||||
* Copyright 2010-2013 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.
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.js.translate.reference;
|
||||
|
||||
|
||||
import com.google.dart.compiler.backend.js.ast.*;
|
||||
import com.google.dart.compiler.backend.js.ast.metadata.MetadataPackage;
|
||||
import com.google.dart.compiler.common.SourceInfoImpl;
|
||||
@@ -32,11 +33,11 @@ import org.jetbrains.kotlin.builtins.InlineUtil;
|
||||
import org.jetbrains.kotlin.descriptors.*;
|
||||
import org.jetbrains.kotlin.diagnostics.DiagnosticFactory2;
|
||||
import org.jetbrains.kotlin.diagnostics.ParametrizedDiagnostic;
|
||||
import org.jetbrains.kotlin.js.descriptors.DescriptorPredicate;
|
||||
import org.jetbrains.kotlin.js.descriptors.PatternBuilder;
|
||||
import org.jetbrains.kotlin.js.resolve.diagnostics.ErrorsJs;
|
||||
import org.jetbrains.kotlin.js.translate.callTranslator.CallTranslator;
|
||||
import org.jetbrains.kotlin.js.translate.context.TranslationContext;
|
||||
import org.jetbrains.kotlin.js.translate.intrinsic.functions.patterns.DescriptorPredicate;
|
||||
import org.jetbrains.kotlin.js.translate.intrinsic.functions.patterns.PatternBuilder;
|
||||
import org.jetbrains.kotlin.psi.JetCallExpression;
|
||||
import org.jetbrains.kotlin.psi.JetExpression;
|
||||
import org.jetbrains.kotlin.psi.JetStringTemplateExpression;
|
||||
@@ -52,14 +53,12 @@ import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import static com.google.gwt.dev.js.rhino.Utils.isEndOfLine;
|
||||
import static org.jetbrains.kotlin.js.descriptors.DescriptorsPackage.getJS_PATTERN;
|
||||
import static org.jetbrains.kotlin.js.translate.utils.BindingUtils.getCompileTimeValue;
|
||||
import static org.jetbrains.kotlin.resolve.calls.callUtil.CallUtilPackage.getFunctionResolvedCallWithAssert;
|
||||
|
||||
public final class CallExpressionTranslator extends AbstractCallExpressionTranslator {
|
||||
|
||||
@NotNull
|
||||
private final static DescriptorPredicate JSCODE_PATTERN = PatternBuilder.pattern("kotlin.js.js(String)");
|
||||
|
||||
@NotNull
|
||||
public static JsNode translate(
|
||||
@NotNull JetCallExpression expression,
|
||||
@@ -115,7 +114,7 @@ public final class CallExpressionTranslator extends AbstractCallExpressionTransl
|
||||
FunctionDescriptor descriptor = getFunctionResolvedCallWithAssert(expression, context.bindingContext())
|
||||
.getResultingDescriptor();
|
||||
|
||||
return JSCODE_PATTERN.apply(descriptor) && expression.getValueArguments().size() == 1;
|
||||
return getJS_PATTERN().apply(descriptor);
|
||||
}
|
||||
|
||||
private CallExpressionTranslator(
|
||||
|
||||
+2
-11
@@ -22,6 +22,7 @@ import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns;
|
||||
import org.jetbrains.kotlin.descriptors.*;
|
||||
import org.jetbrains.kotlin.js.descriptorUtils.DescriptorUtilsPackage;
|
||||
import org.jetbrains.kotlin.js.translate.context.TranslationContext;
|
||||
import org.jetbrains.kotlin.name.Name;
|
||||
import org.jetbrains.kotlin.psi.JetExpression;
|
||||
@@ -158,16 +159,6 @@ public final class JsDescriptorUtils {
|
||||
@Nullable
|
||||
public static Name getNameIfStandardType(@NotNull JetExpression expression, @NotNull TranslationContext context) {
|
||||
JetType type = context.bindingContext().get(BindingContext.EXPRESSION_TYPE, expression);
|
||||
return type != null ? getNameIfStandardType(type) : null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static Name getNameIfStandardType(@NotNull JetType type) {
|
||||
ClassifierDescriptor descriptor = type.getConstructor().getDeclarationDescriptor();
|
||||
if (descriptor != null && descriptor.getContainingDeclaration() == KotlinBuiltIns.getInstance().getBuiltInsPackageFragment()) {
|
||||
return descriptor.getName();
|
||||
}
|
||||
|
||||
return null;
|
||||
return type != null ? DescriptorUtilsPackage.getNameIfStandardType(type) : null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@ import org.jetbrains.kotlin.resolve.scopes.JetScope;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
import static org.jetbrains.kotlin.js.translate.utils.TranslationUtils.getJetTypeFqName;
|
||||
import static org.jetbrains.kotlin.js.descriptorUtils.DescriptorUtilsPackage.getJetTypeFqName;
|
||||
import static org.jetbrains.kotlin.resolve.DescriptorUtils.getFqName;
|
||||
|
||||
public class ManglingUtils {
|
||||
|
||||
@@ -137,41 +137,6 @@ public final class TranslationUtils {
|
||||
return new JsConditional(testExpression, thenExpression, elseExpression);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static String getJetTypeFqName(@NotNull JetType jetType, final boolean printTypeArguments) {
|
||||
ClassifierDescriptor declaration = jetType.getConstructor().getDeclarationDescriptor();
|
||||
assert declaration != null;
|
||||
|
||||
if (declaration instanceof TypeParameterDescriptor) {
|
||||
return StringUtil.join(((TypeParameterDescriptor) declaration).getUpperBounds(), new Function<JetType, String>() {
|
||||
@Override
|
||||
public String fun(JetType type) {
|
||||
return getJetTypeFqName(type, printTypeArguments);
|
||||
}
|
||||
}, "&");
|
||||
}
|
||||
|
||||
List<TypeProjection> typeArguments = jetType.getArguments();
|
||||
|
||||
String typeArgumentsAsString;
|
||||
|
||||
if (printTypeArguments && !typeArguments.isEmpty()) {
|
||||
String joinedTypeArguments = StringUtil.join(typeArguments, new Function<TypeProjection, String>() {
|
||||
@Override
|
||||
public String fun(TypeProjection typeProjection) {
|
||||
return getJetTypeFqName(typeProjection.getType(), false);
|
||||
}
|
||||
}, ", ");
|
||||
|
||||
typeArgumentsAsString = "<" + joinedTypeArguments + ">";
|
||||
}
|
||||
else {
|
||||
typeArgumentsAsString = "";
|
||||
}
|
||||
|
||||
return getFqName(declaration).asString() + typeArgumentsAsString;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static JsNameRef backingFieldReference(@NotNull TranslationContext context,
|
||||
@NotNull PropertyDescriptor descriptor) {
|
||||
|
||||
Reference in New Issue
Block a user