diff --git a/pkg/analysis_server/lib/src/context_manager.dart b/pkg/analysis_server/lib/src/context_manager.dart index 8dbd6554734..f0537fb480c 100644 --- a/pkg/analysis_server/lib/src/context_manager.dart +++ b/pkg/analysis_server/lib/src/context_manager.dart @@ -18,6 +18,7 @@ import 'package:analyzer/file_system/overlay_file_system.dart'; import 'package:analyzer/instrumentation/instrumentation.dart'; import 'package:analyzer/source/file_source.dart'; import 'package:analyzer/source/line_info.dart'; +import 'package:analyzer/src/analysis_options/options_file_validator.dart'; import 'package:analyzer/src/dart/analysis/analysis_context_collection.dart'; import 'package:analyzer/src/dart/analysis/byte_store.dart'; import 'package:analyzer/src/dart/analysis/driver.dart'; @@ -28,7 +29,6 @@ import 'package:analyzer/src/dart/analysis/unlinked_unit_store.dart'; import 'package:analyzer/src/generated/sdk.dart'; import 'package:analyzer/src/manifest/manifest_validator.dart'; import 'package:analyzer/src/pubspec/pubspec_validator.dart'; -import 'package:analyzer/src/task/options.dart'; import 'package:analyzer/src/util/file_paths.dart' as file_paths; import 'package:analyzer/src/workspace/blaze.dart'; import 'package:analyzer/src/workspace/blaze_watcher.dart'; diff --git a/pkg/analysis_server/lib/src/handler/legacy/edit_get_fixes.dart b/pkg/analysis_server/lib/src/handler/legacy/edit_get_fixes.dart index 5e0e14842e6..faefaaeb5a6 100644 --- a/pkg/analysis_server/lib/src/handler/legacy/edit_get_fixes.dart +++ b/pkg/analysis_server/lib/src/handler/legacy/edit_get_fixes.dart @@ -22,12 +22,12 @@ import 'package:analyzer/file_system/file_system.dart'; import 'package:analyzer/source/file_source.dart'; import 'package:analyzer/source/line_info.dart'; import 'package:analyzer/src/analysis_options/analysis_options_provider.dart'; +import 'package:analyzer/src/analysis_options/options_file_validator.dart'; import 'package:analyzer/src/dart/analysis/analysis_options.dart'; import 'package:analyzer/src/dart/analysis/results.dart' as engine; import 'package:analyzer/src/exception/exception.dart'; import 'package:analyzer/src/generated/source.dart' show SourceFactory; import 'package:analyzer/src/pubspec/pubspec_validator.dart'; -import 'package:analyzer/src/task/options.dart'; import 'package:analyzer/src/util/file_paths.dart' as file_paths; import 'package:analyzer/src/workspace/pub.dart'; import 'package:analyzer_plugin/protocol/protocol_generated.dart' as plugin; diff --git a/pkg/analysis_server/lib/src/lsp/handlers/code_actions/analysis_options.dart b/pkg/analysis_server/lib/src/lsp/handlers/code_actions/analysis_options.dart index d0e1a225bdc..59650483146 100644 --- a/pkg/analysis_server/lib/src/lsp/handlers/code_actions/analysis_options.dart +++ b/pkg/analysis_server/lib/src/lsp/handlers/code_actions/analysis_options.dart @@ -11,8 +11,8 @@ import 'package:analysis_server/src/services/correction/fix/analysis_options/fix import 'package:analyzer/source/file_source.dart'; import 'package:analyzer/source/line_info.dart'; import 'package:analyzer/src/analysis_options/analysis_options_provider.dart'; +import 'package:analyzer/src/analysis_options/options_file_validator.dart'; import 'package:analyzer/src/generated/source.dart' show SourceFactory; -import 'package:analyzer/src/task/options.dart'; import 'package:analyzer/src/util/performance/operation_performance.dart'; import 'package:analyzer/src/workspace/pub.dart'; import 'package:yaml/yaml.dart'; diff --git a/pkg/analysis_server/lib/src/services/completion/yaml/analysis_options_generator.dart b/pkg/analysis_server/lib/src/services/completion/yaml/analysis_options_generator.dart index 1dba885e2a0..91b6ba0eb19 100644 --- a/pkg/analysis_server/lib/src/services/completion/yaml/analysis_options_generator.dart +++ b/pkg/analysis_server/lib/src/services/completion/yaml/analysis_options_generator.dart @@ -8,9 +8,9 @@ import 'package:analysis_server/src/services/completion/yaml/yaml_completion_gen import 'package:analyzer/dart/analysis/formatter_options.dart'; import 'package:analyzer/error/error.dart'; import 'package:analyzer/file_system/file_system.dart'; +import 'package:analyzer/src/analysis_options/options_file_validator.dart'; import 'package:analyzer/src/dart/analysis/experiments.dart'; import 'package:analyzer/src/lint/registry.dart'; -import 'package:analyzer/src/task/options.dart'; /// A completion generator that can produce completion suggestions for analysis /// options files. diff --git a/pkg/analysis_server/test/src/services/completion/yaml/analysis_options_generator_test.dart b/pkg/analysis_server/test/src/services/completion/yaml/analysis_options_generator_test.dart index 2a2acc8960c..c9759e9555a 100644 --- a/pkg/analysis_server/test/src/services/completion/yaml/analysis_options_generator_test.dart +++ b/pkg/analysis_server/test/src/services/completion/yaml/analysis_options_generator_test.dart @@ -4,8 +4,8 @@ import 'package:analysis_server/src/services/completion/yaml/analysis_options_generator.dart'; import 'package:analyzer/error/error.dart'; +import 'package:analyzer/src/analysis_options/options_file_validator.dart'; import 'package:analyzer/src/lint/linter.dart'; -import 'package:analyzer/src/task/options.dart'; import 'package:analyzer/src/test_utilities/lint_registration_mixin.dart'; import 'package:linter/src/rules.dart'; import 'package:test/test.dart'; 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 77d13be91c3..4c2014286b1 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 @@ -7,8 +7,8 @@ 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/analysis_options/options_file_validator.dart'; import 'package:analyzer/src/generated/source.dart'; -import 'package:analyzer/src/task/options.dart'; import 'package:analyzer_plugin/protocol/protocol_common.dart' hide AnalysisError; import 'package:analyzer_testing/resource_provider_mixin.dart'; diff --git a/pkg/analyzer/lib/source/error_processor.dart b/pkg/analyzer/lib/source/error_processor.dart index 9d08e0a051b..0ef1d20bcc0 100644 --- a/pkg/analyzer/lib/source/error_processor.dart +++ b/pkg/analyzer/lib/source/error_processor.dart @@ -4,8 +4,8 @@ import 'package:analyzer/diagnostic/diagnostic.dart'; import 'package:analyzer/error/error.dart'; +import 'package:analyzer/src/analysis_options/options_file_validator.dart'; import 'package:analyzer/src/generated/engine.dart'; -import 'package:analyzer/src/task/options.dart'; import 'package:collection/collection.dart'; import 'package:meta/meta.dart'; import 'package:yaml/yaml.dart'; diff --git a/pkg/analyzer/lib/src/analysis_options/analysis_options_provider.dart b/pkg/analyzer/lib/src/analysis_options/analysis_options_provider.dart index 8601696fcb1..ca6defe2c33 100644 --- a/pkg/analyzer/lib/src/analysis_options/analysis_options_provider.dart +++ b/pkg/analyzer/lib/src/analysis_options/analysis_options_provider.dart @@ -5,8 +5,8 @@ import 'package:analyzer/file_system/file_system.dart'; import 'package:analyzer/source/file_source.dart'; import 'package:analyzer/source/source.dart'; +import 'package:analyzer/src/analysis_options/options_file_validator.dart'; import 'package:analyzer/src/generated/source.dart' show SourceFactory; -import 'package:analyzer/src/task/options.dart'; import 'package:analyzer/src/util/file_paths.dart' as file_paths; import 'package:analyzer/src/util/yaml.dart'; import 'package:source_span/source_span.dart'; diff --git a/pkg/analyzer/lib/src/task/options.dart b/pkg/analyzer/lib/src/analysis_options/options_file_validator.dart similarity index 99% rename from pkg/analyzer/lib/src/task/options.dart rename to pkg/analyzer/lib/src/analysis_options/options_file_validator.dart index 109fc463346..b2475ac061c 100644 --- a/pkg/analyzer/lib/src/task/options.dart +++ b/pkg/analyzer/lib/src/analysis_options/options_file_validator.dart @@ -10,12 +10,12 @@ import 'package:analyzer/source/error_processor.dart'; import 'package:analyzer/source/source.dart'; import 'package:analyzer/src/analysis_options/analysis_options_provider.dart'; import 'package:analyzer/src/analysis_options/error/option_codes.dart'; +import 'package:analyzer/src/analysis_options/options_validator.dart'; import 'package:analyzer/src/dart/analysis/experiments.dart'; import 'package:analyzer/src/generated/source.dart' show SourceFactory; import 'package:analyzer/src/generated/utilities_general.dart'; import 'package:analyzer/src/lint/options_rule_validator.dart'; import 'package:analyzer/src/lint/registry.dart'; -import 'package:analyzer/src/plugin/options.dart'; import 'package:analyzer/src/util/yaml.dart'; import 'package:analyzer/src/utilities/extensions/string.dart'; import 'package:meta/meta.dart'; diff --git a/pkg/analyzer/lib/src/analysis_options/options_validator.dart b/pkg/analyzer/lib/src/analysis_options/options_validator.dart new file mode 100644 index 00000000000..69aa1b7d74e --- /dev/null +++ b/pkg/analyzer/lib/src/analysis_options/options_validator.dart @@ -0,0 +1,16 @@ +// Copyright (c) 2015, 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. + +/// Support for client code that wants to consume options contributed to the +/// analysis options file. +library; + +import 'package:analyzer/error/listener.dart'; +import 'package:yaml/yaml.dart'; + +/// A class that validates options as defined in an analysis options file. +abstract class OptionsValidator { + /// Validate [options], reporting any errors to the given [reporter]. + void validate(DiagnosticReporter reporter, YamlMap options); +} diff --git a/pkg/analyzer/lib/src/dart/analysis/analysis_options.dart b/pkg/analyzer/lib/src/dart/analysis/analysis_options.dart index 251892331d9..e2376878023 100644 --- a/pkg/analyzer/lib/src/dart/analysis/analysis_options.dart +++ b/pkg/analyzer/lib/src/dart/analysis/analysis_options.dart @@ -12,13 +12,13 @@ import 'package:analyzer/error/error.dart'; import 'package:analyzer/file_system/file_system.dart'; import 'package:analyzer/source/error_processor.dart'; import 'package:analyzer/src/analysis_options/code_style_options.dart'; +import 'package:analyzer/src/analysis_options/options_file_validator.dart'; import 'package:analyzer/src/dart/analysis/experiments.dart'; import 'package:analyzer/src/generated/utilities_general.dart' show toBool; import 'package:analyzer/src/lint/config.dart'; import 'package:analyzer/src/lint/linter.dart'; import 'package:analyzer/src/lint/registry.dart'; import 'package:analyzer/src/summary/api_signature.dart'; -import 'package:analyzer/src/task/options.dart'; import 'package:analyzer/src/util/yaml.dart'; import 'package:collection/collection.dart'; import 'package:pub_semver/pub_semver.dart'; diff --git a/pkg/analyzer/lib/src/dart/analysis/context_locator.dart b/pkg/analyzer/lib/src/dart/analysis/context_locator.dart index d67ad73a41f..97d9be1c9fb 100644 --- a/pkg/analyzer/lib/src/dart/analysis/context_locator.dart +++ b/pkg/analyzer/lib/src/dart/analysis/context_locator.dart @@ -7,11 +7,11 @@ import 'package:analyzer/file_system/file_system.dart'; import 'package:analyzer/file_system/physical_file_system.dart' show PhysicalResourceProvider; import 'package:analyzer/src/analysis_options/analysis_options_provider.dart'; +import 'package:analyzer/src/analysis_options/options_file_validator.dart'; import 'package:analyzer/src/context/packages.dart'; import 'package:analyzer/src/dart/analysis/analysis_options.dart'; import 'package:analyzer/src/dart/analysis/context_root.dart'; import 'package:analyzer/src/lint/pub.dart'; -import 'package:analyzer/src/task/options.dart'; import 'package:analyzer/src/util/file_paths.dart' as file_paths; import 'package:analyzer/src/util/yaml.dart'; import 'package:analyzer/src/utilities/extensions/file_system.dart'; diff --git a/pkg/analyzer/lib/src/lint/config.dart b/pkg/analyzer/lib/src/lint/config.dart index cd8fde0fe93..d7762caac41 100644 --- a/pkg/analyzer/lib/src/lint/config.dart +++ b/pkg/analyzer/lib/src/lint/config.dart @@ -2,7 +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/src/task/options.dart'; +import 'package:analyzer/src/analysis_options/options_file_validator.dart'; import 'package:analyzer/src/util/yaml.dart'; import 'package:yaml/yaml.dart'; diff --git a/pkg/analyzer/lib/src/lint/options_rule_validator.dart b/pkg/analyzer/lib/src/lint/options_rule_validator.dart index bd7b2419e12..e6d403a91c3 100644 --- a/pkg/analyzer/lib/src/lint/options_rule_validator.dart +++ b/pkg/analyzer/lib/src/lint/options_rule_validator.dart @@ -5,9 +5,9 @@ import 'package:analyzer/diagnostic/diagnostic.dart'; import 'package:analyzer/error/listener.dart'; import 'package:analyzer/src/analysis_options/error/option_codes.dart'; +import 'package:analyzer/src/analysis_options/options_validator.dart'; import 'package:analyzer/src/lint/linter.dart'; import 'package:analyzer/src/lint/registry.dart'; -import 'package:analyzer/src/plugin/options.dart'; import 'package:analyzer/src/util/yaml.dart'; import 'package:collection/collection.dart'; import 'package:pub_semver/pub_semver.dart'; diff --git a/pkg/analyzer/lib/src/plugin/options.dart b/pkg/analyzer/lib/src/plugin/options.dart deleted file mode 100644 index 1a8fae3e786..00000000000 --- a/pkg/analyzer/lib/src/plugin/options.dart +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright (c) 2015, 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. - -/// Support for client code that wants to consume options contributed to the -/// analysis options file. -library; - -import 'package:analyzer/error/listener.dart'; -import 'package:yaml/yaml.dart'; - -/// Validates options as defined in an analysis options file. -/// -/// The options file format is intentionally very open-ended, giving clients -/// utmost flexibility in defining their own options. The only hard and fast -/// expectation is that options files will contain a mapping from Strings -/// (identifying 'scopes') to associated options. For example, the given -/// content -/// -/// linter: -/// rules: -/// camel_case_types: true -/// compiler: -/// resolver: -/// useMultiPackage: true -/// packagePaths: -/// - /foo/bar/pkg -/// - /bar/baz/pkg -/// -/// defines two scopes, `linter` and `compiler`. Parsing would result in a -/// map, mapping the `linter` and `compiler` scope identifiers to their -/// respective parsed option node contents. Extracting values is a simple -/// matter of inspecting the parsed nodes. For example, testing whether the -/// compiler's resolver is set to use the `useMultiPackage` option might look -/// something like this (eliding error-checking): -/// -/// bool useMultiPackage = -/// options['compiler']['resolver']['useMultiPackage']; -/// -/// Clients may implement this class when implementing plugins. -/// -abstract class OptionsValidator { - /// Validate [options], reporting any errors to the given [reporter]. - void validate(DiagnosticReporter reporter, YamlMap options); -} diff --git a/pkg/analyzer/test/src/diagnostics/analysis_options/analysis_options_test_support.dart b/pkg/analyzer/test/src/diagnostics/analysis_options/analysis_options_test_support.dart index da37f5c484a..e93c5c07eac 100644 --- a/pkg/analyzer/test/src/diagnostics/analysis_options/analysis_options_test_support.dart +++ b/pkg/analyzer/test/src/diagnostics/analysis_options/analysis_options_test_support.dart @@ -3,10 +3,10 @@ // BSD-style license that can be found in the LICENSE file. import 'package:_fe_analyzer_shared/src/base/errors.dart'; +import 'package:analyzer/src/analysis_options/options_file_validator.dart'; import 'package:analyzer/src/context/source.dart'; import 'package:analyzer/src/file_system/file_system.dart'; import 'package:analyzer/src/generated/source.dart'; -import 'package:analyzer/src/task/options.dart'; import 'package:analyzer/src/test_utilities/lint_registration_mixin.dart'; import 'package:analyzer_testing/resource_provider_mixin.dart'; import 'package:meta/meta.dart'; diff --git a/pkg/analyzer/test/src/task/options_test.dart b/pkg/analyzer/test/src/options/options_file_validator_test.dart similarity index 99% rename from pkg/analyzer/test/src/task/options_test.dart rename to pkg/analyzer/test/src/options/options_file_validator_test.dart index 36e21a1fb34..268db610c0f 100644 --- a/pkg/analyzer/test/src/task/options_test.dart +++ b/pkg/analyzer/test/src/options/options_file_validator_test.dart @@ -7,11 +7,11 @@ import 'dart:mirrors'; import 'package:analyzer/diagnostic/diagnostic.dart'; import 'package:analyzer/error/error.dart'; import 'package:analyzer/src/analysis_options/analysis_options_provider.dart'; +import 'package:analyzer/src/analysis_options/options_file_validator.dart'; import 'package:analyzer/src/error/codes.dart'; import 'package:analyzer/src/file_system/file_system.dart'; import 'package:analyzer/src/generated/source.dart'; import 'package:analyzer/src/lint/linter.dart'; -import 'package:analyzer/src/task/options.dart'; import 'package:analyzer/src/test_utilities/lint_registration_mixin.dart'; import 'package:analyzer_testing/resource_provider_mixin.dart'; import 'package:test/test.dart'; diff --git a/pkg/analyzer/test/src/options/test_all.dart b/pkg/analyzer/test/src/options/test_all.dart index 677c301d416..70dfd9b06c9 100644 --- a/pkg/analyzer/test/src/options/test_all.dart +++ b/pkg/analyzer/test/src/options/test_all.dart @@ -5,12 +5,14 @@ import 'package:test_reflective_loader/test_reflective_loader.dart'; import 'analysis_options_test.dart' as analysis_options; +import 'options_file_validator_test.dart' as options_file_validator; import 'options_provider_test.dart' as options_provider; import 'options_rule_validator_test.dart' as options_rule_validator; main() { defineReflectiveSuite(() { analysis_options.main(); + options_file_validator.main(); options_provider.main(); options_rule_validator.main(); }, name: 'options'); diff --git a/pkg/analyzer/test/src/task/test_all.dart b/pkg/analyzer/test/src/task/test_all.dart index d6f96c1f52c..5b2975f8309 100644 --- a/pkg/analyzer/test/src/task/test_all.dart +++ b/pkg/analyzer/test/src/task/test_all.dart @@ -4,12 +4,10 @@ import 'package:test_reflective_loader/test_reflective_loader.dart'; -import 'options_test.dart' as options_test; import 'strong/test_all.dart' as strong_mode_test_all; main() { defineReflectiveSuite(() { - options_test.main(); strong_mode_test_all.main(); }, name: 'task'); } diff --git a/pkg/analyzer_cli/lib/src/driver.dart b/pkg/analyzer_cli/lib/src/driver.dart index dabfdd35a99..ca8658de0af 100644 --- a/pkg/analyzer_cli/lib/src/driver.dart +++ b/pkg/analyzer_cli/lib/src/driver.dart @@ -12,6 +12,7 @@ import 'package:analyzer/file_system/file_system.dart'; import 'package:analyzer/file_system/physical_file_system.dart'; import 'package:analyzer/source/file_source.dart'; import 'package:analyzer/source/line_info.dart'; +import 'package:analyzer/src/analysis_options/options_file_validator.dart'; import 'package:analyzer/src/dart/analysis/analysis_context_collection.dart'; import 'package:analyzer/src/dart/analysis/analysis_options.dart'; import 'package:analyzer/src/dart/analysis/byte_store.dart'; @@ -24,7 +25,6 @@ import 'package:analyzer/src/generated/sdk.dart'; import 'package:analyzer/src/manifest/manifest_validator.dart'; import 'package:analyzer/src/pubspec/pubspec_validator.dart'; import 'package:analyzer/src/source/path_filter.dart'; -import 'package:analyzer/src/task/options.dart'; import 'package:analyzer/src/util/file_paths.dart' as file_paths; import 'package:analyzer/src/util/yaml.dart'; import 'package:analyzer/src/workspace/pub.dart';