From c65fa574fc1fce726808ab863df842b84129cb90 Mon Sep 17 00:00:00 2001 From: Sam Rawlins Date: Tue, 2 Jan 2024 18:26:58 +0000 Subject: [PATCH 01/10] analyzer: Remove new and unused strictCasts field from LinterContextImpl Change-Id: I97ada794a8ea7c1c2b72bdaece2d4e5825d28de9 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/344200 Auto-Submit: Samuel Rawlins Commit-Queue: Phil Quitslund Reviewed-by: Phil Quitslund --- pkg/analyzer/lib/src/lint/linter.dart | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/pkg/analyzer/lib/src/lint/linter.dart b/pkg/analyzer/lib/src/lint/linter.dart index 5b10aab10af1..def49ba941f7 100644 --- a/pkg/analyzer/lib/src/lint/linter.dart +++ b/pkg/analyzer/lib/src/lint/linter.dart @@ -32,11 +32,7 @@ import 'package:analyzer/src/dart/element/inheritance_manager3.dart'; import 'package:analyzer/src/dart/element/type_system.dart'; import 'package:analyzer/src/error/codes.dart'; import 'package:analyzer/src/generated/engine.dart' - show - AnalysisErrorInfo, - AnalysisErrorInfoImpl, - AnalysisOptions, - AnalysisOptionsImpl; + show AnalysisErrorInfo, AnalysisErrorInfoImpl, AnalysisOptions; import 'package:analyzer/src/generated/resolver.dart' show ScopeResolverVisitor; import 'package:analyzer/src/lint/analysis.dart'; import 'package:analyzer/src/lint/io.dart'; @@ -314,11 +310,6 @@ class LinterContextImpl implements LinterContext { '`currentUnit.unit.declaredElement?.session`.') DeclaredVariables get declaredVariables => _declaredVariables; - bool get strictCasts => - // TODO(pq): update when there's a better API to access strictCasts. - // ignore: deprecated_member_use_from_same_package - (analysisOptions as AnalysisOptionsImpl).strictCasts; - @override bool canBeConst(Expression expression) { if (expression is InstanceCreationExpressionImpl) { From 807f2a3281a36e0a3c4d4a212e3a9b208cecccd3 Mon Sep 17 00:00:00 2001 From: Devon Carew Date: Tue, 2 Jan 2024 18:50:33 +0000 Subject: [PATCH 02/10] [deps] rev benchmark_harness, cli_util, convert, crypto, csslib, ecosystem, json_rpc_2 Revisions updated by `dart tools/rev_sdk_deps.dart`. benchmark_harness (https://github.com/dart-lang/benchmark_harness/compare/e59f675..a62e416): a62e416 2023-12-14 Kevin Moore Require Dart 3.2, pub dependencies, cleanup analysis_options (#97) cli_util (https://github.com/dart-lang/cli_util/compare/500dffa..e5b38ac): e5b38ac 2024-01-01 dependabot[bot] Bump actions/stale from 8.0.0 to 9.0.0 (#96) 91540ca 2023-12-20 Kevin Moore blast_repo fixes (#95) 1fd87c1 2023-12-15 Devon Carew require dart 3.0; rev to 0.4.1 in prep for publishing (#93) convert (https://github.com/dart-lang/convert/compare/3503170..f8a72d6): f8a72d6 2024-01-01 dependabot[bot] Bump actions/stale from 8.0.0 to 9.0.0 (#98) e6b0558 2023-12-18 Kevin Moore Enable and fix new lints (#97) 39e5ca6 2023-12-18 Kevin Moore blast_repo fixes (#96) crypto (https://github.com/dart-lang/crypto/compare/f3e64d2..63e9a90): 63e9a90 2024-01-01 dependabot[bot] Bump actions/stale from 8.0.0 to 9.0.0 (#160) f2c79ed 2023-12-19 Kevin Moore blast_repo fixes (#157) csslib (https://github.com/dart-lang/csslib/compare/17346e5..1ad2d1e): 1ad2d1e 2024-01-01 dependabot[bot] Bump actions/stale from 8.0.0 to 9.0.0 (#195) 1325d75 2023-12-18 Kevin Moore blast_repo fixes (#193) ecosystem (https://github.com/dart-lang/ecosystem/compare/ce707fb..dc44e82): dc44e82 2024-01-02 Moritz Get needed version from API tool in health check (#213) 55251b1 2024-01-02 Moritz De-async health checks (#208) 2587855 2024-01-01 dependabot[bot] Bump peter-evans/create-or-update-comment (#211) 0136c56 2024-01-01 dependabot[bot] Bump actions/upload-artifact from 3.1.3 to 4.0.0 (#210) 82f4b77 2024-01-01 dependabot[bot] Bump actions/stale from 8.0.0 to 9.0.0 (#212) 5e12e96 2024-01-01 dependabot[bot] Bump actions/labeler from 4.3.0 to 5.0.0 (#209) 5d594f4 2023-12-14 Kevin Moore Require/support latest pkg:http (#207) b8679da 2023-12-07 Devon Carew normalize sort order of package listing (#205) json_rpc_2 (https://github.com/dart-lang/json_rpc_2/compare/460545c..ac1fabd): ac1fabd 2024-01-01 dependabot[bot] Bump actions/stale from 8.0.0 to 9.0.0 (#108) Change-Id: I83fa7042ac1970ae792110093bdcf8c0ec779fda Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/344260 Auto-Submit: Devon Carew Commit-Queue: Konstantin Shcheglov Reviewed-by: Konstantin Shcheglov --- DEPS | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/DEPS b/DEPS index 8c384271b2b5..4f5e23bf1f74 100644 --- a/DEPS +++ b/DEPS @@ -120,16 +120,16 @@ vars = { "args_rev": "46d5033377d277d70bc6ec68504730b9384b1db1", "async_rev": "992457079da78dede35a56257d698288c467dc91", "bazel_worker_rev": "3d9cd5823fc96872b7275fe99a4fabc4dcfe57c8", - "benchmark_harness_rev": "e59f675ae00578e46a283d5868b36e4554398309", + "benchmark_harness_rev": "a62e4169c120ac04b1f5bfdf8f14346459529781", "boolean_selector_rev": "caea8d41cab1b7f4cc3c86d15a27c011ab01766b", "browser_launcher_rev": "c68ec25e36187b050ac918d2b614f2d6320f0045", "characters_rev": "7633a16a22c626e19ca750223237396315268a06", - "cli_util_rev": "500dffab6e00332c4c0b814359f06c8a9c3a5573", + "cli_util_rev": "e5b38ac76887e6eefaf417f5222c317929eed278", "clock_rev": "f975668839f45bad561d6227f88297bbbcff03fa", "collection_rev": "2d57a82ad079fe2d127f5a9b188170de2f5cdedc", - "convert_rev": "35031701fab532ada1a75c51155c0a6801055d88", - "crypto_rev": "f3e64d234416466683e29a4b20cf751684cbae6a", - "csslib_rev": "17346e528b19c09b2d20589e0ffa0f01a5ad54ad", + "convert_rev": "f8a72d67a10805bca358be8d7e189a62f79d86b9", + "crypto_rev": "63e9a90c97d216bfd6e3ce72e80df320ef84572a", + "csslib_rev": "1ad2d1ec461fb1836180e917220a5a48fd641897", # Note: Updates to dart_style have to be coordinated with the infrastructure # team so that the internal formatter `tools/sdks/dart-sdk/bin/dart format` # matches the version here. Please follow this process to make updates: @@ -142,7 +142,7 @@ vars = { # For more details, see https://github.com/dart-lang/sdk/issues/30164. "dart_style_rev": "8b1f24a8475a0116757172cd9acca4acbf87d973", # disable rev_sdk_deps.dart "dartdoc_rev": "3ce64a3d7da6702a4342bdfd0723b750fddeb35a", # https://github.com/dart-lang/dartdoc/issues/3562 - "ecosystem_rev": "ce707fbb45e54cd2b353f33d3849f4b10a262850", + "ecosystem_rev": "dc44e820d0cbe943192bec1e0499aa176463b91f", "ffi_rev": "c926657618443ff4821411ede01684096b503f84", "file_rev": "cd3a9324f6483f313ba1f0f3ff382ea4e6982ef2", "fixnum_rev": "3e08c0d7ce1a0cd832a17391444898ec610b5f89", @@ -153,7 +153,7 @@ vars = { "http_multi_server_rev": "ae484896624cee8b0a8a97a0fb1ea323c4c3d31f", "http_parser_rev": "224c1a9d24b46c7a9da1f09147e0e1fbda78089d", "intl_rev": "5d65e3808ce40e6282e40881492607df4e35669f", - "json_rpc_2_rev": "460545c62d12c2cd4635054e327846628288cb7e", + "json_rpc_2_rev": "ac1fabddd51fc90aa6fa4e1248f1a7141899eb4a", "leak_tracker_rev": "8644f8b1c78009e9149e08e0c349d06c304110a9", "lints_rev": "3810f8b3dc3205cfaa4ccc0054b021e68046d851", "logging_rev": "324a0b5fd2b49b80ea4fbe2b48aac7794000e25a", From ade6e2ba747a41bc08031246b5cdfde54693fa0b Mon Sep 17 00:00:00 2001 From: Polina Cherkasova Date: Tue, 2 Jan 2024 20:01:40 +0000 Subject: [PATCH 03/10] Update DevTools rev to 226af81369622cce9c0d98adbe31598208a27cc0 Change-Id: I4d08b4c40cb4de6501aadf8461c2bc157cfe296f Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/344300 Commit-Queue: Polina Cherkasova Reviewed-by: Elliott Brooks --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 4f5e23bf1f74..4c84b545727b 100644 --- a/DEPS +++ b/DEPS @@ -99,7 +99,7 @@ vars = { "boringssl_gen_rev": "a468ba9fec3f59edf46a7db98caaca893e1e4d96", "boringssl_rev": "74646566e93de7551bfdfc5f49de7462f13d1d05", "browser-compat-data_tag": "ac8cae697014da1ff7124fba33b0b4245cc6cd1b", # v1.0.22 - "devtools_rev": "071405a237dab931ea10be728ec188aa2d55111f", + "devtools_rev": "226af81369622cce9c0d98adbe31598208a27cc0", "icu_rev": "81d656878ec611cb0b42d52c82e9dae93920d9ba", "jinja2_rev": "2222b31554f03e62600cd7e383376a7c187967a1", "libcxx_rev": "44079a4cc04cdeffb9cfe8067bfb3c276fb2bab0", From 7a01b5f413fccc1963adcbc583953cb2ddf5122b Mon Sep 17 00:00:00 2001 From: Parker Lougheed Date: Tue, 2 Jan 2024 20:01:45 +0000 Subject: [PATCH 04/10] [tools/deps] Remove special casing for unused platform package The dependency on package:platform was removed in https://dart-review.googlesource.com/c/sdk/+/245262 and the repository has moved as well. Change-Id: I228032f497de5bdfb2ff67d8f532bc66d7a1a34a Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/343840 Auto-Submit: Parker Lougheed Reviewed-by: Devon Carew Commit-Queue: Devon Carew Reviewed-by: Nate Bosch --- tools/rev_sdk_deps.dart | 8 -------- 1 file changed, 8 deletions(-) diff --git a/tools/rev_sdk_deps.dart b/tools/rev_sdk_deps.dart index 1536d49886b1..3d19efad48b2 100644 --- a/tools/rev_sdk_deps.dart +++ b/tools/rev_sdk_deps.dart @@ -283,14 +283,6 @@ class PackageDependency { org = parts[parts.length - 2]; } - // TODO(devoncarew): Eliminate this special-casing; see #48830. - const orgOverrides = { - 'platform.dart': 'google', - }; - if (orgOverrides.containsKey(repo)) { - org = orgOverrides[repo]!; - } - return 'https://github.com/$org/$repo/compare/$from..$to'; } From a7e1e26446a0debcd54984afdf8d0de554469325 Mon Sep 17 00:00:00 2001 From: Parker Lougheed Date: Tue, 2 Jan 2024 20:17:52 +0000 Subject: [PATCH 05/10] [linter] Account for new JS interop libraries in 'avoid_web_libraries_in_flutter' Users are going to begin interacting with the DOM and JS through these libraries more and more. To avoid new warnings later on, let's account for them as soon as possible. Change-Id: Ib86e00aeb4bf42f13e104c1b68910195737667d9 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/343700 Reviewed-by: Brian Wilkerson Commit-Queue: Brian Wilkerson Reviewed-by: Phil Quitslund Reviewed-by: Samuel Rawlins Auto-Submit: Parker Lougheed --- .../rules/avoid_web_libraries_in_flutter.dart | 48 ++++++++++++------- pkg/linter/tool/machine/rules.json | 2 +- 2 files changed, 32 insertions(+), 18 deletions(-) diff --git a/pkg/linter/lib/src/rules/avoid_web_libraries_in_flutter.dart b/pkg/linter/lib/src/rules/avoid_web_libraries_in_flutter.dart index 65c94c2138dd..6ff2abbc17a4 100644 --- a/pkg/linter/lib/src/rules/avoid_web_libraries_in_flutter.dart +++ b/pkg/linter/lib/src/rules/avoid_web_libraries_in_flutter.dart @@ -15,17 +15,26 @@ const _desc = r'Avoid using web-only libraries outside Flutter web plugin packages.'; const _details = r''' -**AVOID** using web libraries, `dart:html`, `dart:js` and -`dart:js_util` in Flutter packages that are not web plugins. These libraries are -not supported outside a web context; functionality that depends on them will -fail at runtime in Flutter mobile, and their use is generally discouraged in -Flutter web. - -Web library access *is* allowed in: - -* plugin packages that declare `web` as a supported context - -otherwise, imports of `dart:html`, `dart:js` and `dart:js_util` are disallowed. +**AVOID** using web libraries or web-only packages in +Flutter packages that are not web plugins. + +Web libraries are not supported outside a web context; functionality that +depends on them will fail at runtime on non-web platforms, and +their use is generally discouraged in Flutter web apps. + +This lint flags any import of the following libraries and packages: + +- `dart:html` +- `dart:js` +- `dart:js_util` +- `dart:js_interop` +- `dart:js_interop_unsafe` +- `package:js` +- `package:web` + +Web library usage is allowed in Flutter plugins that +[explicitly declare](https://docs.flutter.dev/packages-and-plugins/developing-packages#plugin-platforms) +the `web` platform as supported in their `pubspec.yaml` file. '''; // TODO(pq): consider making a utility and sharing w/ `prefer_relative_imports` @@ -119,16 +128,21 @@ class AvoidWebLibrariesInFlutter extends LintRule { } class _Visitor extends SimpleAstVisitor { + static const Set _webUris = { + 'dart:html', + 'dart:js', + 'dart:js_util', + 'dart:js_interop', + 'dart:js_interop_unsafe', + 'package:js', + 'package:web', + }; + final LintRule rule; _Visitor(this.rule); - bool isWebUri(String uri) { - var uriLength = uri.length; - return (uriLength == 9 && uri == 'dart:html') || - (uriLength == 7 && uri == 'dart:js') || - (uriLength == 12 && uri == 'dart:js_util'); - } + bool isWebUri(String uri) => _webUris.contains(uri.split('/')[0]); @override void visitImportDirective(ImportDirective node) { diff --git a/pkg/linter/tool/machine/rules.json b/pkg/linter/tool/machine/rules.json index 052953d95e33..04faf954b3f8 100644 --- a/pkg/linter/tool/machine/rules.json +++ b/pkg/linter/tool/machine/rules.json @@ -135,7 +135,7 @@ "flutter" ], "fixStatus": "noFix", - "details": "**AVOID** using web libraries, `dart:html`, `dart:js` and \n`dart:js_util` in Flutter packages that are not web plugins. These libraries are \nnot supported outside a web context; functionality that depends on them will\nfail at runtime in Flutter mobile, and their use is generally discouraged in\nFlutter web.\n\nWeb library access *is* allowed in:\n\n* plugin packages that declare `web` as a supported context\n\notherwise, imports of `dart:html`, `dart:js` and `dart:js_util` are disallowed.\n", + "details": "**AVOID** using web libraries or web-only packages in\nFlutter packages that are not web plugins.\n\nWeb libraries are not supported outside a web context; functionality that\ndepends on them will fail at runtime on non-web platforms, and\ntheir use is generally discouraged in Flutter web apps.\n\nThis lint flags any import of the following libraries and packages:\n\n- `dart:html`\n- `dart:js`\n- `dart:js_util`\n- `dart:js_interop`\n- `dart:js_interop_unsafe`\n- `package:js`\n- `package:web`\n\nWeb library usage is allowed in Flutter plugins that\n[explicitly declare](https://docs.flutter.dev/packages-and-plugins/developing-packages#plugin-platforms)\nthe `web` platform as supported in their `pubspec.yaml` file.\n", "sinceDartSdk": "2.6.0" }, { From 821bdb65357605fc8d430e6aa832a35ac7cd0226 Mon Sep 17 00:00:00 2001 From: Danny Tuppeny Date: Tue, 2 Jan 2024 21:09:23 +0000 Subject: [PATCH 06/10] [dds/dap] Improve the error message when lookupResolvedPackageUris returns an invalid response + add a failing test for https://github.com/dart-lang/sdk/issues/52632 / https://github.com/flutter/flutter/issues/137163 This does not resolve the issue, it only makes it clearer from the error message what the problem is. Unfortunately there is no good workaround when we hit this bug because we can't tell which items in the response are valid/invalid. If we treat them all as invalid (eg. complete all of the completes with null), many things that involve mappings of URIs<->files won't work correctly (breakpoints, opening the right file when we break, etc.). A workaround is for users not to have commas in their filenames, although it's not clear if there may be other characters triggering this right now. Change-Id: I6ac7cbd82b726fac76c27d1e00a06f2a07d4757f Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/342800 Commit-Queue: Ben Konyi Reviewed-by: Helin Shiah Reviewed-by: Ben Konyi --- pkg/dds/lib/src/dap/isolate_manager.dart | 23 +++++++++++++- pkg/dds/test/dap/integration/debug_test.dart | 31 +++++++++++++++++++ .../test/dap/integration/test_support.dart | 17 +++++----- 3 files changed, 63 insertions(+), 8 deletions(-) diff --git a/pkg/dds/lib/src/dap/isolate_manager.dart b/pkg/dds/lib/src/dap/isolate_manager.dart index 427e85e82818..78bec19bfcd8 100644 --- a/pkg/dds/lib/src/dap/isolate_manager.dart +++ b/pkg/dds/lib/src/dap/isolate_manager.dart @@ -1157,6 +1157,19 @@ class ThreadInfo with FileUtils { if (results == null) { // If no result, all of the results are null. completers.forEach((uri, completer) => completer.complete(null)); + } else if (results.length != requiredUris.length) { + // If the lengths of the lists are different, we have an invalid + // response from the VM. This is a bug in the VM/VM Service: + // https://github.com/dart-lang/sdk/issues/52632 + + final reason = + results.length > requiredUris.length ? 'more' : 'fewer'; + final message = + 'lookupResolvedPackageUris result contained $reason results than ' + 'the request. See https://github.com/dart-lang/sdk/issues/52632'; + final error = Exception(message); + completers + .forEach((uri, completer) => completer.completeError(error)); } else { // Otherwise, complete each one by index with the corresponding value. results.map(_convertUriToFilePath).forEachIndexed((i, result) { @@ -1167,7 +1180,15 @@ class ThreadInfo with FileUtils { } catch (e) { // We can't leave dangling completers here because others may already // be waiting on them, so propagate the error to them. - completers.forEach((uri, completer) => completer.completeError(e)); + completers.forEach((uri, completer) { + // Only complete if not already completed. It's possible an exception + // occurred above inside the loop and that some of the completers have + // already completed. We don't want to replace a good exception with + // "Future already completed". + if (!completer.isCompleted) { + completer.completeError(e); + } + }); // Don't rethrow here, because it will cause these completers futures // to not have error handlers attached which can cause their errors to diff --git a/pkg/dds/test/dap/integration/debug_test.dart b/pkg/dds/test/dap/integration/debug_test.dart index f78f662bca71..696af810a594 100644 --- a/pkg/dds/test/dap/integration/debug_test.dart +++ b/pkg/dds/test/dap/integration/debug_test.dart @@ -98,6 +98,37 @@ main() { expect(proc!.exitCode, completes); }); + test('runs a simple script with commas in the filename', () async { + final packageUri = await dap.createFooPackage('foo,foo.dart'); + final testFile = dap.createTestFile( + ''' + import '$packageUri'; + void main() { + foo(); + } + ''', + ); + + final outputEvents = await dap.client.collectOutput( + launch: () => dap.client.launch( + testFile.path, + args: ['one', 'two'], + ), + ); + + // Expect the normal applications output. This means we set up the + // debugger without crashing, even though we imported files with commas + // in the name. + final output = outputEvents.skip(1).map((e) => e.output).join(); + expectLines(output, [ + 'Hello!', + 'World!', + 'args: [one, two]', + '', + 'Exited.', + ]); + }, skip: 'Fails because of https://github.com/dart-lang/sdk/issues/52632'); + test('does not resume isolates if user passes --pause-isolates-on-exit', () async { // Internally we always pass --pause-isolates-on-exit and resume the diff --git a/pkg/dds/test/dap/integration/test_support.dart b/pkg/dds/test/dap/integration/test_support.dart index c5c61242f258..a1f3e937e3ac 100644 --- a/pkg/dds/test/dap/integration/test_support.dart +++ b/pkg/dds/test/dap/integration/test_support.dart @@ -175,7 +175,7 @@ class DapTestSession { } /// Create a simple package named `foo` that has an empty `foo` function. - Future createFooPackage() { + Future createFooPackage([String? filename]) { return createSimplePackage( 'foo', ''' @@ -183,6 +183,7 @@ foo() { // Does nothing. } ''', + filename, ); } @@ -203,8 +204,10 @@ environment: /// .dart_tool/package_config.json Future createSimplePackage( String name, - String content, - ) async { + String content, [ + String? filename, + ]) async { + filename ??= '$name.dart'; final packageDir = Directory(path.join(testPackagesDir.path, name)) ..createSync(recursive: true); final packageLibDir = Directory(path.join(packageDir.path, 'lib')) @@ -212,21 +215,21 @@ environment: // Create a pubspec and a implementation file in the lib folder. createPubspec(packageDir, name); - final testFile = File(path.join(packageLibDir.path, '$name.dart')); + final testFile = File(path.join(packageLibDir.path, filename)); testFile.writeAsStringSync(content); // Add this new package as a dependency for the app. final fileUri = Uri.file('${packageDir.path}/'); await addPackageDependency(testAppDir, name, fileUri); - return Uri.parse('package:$name/$name.dart'); + return Uri.parse('package:$name/$filename'); } /// Creates a file in a temporary folder to be used as an application for testing. /// /// The file will be deleted at the end of the test run. - File createTestFile(String content) { - final testFile = File(path.join(testAppDir.path, 'test_file.dart')); + File createTestFile(String content, [String filename = 'test_file.dart']) { + final testFile = File(path.join(testAppDir.path, filename)); testFile.writeAsStringSync(content); return testFile; } From 3a80ec26be56cc2f1e9fe8d89a1d8143d6c24030 Mon Sep 17 00:00:00 2001 From: Srujan Gaddam Date: Tue, 2 Jan 2024 21:14:50 +0000 Subject: [PATCH 07/10] Reland "[dart2wasm] Disallow use of old interop libraries" Includes small wording modifications and extra allowlisting for benchmarks and Flutter engine tests. This reverts commit c97a17b2349bcbdadd34204a65a9e7c7c13def83. Change-Id: I2db391782c98c351d744ea7201c9421f13b97979 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/343689 Commit-Queue: Srujan Gaddam Reviewed-by: Sigmund Cherem Reviewed-by: Kevin Moore --- CHANGELOG.md | 9 +++ .../lib/src/messages/codes_generated.dart | 61 ++++++++-------- .../lib/js_interop_checks.dart | 71 +++++++++++++++---- pkg/front_end/messages.status | 4 +- pkg/front_end/messages.yaml | 8 +-- .../test/spell_checking_list_messages.txt | 1 + .../disallowed_interop_libraries_test.dart | 23 ++++++ tests/lib/lib.status | 3 + 8 files changed, 132 insertions(+), 48 deletions(-) create mode 100644 tests/lib/js/static_interop_test/disallowed_interop_libraries_test.dart diff --git a/CHANGELOG.md b/CHANGELOG.md index 3bac5c74c382..7afa809f4e72 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -124,6 +124,15 @@ [lints-3-0]: https://pub.dev/packages/lints/changelog#300 + +#### Wasm compiler (dart2wasm) + +- **Breaking Change** [#54004][]: `dart:js_util`, `package:js`, and `dart:js` + are now disallowed from being imported when compiling with `dart2wasm`. Prefer + using `dart:js_interop` and `dart:js_interop_unsafe`. + +[#54004]: https://github.com/dart-lang/sdk/issues/54004 + #### Development JavaScript compiler (DDC) - Type arguments of `package:js` interop types are now printed as `any` instead diff --git a/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart b/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart index 1579f530459d..3e3bba0ea31f 100644 --- a/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart +++ b/pkg/_fe_analyzer_shared/lib/src/messages/codes_generated.dart @@ -8570,6 +8570,38 @@ const MessageCode messageJsInteropDartJsInteropAnnotationForStaticInteropOnly = correctionMessage: r"""Try making this class an extension type or marking it as '@staticInterop'."""); +// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE. +const Template< + Message Function(String name)> + templateJsInteropDisallowedInteropLibraryInDart2Wasm = + const Template( + "JsInteropDisallowedInteropLibraryInDart2Wasm", + problemMessageTemplate: + r"""JS interop library '#name' can't be imported when compiling to Wasm.""", + correctionMessageTemplate: + r"""Try using 'dart:js_interop' or 'dart:js_interop_unsafe' instead.""", + withArguments: + _withArgumentsJsInteropDisallowedInteropLibraryInDart2Wasm); + +// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE. +const Code + codeJsInteropDisallowedInteropLibraryInDart2Wasm = + const Code( + "JsInteropDisallowedInteropLibraryInDart2Wasm", +); + +// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE. +Message _withArgumentsJsInteropDisallowedInteropLibraryInDart2Wasm( + String name) { + if (name.isEmpty) throw 'No name provided'; + name = demangleMixinApplicationName(name); + return new Message(codeJsInteropDisallowedInteropLibraryInDart2Wasm, + problemMessage: + """JS interop library '${name}' can't be imported when compiling to Wasm.""", + correctionMessage: """Try using 'dart:js_interop' or 'dart:js_interop_unsafe' instead.""", + arguments: {'name': name}); +} + // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE. const Code codeJsInteropEnclosingClassJSAnnotation = messageJsInteropEnclosingClassJSAnnotation; @@ -9329,35 +9361,6 @@ Message _withArgumentsJsInteropStaticInteropWithNonStaticSupertype( arguments: {'name': name, 'name2': name2}); } -// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE. -const Template - templateJsInteropStrictModeForbiddenLibrary = - const Template( - "JsInteropStrictModeForbiddenLibrary", - problemMessageTemplate: - r"""Library '#name' is forbidden when strict mode is enabled.""", - correctionMessageTemplate: - r"""Remove the import of a forbidden library.""", - withArguments: _withArgumentsJsInteropStrictModeForbiddenLibrary); - -// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE. -const Code - codeJsInteropStrictModeForbiddenLibrary = - const Code( - "JsInteropStrictModeForbiddenLibrary", -); - -// DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE. -Message _withArgumentsJsInteropStrictModeForbiddenLibrary(String name) { - if (name.isEmpty) throw 'No name provided'; - name = demangleMixinApplicationName(name); - return new Message(codeJsInteropStrictModeForbiddenLibrary, - problemMessage: - """Library '${name}' is forbidden when strict mode is enabled.""", - correctionMessage: """Remove the import of a forbidden library.""", - arguments: {'name': name}); -} - // DO NOT EDIT. THIS FILE IS GENERATED. SEE TOP OF FILE. const Template< Message Function(String name)> templateLabelNotFound = const Template< diff --git a/pkg/_js_interop_checks/lib/js_interop_checks.dart b/pkg/_js_interop_checks/lib/js_interop_checks.dart index b3a47bb4ae6a..20091e1152ac 100644 --- a/pkg/_js_interop_checks/lib/js_interop_checks.dart +++ b/pkg/_js_interop_checks/lib/js_interop_checks.dart @@ -27,6 +27,7 @@ import 'package:_fe_analyzer_shared/src/messages/codes.dart' messageJsInteropStaticInteropParameterInitializersAreIgnored, messageJsInteropStaticInteropSyntheticConstructor, templateJsInteropDartClassExtendsJSClass, + templateJsInteropDisallowedInteropLibraryInDart2Wasm, templateJsInteropJSClassExtendsDartClass, templateJsInteropNonStaticWithStaticInteropSupertype, templateJsInteropStaticInteropNoJSAnnotation, @@ -36,8 +37,7 @@ import 'package:_fe_analyzer_shared/src/messages/codes.dart' templateJsInteropNativeClassInAnnotation, templateJsInteropStaticInteropTearOffsDisallowed, templateJsInteropStaticInteropTrustTypesUsageNotAllowed, - templateJsInteropStaticInteropTrustTypesUsedWithoutStaticInterop, - templateJsInteropStrictModeForbiddenLibrary; + templateJsInteropStaticInteropTrustTypesUsedWithoutStaticInterop; import 'package:_fe_analyzer_shared/src/messages/severity.dart' show Severity; import 'package:_js_interop_checks/src/transformations/export_checker.dart'; import 'package:_js_interop_checks/src/transformations/js_util_optimizer.dart'; @@ -71,7 +71,6 @@ class JsInteropChecks extends RecursiveVisitor { bool _classHasJSAnnotation = false; bool _classHasAnonymousAnnotation = false; bool _classHasStaticInteropAnnotation = false; - final _checkDisallowedInterop = false; bool _inTearoff = false; bool _libraryHasDartJSInteropAnnotation = false; bool _libraryHasJSAnnotation = false; @@ -92,11 +91,44 @@ class JsInteropChecks extends RecursiveVisitor { RegExp(r'(? + _allowedUseOfDart2WasmDisallowedInteropLibrariesTestPatterns = [ + // Benchmarks. + RegExp(r'BigIntParsePrint/dart/native_version_javascript.dart'), + RegExp(r'JSInterop/dart/jsinterop_lib.dart'), + // Tests. + RegExp(r'(? uri.pathSegments.first == pkg)) || + _allowedUseOfDart2WasmDisallowedInteropLibrariesTestPatterns + .any((pattern) => uri.path.contains(pattern)); + if (allowedToImport) return; _reporter.report( - templateJsInteropStrictModeForbiddenLibrary + templateJsInteropDisallowedInteropLibraryInDart2Wasm .withArguments(dependencyUriString), dependency.fileOffset, dependencyUriString.length, @@ -582,7 +627,7 @@ class JsInteropChecks extends RecursiveVisitor { /// a dart low level library, a foreign helper, a native test, /// or a from environment constructor. bool _isAllowedExternalUsage(Member member) { - Uri uri = member.enclosingLibrary.importUri; + final uri = member.enclosingLibrary.importUri; return uri.isScheme('dart') && _pathsWithAllowedDartExternalUsage.contains(uri.path) || _allowedNativeTestPatterns.any((pattern) => uri.path.contains(pattern)); diff --git a/pkg/front_end/messages.status b/pkg/front_end/messages.status index 200667bec74f..e0a00eccc28f 100644 --- a/pkg/front_end/messages.status +++ b/pkg/front_end/messages.status @@ -601,6 +601,8 @@ JsInteropDartClassExtendsJSClass/analyzerCode: Fail # Web compiler specific JsInteropDartClassExtendsJSClass/example: Fail # Web compiler specific JsInteropDartJsInteropAnnotationForStaticInteropOnly/analyzerCode: Fail # Web compiler specific JsInteropDartJsInteropAnnotationForStaticInteropOnly/example: Fail # Web compiler specific +JsInteropDisallowedInteropLibraryInDart2Wasm/analyzerCode: Fail # Web compiler specific +JsInteropDisallowedInteropLibraryInDart2Wasm/example: Fail # Web compiler specific JsInteropEnclosingClassJSAnnotation/analyzerCode: Fail # Web compiler specific JsInteropEnclosingClassJSAnnotation/example: Fail # Web compiler specific JsInteropExportClassNotMarkedExportable/analyzerCode: Fail # Web compiler specific @@ -681,8 +683,6 @@ JsInteropStaticInteropWithInstanceMembers/analyzerCode: Fail # Web compiler spec JsInteropStaticInteropWithInstanceMembers/example: Fail # Web compiler specific JsInteropStaticInteropWithNonStaticSupertype/analyzerCode: Fail # Web compiler specific JsInteropStaticInteropWithNonStaticSupertype/example: Fail # Web compiler specific -JsInteropStrictModeForbiddenLibrary/analyzerCode: Fail # Web compiler specific -JsInteropStrictModeForbiddenLibrary/example: Fail # Web compiler specific LanguageVersionInvalidInDotPackages/analyzerCode: Fail LanguageVersionMismatchInPart/analyzerCode: Fail LanguageVersionMismatchInPart/part_wrapped_script: Fail # Part in (now) part. diff --git a/pkg/front_end/messages.yaml b/pkg/front_end/messages.yaml index de498fa73129..e4e07728a296 100644 --- a/pkg/front_end/messages.yaml +++ b/pkg/front_end/messages.yaml @@ -5803,6 +5803,10 @@ JsInteropDartJsInteropAnnotationForStaticInteropOnly: problemMessage: "The '@JS' annotation from 'dart:js_interop' can only be used for static interop, either through extension types or '@staticInterop' classes." correctionMessage: "Try making this class an extension type or marking it as '@staticInterop'." +JsInteropDisallowedInteropLibraryInDart2Wasm: + problemMessage: "JS interop library '#name' can't be imported when compiling to Wasm." + correctionMessage: "Try using 'dart:js_interop' or 'dart:js_interop_unsafe' instead." + JsInteropEnclosingClassJSAnnotation: problemMessage: "Member has a JS interop annotation but the enclosing class does not." correctionMessage: "Try adding the annotation to the enclosing class." @@ -5968,10 +5972,6 @@ JsInteropStaticInteropWithNonStaticSupertype: problemMessage: "JS interop class '#name' has an `@staticInterop` annotation, but has supertype '#name2', which does not." correctionMessage: "Try marking the supertype as a static interop class using `@staticInterop`." -JsInteropStrictModeForbiddenLibrary: - problemMessage: "Library '#name' is forbidden when strict mode is enabled." - correctionMessage: "Remove the import of a forbidden library." - NonNullableInNullAware: problemMessage: "Operand of null-aware operation '#name' has type '#type' which excludes null." severity: WARNING diff --git a/pkg/front_end/test/spell_checking_list_messages.txt b/pkg/front_end/test/spell_checking_list_messages.txt index 99b74be2c7e9..f432a84edc12 100644 --- a/pkg/front_end/test/spell_checking_list_messages.txt +++ b/pkg/front_end/test/spell_checking_list_messages.txt @@ -42,6 +42,7 @@ dart:_internal dart:ffi dart:html dart:js_interop +dart:js_interop_unsafe dart_runner dartbug.com defaultasset diff --git a/tests/lib/js/static_interop_test/disallowed_interop_libraries_test.dart b/tests/lib/js/static_interop_test/disallowed_interop_libraries_test.dart new file mode 100644 index 000000000000..37cb8bc4e8f5 --- /dev/null +++ b/tests/lib/js/static_interop_test/disallowed_interop_libraries_test.dart @@ -0,0 +1,23 @@ +// Copyright (c) 2023, 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. + +// Check that dart2wasm disallows these interop libraries from being imported. + +/**/ import 'dart:js'; +// ^ +// [web] JS interop library 'dart:js' can't be imported when compiling to Wasm. + +/**/ import 'dart:js_util'; +// ^ +// [web] JS interop library 'dart:js_util' can't be imported when compiling to Wasm. + +/**/ import 'package:js/js.dart'; +// ^ +// [web] JS interop library 'package:js/js.dart' can't be imported when compiling to Wasm. + +/**/ import 'package:js/js_util.dart'; +// ^ +// [web] JS interop library 'package:js/js_util.dart' can't be imported when compiling to Wasm. + +void main() {} diff --git a/tests/lib/lib.status b/tests/lib/lib.status index 69d5a570227b..33b6596e4285 100644 --- a/tests/lib/lib.status +++ b/tests/lib/lib.status @@ -21,6 +21,9 @@ js/static_interop_test/top_level_member_annotation_static_test: SkipByDesign # S mirrors/*: SkipByDesign web/*: SkipByDesign +[ $compiler != dart2wasm ] +js/static_interop_test/disallowed_interop_libraries_test: SkipByDesign # Only checks on dart2wasm. + [ $mode == product ] developer/timeline_test: Skip # Not supported isolate/issue_24243_parent_isolate_test: Skip # Requires checked mode From 105cd96dc8fad9905d7e473dd9d97943ba2d589d Mon Sep 17 00:00:00 2001 From: Devon Carew Date: Tue, 2 Jan 2024 21:38:45 +0000 Subject: [PATCH 08/10] Bump http to 73b0b1c9ef2964c4619fd23068b8f60292e902c6 Changes: ``` > git log --format="%C(auto) %h %s" f0a02f9..73b0b1c https://dart.googlesource.com/http.git/+/73b0b1c Bump actions/labeler from 4.3.0 to 5.0.0 (1096) https://dart.googlesource.com/http.git/+/15ec3ba Prepare to publish `package:cronet_http` as 1.0.0 (1087) https://dart.googlesource.com/http.git/+/26e55c3 cronet_http: require android API level 28 (1088) https://dart.googlesource.com/http.git/+/b10f448 [cronet_http] Enables CI for `cronet_http_embedded` (1070) https://dart.googlesource.com/http.git/+/a5b8eec Prepare to publish cupertino 1.2.0 (1080) https://dart.googlesource.com/http.git/+/c114aa0 Add a fake response for PNG images (1081) https://dart.googlesource.com/http.git/+/db2cb76 Run web tests with wasm with dev Dart sdk (1078) https://dart.googlesource.com/http.git/+/36f98e9 Fix a bug where BrowserClient was listed as requiring Flutter (1077) https://dart.googlesource.com/http.git/+/db7f165 Provide an example of configuring IOClient with an HttpClient. (1074) https://dart.googlesource.com/http.git/+/cd748b6 Document that runWithClient must be called for every isolate (1069) https://dart.googlesource.com/http.git/+/f585947 Test persistentConnection with large request bodies (984) https://dart.googlesource.com/http.git/+/7c05dde Add documentation for "no_default_http_client" (1068) https://dart.googlesource.com/http.git/+/d8983fa Add support for setting headers for all requests (1060) https://dart.googlesource.com/http.git/+/c90496e Document how to use replacement `Client` implementations (1063) https://dart.googlesource.com/http.git/+/c8536e4 [http_client_conformance_tests] Updates to support wasm compilation (1064) https://dart.googlesource.com/http.git/+/5dd5140 Bump actions/setup-java from 3 to 4 (1065) https://dart.googlesource.com/http.git/+/064f510 misc cleanup of yaml files (1061) https://dart.googlesource.com/http.git/+/22f52e2 Update pubspec.yaml to 0.4.2 (1059) https://dart.googlesource.com/http.git/+/40a46d8 Fix a bug where cronet_http sends incorrect HTTP request methods (1058) https://dart.googlesource.com/http.git/+/c125ed5 [http] Allow pkg:web v0.3.0 (1055) https://dart.googlesource.com/http.git/+/9fb4cfa Update lints to latest, etc (1048) https://dart.googlesource.com/http.git/+/5e84d9f Update platform-specific imports for wasm (1051) https://dart.googlesource.com/http.git/+/8c9feb5 [http] Fix type cast for dart2wasm (1050) https://dart.googlesource.com/http.git/+/a2f0b25 [http] use pkg:web, require Dart 3.2 (1049) ``` Diff: https://dart.googlesource.com/http.git/+/f0a02f98f7c921e86ecc81c70f38bb6fbccc81b9..73b0b1c9ef2964c4619fd23068b8f60292e902c6/ Change-Id: Id9e8032411f3c34bb2bdc0c22af35da6f2e34a88 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/344320 Reviewed-by: Nate Bosch Commit-Queue: Devon Carew --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 4c84b545727b..9013d640f85a 100644 --- a/DEPS +++ b/DEPS @@ -149,7 +149,7 @@ vars = { "flute_rev": "f42b09f77132210499ec8ed819a60c260af03db6", "glob_rev": "7c9a121e92687b7ac6456ec0796eb1e5c0373d90", "html_rev": "06bc148600b1d1a70f2256bdf788c213f1f60f55", - "http_rev": "f0a02f98f7c921e86ecc81c70f38bb6fbccc81b9", # https://github.com/dart-lang/sdk/issues/54165 + "http_rev": "73b0b1c9ef2964c4619fd23068b8f60292e902c6", "http_multi_server_rev": "ae484896624cee8b0a8a97a0fb1ea323c4c3d31f", "http_parser_rev": "224c1a9d24b46c7a9da1f09147e0e1fbda78089d", "intl_rev": "5d65e3808ce40e6282e40881492607df4e35669f", From 4f93e8f0930109f6d1e14f5c219d1f1b32b12069 Mon Sep 17 00:00:00 2001 From: Chingjun Lau Date: Tue, 2 Jan 2024 21:45:53 +0000 Subject: [PATCH 09/10] Use TEST_SRCDIR instead of RUNFILES to access the test files. The RUNFILES environment variable is an implementation detail of the internal build rule, while TEST_SRCDIR is set by bazel. In practice, they are pointed to the same directory. See go/lsc-dart-runfiles for context. R=srawlins@google.com Change-Id: I2f7ea1aef7ff4ce2209d001eb89054e86abf22d2 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/344342 Reviewed-by: Samuel Rawlins Auto-Submit: Chingjun Lau Commit-Queue: Samuel Rawlins --- pkg/analyzer/lib/src/summary2/kernel_compilation_service.dart | 2 +- pkg/analyzer_utilities/lib/package_root.dart | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/analyzer/lib/src/summary2/kernel_compilation_service.dart b/pkg/analyzer/lib/src/summary2/kernel_compilation_service.dart index 232d9e7493cb..4907db0ac339 100644 --- a/pkg/analyzer/lib/src/summary2/kernel_compilation_service.dart +++ b/pkg/analyzer/lib/src/summary2/kernel_compilation_service.dart @@ -156,7 +156,7 @@ class KernelCompilationService { static _SdkPaths _computeSdkPaths() { // Check for google3. - final runFiles = io.Platform.environment['RUNFILES']; + final runFiles = io.Platform.environment['TEST_SRCDIR']; if (runFiles != null) { final aotRuntimePath = io.Platform.environment['AOT_RUNTIME_PATH']!; final frontServerPath = io.Platform.environment['FRONTEND_SERVER_PATH']!; diff --git a/pkg/analyzer_utilities/lib/package_root.dart b/pkg/analyzer_utilities/lib/package_root.dart index 27a7d8aa5969..c7ffdefd7f62 100644 --- a/pkg/analyzer_utilities/lib/package_root.dart +++ b/pkg/analyzer_utilities/lib/package_root.dart @@ -28,7 +28,7 @@ String get packageRoot { // Try google3 environment. We expect that all packages that will be // accessed via this root are configured in the BUILD file, and located // inside this single root. - final runFiles = Platform.environment['RUNFILES']; + final runFiles = Platform.environment['TEST_SRCDIR']; final analyzerPackagesRoot = Platform.environment['ANALYZER_PACKAGES_ROOT']; if (runFiles != null && analyzerPackagesRoot != null) { return pathos.join(runFiles, analyzerPackagesRoot); From f34bdc2da2a1897470430640ffe11d285fbfb44d Mon Sep 17 00:00:00 2001 From: Devon Carew Date: Tue, 2 Jan 2024 23:03:57 +0000 Subject: [PATCH 10/10] Revert "Bump http to 73b0b1c9ef2964c4619fd23068b8f60292e902c6" This reverts commit 105cd96dc8fad9905d7e473dd9d97943ba2d589d. Reason for revert: fails the HHH bot Original change's description: > Bump http to 73b0b1c9ef2964c4619fd23068b8f60292e902c6 > > Changes: > ``` > > git log --format="%C(auto) %h %s" f0a02f9..73b0b1c > https://dart.googlesource.com/http.git/+/73b0b1c Bump actions/labeler from 4.3.0 to 5.0.0 (1096) > https://dart.googlesource.com/http.git/+/15ec3ba Prepare to publish `package:cronet_http` as 1.0.0 (1087) > https://dart.googlesource.com/http.git/+/26e55c3 cronet_http: require android API level 28 (1088) > https://dart.googlesource.com/http.git/+/b10f448 [cronet_http] Enables CI for `cronet_http_embedded` (1070) > https://dart.googlesource.com/http.git/+/a5b8eec Prepare to publish cupertino 1.2.0 (1080) > https://dart.googlesource.com/http.git/+/c114aa0 Add a fake response for PNG images (1081) > https://dart.googlesource.com/http.git/+/db2cb76 Run web tests with wasm with dev Dart sdk (1078) > https://dart.googlesource.com/http.git/+/36f98e9 Fix a bug where BrowserClient was listed as requiring Flutter (1077) > https://dart.googlesource.com/http.git/+/db7f165 Provide an example of configuring IOClient with an HttpClient. (1074) > https://dart.googlesource.com/http.git/+/cd748b6 Document that runWithClient must be called for every isolate (1069) > https://dart.googlesource.com/http.git/+/f585947 Test persistentConnection with large request bodies (984) > https://dart.googlesource.com/http.git/+/7c05dde Add documentation for "no_default_http_client" (1068) > https://dart.googlesource.com/http.git/+/d8983fa Add support for setting headers for all requests (1060) > https://dart.googlesource.com/http.git/+/c90496e Document how to use replacement `Client` implementations (1063) > https://dart.googlesource.com/http.git/+/c8536e4 [http_client_conformance_tests] Updates to support wasm compilation (1064) > https://dart.googlesource.com/http.git/+/5dd5140 Bump actions/setup-java from 3 to 4 (1065) > https://dart.googlesource.com/http.git/+/064f510 misc cleanup of yaml files (1061) > https://dart.googlesource.com/http.git/+/22f52e2 Update pubspec.yaml to 0.4.2 (1059) > https://dart.googlesource.com/http.git/+/40a46d8 Fix a bug where cronet_http sends incorrect HTTP request methods (1058) > https://dart.googlesource.com/http.git/+/c125ed5 [http] Allow pkg:web v0.3.0 (1055) > https://dart.googlesource.com/http.git/+/9fb4cfa Update lints to latest, etc (1048) > https://dart.googlesource.com/http.git/+/5e84d9f Update platform-specific imports for wasm (1051) > https://dart.googlesource.com/http.git/+/8c9feb5 [http] Fix type cast for dart2wasm (1050) > https://dart.googlesource.com/http.git/+/a2f0b25 [http] use pkg:web, require Dart 3.2 (1049) > > ``` > > Diff: https://dart.googlesource.com/http.git/+/f0a02f98f7c921e86ecc81c70f38bb6fbccc81b9..73b0b1c9ef2964c4619fd23068b8f60292e902c6/ > Change-Id: Id9e8032411f3c34bb2bdc0c22af35da6f2e34a88 > Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/344320 > Reviewed-by: Nate Bosch > Commit-Queue: Devon Carew Change-Id: I85e990104531d6927bf711d3478815e6cd1fbfc5 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/344420 Auto-Submit: Devon Carew Bot-Commit: Rubber Stamper Commit-Queue: Siva Annamalai Reviewed-by: Siva Annamalai --- DEPS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPS b/DEPS index 9013d640f85a..4c84b545727b 100644 --- a/DEPS +++ b/DEPS @@ -149,7 +149,7 @@ vars = { "flute_rev": "f42b09f77132210499ec8ed819a60c260af03db6", "glob_rev": "7c9a121e92687b7ac6456ec0796eb1e5c0373d90", "html_rev": "06bc148600b1d1a70f2256bdf788c213f1f60f55", - "http_rev": "73b0b1c9ef2964c4619fd23068b8f60292e902c6", + "http_rev": "f0a02f98f7c921e86ecc81c70f38bb6fbccc81b9", # https://github.com/dart-lang/sdk/issues/54165 "http_multi_server_rev": "ae484896624cee8b0a8a97a0fb1ea323c4c3d31f", "http_parser_rev": "224c1a9d24b46c7a9da1f09147e0e1fbda78089d", "intl_rev": "5d65e3808ce40e6282e40881492607df4e35669f",