blob: d3b893369c11647e545afab6a5d809fc24830ba8 [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.Element;
import java.util.List;
/**
* Common supertype of all types.
*/
public interface Type {
/**
* Performs the substitution [arguments[i]/parameters[i]]this.
* The notation is known from this lambda calculus rule:
* (lambda x.e0)e1 -> [e1/x]e0.
* <p>See {@link TypeVariable} for a motivation for this method.
*/
Type subst(List<Type> arguments, List<Type> parameters);
Element getElement();
TypeKind getKind();
/**
* @return <code>true</code> if this {@link Type} was not declared in {@link Element}, but
* instead was inferred from context.
*/
boolean isInferred();
}