Skip to content

Commit 144573d

Browse files
committed
Merge pull request #27 from davidmorgan/update-source-gen
Upgrade to source_gen 0.5.0.
2 parents 1583889 + 46f1f89 commit 144573d

File tree

10 files changed

+65
-46
lines changed

10 files changed

+65
-46
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
# Changelog
22

3+
## 0.1.0
4+
5+
- Upgrade to source_gen 0.5.0.
6+
- Breaking change; see example for required changes to build.dart.
7+
38
## 0.0.6
49

510
- Move null checks to "build" method for compatibility with Strong Mode

built_value/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name: built_value
2-
version: 0.0.6
2+
version: 0.1.0
33
description: >
44
Value types with builders. This library is the runtime dependency.
55
authors:

built_value_generator/lib/built_value_generator.dart

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,19 @@
55
library built_value_generator;
66

77
import 'dart:async';
8+
9+
import 'package:analyzer/dart/element/element.dart';
10+
import 'package:build/build.dart';
811
import 'package:built_collection/built_collection.dart';
912
import 'package:quiver/iterables.dart' show concat;
10-
11-
import 'package:analyzer/src/generated/element.dart';
1213
import 'package:source_gen/source_gen.dart';
1314

1415
/// Generator for Built Values.
1516
///
1617
/// See <https://github.com/google/built_value.dart/tree/master/example>
1718
class BuiltValueGenerator extends Generator {
18-
Future<String> generate(Element element) async {
19+
@override
20+
Future<String> generate(Element element, BuildStep buildStep) async {
1921
if (element is! ClassElement) {
2022
return null;
2123
}
@@ -70,14 +72,17 @@ class BuiltValueGenerator extends Generator {
7072
result.add('Make class abstract');
7173
}
7274

73-
final expectedConstructor = '$name._();';
75+
final expectedConstructor = '$name._()';
7476
final constructors = classElement.constructors
7577
.where((constructor) => !constructor.isFactory);
7678
if (constructors.length != 1 ||
7779
constructors.single.isSynthetic ||
78-
constructors.single.computeNode().toSource() != expectedConstructor) {
79-
result
80-
.add('Make class have exactly one constructor: $expectedConstructor');
80+
!(constructors.single
81+
.computeNode()
82+
.toSource()
83+
.startsWith(expectedConstructor))) {
84+
result.add(
85+
'Make class have exactly one constructor: $expectedConstructor;');
8186
}
8287

8388
final expectedFactory =

built_value_generator/pubspec.yaml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name: built_value_generator
2-
version: 0.0.6
2+
version: 0.1.0
33
description: >
44
Value types with builders. This library is the dev dependency.
55
authors:
@@ -11,10 +11,12 @@ environment:
1111

1212
dependencies:
1313
analyzer: '>=0.27.1 <0.28.0'
14+
build: '^0.3.0'
1415
built_collection: '^1.0.0'
15-
built_value: '^0.0.6'
16-
source_gen: '>=0.4.3 <0.5.0'
16+
built_value: '^0.1.0'
17+
source_gen: '>=0.5.0 <0.6.0'
1718
quiver: '>=0.21.0 <0.22.0'
1819

1920
dev_dependencies:
21+
build_test: '^0.1.0'
2022
test: any

built_value_generator/test/built_value_generator_test.dart

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@
33
// license that can be found in the LICENSE file.
44

55
import 'dart:async';
6-
import 'dart:io';
76

7+
import 'package:build/build.dart';
8+
import 'package:build_test/build_test.dart';
89
import 'package:built_value_generator/built_value_generator.dart';
910
import 'package:source_gen/source_gen.dart';
1011
import 'package:test/test.dart';
@@ -225,24 +226,24 @@ abstract class ValueBuilder extends Builder<Value, ValueBuilder> {
225226

226227
// Test setup.
227228

228-
Future<String> generate(String source) async {
229-
final tempDir =
230-
Directory.systemTemp.createTempSync('built_value_generator.dart.');
231-
final packageDir = new Directory(tempDir.path + '/packages')..createSync();
232-
final builtValueDir = new Directory(packageDir.path + '/built_value')
233-
..createSync();
234-
final builtValueFile = new File(builtValueDir.path + '/built_value.dart')
235-
..createSync();
236-
builtValueFile.writeAsStringSync(builtValueSource);
229+
final String pkgName = 'pkg';
230+
final PackageGraph packageGraph =
231+
new PackageGraph.fromRoot(new PackageNode(pkgName, null, null, null));
232+
233+
final PhaseGroup phaseGroup = new PhaseGroup.singleAction(
234+
new GeneratorBuilder([new BuiltValueGenerator()]),
235+
new InputSet(pkgName, const ['lib/*.dart']));
237236

238-
final libDir = new Directory(tempDir.path + '/lib')..createSync();
239-
final sourceFile = new File(libDir.path + '/value.dart');
240-
sourceFile.writeAsStringSync(source);
237+
Future<String> generate(String source) async {
238+
final srcs = <String, String>{
239+
'built_value|lib/built_value.dart': builtValueSource,
240+
'$pkgName|lib/value.dart': source,
241+
};
241242

242-
await build([], [new BuiltValueGenerator()],
243-
projectPath: tempDir.path, librarySearchPaths: <String>['lib']);
244-
final outputFile = new File(libDir.path + '/value.g.dart');
245-
return outputFile.existsSync() ? outputFile.readAsStringSync() : '';
243+
final writer = new InMemoryAssetWriter();
244+
await testPhases(phaseGroup, srcs,
245+
packageGraph: packageGraph, writer: writer);
246+
return writer.assets[new AssetId(pkgName, 'lib/value.g.dart')]?.value;
246247
}
247248

248249
const String builtValueSource = r'''

example/lib/compound_value.g.dart

Lines changed: 0 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

example/lib/value.g.dart

Lines changed: 0 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

example/pubspec.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name: example
2-
version: 0.0.6
2+
version: 0.1.0
33
description: >
44
Just an example, not for publishing.
55
authors:
@@ -11,8 +11,8 @@ environment:
1111

1212
dependencies:
1313
built_collection: '^1.0.0'
14-
built_value: '^0.0.6'
14+
built_value: '^0.1.0'
1515

1616
dev_dependencies:
17-
built_value_generator: '^0.0.6'
17+
built_value_generator: '^0.1.0'
1818
test: any

example/tool/build.dart

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
// Copyright (c) 2015, Google Inc. Please see the AUTHORS file for details.
2+
// All rights reserved. Use of this source code is governed by a BSD-style
3+
// license that can be found in the LICENSE file.
4+
5+
import 'dart:async';
6+
7+
import 'package:build/build.dart';
8+
import 'package:built_value_generator/built_value_generator.dart';
9+
import 'package:source_gen/source_gen.dart';
10+
11+
/// Example of how to use source_gen with [BuiltValueGenerator].
12+
///
13+
/// Import the generators you want and pass them to [build] as shown,
14+
/// specifying which files in which packages you want to run against.
15+
Future main(List<String> args) async {
16+
await build(
17+
new PhaseGroup.singleAction(
18+
new GeneratorBuilder([new BuiltValueGenerator()]),
19+
new InputSet('example', const ['lib/*.dart'])),
20+
deleteFilesByDefault: true);
21+
}

example/tools/build.dart

Lines changed: 0 additions & 13 deletions
This file was deleted.

0 commit comments

Comments
 (0)