| // 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. |
| |
| import 'package:analyzer/dart/analysis/analysis_options.dart'; |
| import 'package:analyzer/dart/analysis/declared_variables.dart'; |
| import 'package:analyzer/file_system/file_system.dart'; |
| import 'package:analyzer/src/dart/analysis/analysis_options.dart'; |
| import 'package:analyzer/src/dart/analysis/analysis_options_map.dart'; |
| import 'package:analyzer/src/dart/element/type_provider.dart'; |
| import 'package:analyzer/src/dart/element/type_system.dart'; |
| import 'package:analyzer/src/generated/engine.dart' show AnalysisContext; |
| import 'package:analyzer/src/generated/source.dart'; |
| |
| /// An [AnalysisContext] in which analysis can be performed. |
| class AnalysisContextImpl implements AnalysisContext { |
| AnalysisOptionsMap _analysisOptionsMap; |
| |
| @override |
| final DeclaredVariables declaredVariables; |
| |
| @override |
| final SourceFactory sourceFactory; |
| |
| TypeProviderImpl? _typeProvider; |
| TypeSystemImpl? _typeSystem; |
| |
| AnalysisContextImpl({ |
| required AnalysisOptionsMap analysisOptionsMap, |
| required this.declaredVariables, |
| required this.sourceFactory, |
| }) : _analysisOptionsMap = analysisOptionsMap; |
| |
| // TODO(scheglov): Remove it, exists only for Cider. |
| set analysisOptions(AnalysisOptionsImpl analysisOptions) { |
| _analysisOptionsMap = AnalysisOptionsMap.forSharedOptions(analysisOptions); |
| } |
| |
| bool get hasTypeProvider { |
| return _typeProvider != null; |
| } |
| |
| TypeProviderImpl get typeProvider { |
| return _typeProvider!; |
| } |
| |
| TypeSystemImpl get typeSystem { |
| return _typeSystem!; |
| } |
| |
| void clearTypeProvider() { |
| _typeProvider = null; |
| _typeSystem = null; |
| } |
| |
| @override |
| AnalysisOptions getAnalysisOptionsForFile(File file) => |
| _analysisOptionsMap.getOptions(file); |
| |
| void setTypeProviders({required TypeProviderImpl typeProvider}) { |
| if (_typeProvider != null) { |
| throw StateError('TypeProvider can be set only once.'); |
| } |
| |
| _typeProvider = typeProvider; |
| |
| _typeSystem = TypeSystemImpl(typeProvider: typeProvider); |
| } |
| } |