Skip to content

Commit 3b319fb

Browse files
authored
Restrict analyzer, allow build. (#786)
* Restrict analyzer, allow build. * Fix test. * Address review comments.
1 parent f5f148c commit 3b319fb

File tree

4 files changed

+32
-76
lines changed

4 files changed

+32
-76
lines changed

example/pubspec.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ environment:
66
sdk: ^3.7.0
77

88
dependencies:
9-
analyzer: '>=7.4.0 <9.0.0'
10-
build: ^3.0.0
9+
analyzer: ^8.1.1
10+
build: '>=3.0.0 <5.0.0'
1111
source_gen: any
1212

1313
dev_dependencies:

source_gen/CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
## 4.0.1
2+
3+
- Require `analyzer: '>=8.1.1 <9.0.0'`.
4+
- Allow `build: '>=3.0.0 <5.0.0'`.
5+
16
## 4.0.0
27

38
- **Breaking Change**: remove `TypeChecker.fromRuntime`, use

source_gen/pubspec.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name: source_gen
2-
version: 4.0.0
2+
version: 4.0.1
33
description: >-
44
Source code generation builders and utilities for the Dart build system
55
repository: https://github.com/dart-lang/source_gen/tree/master/source_gen
@@ -9,9 +9,9 @@ environment:
99
sdk: ^3.7.0
1010

1111
dependencies:
12-
analyzer: '>=8.1.1 <9.0.0'
12+
analyzer: ^8.1.1
1313
async: ^2.10.0
14-
build: ^3.0.0
14+
build: '>=3.0.0 <5.0.0'
1515
dart_style: ^3.0.0
1616
glob: ^2.0.0
1717
path: ^1.9.0

source_gen/test/generator_for_annotation_test.dart

Lines changed: 22 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@
66
@Timeout.factor(3)
77
library;
88

9-
import 'package:analyzer/dart/analysis/utilities.dart';
10-
import 'package:analyzer/dart/ast/ast.dart';
119
import 'package:analyzer/dart/element/element.dart';
1210
import 'package:build/build.dart';
1311
import 'package:build_test/build_test.dart';
@@ -104,32 +102,36 @@ $dartFormatWidth
104102
final builder = LibraryBuilder(
105103
_StubGenerator<Deprecated>('Deprecated', elementBehavior: (_) => null),
106104
);
107-
final input = AssetId('a', 'lib/a.dart');
108-
final assets = {
109-
input: '''
105+
final result = await testBuilder(builder, {
106+
'a|lib/a.dart': '''
110107
@Deprecated()
111108
@deprecated
112109
@override
113110
@pragma('')
114111
main() {}''',
115-
};
116-
117-
final readerWriter =
118-
TestReaderWriter()..testing.writeString(input, assets[input]!);
112+
});
119113

120-
final resolver = _TestingResolver(assets);
114+
expect(result.readerWriter.testing.resolverEntrypointsTracked, isEmpty);
115+
});
121116

122-
await runBuilder(
123-
builder,
124-
[input],
125-
readerWriter,
126-
readerWriter,
127-
_FixedResolvers(resolver),
128-
);
117+
test(
118+
'Does resolve the library if there is an interesting top level annotation',
119+
() async {
120+
final builder = LibraryBuilder(
121+
_StubGenerator<Deprecated>('Deprecated', elementBehavior: (_) => null),
122+
);
123+
final result = await testBuilder(builder, {
124+
'a|lib/a.dart': '''
125+
@override
126+
@someInterestingAnnotation
127+
main() {}''',
128+
});
129129

130-
expect(resolver.parsedUnits, {input});
131-
expect(resolver.resolvedLibs, isEmpty);
132-
});
130+
expect(result.readerWriter.testing.resolverEntrypointsTracked, {
131+
AssetId('a', 'lib/a.dart'),
132+
});
133+
},
134+
);
133135

134136
test('applies to annotated libraries', () async {
135137
final builder = LibraryBuilder(
@@ -308,54 +310,3 @@ const _inputMap = {
308310
final baz = 'baz';
309311
''',
310312
};
311-
312-
class _TestingResolver implements ReleasableResolver {
313-
final Map<AssetId, String> assets;
314-
final parsedUnits = <AssetId>{};
315-
final resolvedLibs = <AssetId>{};
316-
317-
_TestingResolver(this.assets);
318-
319-
@override
320-
Future<CompilationUnit> compilationUnitFor(
321-
AssetId assetId, {
322-
bool allowSyntaxErrors = false,
323-
}) async {
324-
parsedUnits.add(assetId);
325-
return parseString(content: assets[assetId]!).unit;
326-
}
327-
328-
@override
329-
Future<bool> isLibrary(AssetId assetId) async {
330-
final unit = await compilationUnitFor(assetId);
331-
return unit.directives.every((d) => d is! PartOfDirective);
332-
}
333-
334-
@override
335-
Future<LibraryElement> libraryFor(
336-
AssetId assetId, {
337-
bool allowSyntaxErrors = false,
338-
}) async {
339-
resolvedLibs.add(assetId);
340-
throw StateError('This method intentionally throws');
341-
}
342-
343-
@override
344-
void release() {}
345-
346-
@override
347-
void noSuchMethod(_) => throw UnimplementedError();
348-
}
349-
350-
class _FixedResolvers implements Resolvers {
351-
final ReleasableResolver _resolver;
352-
353-
_FixedResolvers(this._resolver);
354-
355-
@override
356-
Future<ReleasableResolver> get(BuildStep buildStep) =>
357-
Future.value(_resolver);
358-
359-
@override
360-
void reset() {}
361-
}

0 commit comments

Comments
 (0)