Files
sdk/pkg/front_end/test/incremental_hello_test.dart
Paul Berry d810c7d0c0 [front_end] Bump language version to 3.9 and reformat.
This commit was generated by the following steps:

- Manually change the SDK constraint in `pkg/front_end/pubspec.yaml`

- Run `gclient sync`

- Run `find pkg/front_end/benchmarks pkg/front_end/lib
  pkg/front_end/presubmit_helper.dart
  pkg/front_end/presubmit_helper_spawn.dart pkg/front_end/test
  pkg/front_end/tool -iname '*.dart' | xargs
  tools/sdks/dart-sdk/bin/dart format`

- Manually fix remaining long lines and add dead code ignore comments.

- Fix coverage by running `dart --enable-asserts
  pkg/front_end/test/coverage_suite.dart --tasks=5
  --add-and-remove-comments`

- Fix `pkg/front_end/test/coverage_merger/assert_message_auto_ignored`
  by running `dart pkg/front_end/test/unit_test_suites.dart -p
  pkg/front_end/test/coverage_merger/assert_message_auto_ignored
  -DupdateExpectations=true`

The diff is large because the version bump causes the formatter to
switch into "tall mode".

Change-Id: I6a6a696410da8b168060acfe0e4d6e91e294c4f0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/447628
Auto-Submit: Paul Berry <paulberry@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2025-08-29 07:31:41 -07:00

96 lines
3.3 KiB
Dart

// Copyright (c) 2017, 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:expect/async_helper.dart' show asyncTest;
import 'package:expect/expect.dart' show Expect;
import "package:front_end/src/api_prototype/compiler_options.dart"
show CompilerOptions, CfeDiagnosticMessage;
import 'package:front_end/src/api_prototype/incremental_kernel_generator.dart'
show IncrementalCompilerResult;
import 'package:front_end/src/base/compiler_context.dart' show CompilerContext;
import 'package:front_end/src/base/incremental_compiler.dart'
show IncrementalCompiler;
import 'package:front_end/src/base/processed_options.dart'
show ProcessedOptions;
import 'package:front_end/src/compute_platform_binaries_location.dart'
show computePlatformBinariesLocation;
import 'package:kernel/ast.dart' show Component;
import 'package:kernel/target/targets.dart' show TargetFlags;
import 'package:vm/modular/target/vm.dart' show VmTarget;
void diagnosticMessageHandler(CfeDiagnosticMessage message) {
throw "Unexpected message: ${message.plainTextFormatted.join('\n')}";
}
Future<void> test({required bool sdkFromSource}) async {
final CompilerOptions optionBuilder = new CompilerOptions()
..packagesFileUri = Uri.base.resolve(".dart_tool/package_config.json")
..target = new VmTarget(new TargetFlags())
..omitPlatform = true
..onDiagnostic = diagnosticMessageHandler
..environmentDefines = const {};
if (sdkFromSource) {
optionBuilder.librariesSpecificationUri = Uri.base.resolve(
"sdk/lib/libraries.json",
);
} else {
optionBuilder.sdkSummary = computePlatformBinariesLocation(
forceBuildDir: true,
).resolve("vm_platform.dill");
}
final Uri helloDart = Uri.base.resolve(
"pkg/front_end/testcases/general/hello.dart",
);
final ProcessedOptions options = new ProcessedOptions(
options: optionBuilder,
inputs: [helloDart],
);
IncrementalCompiler compiler = new IncrementalCompiler(
new CompilerContext(options),
);
IncrementalCompilerResult compilerResult = await compiler.computeDelta();
Component component = compilerResult.component;
if (sdkFromSource) {
// Expect that the new component contains at least the following libraries:
// dart:core, dart:async, and hello.dart.
Expect.isTrue(
component.libraries.length > 2,
"${component.libraries.length} <= 2",
);
} else {
// Expect that the new component contains exactly hello.dart.
Expect.isTrue(
component.libraries.length == 1,
"${component.libraries.length} != 1",
);
}
compiler.invalidate(helloDart);
compilerResult = await compiler.computeDelta(entryPoints: [helloDart]);
component = compilerResult.component;
// Expect that the new component contains exactly hello.dart
Expect.isTrue(
component.libraries.length == 1,
"${component.libraries.length} != 1",
);
compilerResult = await compiler.computeDelta(entryPoints: [helloDart]);
component = compilerResult.component;
Expect.isTrue(component.libraries.isEmpty);
}
void main() {
asyncTest(() async {
await test(sdkFromSource: true);
await test(sdkFromSource: false);
});
}