Move front_end's libraries.json parser to _fe_analyzer_shared
Bug: https://github.com/dart-lang/sdk/issues/35081
Change-Id: Idd1c68a871ace37e45970e5452a59fd655445fd3
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/216100
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Sigmund Cherem <sigmund@google.com>
Commit-Queue: Samuel Rawlins <srawlins@google.com>
diff --git a/pkg/front_end/lib/src/base/libraries_specification.dart b/pkg/_fe_analyzer_shared/lib/src/util/libraries_specification.dart
similarity index 98%
rename from pkg/front_end/lib/src/base/libraries_specification.dart
rename to pkg/_fe_analyzer_shared/lib/src/util/libraries_specification.dart
index ad345f4..bbc64f4 100644
--- a/pkg/front_end/lib/src/base/libraries_specification.dart
+++ b/pkg/_fe_analyzer_shared/lib/src/util/libraries_specification.dart
@@ -87,11 +87,9 @@
/// https://github.com/dart-lang/sdk/issues/28836), but for now we need to pay
/// close attention to change them consistently.
-// TODO(sigmund): move this file to a shared package.
import 'dart:convert' show jsonDecode, jsonEncode;
-import 'package:_fe_analyzer_shared/src/util/relativize.dart'
- show relativizeUri, isWindows;
+import 'relativize.dart' show relativizeUri, isWindows;
/// Contents from a single library specification file.
///
diff --git a/pkg/front_end/test/src/base/libraries_specification_test.dart b/pkg/_fe_analyzer_shared/test/util/libraries_specification_test.dart
similarity index 90%
rename from pkg/front_end/test/src/base/libraries_specification_test.dart
rename to pkg/_fe_analyzer_shared/test/util/libraries_specification_test.dart
index 033a877..10f9717 100644
--- a/pkg/front_end/test/src/base/libraries_specification_test.dart
+++ b/pkg/_fe_analyzer_shared/test/util/libraries_specification_test.dart
@@ -2,9 +2,7 @@
// 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.
-// @dart = 2.9
-
-import 'package:front_end/src/base/libraries_specification.dart';
+import 'package:_fe_analyzer_shared/src/util/libraries_specification.dart';
import 'package:test/test.dart';
void main() {
@@ -91,7 +89,7 @@
''';
var spec = LibrariesSpecification.parse(
Uri.parse('org-dartlang-test:///f.json'), jsonString);
- expect(spec.specificationFor("none").libraryInfoFor("c").patches.first,
+ expect(spec.specificationFor("none").libraryInfoFor("c")!.patches.first,
Uri.parse('org-dartlang-test:///a.dart'));
jsonString = '''
@@ -108,7 +106,7 @@
''';
spec = LibrariesSpecification.parse(
Uri.parse('org-dartlang-test:///f.json'), jsonString);
- expect(spec.specificationFor("none").libraryInfoFor("c").patches.first,
+ expect(spec.specificationFor("none").libraryInfoFor("c")!.patches.first,
Uri.parse('org-dartlang-test:///a.dart'));
});
@@ -120,7 +118,7 @@
Uri.parse('org-dartlang-test:///one/two/f.json'), jsonString);
expect(spec, isNotNull);
expect(
- spec.specificationFor('none').libraryInfoFor('c').patches, isEmpty);
+ spec.specificationFor('none').libraryInfoFor('c')!.patches, isEmpty);
});
test('library paths are resolved from spec uri', () async {
@@ -130,7 +128,7 @@
var spec = LibrariesSpecification.parse(
Uri.parse('org-dartlang-test:///one/two/f.json'), jsonString);
- expect(spec.specificationFor('none').libraryInfoFor('c').uri,
+ expect(spec.specificationFor('none').libraryInfoFor('c')!.uri,
Uri.parse('org-dartlang-test:///one/two/c/main.dart'));
});
@@ -153,9 +151,9 @@
var spec = LibrariesSpecification.parse(
Uri.parse('org-dartlang-test:///one/two/f.json'), jsonString);
- expect(spec.specificationFor('none').libraryInfoFor('c').patches[0],
+ expect(spec.specificationFor('none').libraryInfoFor('c')!.patches[0],
Uri.parse('org-dartlang-test:///one/a/p1.dart'));
- expect(spec.specificationFor('none').libraryInfoFor('c').patches[1],
+ expect(spec.specificationFor('none').libraryInfoFor('c')!.patches[1],
Uri.parse('org-dartlang-test:///one/a/p2.dart'));
});
@@ -192,11 +190,11 @@
var spec = LibrariesSpecification.parse(
Uri.parse('org-dartlang-test:///one/two/f.json'), jsonString);
- expect(spec.specificationFor('vm').libraryInfoFor('foo').uri,
+ expect(spec.specificationFor('vm').libraryInfoFor('foo')!.uri,
Uri.parse('org-dartlang-test:///one/two/a/main.dart'));
- expect(spec.specificationFor('vm').libraryInfoFor('bar').uri,
+ expect(spec.specificationFor('vm').libraryInfoFor('bar')!.uri,
Uri.parse('org-dartlang-test:///one/two/b/main.dart'));
- expect(spec.specificationFor('none').libraryInfoFor('c').uri,
+ expect(spec.specificationFor('none').libraryInfoFor('c')!.uri,
Uri.parse('org-dartlang-test:///one/two/c/main.dart'));
});
@@ -242,12 +240,12 @@
''';
var spec = LibrariesSpecification.parse(
Uri.parse('org-dartlang-test:///one/two/f.json'), jsonString);
+ expect(spec.specificationFor('vm').libraryInfoFor('foo')!.isSupported,
+ false);
expect(
- spec.specificationFor('vm').libraryInfoFor('foo').isSupported, false);
+ spec.specificationFor('vm').libraryInfoFor('bar')!.isSupported, true);
expect(
- spec.specificationFor('vm').libraryInfoFor('bar').isSupported, true);
- expect(
- spec.specificationFor('vm').libraryInfoFor('baz').isSupported, true);
+ spec.specificationFor('vm').libraryInfoFor('baz')!.isSupported, true);
});
});
diff --git a/pkg/front_end/lib/src/api_prototype/compiler_options.dart b/pkg/front_end/lib/src/api_prototype/compiler_options.dart
index 7f14df8..e1b7997 100644
--- a/pkg/front_end/lib/src/api_prototype/compiler_options.dart
+++ b/pkg/front_end/lib/src/api_prototype/compiler_options.dart
@@ -55,8 +55,8 @@
///
/// A libraries specification file is a JSON file that describes how to map
/// `dart:*` libraries to URIs in the underlying [fileSystem]. See
- /// `package:front_end/src/base/libraries_specification.dart` for details on
- /// the format.
+ /// `package:_fe_analyzer_shared/src/util/libraries_specification.dart` for
+ /// details on the format.
///
/// If a value is not specified and `compileSdk = true`, the compiler will
/// infer at a default location under [sdkRoot], typically under
diff --git a/pkg/front_end/lib/src/api_unstable/dart2js.dart b/pkg/front_end/lib/src/api_unstable/dart2js.dart
index e811ba1..18d185d 100644
--- a/pkg/front_end/lib/src/api_unstable/dart2js.dart
+++ b/pkg/front_end/lib/src/api_unstable/dart2js.dart
@@ -12,6 +12,9 @@
import 'package:_fe_analyzer_shared/src/scanner/scanner.dart' show StringToken;
+import 'package:_fe_analyzer_shared/src/util/libraries_specification.dart'
+ show LibrariesSpecification;
+
import 'package:kernel/kernel.dart' show Component;
import 'package:kernel/ast.dart' as ir;
@@ -29,8 +32,6 @@
import '../base/processed_options.dart' show ProcessedOptions;
-import '../base/libraries_specification.dart' show LibrariesSpecification;
-
import '../base/nnbd_mode.dart' show NnbdMode;
import '../fasta/compiler_context.dart' show CompilerContext;
diff --git a/pkg/front_end/lib/src/base/processed_options.dart b/pkg/front_end/lib/src/base/processed_options.dart
index de2886d..b1377c6 100644
--- a/pkg/front_end/lib/src/base/processed_options.dart
+++ b/pkg/front_end/lib/src/base/processed_options.dart
@@ -8,6 +8,12 @@
import 'package:_fe_analyzer_shared/src/messages/severity.dart' show Severity;
+import 'package:_fe_analyzer_shared/src/util/libraries_specification.dart'
+ show
+ LibrariesSpecification,
+ LibrariesSpecificationException,
+ TargetLibrariesSpecification;
+
import 'package:kernel/binary/ast_from_binary.dart' show BinaryBuilder;
import 'package:kernel/kernel.dart'
@@ -70,12 +76,6 @@
import '../fasta/uri_translator.dart' show UriTranslator;
-import 'libraries_specification.dart'
- show
- LibrariesSpecification,
- LibrariesSpecificationException,
- TargetLibrariesSpecification;
-
import 'nnbd_mode.dart';
/// All options needed for the front end implementation.
diff --git a/pkg/front_end/lib/src/fasta/uri_translator.dart b/pkg/front_end/lib/src/fasta/uri_translator.dart
index c6777ee..cf624b4 100644
--- a/pkg/front_end/lib/src/fasta/uri_translator.dart
+++ b/pkg/front_end/lib/src/fasta/uri_translator.dart
@@ -6,7 +6,8 @@
import 'package:package_config/package_config.dart';
-import '../base/libraries_specification.dart' show TargetLibrariesSpecification;
+import 'package:_fe_analyzer_shared/src/util/libraries_specification.dart'
+ show TargetLibrariesSpecification;
import 'compiler_context.dart' show CompilerContext;
import 'fasta_codes.dart';
diff --git a/pkg/front_end/test/fasta/testing/suite.dart b/pkg/front_end/test/fasta/testing/suite.dart
index f6468b1..b933c35 100644
--- a/pkg/front_end/test/fasta/testing/suite.dart
+++ b/pkg/front_end/test/fasta/testing/suite.dart
@@ -14,6 +14,8 @@
show LanguageVersionToken, Token;
import 'package:_fe_analyzer_shared/src/util/colors.dart' as colors;
+import 'package:_fe_analyzer_shared/src/util/libraries_specification.dart'
+ show LibraryInfo;
import 'package:_fe_analyzer_shared/src/util/options.dart';
import 'package:compiler/src/kernel/dart2js_target.dart';
import 'package:dev_compiler/src/kernel/target.dart';
@@ -41,9 +43,6 @@
import 'package:front_end/src/api_prototype/standard_file_system.dart'
show StandardFileSystem;
-import 'package:front_end/src/base/libraries_specification.dart'
- show LibraryInfo;
-
import 'package:front_end/src/base/processed_options.dart'
show ProcessedOptions;
diff --git a/pkg/front_end/test/fasta/uri_translator_test.dart b/pkg/front_end/test/fasta/uri_translator_test.dart
index d186bea..37e3564 100644
--- a/pkg/front_end/test/fasta/uri_translator_test.dart
+++ b/pkg/front_end/test/fasta/uri_translator_test.dart
@@ -4,7 +4,7 @@
// @dart = 2.9
-import 'package:front_end/src/base/libraries_specification.dart';
+import 'package:_fe_analyzer_shared/src/util/libraries_specification.dart';
import 'package:front_end/src/fasta/uri_translator.dart';
import 'package:package_config/package_config.dart';
import 'package:test/test.dart';
diff --git a/pkg/front_end/test/static_types/cfe_allowed.json b/pkg/front_end/test/static_types/cfe_allowed.json
index cd3125e..adc8898 100644
--- a/pkg/front_end/test/static_types/cfe_allowed.json
+++ b/pkg/front_end/test/static_types/cfe_allowed.json
@@ -1,5 +1,5 @@
{
- "pkg/front_end/lib/src/base/libraries_specification.dart": {
+ "pkg/_fe_analyzer_shared/lib/src/util/libraries_specification.dart": {
"Dynamic invocation of 'toList'.": 1,
"Dynamic invocation of 'map'.": 1,
"Dynamic invocation of '[]='.": 1
@@ -24,4 +24,4 @@
"pkg/_fe_analyzer_shared/lib/src/scanner/string_canonicalizer.dart": {
"Dynamic invocation of '[]'.": 2
}
-}
\ No newline at end of file
+}