| OLD | NEW |
| 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 library analyzer.src.task.options; | 5 library analyzer.src.task.options; |
| 6 | 6 |
| 7 import 'package:analyzer/analyzer.dart'; | 7 import 'package:analyzer/analyzer.dart'; |
| 8 import 'package:analyzer/plugin/options.dart'; | 8 import 'package:analyzer/plugin/options.dart'; |
| 9 import 'package:analyzer/source/analysis_options_provider.dart'; | 9 import 'package:analyzer/source/analysis_options_provider.dart'; |
| 10 import 'package:analyzer/src/generated/engine.dart'; | 10 import 'package:analyzer/src/generated/engine.dart'; |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 66 enableGenericMethods, | 66 enableGenericMethods, |
| 67 enableSuperMixins | 67 enableSuperMixins |
| 68 ]; | 68 ]; |
| 69 } | 69 } |
| 70 | 70 |
| 71 /// Validates `analyzer` options. | 71 /// Validates `analyzer` options. |
| 72 class AnalyzerOptionsValidator extends CompositeValidator { | 72 class AnalyzerOptionsValidator extends CompositeValidator { |
| 73 AnalyzerOptionsValidator() | 73 AnalyzerOptionsValidator() |
| 74 : super([ | 74 : super([ |
| 75 new TopLevelAnalyzerOptionsValidator(), | 75 new TopLevelAnalyzerOptionsValidator(), |
| 76 new StrongModeOptionValueValidator(), |
| 76 new ErrorFilterOptionValidator(), | 77 new ErrorFilterOptionValidator(), |
| 77 new LanguageOptionValidator() | 78 new LanguageOptionValidator() |
| 78 ]); | 79 ]); |
| 79 } | 80 } |
| 80 | 81 |
| 81 /// Convenience class for composing validators. | 82 /// Convenience class for composing validators. |
| 82 class CompositeValidator extends OptionsValidator { | 83 class CompositeValidator extends OptionsValidator { |
| 83 final List<OptionsValidator> validators; | 84 final List<OptionsValidator> validators; |
| 84 CompositeValidator(this.validators); | 85 CompositeValidator(this.validators); |
| 85 | 86 |
| (...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 219 List<int> lineStarts = StringUtilities.computeLineStarts(content); | 220 List<int> lineStarts = StringUtilities.computeLineStarts(content); |
| 220 return new LineInfo(lineStarts); | 221 return new LineInfo(lineStarts); |
| 221 } | 222 } |
| 222 | 223 |
| 223 /// Create a task based on the given [target] in the given [context]. | 224 /// Create a task based on the given [target] in the given [context]. |
| 224 static GenerateOptionsErrorsTask createTask( | 225 static GenerateOptionsErrorsTask createTask( |
| 225 AnalysisContext context, AnalysisTarget target) => | 226 AnalysisContext context, AnalysisTarget target) => |
| 226 new GenerateOptionsErrorsTask(context, target); | 227 new GenerateOptionsErrorsTask(context, target); |
| 227 } | 228 } |
| 228 | 229 |
| 230 /// Validates `analyzer` strong-mode value configuration options. |
| 231 class StrongModeOptionValueValidator extends OptionsValidator { |
| 232 ErrorBuilder trueOrFalseBuilder = new TrueOrFalseValueErrorBuilder(); |
| 233 |
| 234 @override |
| 235 void validate(ErrorReporter reporter, Map<String, YamlNode> options) { |
| 236 var analyzer = options[AnalyzerOptions.analyzer]; |
| 237 if (analyzer is! YamlMap) { |
| 238 return; |
| 239 } |
| 240 |
| 241 var v = analyzer.nodes[AnalyzerOptions.strong_mode]; |
| 242 if (v is YamlScalar) { |
| 243 var value = toLowerCase(v.value); |
| 244 if (!AnalyzerOptions.trueOrFalse.contains(value)) { |
| 245 trueOrFalseBuilder.reportError( |
| 246 reporter, AnalyzerOptions.strong_mode, v); |
| 247 } |
| 248 } |
| 249 } |
| 250 } |
| 251 |
| 229 /// Validates `analyzer` language configuration options. | 252 /// Validates `analyzer` language configuration options. |
| 230 class LanguageOptionValidator extends OptionsValidator { | 253 class LanguageOptionValidator extends OptionsValidator { |
| 231 ErrorBuilder builder = new ErrorBuilder(AnalyzerOptions.languageOptions); | 254 ErrorBuilder builder = new ErrorBuilder(AnalyzerOptions.languageOptions); |
| 232 ErrorBuilder trueOrFalseBuilder = new TrueOrFalseValueErrorBuilder(); | 255 ErrorBuilder trueOrFalseBuilder = new TrueOrFalseValueErrorBuilder(); |
| 233 | 256 |
| 234 @override | 257 @override |
| 235 void validate(ErrorReporter reporter, Map<String, YamlNode> options) { | 258 void validate(ErrorReporter reporter, Map<String, YamlNode> options) { |
| 236 var analyzer = options[AnalyzerOptions.analyzer]; | 259 var analyzer = options[AnalyzerOptions.analyzer]; |
| 237 if (analyzer is! YamlMap) { | 260 if (analyzer is! YamlMap) { |
| 238 return; | 261 return; |
| (...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 388 | 411 |
| 389 void setLanguageOptions(AnalysisContext context, Object configs) { | 412 void setLanguageOptions(AnalysisContext context, Object configs) { |
| 390 if (configs is YamlMap) { | 413 if (configs is YamlMap) { |
| 391 configs.nodes.forEach((k, v) { | 414 configs.nodes.forEach((k, v) { |
| 392 String feature; | 415 String feature; |
| 393 if (k is YamlScalar && v is YamlScalar) { | 416 if (k is YamlScalar && v is YamlScalar) { |
| 394 feature = k.value?.toString(); | 417 feature = k.value?.toString(); |
| 395 if (feature == AnalyzerOptions.enableSuperMixins) { | 418 if (feature == AnalyzerOptions.enableSuperMixins) { |
| 396 if (isTrue(v.value)) { | 419 if (isTrue(v.value)) { |
| 397 AnalysisOptionsImpl options = | 420 AnalysisOptionsImpl options = |
| 398 new AnalysisOptionsImpl.from(context.analysisOptions); | 421 new AnalysisOptionsImpl.from(context.analysisOptions); |
| 399 options.enableSuperMixins = true; | 422 options.enableSuperMixins = true; |
| 400 context.analysisOptions = options; | 423 context.analysisOptions = options; |
| 401 } | 424 } |
| 402 } | 425 } |
| 403 if (feature == AnalyzerOptions.enableGenericMethods) { | 426 if (feature == AnalyzerOptions.enableGenericMethods) { |
| 404 if (isTrue(v.value)) { | 427 if (isTrue(v.value)) { |
| 405 AnalysisOptionsImpl options = | 428 AnalysisOptionsImpl options = |
| 406 new AnalysisOptionsImpl.from(context.analysisOptions); | 429 new AnalysisOptionsImpl.from(context.analysisOptions); |
| 407 options.enableGenericMethods = true; | 430 options.enableGenericMethods = true; |
| 408 context.analysisOptions = options; | 431 context.analysisOptions = options; |
| 409 } | 432 } |
| 410 } | 433 } |
| 411 } | 434 } |
| 412 }); | 435 }); |
| 413 } | 436 } |
| 414 } | 437 } |
| 415 | 438 |
| 416 void setStrongMode(AnalysisContext context, Object strongMode) { | 439 void setStrongMode(AnalysisContext context, Object strongMode) { |
| 417 bool strong = strongMode is bool ? strongMode : false; | 440 bool strong = strongMode is bool ? strongMode : false; |
| 418 if (context.analysisOptions.strongMode != strong) { | 441 if (context.analysisOptions.strongMode != strong) { |
| 419 AnalysisOptionsImpl options = | 442 AnalysisOptionsImpl options = |
| 420 new AnalysisOptionsImpl.from(context.analysisOptions); | 443 new AnalysisOptionsImpl.from(context.analysisOptions); |
| 421 options.strongMode = strong; | 444 options.strongMode = strong; |
| 422 context.analysisOptions = options; | 445 context.analysisOptions = options; |
| 423 } | 446 } |
| 424 } | 447 } |
| 425 } | 448 } |
| OLD | NEW |