Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 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 <9.0.0'
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
analyzer: '>=8.1.1 <9.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
4 changes: 2 additions & 2 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 @@ -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
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