blob: b8d62a37312ce9e386448ddc503dc6cd57816723 [file] [log] [blame]
// 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 com.google.dart.compiler.resolver.MethodElement;
import java.util.List;
import java.util.Map;
/**
* Function type representation. A function type may correspond to method,
* constructor, or function in which case its element is the corresponding
* {@link MethodElement}. Otherwise, the function type can correspond to a named
* function-type alias or variable type, in which case its element is the class
* element of the Dart interface Function.
*/
public interface FunctionType extends Type {
Type getReturnType();
/**
* @return "normal" parameter types, i.e. required, does not include "named".
*/
List<Type> getParameterTypes();
/**
* Return the class element corresponding to the interface Function.
*/
@Override
ClassElement getElement();
Type getRest();
boolean hasRest();
/**
* @return "optional" parameter types.
*/
Map<String, Type> getOptionalParameterTypes();
/**
* @return "named" parameter types.
*/
Map<String, Type> getNamedParameterTypes();
}