Files
sdk/pkg/front_end/test/expression_compilation_tools_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

153 lines
4.8 KiB
Dart

// Copyright (c) 2022, 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/legacy/minitest.dart'; // ignore: deprecated_member_use
import 'package:front_end/src/api_prototype/expression_compilation_tools.dart';
void main() {
// null value.
expect(parseDefinitionTypes(["null"]), [new ParsedType.nullType()]);
// String, kNonNullable
expect(parseDefinitionTypes(["dart:core", "_OneByteString", "1", "0"]), [
new ParsedType.interface("dart:core", "_OneByteString", 1),
]);
// List<something it can't represent which thus becomes an explicit
// dynamic/null>, kNonNullable.
expect(parseDefinitionTypes(["dart:core", "List", "1", "1", "null"]), [
new ParsedType.interface("dart:core", "List", 1)
..arguments!.add(new ParsedType.nullType()),
]);
// List<int>, kNonNullable
expect(
parseDefinitionTypes([
"dart:core",
"_GrowableList",
"1",
"1",
"dart:core",
"int",
"1",
"0",
]),
[
new ParsedType.interface("dart:core", "_GrowableList", 1)
..arguments!.add(new ParsedType.interface("dart:core", "int", 1)),
],
);
// Map<int, int>, kNonNullable
expect(
parseDefinitionTypes([
"dart:core",
"Map",
"1",
"2",
"dart:core",
"int",
"1",
"0",
"dart:core",
"int",
"1",
"0",
]),
[
new ParsedType.interface("dart:core", "Map", 1)
..arguments!.add(new ParsedType.interface("dart:core", "int", 1))
..arguments!.add(new ParsedType.interface("dart:core", "int", 1)),
],
);
// [0] = String
// [1] = int
// [2] = List<String>
// [3] = Bar
// [4] = null
// [5] = HashMap<Map<int, List<int>>, List<String>>
expect(
parseDefinitionTypes([
// String, kNonNullable, no arguments
"dart:core", "_OneByteString", "1", "0",
// Int, kNonNullable, no arguments
"dart:core", "_Smi", "1", "0",
// List, kNonNullable, 1 argument
"dart:core", "_GrowableList", "1", "1",
// -> String, kNonNullable (i.e. the above is List<String>)
/**/ "dart:core", "String", "1", "0",
// "Bar", kNonNullable, no arguments
"file://wherever/t.dart", "Bar", "1", "0",
// null value
"null",
// HashMap, kNonNullable, 2 arguments
"dart:collection", "_InternalLinkedHashMap", "1", "2",
// -> Map, kNonNullable, 2 arguments
/**/ "dart:core", "Map", "1", "2",
// -> -> int, kNonNullable, no arguments
/*/**/*/ "dart:core", "int", "1", "0",
// -> -> List, kNonNullable, 1 argument
/*/**/*/ "dart:core", "List", "1", "1",
// -> -> -> int, kNonNullable, no arguments
/*/*/**/*/*/ "dart:core", "int", "1", "0",
// -> List, kNonNullable, 1 argument
"dart:core", "List", "1", "1",
// -> -> String, kNonNullable, no arguments
"dart:core", "String", "1", "0",
]),
<ParsedType>[
// String
new ParsedType.interface("dart:core", "_OneByteString", 1),
// int
new ParsedType.interface("dart:core", "_Smi", 1),
// List<String>
new ParsedType.interface("dart:core", "_GrowableList", 1)
..arguments!.addAll([
new ParsedType.interface("dart:core", "String", 1),
]),
// Bar
new ParsedType.interface("file://wherever/t.dart", "Bar", 1),
// null value
new ParsedType.nullType(),
// HashMap<Map<int, List<int>>, List<String>>
new ParsedType.interface("dart:collection", "_InternalLinkedHashMap", 1)
..arguments!.addAll([
new ParsedType.interface("dart:core", "Map", 1)
..arguments!.addAll([
new ParsedType.interface("dart:core", "int", 1),
new ParsedType.interface("dart:core", "List", 1)
..arguments!.addAll([
new ParsedType.interface("dart:core", "int", 1),
]),
]),
new ParsedType.interface("dart:core", "List", 1)
..arguments!.addAll([
new ParsedType.interface("dart:core", "String", 1),
]),
]),
],
);
// Set<(int, {int foo})>, kNonNullable
expect(
parseDefinitionTypes([
//
/**/ "dart:_compact_hash", "_Set", "1", "1",
/* */ "record", "1", "2", "1", "foo",
/* */ "dart:core", "int", "1", "0",
/* */ "dart:core", "int", "1", "0",
]),
[
new ParsedType.interface("dart:_compact_hash", "_Set", 1)
..arguments!.add(
new ParsedType.record(1, [null, "foo"])
..arguments!.add(new ParsedType.interface("dart:core", "int", 1))
..arguments!.add(new ParsedType.interface("dart:core", "int", 1)),
),
],
);
}