364b36691c
This reverts commitc616db31d2. Reason for revert: Fix landed downstream in Flutter engine: https://github.com/flutter/flutter/pull/180127 Original change's description: > Revert "[ DDC / CFE ] Add support for allowing imports of unsupported libraries" > > This reverts commitb5e60be49d. > > Reason for revert: broke Flutter web engine tests > > Original change's description: > > [ DDC / CFE ] Add support for allowing imports of unsupported libraries > > > > This change adds support for allowing for imports of unsupported > > platform-specific libraries when the > > `--include-unsupported-platform-library-stubs` flag is provided to the > > CFE. > > > > This flag sets the `includeUnsupportedPlatformLibraryStubs` property in > > `TargetFlags`, which `Target`s can use to conditionally return different > > `DartLibrarySupport` objects with different supported/unsupported > > library sets. > > > > A `checkForUnsupportedDartColonImports` function has been added to > > `Target` that uses the value of `dartLibrarySupport` to determine if > > there's any unsupported library imports. This function is called after > > the various transformation operations provided by the `Target` > > implementation, meaning the import of an unsupported library specified > > in `dartLibrarySupport` will now result in a compilation error (this > > includes `dart:mirrors` imports for VM targets when mirrors are > > disabled, which was previously handled by the VM itself). > > > > Related to https://github.com/dart-lang/sdk/issues/62125 > > > > TEST=Tests added / modified > > > > Change-Id: Ife819b2e1a6d28f67d80aab6701cd23a1724aa4d > > Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/465760 > > Reviewed-by: Nicholas Shahan <nshahan@google.com> > > Reviewed-by: Johnni Winther <johnniwinther@google.com> > > Commit-Queue: Ben Konyi <bkonyi@google.com> > > Change-Id: I0b59f00e55a2424f783351abd977eb38409ce01f > Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/469100 > Reviewed-by: Nate Biggs <natebiggs@google.com> > Commit-Queue: Alexander Markov <alexmarkov@google.com> > Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> > Reviewed-by: Ben Konyi <bkonyi@google.com> > Reviewed-by: Sigmund Cherem <sigmund@google.com> Change-Id: I1ae2eac675432286aebabea3c1f58caf35a27fbb Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/469240 Commit-Queue: Ben Konyi <bkonyi@google.com> Reviewed-by: Sigmund Cherem <sigmund@google.com> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
130 lines
4.8 KiB
Dart
130 lines
4.8 KiB
Dart
// Copyright (c) 2016, 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.
|
|
|
|
/// -----------------------------------------------------------------------
|
|
/// WHEN CHANGING THIS FILE:
|
|
/// -----------------------------------------------------------------------
|
|
///
|
|
/// If you are adding/removing/modifying fields/classes of the AST, you must
|
|
/// also update the following files:
|
|
///
|
|
/// - binary/ast_to_binary.dart
|
|
/// - binary/ast_from_binary.dart
|
|
/// - text/ast_to_text.dart
|
|
/// - clone.dart
|
|
/// - binary.md
|
|
/// - type_checker.dart (if relevant)
|
|
///
|
|
/// -----------------------------------------------------------------------
|
|
/// ERROR HANDLING
|
|
/// -----------------------------------------------------------------------
|
|
///
|
|
/// As a rule of thumb, errors that can be detected statically are handled by
|
|
/// the frontend, typically by translating the erroneous code into a 'throw' or
|
|
/// a call to 'noSuchMethod'.
|
|
///
|
|
/// For example, there are no arity mismatches in static invocations, and
|
|
/// there are no direct invocations of a constructor on a abstract class.
|
|
///
|
|
/// -----------------------------------------------------------------------
|
|
/// STATIC vs TOP-LEVEL
|
|
/// -----------------------------------------------------------------------
|
|
///
|
|
/// The term `static` includes both static class members and top-level members.
|
|
///
|
|
/// "Static class member" is the preferred term for non-top level statics.
|
|
///
|
|
/// Static class members are not lifted to the library level because mirrors
|
|
/// and stack traces can observe that they are class members.
|
|
///
|
|
/// -----------------------------------------------------------------------
|
|
/// PROCEDURES
|
|
/// -----------------------------------------------------------------------
|
|
///
|
|
/// "Procedure" is an umbrella term for method, getter, setter, index-getter,
|
|
/// index-setter, operator overloader, and factory constructor.
|
|
///
|
|
/// Generative constructors, field initializers, local functions are NOT
|
|
/// procedures.
|
|
///
|
|
/// -----------------------------------------------------------------------
|
|
/// TRANSFORMATIONS
|
|
/// -----------------------------------------------------------------------
|
|
///
|
|
/// AST transformations can be performed using [TreeNode.replaceWith] or the
|
|
/// [Transformer] visitor class.
|
|
///
|
|
/// Use [Transformer] for bulk transformations that are likely to transform lots
|
|
/// of nodes, and [TreeNode.replaceWith] for sparse transformations that mutate
|
|
/// relatively few nodes. Or use whichever is more convenient.
|
|
///
|
|
/// The AST can also be mutated by direct field manipulation, but the user then
|
|
/// has to update parent pointers manually.
|
|
///
|
|
library kernel.ast;
|
|
|
|
import 'dart:collection' show ListBase;
|
|
import 'dart:convert' show utf8;
|
|
import 'dart:typed_data';
|
|
|
|
import 'package:_fe_analyzer_shared/src/types/shared_type.dart'
|
|
show
|
|
SharedDynamicType,
|
|
SharedFunctionType,
|
|
SharedInvalidType,
|
|
SharedNamedFunctionParameter,
|
|
SharedNamedType,
|
|
SharedNullType,
|
|
SharedRecordType,
|
|
SharedTypeParameter,
|
|
SharedType,
|
|
SharedVoidType,
|
|
Variance;
|
|
import 'package:_fe_analyzer_shared/src/messages/codes.dart'
|
|
show demangleMixinApplicationName;
|
|
import 'package:_fe_analyzer_shared/src/util/libraries_specification.dart'
|
|
show Importability;
|
|
|
|
import 'src/extension_type_erasure.dart';
|
|
import 'visitor.dart';
|
|
export 'visitor.dart';
|
|
|
|
import 'canonical_name.dart' show CanonicalName, Reference;
|
|
export 'canonical_name.dart' show CanonicalName, Reference;
|
|
|
|
import 'default_language_version.dart' show defaultLanguageVersion;
|
|
export 'default_language_version.dart' show defaultLanguageVersion;
|
|
|
|
import 'transformations/flags.dart';
|
|
import 'text/ast_to_text.dart' as astToText;
|
|
import 'core_types.dart';
|
|
import 'type_algebra.dart';
|
|
import 'type_environment.dart';
|
|
import 'src/assumptions.dart';
|
|
import 'src/non_null.dart';
|
|
import 'src/printer.dart';
|
|
import 'src/text_util.dart';
|
|
|
|
export 'package:_fe_analyzer_shared/src/types/shared_type.dart' show Variance;
|
|
export 'package:_fe_analyzer_shared/src/messages/codes.dart'
|
|
show demangleMixinApplicationName;
|
|
|
|
part 'src/ast/constants.dart';
|
|
part 'src/ast/components.dart';
|
|
part 'src/ast/declarations.dart';
|
|
part 'src/ast/dummies.dart';
|
|
part 'src/ast/expressions.dart';
|
|
part 'src/ast/functions.dart';
|
|
part 'src/ast/helpers.dart';
|
|
part 'src/ast/initializers.dart';
|
|
part 'src/ast/libraries.dart';
|
|
part 'src/ast/members.dart';
|
|
part 'src/ast/misc.dart';
|
|
part 'src/ast/names.dart';
|
|
part 'src/ast/patterns.dart';
|
|
part 'src/ast/statements.dart';
|
|
part 'src/ast/typedefs.dart';
|
|
part 'src/ast/types.dart';
|
|
part 'src/ast/variables.dart';
|