Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions example/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ environment:
sdk: ^3.7.0

dependencies:
analyzer: '>=7.4.0 <9.0.0'
build: ^3.0.0
analyzer: ^8.1.1
build: '>=3.0.0 <5.0.0'
source_gen: any

dev_dependencies:
Expand Down
5 changes: 5 additions & 0 deletions source_gen/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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
Expand Down
6 changes: 3 additions & 3 deletions source_gen/pubspec.yaml
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -9,9 +9,9 @@ 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
build: '>=3.0.0 <5.0.0'
dart_style: ^3.0.0
glob: ^2.0.0
path: ^1.9.0
Expand Down
93 changes: 22 additions & 71 deletions source_gen/test/generator_for_annotation_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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';
Expand Down Expand Up @@ -104,32 +102,36 @@ $dartFormatWidth
final builder = LibraryBuilder(
_StubGenerator<Deprecated>('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>('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(
Expand Down Expand Up @@ -308,54 +310,3 @@ const _inputMap = {
final baz = 'baz';
''',
};

class _TestingResolver implements ReleasableResolver {
final Map<AssetId, String> assets;
final parsedUnits = <AssetId>{};
final resolvedLibs = <AssetId>{};

_TestingResolver(this.assets);

@override
Future<CompilationUnit> compilationUnitFor(
AssetId assetId, {
bool allowSyntaxErrors = false,
}) async {
parsedUnits.add(assetId);
return parseString(content: assets[assetId]!).unit;
}

@override
Future<bool> isLibrary(AssetId assetId) async {
final unit = await compilationUnitFor(assetId);
return unit.directives.every((d) => d is! PartOfDirective);
}

@override
Future<LibraryElement> 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<ReleasableResolver> get(BuildStep buildStep) =>
Future.value(_resolver);

@override
void reset() {}
}
Loading