Version 2.15.0-266.0.dev
Merge commit '3c5e2a0d7b11139408d1827d371836464417e622' into 'dev'
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7ae5db7..03de374 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -495,7 +495,7 @@
#### Linter
Updated the Linter to `1.14.0`, which includes changes that
-- fix `omit_local_variable_types` to not flag a local type that is
+- fix `omit_local_variable_types` to not flag a local type that is
required for inference.
- allow `while (true) { ... }` in `literal_only_boolean_expressions`.
- fix `file_names` to report at the start of the file (not the entire
@@ -538,7 +538,11 @@
### Pub
-- Adds support for token-based authorization to third party package-repositories
+- If you have analytics enabled `dart pub get` will send
+ [usage metrics](https://github.com/dart-lang/pub/blob/0035a40f25d027130c0314571da53ffafc6d973b/lib/src/solver/result.dart#L131-L175)
+ for packages from pub.dev, intended for popularity analysis.
+
+- Adds support for token-based authorization to third-party package-repositories
with the new command `dart pub token`.
- Credentials are no longer stored in the pub-cache, but in a platform dependent
config directory:
@@ -546,6 +550,35 @@
is defined, otherwise `$HOME/.config/dart/pub-credentials.json`
* On Mac OS: `$HOME/Library/Application Support/dart/pub-credentials.json`
* On Windows: `%APPDATA%/dart/pub-credentials.json`
+- The syntax for dependencies hosted at a third-party package repository has
+ been simplified. Before you would need to write:
+
+```
+dependencies:
+ colorizer:
+ hosted:
+ name: colorizer
+ url: 'https://custom-pub-server.com'
+ version: ^1.2.3
+environment:
+ sdk: '>=2.14.0 < 3.0.0'
+```
+
+Now you can write:
+
+```
+dependencies:
+ colorizer:
+ hosted: 'https://custom-pub-server.com'
+ version: ^1.2.3
+environment:
+ sdk: '>=2.15.0 < 3.0.0'
+```
+
+This feature requires
+[language-version](https://dart.dev/guides/language/evolution#language-versioning)
+2.15 or later, e.g. the `pubspec.yaml` should have an SDK constraint of
+`>=2.15 <3.0.0`.
- Detect potential leaks in `dart pub publish`.
When publishing, pub will examine your files for potential secret keys, and
diff --git a/DEPS b/DEPS
index 1acadc2..18e0f7a 100644
--- a/DEPS
+++ b/DEPS
@@ -139,7 +139,7 @@
"pool_rev": "7abe634002a1ba8a0928eded086062f1307ccfae",
"process_rev": "56ece43b53b64c63ae51ec184b76bd5360c28d0b",
"protobuf_rev": "c1eb6cb51af39ccbaa1a8e19349546586a5c8e31",
- "pub_rev": "78bc50c7833451c24e531713362e46fd50621ff0",
+ "pub_rev": "0035a40f25d027130c0314571da53ffafc6d973b",
"pub_semver_rev": "a43ad72fb6b7869607581b5fedcb186d1e74276a",
"root_certificates_rev": "692f6d6488af68e0121317a9c2c9eb393eb0ee50",
"rust_revision": "b7856f695d65a8ebc846754f97d15814bcb1c244",
diff --git a/pkg/dartdev/lib/src/commands/run.dart b/pkg/dartdev/lib/src/commands/run.dart
index ace7285..69db956 100644
--- a/pkg/dartdev/lib/src/commands/run.dart
+++ b/pkg/dartdev/lib/src/commands/run.dart
@@ -228,31 +228,18 @@
}
}
- String path;
- String packagesConfigOverride;
-
try {
- final filename = maybeUriToFilename(mainCommand);
- if (File(filename).existsSync()) {
- // TODO(sigurdm): getExecutableForCommand is able to figure this out,
- // but does not return a package config override.
- path = filename;
- packagesConfigOverride = null;
- } else {
- path = await getExecutableForCommand(mainCommand);
- packagesConfigOverride =
- join(current, '.dart_tool', 'package_config.json');
- }
+ final executable = await getExecutableForCommand(mainCommand);
+ VmInteropHandler.run(
+ executable.executable,
+ runArgs,
+ packageConfigOverride: executable.packageConfig,
+ );
+ return 0;
} on CommandResolutionFailedException catch (e) {
log.stderr(e.message);
return errorExitCode;
}
- VmInteropHandler.run(
- path,
- runArgs,
- packageConfigOverride: packagesConfigOverride,
- );
- return 0;
}
}
diff --git a/pkg/dartdev/lib/src/commands/test.dart b/pkg/dartdev/lib/src/commands/test.dart
index c6711c7..36683af 100644
--- a/pkg/dartdev/lib/src/commands/test.dart
+++ b/pkg/dartdev/lib/src/commands/test.dart
@@ -5,7 +5,6 @@
import 'dart:async';
import 'package:args/args.dart';
-import 'package:path/path.dart';
import 'package:pub/pub.dart';
import '../core.dart';
@@ -32,15 +31,16 @@
try {
final testExecutable = await getExecutableForCommand('test:test');
log.trace('dart $testExecutable ${argResults.rest.join(' ')}');
- VmInteropHandler.run(testExecutable, argResults.rest,
- packageConfigOverride:
- join(current, '.dart_tool', 'package_config.json'));
+ VmInteropHandler.run(testExecutable.executable, argResults.rest,
+ packageConfigOverride: testExecutable.packageConfig);
return 0;
} on CommandResolutionFailedException catch (e) {
if (project.hasPubspecFile) {
print(e.message);
- print('You need to add a dev_dependency on package:test.');
- print('Try running `dart pub add --dev test`.');
+ if (e.issue == CommandResolutionIssue.packageNotFound) {
+ print('You need to add a dev_dependency on package:test.');
+ print('Try running `dart pub add --dev test`.');
+ }
} else {
print(
'No pubspec.yaml file found - run this command in your project folder.');
diff --git a/runtime/observatory/tests/service/service_kernel.status b/runtime/observatory/tests/service/service_kernel.status
index df6722b..412cfbc 100644
--- a/runtime/observatory/tests/service/service_kernel.status
+++ b/runtime/observatory/tests/service/service_kernel.status
@@ -3,7 +3,6 @@
# BSD-style license that can be found in the LICENSE file.
complex_reload_test: Skip # http://dartbug.com/47130
-coverage_closure_call_test: Skip # https://github.com/dart-lang/sdk/issues/47568
valid_source_locations_test: Pass, Slow
[ $compiler == app_jitk ]
@@ -76,6 +75,7 @@
code_test: SkipByDesign # Debugger is disabled in AOT mode.
column_breakpoint_test: SkipByDesign # Debugger is disabled in AOT mode.
complex_reload_test: SkipByDesign # Debugger is disabled in AOT mode.
+coverage_closure_call_test: SkipByDesign # Debugger and coverage are disabled in AOT mode.
coverage_const_field_async_closure_test: SkipByDesign # Debugger is disabled in AOT mode.
coverage_leaf_function_test: SkipByDesign # Debugger is disabled in AOT mode.
coverage_optimized_function_test: SkipByDesign # Debugger is disabled in AOT mode.
diff --git a/runtime/observatory_2/tests/service_2/coverage_closure_call_test.dart b/runtime/observatory_2/tests/service_2/coverage_closure_call_test.dart
new file mode 100644
index 0000000..967f8fa
--- /dev/null
+++ b/runtime/observatory_2/tests/service_2/coverage_closure_call_test.dart
@@ -0,0 +1,115 @@
+// 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:observatory_2/service_io.dart';
+import 'package:test/test.dart';
+import 'test_helper.dart';
+import 'service_test_common.dart';
+import 'dart:developer';
+
+String leafFunction(void Function() f) {
+ f();
+ return "some constant";
+}
+
+void testFunction() {
+ debugger();
+ leafFunction(() {});
+ debugger();
+}
+
+bool allRangesCompiled(coverage) {
+ for (int i = 0; i < coverage['ranges'].length; i++) {
+ if (!coverage['ranges'][i]['compiled']) {
+ return false;
+ }
+ }
+ return true;
+}
+
+var tests = <IsolateTest>[
+ hasStoppedAtBreakpoint,
+ (Isolate isolate) async {
+ var stack = await isolate.getStack();
+
+ // Make sure we are in the right place.
+ expect(stack.type, equals('Stack'));
+ expect(stack['frames'].length, greaterThanOrEqualTo(1));
+ expect(stack['frames'][0].function.name, equals('testFunction'));
+
+ var root = isolate.rootLibrary;
+ await root.load();
+ var func = root.functions.singleWhere((f) => f.name == 'leafFunction');
+ await func.load();
+
+ var expectedRange = {
+ 'scriptIndex': 0,
+ 'startPos': 386,
+ 'endPos': 460,
+ 'compiled': true,
+ 'coverage': {
+ 'hits': [],
+ 'misses': [386, 430]
+ }
+ };
+
+ var params = {
+ 'reports': ['Coverage'],
+ 'scriptId': func.location.script.id,
+ 'tokenPos': func.location.tokenPos,
+ 'endTokenPos': func.location.endTokenPos,
+ 'forceCompile': true
+ };
+ var report = await isolate.invokeRpcNoUpgrade('getSourceReport', params);
+ expect(report['type'], equals('SourceReport'));
+ expect(report['ranges'].length, 1);
+ expect(report['ranges'][0], equals(expectedRange));
+ expect(report['scripts'].length, 1);
+ expect(report['scripts'][0]['uri'],
+ endsWith('coverage_closure_call_test.dart'));
+ },
+ resumeIsolate,
+ hasStoppedAtBreakpoint,
+ (Isolate isolate) async {
+ var stack = await isolate.getStack();
+
+ // Make sure we are in the right place.
+ expect(stack.type, equals('Stack'));
+ expect(stack['frames'].length, greaterThanOrEqualTo(1));
+ expect(stack['frames'][0].function.name, equals('testFunction'));
+
+ var root = isolate.rootLibrary;
+ await root.load();
+ var func = root.functions.singleWhere((f) => f.name == 'leafFunction');
+ await func.load();
+
+ var expectedRange = {
+ 'scriptIndex': 0,
+ 'startPos': 386,
+ 'endPos': 460,
+ 'compiled': true,
+ 'coverage': {
+ 'hits': [386, 430],
+ 'misses': []
+ }
+ };
+
+ var params = {
+ 'reports': ['Coverage'],
+ 'scriptId': func.location.script.id,
+ 'tokenPos': func.location.tokenPos,
+ 'endTokenPos': func.location.endTokenPos,
+ 'forceCompile': true
+ };
+ var report = await isolate.invokeRpcNoUpgrade('getSourceReport', params);
+ expect(report['type'], equals('SourceReport'));
+ expect(report['ranges'].length, 1);
+ expect(report['ranges'][0], equals(expectedRange));
+ expect(report['scripts'].length, 1);
+ expect(report['scripts'][0]['uri'],
+ endsWith('coverage_closure_call_test.dart'));
+ },
+];
+
+main(args) => runIsolateTests(args, tests, testeeConcurrent: testFunction);
diff --git a/runtime/observatory_2/tests/service_2/service_2_kernel.status b/runtime/observatory_2/tests/service_2/service_2_kernel.status
index 5627906..ac51da2 100644
--- a/runtime/observatory_2/tests/service_2/service_2_kernel.status
+++ b/runtime/observatory_2/tests/service_2/service_2_kernel.status
@@ -3,7 +3,6 @@
# BSD-style license that can be found in the LICENSE file.
complex_reload_test: Skip # http://dartbug.com/47130
-coverage_closure_call_test: Skip # https://github.com/dart-lang/sdk/issues/47568
valid_source_locations_test: Pass, Slow
[ $compiler == app_jitk ]
@@ -76,6 +75,7 @@
code_test: SkipByDesign # Debugger is disabled in AOT mode.
column_breakpoint_test: SkipByDesign # Debugger is disabled in AOT mode.
complex_reload_test: SkipByDesign # Debugger is disabled in AOT mode.
+coverage_closure_call_test: SkipByDesign # Debugger and coverage are disabled in AOT mode.
coverage_const_field_async_closure_test: SkipByDesign # Debugger is disabled in AOT mode.
coverage_leaf_function_test: SkipByDesign # Debugger is disabled in AOT mode.
coverage_optimized_function_test: SkipByDesign # Debugger is disabled in AOT mode.
diff --git a/runtime/vm/compiler/frontend/kernel_binary_flowgraph_test.cc b/runtime/vm/compiler/frontend/kernel_binary_flowgraph_test.cc
index 85ba707..ca7fcc2 100644
--- a/runtime/vm/compiler/frontend/kernel_binary_flowgraph_test.cc
+++ b/runtime/vm/compiler/frontend/kernel_binary_flowgraph_test.cc
@@ -333,7 +333,9 @@
kMatchAndMoveCheckNull,
kMatchAndMoveLoadField,
kMoveDebugStepChecks,
+#if !defined(PRODUCT)
kMatchAndMoveRecordCoverage,
+#endif
kMatchAndMoveClosureCall,
kMoveDebugStepChecks,
kMatchReturn,
diff --git a/tools/VERSION b/tools/VERSION
index 0f45ddc..8e42ace 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
MAJOR 2
MINOR 15
PATCH 0
-PRERELEASE 265
+PRERELEASE 266
PRERELEASE_PATCH 0
\ No newline at end of file