Skip to content

Commit 874393a

Browse files
authored
Resolver should only throw for severe errors (#3828)
* resolver should only throw for severe errors * add changelog * add test
1 parent 7f9dfcf commit 874393a

File tree

3 files changed

+21
-1
lines changed

3 files changed

+21
-1
lines changed

build_resolvers/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
- Refactor `BuildAssetUriResolver` into `AnalysisDriverModel` and
44
`AnalysisDriverFilesystem`. Add new implementation of
55
`AnalysisDriverModel`.
6+
- Make resolver only throw `SyntaxErrorInAssetException` on severe syntax errors
67

78
## 2.4.3
89

build_resolvers/lib/src/resolver.dart

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import 'package:analyzer/dart/analysis/features.dart';
1212
import 'package:analyzer/dart/analysis/results.dart';
1313
import 'package:analyzer/dart/ast/ast.dart';
1414
import 'package:analyzer/dart/element/element.dart';
15+
import 'package:analyzer/diagnostic/diagnostic.dart';
1516
import 'package:analyzer/error/error.dart';
1617
// ignore: implementation_imports
1718
import 'package:analyzer/src/clients/build_resolvers/build_resolvers.dart';
@@ -238,7 +239,8 @@ class AnalyzerResolver implements ReleasableResolver {
238239

239240
var parsedResult =
240241
_driver.currentSession.getParsedUnit(path) as ParsedUnitResult;
241-
if (!allowSyntaxErrors && parsedResult.errors.isNotEmpty) {
242+
if (!allowSyntaxErrors &&
243+
parsedResult.errors.any((e) => e.severity == Severity.error)) {
242244
throw SyntaxErrorInAssetException(assetId, [parsedResult]);
243245
}
244246
return parsedResult.unit;

build_resolvers/test/resolver_test.dart

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -748,6 +748,23 @@ int? get x => 1;
748748
);
749749
});
750750
});
751+
test('are only reported if severe', () {
752+
return resolveSources({
753+
'a|errors.dart': '''
754+
/// {@code }
755+
class A{}
756+
''',
757+
}, (resolver) async {
758+
await expectLater(
759+
resolver.libraryFor(AssetId.parse('a|errors.dart')),
760+
completion(isNotNull),
761+
);
762+
await expectLater(
763+
resolver.compilationUnitFor(AssetId.parse('a|errors.dart')),
764+
completion(isNotNull),
765+
);
766+
});
767+
});
751768

752769
test('are reported for part files with errors', () {
753770
return resolveSources({

0 commit comments

Comments
 (0)