| // 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. |
| |
| part of dart.core; |
| |
| /** |
| * Runtime representation of a type. |
| * |
| * Type objects represent types. |
| * A type object can be created in several ways: |
| * * By a *type literal*, a type name occurring as an expression, |
| * like `Type type = int;`, |
| * or a type variable occurring as an expression, like `Type type = T;`. |
| * * By reading the run-time type of an object, |
| * like `Type type = o.runtimeType;`. |
| * * Through `dart:mirrors`. |
| * |
| * A type object is intended as an entry point for using `dart:mirrors`. |
| * The only operations supported are comparing to other type objects |
| * for equality, and converting it to a string for debugging. |
| */ |
| abstract class Type { |
| /** |
| * A hash code for the type which is compatible with [operator==]. |
| */ |
| int get hashCode; |
| |
| /** |
| * Whether [other] is a [Type] instance representing an equivalent type. |
| * |
| * The language specification dictates which types are considered |
| * to be the equivalent. |
| * If two types are equivalent, it's guaranteed that they are subtypes |
| * of each other, |
| * but there are also types which are subtypes of each other, |
| * and which are not equivalent (for example `dynamic` and `void`, |
| * or `FutureOr<Object>` and `Object`). |
| */ |
| bool operator ==(Object other); |
| |
| /** |
| * Returns a string which represents the underlying type. |
| * |
| * The string is only intended for providing information to a reader |
| * while debugging. |
| * There is no guaranteed format, |
| * the string value returned for a [Type] instances is entirely |
| * implementation dependent. |
| * |
| * The string should be consistent, so a `Type` object for the *same* type |
| * returns the same string throughout a program execution. |
| * The string may or may not contain parts corresponding to the |
| * source name of declaration of the type, if the type has a source name |
| * at all (some types reachable through `dart:mirrors` may not). |
| */ |
| String toString(); |
| } |