| Index: dart/compiler/java/com/google/dart/compiler/type/FunctionTypeImplementation.java
|
| diff --git a/dart/compiler/java/com/google/dart/compiler/type/FunctionTypeImplementation.java b/dart/compiler/java/com/google/dart/compiler/type/FunctionTypeImplementation.java
|
| deleted file mode 100644
|
| index c4c23776c3ceb016b31f625a64907aed4084d1ca..0000000000000000000000000000000000000000
|
| --- a/dart/compiler/java/com/google/dart/compiler/type/FunctionTypeImplementation.java
|
| +++ /dev/null
|
| @@ -1,196 +0,0 @@
|
| -// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
|
| -// for details. All rights reserved. Use of this source code is governed by a
|
| -// BSD-style license that can be found in the LICENSE file.
|
| -
|
| -package com.google.dart.compiler.type;
|
| -
|
| -import com.google.dart.compiler.resolver.ClassElement;
|
| -
|
| -import java.util.Collections;
|
| -import java.util.LinkedHashMap;
|
| -import java.util.List;
|
| -import java.util.Map;
|
| -import java.util.Map.Entry;
|
| -
|
| -class FunctionTypeImplementation extends AbstractType implements FunctionType {
|
| - private static final Map<String, Type> EMPTY_MAP = Collections.<String, Type>emptyMap();
|
| - private final ClassElement classElement;
|
| - private final List<Type> parameterTypes;
|
| - private final Type returnType;
|
| - private final Map<String, Type> optionalParameterTypes;
|
| - private final Map<String, Type> namedParameterTypes;
|
| - private final Type rest;
|
| -
|
| - private FunctionTypeImplementation(ClassElement element,
|
| - List<Type> parameterTypes,
|
| - Map<String, Type> optionalParameterTypes,
|
| - Map<String, Type> namedParameterTypes,
|
| - Type rest,
|
| - Type returnType) {
|
| - this.classElement = element;
|
| - this.parameterTypes = parameterTypes;
|
| - this.optionalParameterTypes = optionalParameterTypes == null ? EMPTY_MAP : optionalParameterTypes;
|
| - this.namedParameterTypes = namedParameterTypes == null ? EMPTY_MAP : namedParameterTypes;
|
| - this.rest = rest;
|
| - this.returnType = returnType;
|
| - }
|
| -
|
| - @Override
|
| - public Type subst(List<Type> arguments,
|
| - List<Type> parameters) {
|
| - List<Type> substitutedParameterTypes = Types.subst(getParameterTypes(), arguments, parameters);
|
| -
|
| - Map<String, Type> substitutedOptionalParameterTypes = null;
|
| - if (!getOptionalParameterTypes().isEmpty()) {
|
| - substitutedOptionalParameterTypes = new LinkedHashMap<String, Type>();
|
| - for (Map.Entry<String, Type> entry : getOptionalParameterTypes().entrySet()) {
|
| - substitutedOptionalParameterTypes.put(entry.getKey(),
|
| - entry.getValue().subst(arguments, parameters));
|
| - }
|
| - }
|
| -
|
| - Map<String, Type> substitutedNamedParameterTypes = null;
|
| - if (!getNamedParameterTypes().isEmpty()) {
|
| - substitutedNamedParameterTypes = new LinkedHashMap<String, Type>();
|
| - for (Map.Entry<String, Type> entry : getNamedParameterTypes().entrySet()) {
|
| - substitutedNamedParameterTypes.put(entry.getKey(),
|
| - entry.getValue().subst(arguments, parameters));
|
| - }
|
| - }
|
| -
|
| - Type substitutedRest = null;
|
| - if (getRest() != null) {
|
| - substitutedRest = getRest().subst(arguments, parameters);
|
| - }
|
| - Type substitutedReturnType = getReturnType().subst(arguments, parameters);
|
| - return new FunctionTypeImplementation(getElement(),
|
| - substitutedParameterTypes,
|
| - substitutedOptionalParameterTypes,
|
| - substitutedNamedParameterTypes,
|
| - substitutedRest, substitutedReturnType);
|
| - }
|
| -
|
| - @Override
|
| - public ClassElement getElement() {
|
| - return classElement;
|
| - }
|
| -
|
| - @Override
|
| - public Type getReturnType() {
|
| - return returnType;
|
| - }
|
| -
|
| - @Override
|
| - public List<Type> getParameterTypes() {
|
| - return parameterTypes;
|
| - }
|
| -
|
| - @Override
|
| - public TypeKind getKind() {
|
| - return TypeKind.FUNCTION;
|
| - }
|
| -
|
| - public Map<String, Type> getOptionalParameterTypes() {
|
| - return optionalParameterTypes;
|
| - }
|
| -
|
| - @Override
|
| - public Map<String, Type> getNamedParameterTypes() {
|
| - return namedParameterTypes;
|
| - }
|
| -
|
| - @Override
|
| - public Type getRest() {
|
| - return rest;
|
| - }
|
| -
|
| - @Override
|
| - public boolean hasRest() {
|
| - return rest != null;
|
| - }
|
| -
|
| - @Override
|
| - public String toString() {
|
| - StringBuilder sb = new StringBuilder();
|
| - sb.append("(");
|
| - boolean first = true;
|
| - for (Type argument : getParameterTypes()) {
|
| - if (!first) {
|
| - sb.append(", ");
|
| - }
|
| - sb.append(argument);
|
| - first = false;
|
| - }
|
| - Type rest = getRest();
|
| - if (rest != null) {
|
| - if (!first) {
|
| - sb.append(", ");
|
| - }
|
| - sb.append(rest);
|
| - sb.append("...");
|
| - first = false;
|
| - }
|
| - Map<String, Type> namedParameterTypes = getNamedParameterTypes();
|
| - if (!namedParameterTypes.isEmpty()) {
|
| - if (!first) {
|
| - sb.append(", ");
|
| - }
|
| - sb.append("[");
|
| - first = true;
|
| - for (Entry<String, Type> entry : namedParameterTypes.entrySet()) {
|
| - if (!first) {
|
| - sb.append(", ");
|
| - }
|
| - sb.append(entry.getValue());
|
| - sb.append(" ");
|
| - sb.append(entry.getKey());
|
| - first = false;
|
| - }
|
| - sb.append("]");
|
| - }
|
| - sb.append(") -> ");
|
| - sb.append(getReturnType());
|
| - return sb.toString();
|
| - }
|
| -
|
| - @Override
|
| - public boolean equals(Object o) {
|
| - // Two FunctionType objects representing the "same" type may not be equal,
|
| - // because they may have different elements.
|
| - if (o instanceof FunctionType) {
|
| - FunctionType other = (FunctionType) o;
|
| - return getElement().equals(other.getElement())
|
| - && getReturnType().equals(other.getReturnType())
|
| - && getParameterTypes().equals(other.getParameterTypes())
|
| - && hasRest() == other.hasRest()
|
| - && (!hasRest() || getRest().equals(other.getRest()))
|
| - && getNamedParameterTypes().equals(other.getNamedParameterTypes());
|
| - }
|
| - return false;
|
| - }
|
| -
|
| - @Override
|
| - public int hashCode() {
|
| - Type rest = getRest();
|
| - Map<String, Type> namedParameterTypes = getNamedParameterTypes();
|
| - return getElement().hashCode()
|
| - + getReturnType().hashCode()
|
| - + getParameterTypes().hashCode()
|
| - + (rest == null ? 0 : rest.hashCode())
|
| - + (namedParameterTypes == null ? 0 : namedParameterTypes.hashCode());
|
| - }
|
| -
|
| - /**
|
| - * Returns a function type with the given parameter types and return type. The
|
| - * {@link ClassElement} should always be the element corresponding to the
|
| - * interface Function in the core library.
|
| - */
|
| - static FunctionType of(ClassElement element, List<Type> parameterTypes,
|
| - Map<String, Type> optionalParameterTypes,
|
| - Map<String, Type> namedParameterTypes,
|
| - Type rest, Type returnType) {
|
| - assert element.isDynamic() || element.getName().equals("Function");
|
| - return new FunctionTypeImplementation(element, parameterTypes, optionalParameterTypes,
|
| - namedParameterTypes, rest, returnType);
|
| - }
|
| -}
|
|
|