From 54760c038262b1663bfa88e29b81379bfdb5495d Mon Sep 17 00:00:00 2001 From: David Morgan Date: Thu, 30 Nov 2023 10:02:30 +0000 Subject: [PATCH] [CFE] Remove `enableMacros` and `forceEnableMacros` global bools. R=johnniwinther@google.com Change-Id: Ic3f70209809176feff91e501c1d600df9f95d54f Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/338680 Auto-Submit: Morgan :) Commit-Queue: Johnni Winther Reviewed-by: Johnni Winther --- .../lib/src/base/processed_options.dart | 11 +-- .../lib/src/fasta/incremental_compiler.dart | 83 ++++--------------- .../lib/src/fasta/kernel/kernel_target.dart | 5 +- .../lib/src/fasta/kernel/macro/macro.dart | 8 -- .../lib/src/fasta/source/source_loader.dart | 4 +- .../lib/src/kernel_generator_impl.dart | 2 +- .../application/macro_application_test.dart | 1 - .../declaration/macro_declaration_test.dart | 2 - .../incremental/incremental_macro_test.dart | 2 - pkg/front_end/test/macros/macro_api_test.dart | 3 - 10 files changed, 24 insertions(+), 97 deletions(-) diff --git a/pkg/front_end/lib/src/base/processed_options.dart b/pkg/front_end/lib/src/base/processed_options.dart index 8657edd0630..6c4385a036b 100644 --- a/pkg/front_end/lib/src/base/processed_options.dart +++ b/pkg/front_end/lib/src/base/processed_options.dart @@ -18,7 +18,6 @@ import 'package:_fe_analyzer_shared/src/util/libraries_specification.dart' LibrariesSpecification, LibrariesSpecificationException, TargetLibrariesSpecification; -import 'package:front_end/src/fasta/kernel/macro/macro.dart'; import 'package:kernel/binary/ast_from_binary.dart' show BinaryBuilder; import 'package:kernel/kernel.dart' show @@ -202,15 +201,7 @@ class ProcessedOptions { this.environmentDefines = options?.environmentDefines, // TODO(sigmund, ahe): create ticker even earlier or pass in a stopwatch // collecting time since the start of the VM. - this.ticker = new Ticker(isVerbose: options?.verbose ?? false) { - if (globalFeatures.macros.isEnabled) { - enableMacros = true; - forceEnableMacros = true; - } else { - enableMacros = false; - forceEnableMacros = false; - } - } + this.ticker = new Ticker(isVerbose: options?.verbose ?? false); FormattedMessage format( LocatedMessage message, Severity severity, List? context, diff --git a/pkg/front_end/lib/src/fasta/incremental_compiler.dart b/pkg/front_end/lib/src/fasta/incremental_compiler.dart index d631070c0ec..59db9bb8149 100644 --- a/pkg/front_end/lib/src/fasta/incremental_compiler.dart +++ b/pkg/front_end/lib/src/fasta/incremental_compiler.dart @@ -5,18 +5,14 @@ library fasta.incremental_compiler; import 'dart:async' show Completer; - import 'dart:convert' show JsonEncoder; -import 'package:_fe_analyzer_shared/src/scanner/abstract_scanner.dart' - show ScannerConfiguration; - import 'package:_fe_analyzer_shared/src/macros/executor/multi_executor.dart' as macros; - +import 'package:_fe_analyzer_shared/src/scanner/abstract_scanner.dart' + show ScannerConfiguration; import 'package:front_end/src/fasta/kernel/benchmarker.dart' show BenchmarkPhases, Benchmarker; - import 'package:kernel/binary/ast_from_binary.dart' show BinaryBuilderWithMetadata, @@ -25,10 +21,10 @@ import 'package:kernel/binary/ast_from_binary.dart' InvalidKernelVersionError, SubComponentView, mergeCompilationModeOrThrow; - +import 'package:kernel/canonical_name.dart' + show CanonicalNameError, CanonicalNameSdkError; import 'package:kernel/class_hierarchy.dart' show ClassHierarchy, ClosedWorldClassHierarchy; - import 'package:kernel/kernel.dart' show Class, @@ -52,106 +48,61 @@ import 'package:kernel/kernel.dart' TreeNode, TypeParameter, VariableDeclaration; - -import 'package:kernel/canonical_name.dart' - show CanonicalNameError, CanonicalNameSdkError; - import 'package:kernel/kernel.dart' as kernel show Combinator; - import 'package:kernel/target/changed_structure_notifier.dart' show ChangedStructureNotifier; - import 'package:package_config/package_config.dart' show Package, PackageConfig; import '../api_prototype/experimental_flags.dart'; import '../api_prototype/file_system.dart' show FileSystem, FileSystemEntity; - import '../api_prototype/incremental_kernel_generator.dart' show IncrementalCompilerResult, IncrementalKernelGenerator, isLegalIdentifier; - import '../api_prototype/lowering_predicates.dart' show isExtensionThisName; - import '../api_prototype/memory_file_system.dart' show MemoryFileSystem; - import '../base/nnbd_mode.dart'; - import '../base/processed_options.dart' show ProcessedOptions; - import '../kernel_generator_impl.dart' show precompileMacros; - import 'builder/builder.dart' show Builder; - import 'builder/declaration_builders.dart' show ClassBuilder, ExtensionBuilder, TypeDeclarationBuilder; - import 'builder/field_builder.dart' show FieldBuilder; - import 'builder/library_builder.dart' show LibraryBuilder; - import 'builder/member_builder.dart' show MemberBuilder; - import 'builder/name_iterator.dart' show NameIterator; - import 'builder/type_builder.dart' show NamedTypeBuilder, TypeBuilder; - import 'builder_graph.dart' show BuilderGraph; - import 'combinator.dart' show CombinatorBuilder; - import 'compiler_context.dart' show CompilerContext; - import 'dill/dill_class_builder.dart' show DillClassBuilder; - import 'dill/dill_library_builder.dart' show DillLibraryBuilder; - import 'dill/dill_loader.dart' show DillLoader; import 'dill/dill_target.dart' show DillTarget; - import 'export.dart' show Export; - import 'fasta_codes.dart'; - -import 'import.dart' show Import; - -import 'incremental_serializer.dart' show IncrementalSerializer; - -import 'kernel/macro/macro.dart' show enableMacros, NeededPrecompilations; - -import 'scope.dart' show Scope, ScopeKind; - -import 'source/source_class_builder.dart' show SourceClassBuilder; - -import 'source/source_extension_builder.dart'; -import 'util/error_reporter_file_copier.dart' show saveAsGzip; - -import 'util/experiment_environment_getter.dart' - show enableIncrementalCompilerBenchmarking, getExperimentEnvironment; - -import 'util/textual_outline.dart' show textualOutline; - -import 'uris.dart' show dartCore; - import 'hybrid_file_system.dart' show HybridFileSystem; - +import 'import.dart' show Import; +import 'incremental_serializer.dart' show IncrementalSerializer; import 'kernel/hierarchy/hierarchy_builder.dart' show ClassHierarchyBuilder; - import 'kernel/internal_ast.dart' show VariableDeclarationImpl; - import 'kernel/kernel_target.dart' show BuildResult, KernelTarget; - +import 'kernel/macro/macro.dart' show NeededPrecompilations; import 'library_graph.dart' show LibraryGraph; - +import 'scope.dart' show Scope, ScopeKind; +import 'source/source_class_builder.dart' show SourceClassBuilder; +import 'source/source_extension_builder.dart'; import 'source/source_library_builder.dart' show ImplicitLanguageVersion, SourceLibraryBuilder; - import 'source/source_loader.dart'; - import 'ticker.dart' show Ticker; - import 'uri_translator.dart' show UriTranslator; +import 'uris.dart' show dartCore; +import 'util/error_reporter_file_copier.dart' show saveAsGzip; +import 'util/experiment_environment_getter.dart' + show enableIncrementalCompilerBenchmarking, getExperimentEnvironment; +import 'util/textual_outline.dart' show textualOutline; final Uri dartFfiUri = Uri.parse("dart:ffi"); @@ -378,7 +329,7 @@ class IncrementalCompiler implements IncrementalKernelGenerator { NeededPrecompilations? neededPrecompilations = await currentKernelTarget.computeNeededPrecompilations(); _benchmarker?.enterPhase(BenchmarkPhases.incremental_precompileMacros); - if (enableMacros) { + if (context.options.globalFeatures.macros.isEnabled) { Map? precompiled = await precompileMacros(neededPrecompilations, c.options); if (precompiled != null) { @@ -1201,7 +1152,7 @@ class IncrementalCompiler implements IncrementalKernelGenerator { return null; } - if (enableMacros) { + if (context.options.globalFeatures.macros.isEnabled) { /// TODO(johnniwinther): Add a [hasMacro] property to [LibraryBuilder]. for (LibraryBuilder builder in reusedResult.notReusedLibraries) { // TODO(johnniwinther): Should this include non-local (i.e. injected) diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart index ebed60b1066..cdc9b11025d 100644 --- a/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart +++ b/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart @@ -335,7 +335,10 @@ class KernelTarget extends TargetImplementation { loader.resolveParts(); benchmarker?.enterPhase(BenchmarkPhases.outline_computeMacroDeclarations); - NeededPrecompilations? result = loader.computeMacroDeclarations(); + NeededPrecompilations? result = + context.options.globalFeatures.macros.isEnabled + ? loader.computeMacroDeclarations() + : null; benchmarker ?.enterPhase(BenchmarkPhases.unknownComputeNeededPrecompilations); diff --git a/pkg/front_end/lib/src/fasta/kernel/macro/macro.dart b/pkg/front_end/lib/src/fasta/kernel/macro/macro.dart index 52575029bdc..00cf5fd20b1 100644 --- a/pkg/front_end/lib/src/fasta/kernel/macro/macro.dart +++ b/pkg/front_end/lib/src/fasta/kernel/macro/macro.dart @@ -36,14 +36,6 @@ import '../../source/source_procedure_builder.dart'; import '../hierarchy/hierarchy_builder.dart'; import 'identifiers.dart'; -bool enableMacros = false; - -/// Enables macros whether the Macro class actually exists in the transitive -/// deps or not. This allows for easier experimentation. -/// -/// TODO: Remove this once it is no longer necessary. -bool forceEnableMacros = false; - const String augmentationScheme = 'org-dartlang-augmentation'; final Uri macroLibraryUri = diff --git a/pkg/front_end/lib/src/fasta/source/source_loader.dart b/pkg/front_end/lib/src/fasta/source/source_loader.dart index 4926d9a8b47..69b0510f88a 100644 --- a/pkg/front_end/lib/src/fasta/source/source_loader.dart +++ b/pkg/front_end/lib/src/fasta/source/source_loader.dart @@ -1503,8 +1503,6 @@ severity: $severity /// /// If no macros need precompilation, `null` is returned. NeededPrecompilations? computeMacroDeclarations() { - if (!enableMacros) return null; - LibraryBuilder? macroLibraryBuilder = lookupLibraryBuilder(macroLibraryUri); if (macroLibraryBuilder == null) return null; @@ -1678,7 +1676,7 @@ severity: $severity Class? get macroClass => _macroClassBuilder?.cls; Future computeMacroApplications() async { - if ((!enableMacros || _macroClassBuilder == null) && !forceEnableMacros) { + if (_macroClassBuilder == null) { return null; } diff --git a/pkg/front_end/lib/src/kernel_generator_impl.dart b/pkg/front_end/lib/src/kernel_generator_impl.dart index 33f9e65545e..ed434b74f7a 100644 --- a/pkg/front_end/lib/src/kernel_generator_impl.dart +++ b/pkg/front_end/lib/src/kernel_generator_impl.dart @@ -296,7 +296,7 @@ Future?> precompileMacros( NeededPrecompilations? neededPrecompilations, ProcessedOptions options) async { if (neededPrecompilations != null) { - if (enableMacros) { + if (options.globalFeatures.macros.isEnabled) { // TODO(johnniwinther): Avoid using [rawOptionsForTesting] to compute // the compiler options for the precompilation. if (options.rawOptionsForTesting.macroTarget != null) { diff --git a/pkg/front_end/test/macros/application/macro_application_test.dart b/pkg/front_end/test/macros/application/macro_application_test.dart index 18dde9cc034..d05ac28fb6d 100644 --- a/pkg/front_end/test/macros/application/macro_application_test.dart +++ b/pkg/front_end/test/macros/application/macro_application_test.dart @@ -32,7 +32,6 @@ import '../../utils/kernel_chain.dart'; Future main(List args) async { bool generateExpectations = args.contains('-g'); - enableMacros = true; MacroSerializer macroSerializer = new TempDirMacroSerializer('macro_application'); diff --git a/pkg/front_end/test/macros/declaration/macro_declaration_test.dart b/pkg/front_end/test/macros/declaration/macro_declaration_test.dart index 3c0156b9125..e278b15b89c 100644 --- a/pkg/front_end/test/macros/declaration/macro_declaration_test.dart +++ b/pkg/front_end/test/macros/declaration/macro_declaration_test.dart @@ -22,8 +22,6 @@ import 'package:front_end/src/testing/id_testing_utils.dart'; import 'package:kernel/ast.dart' hide Arguments, TypeDeclaration; Future main(List args) async { - enableMacros = true; - Directory dataDir = new Directory.fromUri(Platform.script.resolve('data/tests')); await runTests(dataDir, diff --git a/pkg/front_end/test/macros/incremental/incremental_macro_test.dart b/pkg/front_end/test/macros/incremental/incremental_macro_test.dart index b703dfcba22..eaad8535923 100644 --- a/pkg/front_end/test/macros/incremental/incremental_macro_test.dart +++ b/pkg/front_end/test/macros/incremental/incremental_macro_test.dart @@ -14,7 +14,6 @@ import 'package:front_end/src/compute_platform_binaries_location.dart'; import 'package:front_end/src/fasta/compiler_context.dart'; import 'package:front_end/src/fasta/hybrid_file_system.dart'; import 'package:front_end/src/fasta/incremental_compiler.dart'; -import 'package:front_end/src/fasta/kernel/macro/macro.dart'; import 'package:front_end/src/isolate_macro_serializer.dart'; import 'package:front_end/src/macro_serializer.dart'; import 'package:front_end/src/testing/compiler_common.dart'; @@ -82,7 +81,6 @@ Future main(List args) async { args = args.toList(); bool generateExpectations = args.remove('-g'); - enableMacros = true; MacroSerializer macroSerializer = new IsolateMacroSerializer(); MemoryFileSystem memoryFileSystem = createMemoryFileSystem(); CompilerOptions compilerOptions = new CompilerOptions() diff --git a/pkg/front_end/test/macros/macro_api_test.dart b/pkg/front_end/test/macros/macro_api_test.dart index bfb041e84bc..b5f692cf034 100644 --- a/pkg/front_end/test/macros/macro_api_test.dart +++ b/pkg/front_end/test/macros/macro_api_test.dart @@ -9,7 +9,6 @@ import 'package:expect/expect.dart'; import 'package:front_end/src/api_prototype/experimental_flags.dart'; import 'package:front_end/src/api_prototype/front_end.dart'; import 'package:front_end/src/compute_platform_binaries_location.dart'; -import 'package:front_end/src/fasta/kernel/macro/macro.dart'; import 'package:front_end/src/isolate_macro_serializer.dart'; import 'package:front_end/src/macro_serializer.dart'; import 'package:front_end/src/testing/id_testing_helper.dart'; @@ -17,8 +16,6 @@ import 'package:kernel/target/targets.dart'; import 'package:vm/target/vm.dart'; Future main(List args) async { - enableMacros = true; - MacroSerializer macroSerializer = new IsolateMacroSerializer(); try { CompilerOptions options = new CompilerOptions();