3f104a2ab4
Revert small diffs introduced in earlier migrations to avoid an import of command.dart before it was migrated. Issue: https://github.com/dart-lang/sdk/issues/46617 Change-Id: Ia728fd727417fd4fdf8c454a0044e096e9de5756 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/248948 Reviewed-by: Anna Gringauze <annagrin@google.com> Commit-Queue: Nicholas Shahan <nshahan@google.com>
94 lines
3.5 KiB
Dart
94 lines
3.5 KiB
Dart
// Copyright (c) 2021, 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:dev_compiler/src/compiler/module_builder.dart'
|
|
show ModuleFormat;
|
|
import 'package:dev_compiler/src/kernel/command.dart' show getSdkPath;
|
|
import 'package:dev_compiler/src/kernel/target.dart' show DevCompilerTarget;
|
|
import 'package:front_end/src/api_unstable/ddc.dart';
|
|
import 'package:front_end/src/compute_platform_binaries_location.dart';
|
|
import 'package:front_end/src/fasta/incremental_serializer.dart';
|
|
import 'package:kernel/ast.dart' show Component;
|
|
import 'package:kernel/target/targets.dart';
|
|
import 'package:path/path.dart' as p;
|
|
|
|
class DevelopmentIncrementalCompiler extends IncrementalCompiler {
|
|
Uri entryPoint;
|
|
|
|
DevelopmentIncrementalCompiler(CompilerOptions options, this.entryPoint,
|
|
[Uri? initializeFrom,
|
|
bool? outlineOnly,
|
|
IncrementalSerializer? incrementalSerializer])
|
|
: super(
|
|
CompilerContext(
|
|
ProcessedOptions(options: options, inputs: [entryPoint])),
|
|
initializeFrom,
|
|
outlineOnly,
|
|
incrementalSerializer);
|
|
|
|
DevelopmentIncrementalCompiler.fromComponent(CompilerOptions options,
|
|
this.entryPoint, Component componentToInitializeFrom,
|
|
[bool? outlineOnly, IncrementalSerializer? incrementalSerializer])
|
|
: super.fromComponent(
|
|
CompilerContext(
|
|
ProcessedOptions(options: options, inputs: [entryPoint])),
|
|
componentToInitializeFrom,
|
|
outlineOnly,
|
|
incrementalSerializer);
|
|
}
|
|
|
|
class SetupCompilerOptions {
|
|
static final sdkRoot = computePlatformBinariesLocation();
|
|
static final sdkUnsoundSummaryPath = p.join(sdkRoot.path, 'ddc_sdk.dill');
|
|
static final sdkSoundSummaryPath =
|
|
p.join(sdkRoot.path, 'ddc_outline_sound.dill');
|
|
// TODO(46617) Call getSdkPath() from command.dart instead.
|
|
static final librariesSpecificationUri =
|
|
p.join(p.dirname(p.dirname(getSdkPath())), 'libraries.json');
|
|
|
|
static CompilerOptions getOptions(bool soundNullSafety) {
|
|
var options = CompilerOptions()
|
|
..verbose = false // set to true for debugging
|
|
..sdkRoot = sdkRoot
|
|
..target = DevCompilerTarget(TargetFlags())
|
|
..librariesSpecificationUri = Uri.base.resolve('sdk/lib/libraries.json')
|
|
..omitPlatform = true
|
|
..sdkSummary = sdkRoot.resolve(
|
|
soundNullSafety ? sdkSoundSummaryPath : sdkUnsoundSummaryPath)
|
|
..environmentDefines = const {}
|
|
..nnbdMode = soundNullSafety ? NnbdMode.Strong : NnbdMode.Weak;
|
|
return options;
|
|
}
|
|
|
|
static final String dartUnsoundComment = '// @dart = 2.9';
|
|
static final String dartSoundComment = '//';
|
|
|
|
final List<String> errors = [];
|
|
final CompilerOptions options;
|
|
final String dartLangComment;
|
|
final ModuleFormat moduleFormat;
|
|
final bool soundNullSafety;
|
|
|
|
SetupCompilerOptions(
|
|
{this.soundNullSafety = true, this.moduleFormat = ModuleFormat.amd})
|
|
: options = getOptions(soundNullSafety),
|
|
dartLangComment =
|
|
soundNullSafety ? dartSoundComment : dartUnsoundComment {
|
|
options.onDiagnostic = (DiagnosticMessage m) {
|
|
errors.addAll(m.plainTextFormatted);
|
|
};
|
|
}
|
|
|
|
String get loadModule {
|
|
switch (moduleFormat) {
|
|
case ModuleFormat.amd:
|
|
return 'require';
|
|
case ModuleFormat.ddc:
|
|
return 'dart_library.import';
|
|
default:
|
|
throw UnsupportedError('Module format: $moduleFormat');
|
|
}
|
|
}
|
|
}
|