Revert "[analyzer] Add experimental_member_use warning."

This reverts commit 3923958595.

Reason for revert: Broke dart->flutter roll https://github.com/flutter/flutter/pull/176234 due to customer testing

Original change's description:
> [analyzer] Add experimental_member_use warning.
>
> Adds the implementation of the `experimental_member_use` warning
> (whose diagnostic code was introduced in
> https://dart-review.googlesource.com/c/sdk/+/451341).
>
> There is very little implementation logic, since the bulk of the
> implementation is shared with the existing `deprecated_member_use`
> warning. Unit tests are adapted from the `deprecated_member_use` unit
> tests.
>
> Since the tests in `non_const_argument_for_const_parameter_test.dart`
> use the annotation `@mustBeConst`, which is marked `@experimental`,
> they had to be modified to expect the new warning.
>
> Change-Id: I6a6a69645bb072b29166b7617b480a890b2bb5aa
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/450970
> Reviewed-by: Samuel Rawlins <srawlins@google.com>
> Commit-Queue: Paul Berry <paulberry@google.com>

Change-Id: I6a6a696447ed61b133e17ffc63ca6067fdbcc1ca
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/452526
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Alexander Aprelev <aam@google.com>
Reviewed-by: Samuel Rawlins <srawlins@google.com>
This commit is contained in:
Paul Berry
2025-09-30 14:01:32 -07:00
committed by Commit Queue
parent acd7ee069a
commit 3bdbceddc7
12 changed files with 71 additions and 2979 deletions
+1 -1
View File
@@ -11,7 +11,7 @@ resolution: workspace
dependencies:
# See the release policy for managing this dependency at
# pkg/analyzer/doc/implementation/releasing.md.
analyzer: 8.3.0-dev
analyzer: 8.2.0
analyzer_plugin: 0.13.8
meta: ^1.16.0
yaml: ^3.1.0
-4
View File
@@ -1,7 +1,3 @@
## 8.3.0-dev
* Add the `experimental_member_use` warning, which warns about any reference to
a declaration annotated with `@experimental`.
## 8.2.0
* Updated SDK constraint to `^3.9.0`.
* Deprecate `Diagnostic.data`. Instead, please use an expando to attach data to
@@ -33,7 +33,6 @@ import 'package:analyzer/src/error/deprecated_member_use_verifier.dart';
import 'package:analyzer/src/error/doc_comment_verifier.dart';
import 'package:analyzer/src/error/element_usage_frontier_detector.dart';
import 'package:analyzer/src/error/error_handler_verifier.dart';
import 'package:analyzer/src/error/experimental_member_use_verifier.dart';
import 'package:analyzer/src/error/must_call_super_verifier.dart';
import 'package:analyzer/src/error/null_safe_api_verifier.dart';
import 'package:analyzer/src/error/widget_preview_verifier.dart';
@@ -124,13 +123,6 @@ class BestPracticesVerifier extends RecursiveAstVisitor<void> {
diagnosticReporter: _diagnosticReporter,
),
),
ElementUsageFrontierDetector(
workspacePackage: workspacePackage,
elementUsageSet: const ExperimentalElementUsageSet(),
elementUsageReporter: ExperimentalElementUsageReporter(
diagnosticReporter: _diagnosticReporter,
),
),
],
_errorHandlerVerifier = ErrorHandlerVerifier(
_diagnosticReporter,
@@ -1,45 +0,0 @@
// Copyright (c) 2025, 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:analyzer/dart/ast/syntactic_entity.dart';
import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/error/listener.dart';
import 'package:analyzer/src/error/codes.dart';
import 'package:analyzer/src/error/element_usage_detector.dart';
/// Instance of [ElementUsageReporter] for reporting uses of experimental
/// elements.
class ExperimentalElementUsageReporter implements ElementUsageReporter<()> {
final DiagnosticReporter _diagnosticReporter;
ExperimentalElementUsageReporter({
required DiagnosticReporter diagnosticReporter,
}) : _diagnosticReporter = diagnosticReporter;
@override
void report(
SyntacticEntity errorEntity,
String displayName,
() tagInfo, {
required bool isInSamePackage,
}) {
// Use of an experimental API from within the same package is OK
if (isInSamePackage) return;
_diagnosticReporter.atEntity(
errorEntity,
WarningCode.experimentalMemberUse,
arguments: [displayName],
);
}
}
/// Instance of [ElementUsageSet] for experimental elements.
class ExperimentalElementUsageSet implements ElementUsageSet<()> {
const ExperimentalElementUsageSet();
@override
()? getTagInfo(Element element) =>
element.metadata.annotations.any((e) => e.isExperimental) ? () : null;
}
+1 -1
View File
@@ -1,5 +1,5 @@
name: analyzer
version: 8.3.0-dev
version: 8.2.0
description: >-
This package provides a library that performs static analysis of Dart code.
repository: https://github.com/dart-lang/sdk/tree/main/pkg/analyzer
File diff suppressed because it is too large Load Diff
@@ -22,8 +22,7 @@ class ConstAnnotationTest extends PubPackageResolutionTest {
}
test_adjacentLiteral_succeeds() async {
await assertErrorsInCode(
r'''
await assertNoErrorsInCode(r'''
import 'package:meta/meta.dart' show mustBeConst;
final c = C('H' 'ello');
@@ -31,12 +30,7 @@ final c = C('H' 'ello');
class C {
C(@mustBeConst String s);
}
''',
[
error(WarningCode.experimentalMemberUse, 37, 11),
error(WarningCode.experimentalMemberUse, 92, 11),
],
);
''');
}
test_binaryOperator_fails() async {
@@ -53,17 +47,12 @@ class A {
bool operator <(@mustBeConst A other) => false;
}
''',
[
error(WarningCode.experimentalMemberUse, 37, 11),
error(WarningCode.nonConstArgumentForConstParameter, 86, 1),
error(WarningCode.experimentalMemberUse, 121, 11),
],
[error(WarningCode.nonConstArgumentForConstParameter, 86, 1)],
);
}
test_binaryOperator_succeeds() async {
await assertErrorsInCode(
r'''
await assertNoErrorsInCode(r'''
import 'package:meta/meta.dart' show mustBeConst;
void f(A a) {
@@ -76,17 +65,11 @@ class A {
bool operator <(@mustBeConst A other) => false;
}
''',
[
error(WarningCode.experimentalMemberUse, 37, 11),
error(WarningCode.experimentalMemberUse, 137, 11),
],
);
''');
}
test_constExpression_succeeds() async {
await assertErrorsInCode(
r'''
await assertNoErrorsInCode(r'''
import 'package:meta/meta.dart' show mustBeConst;
void f() {
@@ -98,17 +81,11 @@ void g(@mustBeConst C c) {}
class C {
const C();
}
''',
[
error(WarningCode.experimentalMemberUse, 37, 11),
error(WarningCode.experimentalMemberUse, 89, 11),
],
);
''');
}
test_constructor_constantLiteral_succeeds() async {
await assertErrorsInCode(
r'''
await assertNoErrorsInCode(r'''
import 'package:meta/meta.dart' show mustBeConst;
final c = C(3);
@@ -116,12 +93,7 @@ final c = C(3);
class C {
C(@mustBeConst int i);
}
''',
[
error(WarningCode.experimentalMemberUse, 37, 11),
error(WarningCode.experimentalMemberUse, 83, 11),
],
);
''');
}
test_constructor_variable_fails() async {
@@ -137,29 +109,19 @@ class C {
C(@mustBeConst int i);
}
''',
[
error(WarningCode.experimentalMemberUse, 37, 11),
error(WarningCode.nonConstArgumentForConstParameter, 77, 1),
error(WarningCode.experimentalMemberUse, 97, 11),
],
[error(WarningCode.nonConstArgumentForConstParameter, 77, 1)],
);
}
test_functionExpression_constantLiteral_succeeds() async {
await assertErrorsInCode(
r'''
await assertNoErrorsInCode(r'''
import 'package:meta/meta.dart' show mustBeConst;
void f() {
var g = (@mustBeConst int i) {};
g(3);
}
''',
[
error(WarningCode.experimentalMemberUse, 37, 11),
error(WarningCode.experimentalMemberUse, 74, 11),
],
);
''');
}
test_functionExpression_variable_fails() async {
@@ -172,28 +134,18 @@ void f(int x) {
g(x);
}
''',
[
error(WarningCode.experimentalMemberUse, 37, 11),
error(WarningCode.experimentalMemberUse, 79, 11),
error(WarningCode.nonConstArgumentForConstParameter, 106, 1),
],
[error(WarningCode.nonConstArgumentForConstParameter, 106, 1)],
);
}
test_functionType_constantLiteral_succeeds() async {
await assertErrorsInCode(
r'''
await assertNoErrorsInCode(r'''
import 'package:meta/meta.dart' show mustBeConst;
void f(void g(@mustBeConst int i)) {
g(3);
}
''',
[
error(WarningCode.experimentalMemberUse, 37, 11),
error(WarningCode.experimentalMemberUse, 66, 11),
],
);
''');
}
test_functionType_variable_fails() async {
@@ -205,17 +157,12 @@ void f(void g(@mustBeConst int i), int x) {
g(x);
}
''',
[
error(WarningCode.experimentalMemberUse, 37, 11),
error(WarningCode.experimentalMemberUse, 66, 11),
error(WarningCode.nonConstArgumentForConstParameter, 99, 1),
],
[error(WarningCode.nonConstArgumentForConstParameter, 99, 1)],
);
}
test_indexExpression_constExpression_succeeds() async {
await assertErrorsInCode(
r'''
await assertNoErrorsInCode(r'''
import 'package:meta/meta.dart' show mustBeConst;
void f(A a) {
@@ -228,13 +175,7 @@ class A {
void operator []=(@mustBeConst int i, @mustBeConst A v) {}
}
''',
[
error(WarningCode.experimentalMemberUse, 37, 11),
error(WarningCode.experimentalMemberUse, 142, 11),
error(WarningCode.experimentalMemberUse, 162, 11),
],
);
''');
}
test_indexExpression_nonConstant_fails() async {
@@ -252,12 +193,7 @@ class A {
void operator []=(@mustBeConst int i, @mustBeConst A v) {}
}
''',
[
error(WarningCode.experimentalMemberUse, 37, 11),
error(WarningCode.nonConstArgumentForConstParameter, 74, 3),
error(WarningCode.experimentalMemberUse, 127, 11),
error(WarningCode.experimentalMemberUse, 147, 11),
],
[error(WarningCode.nonConstArgumentForConstParameter, 74, 3)],
);
}
@@ -274,29 +210,19 @@ class C {
C(@mustBeConst String s);
}
''',
[
error(WarningCode.experimentalMemberUse, 37, 11),
error(WarningCode.nonConstArgumentForConstParameter, 82, 5),
error(WarningCode.experimentalMemberUse, 106, 11),
],
[error(WarningCode.nonConstArgumentForConstParameter, 82, 5)],
);
}
test_localFunction_constantLiteral_succeeds() async {
await assertErrorsInCode(
r'''
await assertNoErrorsInCode(r'''
import 'package:meta/meta.dart' show mustBeConst;
void f() {
void g(@mustBeConst int i) {}
g(3);
}
''',
[
error(WarningCode.experimentalMemberUse, 37, 11),
error(WarningCode.experimentalMemberUse, 72, 11),
],
);
''');
}
test_localFunction_variable_fails() async {
@@ -309,17 +235,12 @@ void f(int x) {
g(x);
}
''',
[
error(WarningCode.experimentalMemberUse, 37, 11),
error(WarningCode.experimentalMemberUse, 77, 11),
error(WarningCode.nonConstArgumentForConstParameter, 103, 1),
],
[error(WarningCode.nonConstArgumentForConstParameter, 103, 1)],
);
}
test_method_constantLiteral_succeeds() async {
await assertErrorsInCode(
r'''
await assertNoErrorsInCode(r'''
import 'package:meta/meta.dart' show mustBeConst;
void f(C c) => c.g(3);
@@ -327,12 +248,7 @@ void f(C c) => c.g(3);
class C {
void g([@mustBeConst int? value]) {}
}
''',
[
error(WarningCode.experimentalMemberUse, 37, 11),
error(WarningCode.experimentalMemberUse, 96, 11),
],
);
''');
}
test_method_variable_fails() async {
@@ -348,17 +264,12 @@ class C {
void g([@mustBeConst int? value]) {}
}
''',
[
error(WarningCode.experimentalMemberUse, 37, 11),
error(WarningCode.nonConstArgumentForConstParameter, 84, 1),
error(WarningCode.experimentalMemberUse, 110, 11),
],
[error(WarningCode.nonConstArgumentForConstParameter, 84, 1)],
);
}
test_optionalNamed_constVariable_succeeds() async {
await assertErrorsInCode(
r'''
await assertNoErrorsInCode(r'''
import 'package:meta/meta.dart' show mustBeConst;
const v = 3;
@@ -366,28 +277,17 @@ const v = 3;
void f() => g(value: v);
void g({@mustBeConst int? value}) {}
''',
[
error(WarningCode.experimentalMemberUse, 37, 11),
error(WarningCode.experimentalMemberUse, 100, 11),
],
);
''');
}
test_optionalNamed_noArgument_succeeds() async {
await assertErrorsInCode(
r'''
await assertNoErrorsInCode(r'''
import 'package:meta/meta.dart' show mustBeConst;
void f() => g();
void g({@mustBeConst int? value}) {}
''',
[
error(WarningCode.experimentalMemberUse, 37, 11),
error(WarningCode.experimentalMemberUse, 78, 11),
],
);
''');
}
test_optionalNamed_variable_fails() async {
@@ -401,17 +301,12 @@ void f() => g(value: v);
void g({@mustBeConst int? value}) {}
''',
[
error(WarningCode.experimentalMemberUse, 37, 11),
error(WarningCode.nonConstArgumentForConstParameter, 79, 8),
error(WarningCode.experimentalMemberUse, 100, 11),
],
[error(WarningCode.nonConstArgumentForConstParameter, 79, 8)],
);
}
test_optionalPositional_constVariable_succeeds() async {
await assertErrorsInCode(
r'''
await assertNoErrorsInCode(r'''
import 'package:meta/meta.dart' show mustBeConst;
const v = 3;
@@ -419,28 +314,17 @@ const v = 3;
void f() => g(v);
void g([@mustBeConst int? value]) {}
''',
[
error(WarningCode.experimentalMemberUse, 37, 11),
error(WarningCode.experimentalMemberUse, 93, 11),
],
);
''');
}
test_optionalPositional_noArgument_succeeds() async {
await assertErrorsInCode(
r'''
await assertNoErrorsInCode(r'''
import 'package:meta/meta.dart' show mustBeConst;
void f() => g();
void g([@mustBeConst int? value]) {}
''',
[
error(WarningCode.experimentalMemberUse, 37, 11),
error(WarningCode.experimentalMemberUse, 78, 11),
],
);
''');
}
test_optionalPositional_variable_fails() async {
@@ -454,11 +338,7 @@ void f() => g(v);
void g([@mustBeConst int? value]) {}
''',
[
error(WarningCode.experimentalMemberUse, 37, 11),
error(WarningCode.nonConstArgumentForConstParameter, 79, 1),
error(WarningCode.experimentalMemberUse, 93, 11),
],
[error(WarningCode.nonConstArgumentForConstParameter, 79, 1)],
);
}
@@ -472,11 +352,7 @@ class A {
A.named(int i) : this(i);
}
''',
[
error(WarningCode.experimentalMemberUse, 37, 11),
error(WarningCode.experimentalMemberUse, 66, 11),
error(WarningCode.nonConstArgumentForConstParameter, 110, 1),
],
[error(WarningCode.nonConstArgumentForConstParameter, 110, 1)],
);
}
@@ -486,8 +362,7 @@ class A {
// are separate. For example, they can have separate annotations.
// TODO(srawlins): It still seems that to be consistent, we should report
// `A.named(int i)`.
await assertErrorsInCode(
r'''
await assertNoErrorsInCode(r'''
import 'package:meta/meta.dart' show mustBeConst;
class A {
@@ -497,33 +372,21 @@ class A {
final v = 3;
var a = A.named(v);
''',
[
error(WarningCode.experimentalMemberUse, 37, 11),
error(WarningCode.experimentalMemberUse, 66, 11),
],
);
''');
}
test_requiredNamed_constantLiteral_succeeds() async {
await assertErrorsInCode(
r'''
await assertNoErrorsInCode(r'''
import 'package:meta/meta.dart' show mustBeConst;
void f() => g(value: 3);
void g({@mustBeConst required int value}) {}
''',
[
error(WarningCode.experimentalMemberUse, 37, 11),
error(WarningCode.experimentalMemberUse, 86, 11),
],
);
''');
}
test_requiredNamed_constVariable_succeeds() async {
await assertErrorsInCode(
r'''
await assertNoErrorsInCode(r'''
import 'package:meta/meta.dart' show mustBeConst;
const v = 3;
@@ -531,17 +394,11 @@ const v = 3;
void f() => g(value: v);
void g({@mustBeConst required int value}) {}
''',
[
error(WarningCode.experimentalMemberUse, 37, 11),
error(WarningCode.experimentalMemberUse, 100, 11),
],
);
''');
}
test_requiredPositional_constVariable_succeeds() async {
await assertErrorsInCode(
r'''
await assertNoErrorsInCode(r'''
import 'package:meta/meta.dart' show mustBeConst;
const v = 3;
@@ -549,17 +406,11 @@ const v = 3;
void f() => g(v);
void g(@mustBeConst int value) {}
''',
[
error(WarningCode.experimentalMemberUse, 37, 11),
error(WarningCode.experimentalMemberUse, 92, 11),
],
);
''');
}
test_requiredPositional_list_constVariable_succeeds() async {
await assertErrorsInCode(
r'''
await assertNoErrorsInCode(r'''
import 'package:meta/meta.dart' show mustBeConst;
const v = [3,4];
@@ -567,12 +418,7 @@ const v = [3,4];
void f() => g(v);
void g(@mustBeConst List<int> value) {}
''',
[
error(WarningCode.experimentalMemberUse, 37, 11),
error(WarningCode.experimentalMemberUse, 96, 11),
],
);
''');
}
test_requiredPositional_localVariable_fails() async {
@@ -584,17 +430,12 @@ void f(int value) => g(value);
void g(@mustBeConst int value) {}
''',
[
error(WarningCode.experimentalMemberUse, 37, 11),
error(WarningCode.nonConstArgumentForConstParameter, 74, 5),
error(WarningCode.experimentalMemberUse, 91, 11),
],
[error(WarningCode.nonConstArgumentForConstParameter, 74, 5)],
);
}
test_requiredPositional_map_constVariable_succeeds() async {
await assertErrorsInCode(
r'''
await assertNoErrorsInCode(r'''
import 'package:meta/meta.dart' show mustBeConst;
const v = {'k1': 3, 'k2': 4};
@@ -602,12 +443,7 @@ const v = {'k1': 3, 'k2': 4};
void f() => g(v);
void g(@mustBeConst Map<String, int> value) {}
''',
[
error(WarningCode.experimentalMemberUse, 37, 11),
error(WarningCode.experimentalMemberUse, 109, 11),
],
);
''');
}
test_requiredPositional_topLevelVariable_fails() async {
@@ -621,11 +457,7 @@ void f() => g(v);
void g(@mustBeConst int value) {}
''',
[
error(WarningCode.experimentalMemberUse, 37, 11),
error(WarningCode.nonConstArgumentForConstParameter, 79, 1),
error(WarningCode.experimentalMemberUse, 92, 11),
],
[error(WarningCode.nonConstArgumentForConstParameter, 79, 1)],
);
}
@@ -641,17 +473,12 @@ void f() {
set i(@mustBeConst int? value) {}
''',
[
error(WarningCode.experimentalMemberUse, 37, 11),
error(WarningCode.nonConstArgumentForConstParameter, 83, 1),
error(WarningCode.experimentalMemberUse, 96, 11),
],
[error(WarningCode.nonConstArgumentForConstParameter, 83, 1)],
);
}
test_setter_succeeds() async {
await assertErrorsInCode(
r'''
await assertNoErrorsInCode(r'''
import 'package:meta/meta.dart' show mustBeConst;
void f() {
@@ -659,17 +486,11 @@ void f() {
}
set i(@mustBeConst int? value) {}
''',
[
error(WarningCode.experimentalMemberUse, 37, 11),
error(WarningCode.experimentalMemberUse, 81, 11),
],
);
''');
}
test_subclassesDontInherit() async {
await assertErrorsInCode(
r'''
await assertNoErrorsInCode(r'''
import 'package:meta/meta.dart' show mustBeConst;
final v = 3;
@@ -684,17 +505,11 @@ class B extends A {
@override
void f(int i) {}
}
''',
[
error(WarningCode.experimentalMemberUse, 37, 11),
error(WarningCode.experimentalMemberUse, 115, 11),
],
);
''');
}
test_superclassCanBeOverriden_cast_succeeds() async {
await assertErrorsInCode(
r'''
await assertNoErrorsInCode(r'''
import 'package:meta/meta.dart' show mustBeConst;
final v = 3;
@@ -709,12 +524,7 @@ class B extends A {
@override
void f(@mustBeConst int i) {}
}
''',
[
error(WarningCode.experimentalMemberUse, 37, 11),
error(WarningCode.experimentalMemberUse, 174, 11),
],
);
''');
}
test_superclassCanBeOverriden_noCast_fails() async {
@@ -735,11 +545,7 @@ class B extends A {
void f(@mustBeConst int i) {}
}
''',
[
error(WarningCode.experimentalMemberUse, 37, 11),
error(WarningCode.nonConstArgumentForConstParameter, 81, 1),
error(WarningCode.experimentalMemberUse, 167, 11),
],
[error(WarningCode.nonConstArgumentForConstParameter, 81, 1)],
);
}
@@ -756,18 +562,13 @@ class B extends A {
B(int i) : super(i);
}
''',
[
error(WarningCode.experimentalMemberUse, 37, 11),
error(WarningCode.experimentalMemberUse, 66, 11),
error(WarningCode.nonConstArgumentForConstParameter, 128, 1),
],
[error(WarningCode.nonConstArgumentForConstParameter, 128, 1)],
);
}
test_superParameter_variable_succeeds() async {
// TODO(srawlins): It seems that to be consistent, we should `super.i`.
await assertErrorsInCode(
r'''
await assertNoErrorsInCode(r'''
import 'package:meta/meta.dart' show mustBeConst;
class A {
@@ -777,17 +578,11 @@ class A {
class B extends A {
B(super.i);
}
''',
[
error(WarningCode.experimentalMemberUse, 37, 11),
error(WarningCode.experimentalMemberUse, 66, 11),
],
);
''');
}
test_typedef_function_constantLiteral_succeeds() async {
await assertErrorsInCode(
r'''
await assertNoErrorsInCode(r'''
import 'package:meta/meta.dart' show mustBeConst;
typedef Td = void Function(@mustBeConst int);
@@ -795,18 +590,12 @@ typedef Td = void Function(@mustBeConst int);
void f(Td td) {
td(3);
}
''',
[
error(WarningCode.experimentalMemberUse, 37, 11),
error(WarningCode.experimentalMemberUse, 79, 11),
],
);
''');
}
test_typedef_function_variable_succeeds() async {
// An annotation on a parameter in a function type is not supported.
await assertErrorsInCode(
r'''
await assertNoErrorsInCode(r'''
import 'package:meta/meta.dart' show mustBeConst;
typedef Td = void Function(@mustBeConst int);
@@ -814,12 +603,7 @@ typedef Td = void Function(@mustBeConst int);
void f(int x, Td td) {
td(x);
}
''',
[
error(WarningCode.experimentalMemberUse, 37, 11),
error(WarningCode.experimentalMemberUse, 79, 11),
],
);
''');
}
test_typedef_nonFunction_variable_fails() async {
@@ -835,11 +619,7 @@ class C {
void g(int x) => T(x);
''',
[
error(WarningCode.experimentalMemberUse, 37, 11),
error(WarningCode.experimentalMemberUse, 82, 11),
error(WarningCode.nonConstArgumentForConstParameter, 124, 1),
],
[error(WarningCode.nonConstArgumentForConstParameter, 124, 1)],
);
}
}
@@ -258,7 +258,6 @@ import 'expected_two_map_pattern_type_arguments_test.dart'
import 'expected_two_map_type_arguments_test.dart'
as expected_two_map_type_arguments;
import 'experiment_not_enabled_test.dart' as experiment_not_enabled;
import 'experimental_member_use_test.dart' as experimental_member_use;
import 'export_internal_library_test.dart' as export_internal_library;
import 'export_of_non_library_test.dart' as export_of_non_library;
import 'expression_in_map_test.dart' as expression_in_map;
@@ -1126,7 +1125,6 @@ main() {
expected_two_map_pattern_type_arguments.main();
expected_two_map_type_arguments.main();
experiment_not_enabled.main();
experimental_member_use.main();
export_internal_library.main();
export_of_non_library.main();
expression_in_map.main();
@@ -192,8 +192,6 @@ class DocumentationValidator {
'WarningCode.TEXT_DIRECTION_CODE_POINT_IN_LITERAL',
// Produces two diagnostics out of necessity.
'WarningCode.UNNECESSARY_NULL_COMPARISON_NEVER_NULL_FALSE',
// Produced two diagnostics because `mustBeConst` is experimental.
'WarningCode.NON_CONST_ARGUMENT_FOR_CONST_PARAMETER',
];
/// The buffer to which validation errors are written.
+1 -1
View File
@@ -11,7 +11,7 @@ resolution: workspace
dependencies:
# See the release policy for managing this dependency at
# pkg/analyzer/doc/implementation/releasing.md.
analyzer: 8.3.0-dev
analyzer: 8.2.0
collection: ^1.15.0
dart_style: ^3.0.0
pub_semver: ^2.1.0
+1 -1
View File
@@ -11,7 +11,7 @@ resolution: workspace
dependencies:
# See the release policy for managing this dependency at
# pkg/analyzer/doc/implementation/releasing.md.
analyzer: 8.3.0-dev
analyzer: 8.2.0
meta: ^1.10.0
path: ^1.9.0
test: ^1.25.0
@@ -2188,7 +2188,6 @@ class C {
''');
await assertDiagnosticsInFile(libFile, [
lint(72, 1, name: experimentalInconsistency),
error(WarningCode.experimentalMemberUse, 74, 1),
]);
}
@@ -2218,7 +2217,6 @@ class C extends B {}
''');
await assertDiagnosticsInFile(libFile, [
lint(66, 1, name: experimentalInconsistency),
error(WarningCode.experimentalMemberUse, 76, 1),
]);
}
@@ -2246,7 +2244,6 @@ class C implements B {}
''');
await assertDiagnosticsInFile(libFile, [
lint(66, 1, name: experimentalInconsistency),
error(WarningCode.experimentalMemberUse, 79, 1),
]);
}
@@ -2274,7 +2271,6 @@ class C<T extends B> {}
''');
await assertDiagnosticsInFile(libFile, [
lint(66, 1, name: experimentalInconsistency),
error(WarningCode.experimentalMemberUse, 78, 1),
]);
}
@@ -2302,7 +2298,6 @@ class C with B {}
''');
await assertDiagnosticsInFile(libFile, [
lint(66, 1, name: experimentalInconsistency),
error(WarningCode.experimentalMemberUse, 73, 1),
]);
}
@@ -2330,7 +2325,6 @@ extension E on B {}
''');
await assertDiagnosticsInFile(libFile, [
lint(70, 1, name: experimentalInconsistency),
error(WarningCode.experimentalMemberUse, 75, 1),
]);
}
@@ -2358,7 +2352,6 @@ void F(B b) {}
''');
await assertDiagnosticsInFile(libFile, [
lint(65, 1, name: experimentalInconsistency),
error(WarningCode.experimentalMemberUse, 67, 1),
]);
}
@@ -2386,7 +2379,6 @@ typedef void F(B b);
''');
await assertDiagnosticsInFile(libFile, [
lint(73, 1, name: experimentalInconsistency),
error(WarningCode.experimentalMemberUse, 75, 1),
]);
}
@@ -2414,7 +2406,6 @@ typedef void F<T extends B>(T t);
''');
await assertDiagnosticsInFile(libFile, [
lint(73, 1, name: experimentalInconsistency),
error(WarningCode.experimentalMemberUse, 85, 1),
]);
}
@@ -2442,7 +2433,6 @@ mixin M on B {}
''');
await assertDiagnosticsInFile(libFile, [
lint(66, 1, name: experimentalInconsistency),
error(WarningCode.experimentalMemberUse, 71, 1),
]);
}