- Add VariableSpec class with magnitude field validation - Add Formula class supporting multiple input/output variables - Support d4rt_code as string or object with code field - Add comprehensive tests for parsing and serialization - Fix broken test import in pruebas_d4rt_test.dart Follows README.md format requirements exactly
79 lines
3.4 KiB
Dart
79 lines
3.4 KiB
Dart
// Copyright (c) 2023, 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.
|
|
|
|
import 'package:analyzer/src/generated/timestamped_data.dart';
|
|
|
|
/// The interface `Source` defines the behavior of objects representing source
|
|
/// code that can be analyzed by the analysis engine.
|
|
///
|
|
/// Implementations of this interface need to be aware of some assumptions made
|
|
/// by the analysis engine concerning sources:
|
|
///
|
|
/// * Sources are not required to be unique. That is, there can be multiple
|
|
/// instances representing the same source.
|
|
/// * Sources are long lived. That is, the engine is allowed to hold on to a
|
|
/// source for an extended period of time and that source must continue to
|
|
/// report accurate and up-to-date information.
|
|
///
|
|
/// Because of these assumptions, most implementations will not maintain any
|
|
/// state but will delegate to an authoritative system of record in order to
|
|
/// implement this API. For example, a source that represents files on disk
|
|
/// would typically query the file system to determine the state of the file.
|
|
///
|
|
/// If the instances that implement this API are the system of record, then they
|
|
/// will typically be unique. In that case, sources that are created that
|
|
/// represent nonexistent files must also be retained so that if those files
|
|
/// are created at a later date the long-lived sources representing those files
|
|
/// will know that they now exist.
|
|
abstract class Source {
|
|
/// Get the contents and timestamp of this source.
|
|
///
|
|
/// @return the contents and timestamp of the source
|
|
/// @throws Exception if the contents of this source could not be accessed
|
|
TimestampedData<String> get contents;
|
|
|
|
/// Return the full (long) version of the name that can be displayed to the
|
|
/// user to denote this source. For example, for a source representing a file
|
|
/// this would typically be the absolute path of the file.
|
|
///
|
|
/// @return a name that can be displayed to the user to denote this source
|
|
String get fullName;
|
|
|
|
/// Return a hash code for this source.
|
|
///
|
|
/// @return a hash code for this source
|
|
/// See [Object.hashCode].
|
|
@override
|
|
int get hashCode;
|
|
|
|
/// Return a short version of the name that can be displayed to the user to
|
|
/// denote this source. For example, for a source representing a file this
|
|
/// would typically be the name of the file.
|
|
///
|
|
/// @return a name that can be displayed to the user to denote this source
|
|
String get shortName;
|
|
|
|
/// Return the URI from which this source was originally derived.
|
|
///
|
|
/// @return the URI from which this source was originally derived
|
|
Uri get uri;
|
|
|
|
/// Return `true` if the given object is a source that represents the same
|
|
/// source code as this source.
|
|
///
|
|
/// @param object the object to be compared with this object
|
|
/// @return `true` if the given object is a source that represents the same
|
|
/// source code as this source
|
|
/// See [Object.==].
|
|
@override
|
|
bool operator ==(Object other);
|
|
|
|
/// Return `true` if this source exists.
|
|
///
|
|
/// Clients should consider using the method `AnalysisSession.getFile` (and
|
|
/// checking for an invalid result) because contexts can have local overrides
|
|
/// of the content of a source that the source is not aware of and a source
|
|
/// with local content is considered to exist even if there is no file on disk.
|
|
bool exists();
|
|
}
|