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 'dart:collection'; | 7 import 'dart:collection'; |
8 | 8 |
9 import 'package:analyzer/analyzer.dart'; | 9 import 'package:analyzer/analyzer.dart'; |
10 import 'package:analyzer/plugin/options.dart'; | 10 import 'package:analyzer/plugin/options.dart'; |
(...skipping 27 matching lines...) Expand all Loading... |
38 | 38 |
39 /// Configure this [context] based on configuration details specified in | 39 /// Configure this [context] based on configuration details specified in |
40 /// the given [options]. If [options] is `null`, default values are applied. | 40 /// the given [options]. If [options] is `null`, default values are applied. |
41 void configureContextOptions( | 41 void configureContextOptions( |
42 AnalysisContext context, Map<String, Object> options) => | 42 AnalysisContext context, Map<String, Object> options) => |
43 _processor.configure(context, options); | 43 _processor.configure(context, options); |
44 | 44 |
45 /// `analyzer` analysis options constants. | 45 /// `analyzer` analysis options constants. |
46 class AnalyzerOptions { | 46 class AnalyzerOptions { |
47 static const String analyzer = 'analyzer'; | 47 static const String analyzer = 'analyzer'; |
| 48 static const String enableAssertInitializer = 'enableAssertInitializer'; |
48 static const String enableAsync = 'enableAsync'; | 49 static const String enableAsync = 'enableAsync'; |
49 static const String enableGenericMethods = 'enableGenericMethods'; | 50 static const String enableGenericMethods = 'enableGenericMethods'; |
50 static const String enableStrictCallChecks = 'enableStrictCallChecks'; | 51 static const String enableStrictCallChecks = 'enableStrictCallChecks'; |
51 static const String enableSuperMixins = 'enableSuperMixins'; | 52 static const String enableSuperMixins = 'enableSuperMixins'; |
52 | 53 |
53 static const String errors = 'errors'; | 54 static const String errors = 'errors'; |
54 static const String exclude = 'exclude'; | 55 static const String exclude = 'exclude'; |
55 static const String language = 'language'; | 56 static const String language = 'language'; |
56 static const String plugins = 'plugins'; | 57 static const String plugins = 'plugins'; |
57 static const String strong_mode = 'strong-mode'; | 58 static const String strong_mode = 'strong-mode'; |
(...skipping 19 matching lines...) Expand all Loading... |
77 static const List<String> topLevel = const [ | 78 static const List<String> topLevel = const [ |
78 errors, | 79 errors, |
79 exclude, | 80 exclude, |
80 language, | 81 language, |
81 plugins, | 82 plugins, |
82 strong_mode | 83 strong_mode |
83 ]; | 84 ]; |
84 | 85 |
85 /// Supported `analyzer` language configuration options. | 86 /// Supported `analyzer` language configuration options. |
86 static const List<String> languageOptions = const [ | 87 static const List<String> languageOptions = const [ |
| 88 enableAssertInitializer, |
87 enableAsync, | 89 enableAsync, |
88 enableGenericMethods, | 90 enableGenericMethods, |
89 enableStrictCallChecks, | 91 enableStrictCallChecks, |
90 enableSuperMixins | 92 enableSuperMixins |
91 ]; | 93 ]; |
92 } | 94 } |
93 | 95 |
94 /// Validates `analyzer` options. | 96 /// Validates `analyzer` options. |
95 class AnalyzerOptionsValidator extends CompositeValidator { | 97 class AnalyzerOptionsValidator extends CompositeValidator { |
96 AnalyzerOptionsValidator() | 98 AnalyzerOptionsValidator() |
(...skipping 374 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
471 if (excludes is YamlList) { | 473 if (excludes is YamlList) { |
472 List<String> excludeList = toStringList(excludes); | 474 List<String> excludeList = toStringList(excludes); |
473 if (excludeList != null) { | 475 if (excludeList != null) { |
474 context.setConfigurationData(CONTEXT_EXCLUDES, excludeList); | 476 context.setConfigurationData(CONTEXT_EXCLUDES, excludeList); |
475 } | 477 } |
476 } | 478 } |
477 } | 479 } |
478 | 480 |
479 void setLanguageOption( | 481 void setLanguageOption( |
480 AnalysisContext context, Object feature, Object value) { | 482 AnalysisContext context, Object feature, Object value) { |
| 483 if (feature == AnalyzerOptions.enableAssertInitializer) { |
| 484 if (isTrue(value)) { |
| 485 AnalysisOptionsImpl options = |
| 486 new AnalysisOptionsImpl.from(context.analysisOptions); |
| 487 options.enableAssertInitializer = true; |
| 488 context.analysisOptions = options; |
| 489 } |
| 490 } |
481 if (feature == AnalyzerOptions.enableAsync) { | 491 if (feature == AnalyzerOptions.enableAsync) { |
482 if (isFalse(value)) { | 492 if (isFalse(value)) { |
483 AnalysisOptionsImpl options = | 493 AnalysisOptionsImpl options = |
484 new AnalysisOptionsImpl.from(context.analysisOptions); | 494 new AnalysisOptionsImpl.from(context.analysisOptions); |
485 options.enableAsync = false; | 495 options.enableAsync = false; |
486 context.analysisOptions = options; | 496 context.analysisOptions = options; |
487 } | 497 } |
488 } | 498 } |
489 if (feature == AnalyzerOptions.enableStrictCallChecks) { | 499 if (feature == AnalyzerOptions.enableStrictCallChecks) { |
490 if (isTrue(value)) { | 500 if (isTrue(value)) { |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
545 options.strongMode = strongMode; | 555 options.strongMode = strongMode; |
546 context.analysisOptions = options; | 556 context.analysisOptions = options; |
547 } | 557 } |
548 } | 558 } |
549 } | 559 } |
550 | 560 |
551 void _applyLanguageOption( | 561 void _applyLanguageOption( |
552 AnalysisOptionsImpl options, Object feature, Object value) { | 562 AnalysisOptionsImpl options, Object feature, Object value) { |
553 bool boolValue = toBool(value); | 563 bool boolValue = toBool(value); |
554 if (boolValue != null) { | 564 if (boolValue != null) { |
555 if (feature == AnalyzerOptions.enableAsync) { | 565 if (feature == AnalyzerOptions.enableAssertInitializer) { |
| 566 options.enableAssertInitializer = boolValue; |
| 567 } else if (feature == AnalyzerOptions.enableAsync) { |
556 options.enableAsync = boolValue; | 568 options.enableAsync = boolValue; |
557 } | 569 } else if (feature == AnalyzerOptions.enableSuperMixins) { |
558 if (feature == AnalyzerOptions.enableSuperMixins) { | |
559 options.enableSuperMixins = boolValue; | 570 options.enableSuperMixins = boolValue; |
560 } | 571 } else if (feature == AnalyzerOptions.enableGenericMethods) { |
561 if (feature == AnalyzerOptions.enableGenericMethods) { | |
562 options.enableGenericMethods = boolValue; | 572 options.enableGenericMethods = boolValue; |
563 } | 573 } |
564 } | 574 } |
565 } | 575 } |
566 | 576 |
567 void _applyLanguageOptions(AnalysisOptionsImpl options, Object configs) { | 577 void _applyLanguageOptions(AnalysisOptionsImpl options, Object configs) { |
568 if (configs is YamlMap) { | 578 if (configs is YamlMap) { |
569 configs.nodes.forEach((key, value) { | 579 configs.nodes.forEach((key, value) { |
570 if (key is YamlScalar && value is YamlScalar) { | 580 if (key is YamlScalar && value is YamlScalar) { |
571 String feature = key.value?.toString(); | 581 String feature = key.value?.toString(); |
(...skipping 28 matching lines...) Expand all Loading... |
600 } | 610 } |
601 }); | 611 }); |
602 } else if (config is Map) { | 612 } else if (config is Map) { |
603 options.strongMode = true; | 613 options.strongMode = true; |
604 config.forEach((k, v) => _applyStrongModeOption(options, k, v)); | 614 config.forEach((k, v) => _applyStrongModeOption(options, k, v)); |
605 } else { | 615 } else { |
606 options.strongMode = config is bool ? config : false; | 616 options.strongMode = config is bool ? config : false; |
607 } | 617 } |
608 } | 618 } |
609 } | 619 } |
OLD | NEW |