blob: b526a77b4f4615fcb182d47ce40a6e4a8aca394c [file] [log] [blame]
// Copyright (c) 2024, 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.
/// A resolved reference to an entity.
// TODO(johnniwinther): Do we need to split these into subtypes?
sealed class Reference {
const Reference();
}
abstract class FieldReference extends Reference {
String get name;
@override
String toString() => 'FieldReference(${name})';
}
abstract class FunctionReference extends Reference {
String get name;
@override
String toString() => 'FunctionReference(${name})';
}
abstract class ConstructorReference extends Reference {
String get name;
@override
String toString() => 'ConstructorReference(${name})';
}
abstract class TypeReference extends Reference {
const TypeReference();
String get name;
@override
String toString() => 'TypeReference(${name})';
}
abstract class ClassReference extends Reference {
String get name;
@override
String toString() => 'ClassReference(${name})';
}
abstract class TypedefReference extends Reference {
String get name;
@override
String toString() => 'TypedefReference(${name})';
}
abstract class ExtensionReference extends Reference {
String get name;
@override
String toString() => 'ExtensionReference(${name})';
}
abstract class ExtensionTypeReference extends Reference {
String get name;
@override
String toString() => 'ExtensionTypeReference(${name})';
}
abstract class EnumReference extends Reference {
String get name;
@override
String toString() => 'EnumReference(${name})';
}
abstract class MixinReference extends Reference {
String get name;
@override
String toString() => 'MixinReference(${name})';
}
abstract class FunctionTypeParameterReference extends Reference {
String get name;
@override
String toString() => 'FunctionTypeParameterReference(${name})';
}
/// Symbolic references needed during parsing.
abstract class References {
/// The [TypeReference] used for parsing `void`.
TypeReference get voidReference;
/// The [TypeReference] used for parsing `void`.
TypeReference get dynamicReference;
}