From eb0c253b12febe9179b02132226c7db1ebe94ac7 Mon Sep 17 00:00:00 2001 From: David Morgan Date: Tue, 2 Sep 2025 13:37:01 +0200 Subject: [PATCH 1/3] Restrict analyzer, allow build. --- example/pubspec.yaml | 2 +- source_gen/CHANGELOG.md | 5 +++++ source_gen/pubspec.yaml | 4 ++-- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/example/pubspec.yaml b/example/pubspec.yaml index 96ef2a39..e1f8233e 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -7,7 +7,7 @@ environment: dependencies: analyzer: '>=7.4.0 <9.0.0' - build: ^3.0.0 + build: '>=3.0.0 <5.0.0' source_gen: any dev_dependencies: diff --git a/source_gen/CHANGELOG.md b/source_gen/CHANGELOG.md index 2117ec4c..f187fa4e 100644 --- a/source_gen/CHANGELOG.md +++ b/source_gen/CHANGELOG.md @@ -1,3 +1,8 @@ +## 4.0.1 + +- Require `analyzer: '>=8.1.1 <9.0.0'`. +- Allow `build: '>=3.0.0 <5.0.0'`. + ## 4.0.0 - **Breaking Change**: remove `TypeChecker.fromRuntime`, use diff --git a/source_gen/pubspec.yaml b/source_gen/pubspec.yaml index 80610fa5..06e94643 100644 --- a/source_gen/pubspec.yaml +++ b/source_gen/pubspec.yaml @@ -1,5 +1,5 @@ name: source_gen -version: 4.0.0 +version: 4.0.1 description: >- Source code generation builders and utilities for the Dart build system repository: https://github.com/dart-lang/source_gen/tree/master/source_gen @@ -11,7 +11,7 @@ environment: dependencies: analyzer: '>=8.1.1 <9.0.0' async: ^2.10.0 - build: ^3.0.0 + build: '>=3.0.0 <5.0.0' dart_style: ^3.0.0 glob: ^2.0.0 path: ^1.9.0 From 46eb3d1bc45c745b5363144f820d7a06914da81f Mon Sep 17 00:00:00 2001 From: David Morgan Date: Tue, 2 Sep 2025 13:48:02 +0200 Subject: [PATCH 2/3] Fix test. --- example/pubspec.yaml | 2 +- .../test/generator_for_annotation_test.dart | 93 +++++-------------- 2 files changed, 23 insertions(+), 72 deletions(-) diff --git a/example/pubspec.yaml b/example/pubspec.yaml index e1f8233e..24d86a00 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -6,7 +6,7 @@ environment: sdk: ^3.7.0 dependencies: - analyzer: '>=7.4.0 <9.0.0' + analyzer: '>=8.1.1 <9.0.0' build: '>=3.0.0 <5.0.0' source_gen: any diff --git a/source_gen/test/generator_for_annotation_test.dart b/source_gen/test/generator_for_annotation_test.dart index 4a831776..d4fac909 100644 --- a/source_gen/test/generator_for_annotation_test.dart +++ b/source_gen/test/generator_for_annotation_test.dart @@ -6,8 +6,6 @@ @Timeout.factor(3) library; -import 'package:analyzer/dart/analysis/utilities.dart'; -import 'package:analyzer/dart/ast/ast.dart'; import 'package:analyzer/dart/element/element.dart'; import 'package:build/build.dart'; import 'package:build_test/build_test.dart'; @@ -104,32 +102,36 @@ $dartFormatWidth final builder = LibraryBuilder( _StubGenerator('Deprecated', elementBehavior: (_) => null), ); - final input = AssetId('a', 'lib/a.dart'); - final assets = { - input: ''' + final result = await testBuilder(builder, { + 'a|lib/a.dart': ''' @Deprecated() @deprecated @override @pragma('') main() {}''', - }; - - final readerWriter = - TestReaderWriter()..testing.writeString(input, assets[input]!); + }); - final resolver = _TestingResolver(assets); + expect(result.readerWriter.testing.resolverEntrypointsTracked, isEmpty); + }); - await runBuilder( - builder, - [input], - readerWriter, - readerWriter, - _FixedResolvers(resolver), - ); + test( + 'Does resolve the library if there is an interesting top level annotation', + () async { + final builder = LibraryBuilder( + _StubGenerator('Deprecated', elementBehavior: (_) => null), + ); + final result = await testBuilder(builder, { + 'a|lib/a.dart': ''' +@override +@someInterestingAnnotation +main() {}''', + }); - expect(resolver.parsedUnits, {input}); - expect(resolver.resolvedLibs, isEmpty); - }); + expect(result.readerWriter.testing.resolverEntrypointsTracked, { + AssetId('a', 'lib/a.dart'), + }); + }, + ); test('applies to annotated libraries', () async { final builder = LibraryBuilder( @@ -308,54 +310,3 @@ const _inputMap = { final baz = 'baz'; ''', }; - -class _TestingResolver implements ReleasableResolver { - final Map assets; - final parsedUnits = {}; - final resolvedLibs = {}; - - _TestingResolver(this.assets); - - @override - Future compilationUnitFor( - AssetId assetId, { - bool allowSyntaxErrors = false, - }) async { - parsedUnits.add(assetId); - return parseString(content: assets[assetId]!).unit; - } - - @override - Future isLibrary(AssetId assetId) async { - final unit = await compilationUnitFor(assetId); - return unit.directives.every((d) => d is! PartOfDirective); - } - - @override - Future libraryFor( - AssetId assetId, { - bool allowSyntaxErrors = false, - }) async { - resolvedLibs.add(assetId); - throw StateError('This method intentionally throws'); - } - - @override - void release() {} - - @override - void noSuchMethod(_) => throw UnimplementedError(); -} - -class _FixedResolvers implements Resolvers { - final ReleasableResolver _resolver; - - _FixedResolvers(this._resolver); - - @override - Future get(BuildStep buildStep) => - Future.value(_resolver); - - @override - void reset() {} -} From 9f150ac5e7c9068e2171ebc33c0a82a30f996029 Mon Sep 17 00:00:00 2001 From: David Morgan Date: Thu, 4 Sep 2025 08:56:16 +0200 Subject: [PATCH 3/3] Address review comments. --- example/pubspec.yaml | 2 +- source_gen/pubspec.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/example/pubspec.yaml b/example/pubspec.yaml index 24d86a00..9f104745 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -6,7 +6,7 @@ environment: sdk: ^3.7.0 dependencies: - analyzer: '>=8.1.1 <9.0.0' + analyzer: ^8.1.1 build: '>=3.0.0 <5.0.0' source_gen: any diff --git a/source_gen/pubspec.yaml b/source_gen/pubspec.yaml index 06e94643..f08f1689 100644 --- a/source_gen/pubspec.yaml +++ b/source_gen/pubspec.yaml @@ -9,7 +9,7 @@ environment: sdk: ^3.7.0 dependencies: - analyzer: '>=8.1.1 <9.0.0' + analyzer: ^8.1.1 async: ^2.10.0 build: '>=3.0.0 <5.0.0' dart_style: ^3.0.0