Added PrimitiveType.NUMBER_TYPES constant. Used it in JVM and JS backends.
This commit is contained in:
@@ -20,20 +20,24 @@ import com.google.common.collect.ImmutableList;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.lang.descriptors.*;
|
||||
import org.jetbrains.asm4.Opcodes;
|
||||
import org.jetbrains.jet.lang.descriptors.CallableMemberDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.SimpleFunctionDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
|
||||
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
|
||||
import org.jetbrains.jet.lang.resolve.java.JvmPrimitiveType;
|
||||
import org.jetbrains.jet.lang.resolve.name.FqNameUnsafe;
|
||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||
import org.jetbrains.jet.lang.types.expressions.OperatorConventions;
|
||||
import org.jetbrains.jet.lang.types.lang.JetStandardClasses;
|
||||
import org.jetbrains.jet.lang.types.lang.PrimitiveType;
|
||||
import org.jetbrains.jet.lang.types.expressions.OperatorConventions;
|
||||
import org.jetbrains.asm4.Opcodes;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import javax.inject.Inject;
|
||||
import java.util.*;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author yole
|
||||
@@ -49,8 +53,6 @@ public class IntrinsicMethods {
|
||||
private static final IntrinsicMethod DEC = new Increment(-1);
|
||||
private static final IntrinsicMethod HASH_CODE = new HashCode();
|
||||
|
||||
private static final List<Name> PRIMITIVE_TYPES = ImmutableList.of(Name.identifier("Boolean"), Name.identifier("Byte"), Name.identifier("Char"), Name.identifier("Short"), Name.identifier("Int"), Name.identifier("Float"), Name.identifier("Long"), Name.identifier("Double"));
|
||||
private static final List<Name> PRIMITIVE_NUMBER_TYPES = ImmutableList.of(Name.identifier("Byte"), Name.identifier("Char"), Name.identifier("Short"), Name.identifier("Int"), Name.identifier("Float"), Name.identifier("Long"), Name.identifier("Double"));
|
||||
public static final IntrinsicMethod ARRAY_SIZE = new ArraySize();
|
||||
public static final IntrinsicMethod ARRAY_INDICES = new ArrayIndices();
|
||||
public static final Equals EQUALS = new Equals();
|
||||
@@ -83,20 +85,21 @@ public class IntrinsicMethods {
|
||||
ImmutableList<Name> primitiveCastMethods = OperatorConventions.NUMBER_CONVERSIONS.asList();
|
||||
for (Name method : primitiveCastMethods) {
|
||||
declareIntrinsicFunction(Name.identifier("Number"), method, 0, NUMBER_CAST);
|
||||
for (Name type : PRIMITIVE_NUMBER_TYPES) {
|
||||
declareIntrinsicFunction(type, method, 0, NUMBER_CAST);
|
||||
for (PrimitiveType type : PrimitiveType.NUMBER_TYPES) {
|
||||
declareIntrinsicFunction(type.getTypeName(), method, 0, NUMBER_CAST);
|
||||
}
|
||||
}
|
||||
|
||||
for (Name type : PRIMITIVE_NUMBER_TYPES) {
|
||||
declareIntrinsicFunction(type, Name.identifier("plus"), 0, UNARY_PLUS);
|
||||
declareIntrinsicFunction(type, Name.identifier("minus"), 0, UNARY_MINUS);
|
||||
declareIntrinsicFunction(type, Name.identifier("inv"), 0, INV);
|
||||
declareIntrinsicFunction(type, Name.identifier("rangeTo"), 1, RANGE_TO);
|
||||
declareIntrinsicFunction(type, Name.identifier("inc"), 0, INC);
|
||||
declareIntrinsicFunction(type, Name.identifier("dec"), 0, DEC);
|
||||
declareIntrinsicFunction(type, Name.identifier("hashCode"), 0, HASH_CODE);
|
||||
declareIntrinsicFunction(type, Name.identifier("equals"), 1, EQUALS);
|
||||
for (PrimitiveType type : PrimitiveType.NUMBER_TYPES) {
|
||||
Name typeName = type.getTypeName();
|
||||
declareIntrinsicFunction(typeName, Name.identifier("plus"), 0, UNARY_PLUS);
|
||||
declareIntrinsicFunction(typeName, Name.identifier("minus"), 0, UNARY_MINUS);
|
||||
declareIntrinsicFunction(typeName, Name.identifier("inv"), 0, INV);
|
||||
declareIntrinsicFunction(typeName, Name.identifier("rangeTo"), 1, RANGE_TO);
|
||||
declareIntrinsicFunction(typeName, Name.identifier("inc"), 0, INC);
|
||||
declareIntrinsicFunction(typeName, Name.identifier("dec"), 0, DEC);
|
||||
declareIntrinsicFunction(typeName, Name.identifier("hashCode"), 0, HASH_CODE);
|
||||
declareIntrinsicFunction(typeName, Name.identifier("equals"), 1, EQUALS);
|
||||
}
|
||||
|
||||
declareBinaryOp(Name.identifier("plus"), Opcodes.IADD);
|
||||
@@ -136,8 +139,8 @@ public class IntrinsicMethods {
|
||||
declareIntrinsicFunction(Name.identifier("FloatIterator"), Name.identifier("next"), 0, ITERATOR_NEXT);
|
||||
declareIntrinsicFunction(Name.identifier("DoubleIterator"), Name.identifier("next"), 0, ITERATOR_NEXT);
|
||||
|
||||
for (Name type : PRIMITIVE_TYPES) {
|
||||
declareIntrinsicFunction(type, Name.identifier("compareTo"), 1, new CompareTo());
|
||||
for (PrimitiveType type : PrimitiveType.values()) {
|
||||
declareIntrinsicFunction(type.getTypeName(), Name.identifier("compareTo"), 1, new CompareTo());
|
||||
}
|
||||
// declareIntrinsicFunction("Any", "equals", 1, new Equals());
|
||||
//
|
||||
@@ -175,8 +178,8 @@ public class IntrinsicMethods {
|
||||
|
||||
private void declareBinaryOp(Name methodName, int opcode) {
|
||||
BinaryOp op = new BinaryOp(opcode);
|
||||
for (Name type : PRIMITIVE_TYPES) {
|
||||
declareIntrinsicFunction(type, methodName, 1, op);
|
||||
for (PrimitiveType type : PrimitiveType.values()) {
|
||||
declareIntrinsicFunction(type.getTypeName(), methodName, 1, op);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
package org.jetbrains.jet.lang.types.lang;
|
||||
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||
import org.jetbrains.jet.lang.types.ref.ClassName;
|
||||
@@ -34,6 +35,8 @@ public enum PrimitiveType {
|
||||
LONG("Long"),
|
||||
DOUBLE("Double"),
|
||||
;
|
||||
|
||||
public static final ImmutableSet<PrimitiveType> NUMBER_TYPES = ImmutableSet.of(CHAR, BYTE, SHORT, INT, FLOAT, LONG, DOUBLE);
|
||||
|
||||
private final Name typeName;
|
||||
private final Name arrayTypeName;
|
||||
|
||||
+10
-1
@@ -18,9 +18,12 @@ package org.jetbrains.k2js.translate.intrinsic.functions.patterns;
|
||||
|
||||
import closurecompiler.internal.com.google.common.collect.Lists;
|
||||
import com.google.common.base.Predicate;
|
||||
import com.intellij.util.Function;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.lang.resolve.name.Name;
|
||||
import org.jetbrains.jet.lang.types.lang.PrimitiveType;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
@@ -32,7 +35,13 @@ import java.util.List;
|
||||
public final class NamePredicate implements Predicate<Name> {
|
||||
|
||||
@NotNull
|
||||
public static final NamePredicate PRIMITIVE_NUMBERS = new NamePredicate("Int", "Double", "Float", "Long", "Short", "Byte");
|
||||
public static final NamePredicate PRIMITIVE_NUMBERS = new NamePredicate(
|
||||
ContainerUtil.map(PrimitiveType.NUMBER_TYPES, new Function<PrimitiveType, String>() {
|
||||
@Override
|
||||
public String fun(PrimitiveType type) {
|
||||
return type.getTypeName().getName();
|
||||
}
|
||||
}));
|
||||
|
||||
@NotNull
|
||||
private final List<Name> validNames = Lists.newArrayList();
|
||||
|
||||
Reference in New Issue
Block a user