mirror of
https://github.com/dart-lang/sdk
synced 2024-09-22 08:41:18 +00:00
Analysis Options error notifications.
R=brianwilkerson@google.com, scheglov@google.com Review URL: https://codereview.chromium.org/1411013003 .
This commit is contained in:
parent
b74ce18b0c
commit
6c85fe785a
|
@ -36,6 +36,7 @@ import 'package:analyzer/src/generated/utilities_collection.dart';
|
|||
import 'package:analyzer/src/generated/utilities_general.dart';
|
||||
import 'package:analyzer/src/task/dart.dart';
|
||||
import 'package:analyzer/src/task/html.dart';
|
||||
import 'package:analyzer/src/task/options.dart';
|
||||
import 'package:analyzer/task/dart.dart';
|
||||
import 'package:analyzer/task/general.dart';
|
||||
import 'package:analyzer/task/html.dart';
|
||||
|
@ -327,6 +328,8 @@ class GetHandler {
|
|||
results.add(HTML_DOCUMENT_ERRORS);
|
||||
results.add(HTML_ERRORS);
|
||||
results.add(REFERENCED_LIBRARIES);
|
||||
} else if (AnalysisEngine.isAnalysisOptionsFileName(name)) {
|
||||
results.add(ANALYSIS_OPTIONS_ERRORS);
|
||||
}
|
||||
} else if (target is LibrarySpecificUnit) {
|
||||
results.add(COMPILATION_UNIT_CONSTANTS);
|
||||
|
|
|
@ -36,6 +36,8 @@ main() {
|
|||
|
||||
List<AnalysisError> get errors => filesErrors[testFile];
|
||||
|
||||
List<AnalysisError> get optionsFileErrors => filesErrors[optionsFilePath];
|
||||
|
||||
String get optionsFilePath => '$projectPath/.analysis_options';
|
||||
|
||||
AnalysisContext get testContext => server.getContainingContext(testFile);
|
||||
|
@ -104,6 +106,19 @@ analyzer:
|
|||
verifyStrongMode(enabled: true);
|
||||
}
|
||||
|
||||
test_options_file_parse_error() async {
|
||||
addOptionsFile('''
|
||||
; #bang
|
||||
''');
|
||||
setAnalysisRoot();
|
||||
|
||||
await waitForTasksFinished();
|
||||
|
||||
expect(optionsFileErrors, hasLength(1));
|
||||
expect(optionsFileErrors.first.severity, AnalysisErrorSeverity.ERROR);
|
||||
expect(optionsFileErrors.first.type, AnalysisErrorType.COMPILE_TIME_ERROR);
|
||||
}
|
||||
|
||||
test_options_file_removed() async {
|
||||
setStrongMode(true);
|
||||
|
||||
|
|
|
@ -33,12 +33,14 @@ class AnalysisOptionsProvider {
|
|||
if (optionsSource == null) {
|
||||
return options;
|
||||
}
|
||||
var doc = loadYaml(optionsSource);
|
||||
YamlNode doc = loadYamlNode(optionsSource);
|
||||
// Empty options.
|
||||
if (doc is YamlScalar && doc.value == null) {
|
||||
return options;
|
||||
}
|
||||
if ((doc != null) && (doc is! YamlMap)) {
|
||||
throw new OptionsFormatException(
|
||||
'Bad options file format (expected map, got ${doc.runtimeType})\n'
|
||||
'contents of options file:\n'
|
||||
'$optionsSource\n',
|
||||
'Bad options file format (expected map, got ${doc.runtimeType})',
|
||||
doc.span);
|
||||
}
|
||||
if (doc is YamlMap) {
|
||||
|
|
|
@ -13,6 +13,7 @@ import 'package:analyzer/src/task/dart_work_manager.dart';
|
|||
import 'package:analyzer/src/task/general.dart';
|
||||
import 'package:analyzer/src/task/html.dart';
|
||||
import 'package:analyzer/src/task/html_work_manager.dart';
|
||||
import 'package:analyzer/src/task/options_work_manager.dart';
|
||||
import 'package:analyzer/task/model.dart';
|
||||
import 'package:plugin/plugin.dart';
|
||||
|
||||
|
@ -235,6 +236,8 @@ class EnginePlugin implements Plugin {
|
|||
(InternalAnalysisContext context) => new DartWorkManager(context));
|
||||
registerExtension(taskId,
|
||||
(InternalAnalysisContext context) => new HtmlWorkManager(context));
|
||||
registerExtension(taskId,
|
||||
(InternalAnalysisContext context) => new OptionsWorkManager(context));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -43,7 +43,7 @@ main() {
|
|||
});
|
||||
group('AnalysisOptionsProvider', () {
|
||||
setUp(() {
|
||||
buildResourceProvider(true);
|
||||
buildResourceProvider(emptyAnalysisOptions: true);
|
||||
});
|
||||
tearDown(() {
|
||||
clearResourceProvider();
|
||||
|
@ -57,7 +57,7 @@ main() {
|
|||
});
|
||||
group('AnalysisOptionsProvider', () {
|
||||
setUp(() {
|
||||
buildResourceProvider(false, true);
|
||||
buildResourceProvider(badAnalysisOptions: true);
|
||||
});
|
||||
tearDown(() {
|
||||
clearResourceProvider();
|
||||
|
@ -79,15 +79,15 @@ main() {
|
|||
|
||||
MemoryResourceProvider resourceProvider;
|
||||
|
||||
buildResourceProvider([bool emptyAnalysisOptions = false,
|
||||
bool badAnalysisOptions = false]) {
|
||||
buildResourceProvider({bool emptyAnalysisOptions : false,
|
||||
bool badAnalysisOptions : false}) {
|
||||
resourceProvider = new MemoryResourceProvider();
|
||||
resourceProvider.newFolder('/empty');
|
||||
resourceProvider.newFolder('/tmp');
|
||||
if (badAnalysisOptions) {
|
||||
resourceProvider.newFile('/.analysis_options', r''':''');
|
||||
} else if (emptyAnalysisOptions) {
|
||||
resourceProvider.newFile('/.analysis_options', r'''''');
|
||||
resourceProvider.newFile('/.analysis_options', r'''#empty''');
|
||||
} else {
|
||||
resourceProvider.newFile(
|
||||
'/.analysis_options',
|
||||
|
|
Loading…
Reference in a new issue