analyzer: Move RuleState into the public API

Work towards https://github.com/dart-lang/sdk/issues/50986

Change-Id: I32e1d9b6dbb0a6ef91569ae65100365f775ec0f9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/430544
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Samuel Rawlins <srawlins@google.com>
diff --git a/pkg/analysis_server/test/src/services/correction/fix/analysis_options/test_support.dart b/pkg/analysis_server/test/src/services/correction/fix/analysis_options/test_support.dart
index 2fb4213..77d13be 100644
--- a/pkg/analysis_server/test/src/services/correction/fix/analysis_options/test_support.dart
+++ b/pkg/analysis_server/test/src/services/correction/fix/analysis_options/test_support.dart
@@ -4,10 +4,10 @@
 
 import 'package:analysis_server/src/services/correction/fix/analysis_options/fix_generator.dart';
 import 'package:analysis_server_plugin/edit/fix/fix.dart';
+import 'package:analyzer/analysis_rule/rule_state.dart';
 import 'package:analyzer/diagnostic/diagnostic.dart';
 import 'package:analyzer/source/file_source.dart';
 import 'package:analyzer/src/generated/source.dart';
-import 'package:analyzer/src/lint/state.dart';
 import 'package:analyzer/src/task/options.dart';
 import 'package:analyzer_plugin/protocol/protocol_common.dart'
     hide AnalysisError;
diff --git a/pkg/analyzer/api.txt b/pkg/analyzer/api.txt
index 6f5fc7a..c294f41 100644
--- a/pkg/analyzer/api.txt
+++ b/pkg/analyzer/api.txt
@@ -1,3 +1,20 @@
+package:analyzer/analysis_rule/rule_state.dart:
+  dart2_12 (static getter: Version)
+  dart3 (static getter: Version)
+  dart3_3 (static getter: Version)
+  RuleState (class extends Object):
+    deprecated (constructor: RuleState Function({String? replacedBy, Version? since}))
+    experimental (constructor: RuleState Function({Version? since}))
+    internal (constructor: RuleState Function({Version? since}))
+    removed (constructor: RuleState Function({String? replacedBy, Version? since}))
+    stable (constructor: RuleState Function({Version? since}))
+    isDeprecated (getter: bool)
+    isExperimental (getter: bool)
+    isInternal (getter: bool)
+    isRemoved (getter: bool)
+    label (getter: String)
+    replacedBy (getter: String?)
+    since (getter: Version?)
 package:analyzer/dart/analysis/analysis_context.dart:
   AnalysisContext@1 (class extends Object):
     new (constructor: AnalysisContext@1 Function())
diff --git a/pkg/analyzer/lib/src/lint/state.dart b/pkg/analyzer/lib/analysis_rule/rule_state.dart
similarity index 96%
rename from pkg/analyzer/lib/src/lint/state.dart
rename to pkg/analyzer/lib/analysis_rule/rule_state.dart
index 2997c64..757f397 100644
--- a/pkg/analyzer/lib/src/lint/state.dart
+++ b/pkg/analyzer/lib/analysis_rule/rule_state.dart
@@ -13,9 +13,6 @@
 /// A version describing Dart language version 3.3.0.
 final Version dart3_3 = Version(3, 3, 0);
 
-@Deprecated("Prefer to use 'RuleState'")
-typedef State = RuleState;
-
 /// Describes the state of an analysis rule.
 final class RuleState {
   /// An Optional Dart language version that identifies the start of this state.
diff --git a/pkg/analyzer/lib/src/lint/linter.dart b/pkg/analyzer/lib/src/lint/linter.dart
index 903b812..743f3a1 100644
--- a/pkg/analyzer/lib/src/lint/linter.dart
+++ b/pkg/analyzer/lib/src/lint/linter.dart
@@ -2,6 +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.
 
+import 'package:analyzer/analysis_rule/rule_state.dart';
 import 'package:analyzer/dart/analysis/features.dart';
 import 'package:analyzer/dart/analysis/results.dart';
 import 'package:analyzer/dart/ast/ast.dart';
@@ -15,13 +16,12 @@
 import 'package:analyzer/file_system/file_system.dart';
 import 'package:analyzer/src/lint/linter_visitor.dart' show RuleVisitorRegistry;
 import 'package:analyzer/src/lint/pub.dart';
-import 'package:analyzer/src/lint/state.dart';
 import 'package:analyzer/workspace/workspace.dart';
 import 'package:meta/meta.dart';
 
-export 'package:analyzer/src/lint/linter_visitor.dart' show NodeLintRegistry;
-export 'package:analyzer/src/lint/state.dart'
+export 'package:analyzer/analysis_rule/rule_state.dart'
     show dart2_12, dart3, dart3_3, RuleState;
+export 'package:analyzer/src/lint/linter_visitor.dart' show NodeLintRegistry;
 
 /// Describes an [AbstractAnalysisRule] which reports diagnostics using exactly
 /// one [DiagnosticCode].
diff --git a/pkg/linter/tool/messages_info.dart b/pkg/linter/tool/messages_info.dart
index 3493385..a5e0bf7 100644
--- a/pkg/linter/tool/messages_info.dart
+++ b/pkg/linter/tool/messages_info.dart
@@ -2,8 +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 'package:analyzer/analysis_rule/rule_state.dart';
 import 'package:analyzer/src/lint/io.dart';
-import 'package:analyzer/src/lint/state.dart';
 import 'package:collection/collection.dart';
 import 'package:pub_semver/pub_semver.dart';
 import 'package:yaml/yaml.dart';