[ CLI ] Print unnecessary experiment warning to stderr instead of stdout

Fixes https://github.com/dart-lang/sdk/issues/51820

TEST=pkg/dartdev/test/commands/analyze_test.dart

Change-Id: I6c3f31806e466b594776aa93062addc1ced4dc20
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/290621
Commit-Queue: Ben Konyi <bkonyi@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
This commit is contained in:
Ben Konyi 2023-03-22 20:55:36 +00:00 committed by Commit Queue
parent b4442e92eb
commit 27171f2d73
3 changed files with 14 additions and 5 deletions

View file

@ -2,6 +2,8 @@
// 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 'dart:io';
import 'package:analyzer/src/dart/analysis/experiments.dart';
import 'package:args/args.dart';
import 'package:collection/collection.dart' show IterableExtension;
@ -67,8 +69,8 @@ extension ArgResultsExtensions on ArgResults {
// We allow default true flags, but complain when they are passed in.
if (feature.isEnabledByDefault &&
enabledExperiments.contains(feature.enableString)) {
print("'${feature.enableString}' is now enabled by default; this "
'flag is no longer required.');
stderr.writeln("'${feature.enableString}' is now enabled by default; "
'this flag is no longer required.');
}
}
return enabledExperiments;

View file

@ -433,6 +433,15 @@ void defineAnalyze() {
expect(result.stderr, contains("Unknown experiment(s): 'bad'"));
});
test('--enable-experiment with a non-experimental feature', () async {
p = project();
var result = await p.runAnalyze(['--enable-experiment=records']);
expect(result.exitCode, 0);
expect(result.stdout, contains('No issues found!'));
expect(result.stderr, contains("'records' is now enabled by default"));
});
test('--verbose', () async {
p = project(mainSrc: '''
int f() {

View file

@ -781,8 +781,6 @@ void residentRun() {
});
test('Handles experiments', () async {
// TODO(https://github.com/dart-lang/sdk/issues/50230): Use
// `test-experiment` instead of `records` here.
p = project(
mainSrc: r"void main() { print(('hello','world').$1); }",
sdkConstraint: VersionConstraint.parse(
@ -792,7 +790,7 @@ void residentRun() {
final result = await p.run([
'run',
'--$serverInfoOption=$serverInfoFile',
'--enable-experiment=records',
'--enable-experiment=test-experiment',
p.relativeFilePath,
]);
Directory? kernelCache = p.findDirectory('.dart_tool/kernel');