Skip to content

Commit

Permalink
Merge pull request #74 from davidmorgan/fix-warnings
Browse files Browse the repository at this point in the history
Fix analyzer issues and generator crash.
  • Loading branch information
davidmorgan authored Nov 29, 2016
2 parents 6138042 + 0d6e6e3 commit ffdc059
Show file tree
Hide file tree
Showing 14 changed files with 66 additions and 32 deletions.
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
# Changelog

## 0.4.1

- Fix some analyzer hints.
- Fix exception from serializer generator if builder field is incorrect.

## 0.4.0

- Add benchmark for updating deeply nested data structures.
Expand Down
19 changes: 9 additions & 10 deletions benchmark/lib/benchmark.dart
Original file line number Diff line number Diff line change
Expand Up @@ -21,16 +21,15 @@ void benchmarkNestedRebuilds() {
for (var depth = 0; depth != 10; ++depth) {
final value = new Node((b) => _buildNested(b, depth));

_benchmark('nested rebuild $depth',
() {
final topBuilder = value.toBuilder();
var leafBuilder = topBuilder;
for (int i = 0; i != depth; ++i) {
leafBuilder = leafBuilder.left;
}
leafBuilder.label = 'updatedLeaf';
topBuilder.build();
});
_benchmark('nested rebuild $depth', () {
final topBuilder = value.toBuilder();
var leafBuilder = topBuilder;
for (int i = 0; i != depth; ++i) {
leafBuilder = leafBuilder.left;
}
leafBuilder.label = 'updatedLeaf';
topBuilder.build();
});
}
}

Expand Down
10 changes: 7 additions & 3 deletions benchmark/pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: benchmark
version: 0.4.0
version: 0.4.1
description: >
Benchmark, not for publishing.
authors:
Expand All @@ -12,11 +12,15 @@ environment:
dependencies:
browser: any
built_collection: '^1.0.0'
built_value: '^0.4.0'
# built_value: '^0.4.1'
built_value:
path: ../built_value

dev_dependencies:
build: '^0.4.0'
built_value_generator: '^0.4.0'
# built_value_generator: '^0.4.1'
built_value_generator:
path: ../built_value_generator
source_gen: '>=0.5.0+03 <0.6.0'
quiver: '>=0.21.0 <0.24.0'
test: any
2 changes: 1 addition & 1 deletion built_value/pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: built_value
version: 0.4.0
version: 0.4.1
description: >
Value types with builders, Dart classes as enums, and serialization.
This library is the runtime dependency.
Expand Down
1 change: 0 additions & 1 deletion built_value_generator/lib/src/enum_source_class.dart
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import 'package:built_collection/built_collection.dart';
import 'package:built_value/built_value.dart';
import 'package:built_value_generator/src/enum_source_field.dart';
import 'package:quiver/iterables.dart';
import 'package:meta/meta.dart';

part 'enum_source_class.g.dart';

Expand Down
1 change: 0 additions & 1 deletion built_value_generator/lib/src/enum_source_field.dart
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ library built_value_generator.enum_source_field;
import 'package:analyzer/dart/element/element.dart';
import 'package:built_collection/src/list.dart';
import 'package:built_value/built_value.dart';
import 'package:meta/meta.dart';

part 'enum_source_field.g.dart';

Expand Down
1 change: 0 additions & 1 deletion built_value_generator/lib/src/enum_source_library.dart
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import 'package:built_collection/built_collection.dart';
import 'package:built_value/built_value.dart';
import 'package:built_value_generator/src/enum_source_class.dart';
import 'package:built_value_generator/src/library_elements.dart';
import 'package:meta/meta.dart';
import 'package:quiver/iterables.dart';
import 'package:source_gen/source_gen.dart';

Expand Down
1 change: 0 additions & 1 deletion built_value_generator/lib/src/serializer_source_class.dart
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import 'package:analyzer/dart/element/element.dart';
import 'package:built_collection/built_collection.dart';
import 'package:built_value/built_value.dart';
import 'package:built_value_generator/src/serializer_source_field.dart';
import 'package:meta/meta.dart';

part 'serializer_source_class.g.dart';

Expand Down
12 changes: 8 additions & 4 deletions built_value_generator/lib/src/serializer_source_field.dart
Original file line number Diff line number Diff line change
Expand Up @@ -58,13 +58,17 @@ abstract class SerializerSourceField
result.name = fieldElement.displayName;
result.type = fieldElement.getter.returnType.displayName;

final builderFieldElementIsValid =
(builderFieldElement?.getter?.isAbstract ?? false) &&
!builderFieldElement.isStatic;

// If the builder is present, check it to determine whether a nested
// builder is needed. Otherwise, use the same logic as built_value when
// it decides whether to use a nested builder.
result.builderFieldUsesNestedBuilder = builderFieldElement == null
? _needsNestedBuilder(fieldElement.getter.returnType)
: fieldElement.getter.returnType.displayName !=
builderFieldElement.getter.returnType.displayName;
result.builderFieldUsesNestedBuilder = builderFieldElementIsValid
? fieldElement.getter.returnType.displayName !=
builderFieldElement.getter.returnType.displayName
: _needsNestedBuilder(fieldElement.getter.returnType);
}

return result.build();
Expand Down
1 change: 0 additions & 1 deletion built_value_generator/lib/src/value_source_field.dart
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import 'package:analyzer/dart/element/element.dart';
import 'package:analyzer/dart/element/type.dart';
import 'package:built_collection/built_collection.dart';
import 'package:built_value/built_value.dart';
import 'package:meta/meta.dart';

part 'value_source_field.g.dart';

Expand Down
8 changes: 5 additions & 3 deletions built_value_generator/pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: built_value_generator
version: 0.4.0
version: 0.4.1
description: >
Value types with builders, Dart classes as enums, and serialization.
This library is the dev dependency.
Expand All @@ -12,9 +12,11 @@ environment:

dependencies:
analyzer: '>=0.28.0 <0.29.0'
build: '^0.4.0'
build: '^0.4.1'
built_collection: '^1.0.0'
built_value: '^0.4.0'
# built_value: '^0.4.1'
built_value:
path: ../built_value
meta: '^1.0.4'
source_gen: '>=0.5.0+03 <0.6.0'
quiver: '>=0.21.0 <0.24.0'
Expand Down
17 changes: 17 additions & 0 deletions built_value_generator/test/serializer_generator_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -436,6 +436,23 @@ class _$TestEnumSerializer implements PrimitiveSerializer<TestEnum> {
}
'''));
});

test('does not crash for incorrect builder getter', () async {
expect(await generate(r'''
library value;
import 'package:test_support/test_support.dart';
abstract class Value implements Built<Value, ValueBuilder> {
static final Serializer<Value> serializer = _$serializer;
bool get aBool;
}
abstract class ValueBuilder implements Builder<Value, ValueBuilder> {
set aBool(bool aBool);
}
'''), contains('Serializer<Value>'));
});
});
}

Expand Down
10 changes: 7 additions & 3 deletions chat_example/pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: chat_example
version: 0.4.0
version: 0.4.1
description: >
Just an example, not for publishing.
authors:
Expand All @@ -11,12 +11,16 @@ environment:

dependencies:
built_collection: '^1.0.0'
built_value: '^0.4.0'
# built_value: '^0.4.1'
built_value:
path: ../built_value
package_resolver: ^1.0.0
route: '>=0.4.6'

dev_dependencies:
build: '^0.4.0'
built_value_generator: '^0.4.0'
# built_value_generator: '^0.4.1'
built_value_generator:
path: ../built_value_generator
source_gen: '>=0.5.0+03 <0.6.0'
test: any
10 changes: 7 additions & 3 deletions example/pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: example
version: 0.4.0
version: 0.4.1
description: >
Just an example, not for publishing.
authors:
Expand All @@ -12,11 +12,15 @@ environment:
dependencies:
meta: '^1.0.4'
built_collection: '^1.0.0'
built_value: '^0.4.0'
# built_value: '^0.4.1'
built_value:
path: ../built_value

dev_dependencies:
build: '^0.4.0'
built_value_generator: '^0.4.0'
# built_value_generator: '^0.4.1'
built_value_generator:
path: ../built_value_generator
source_gen: '>=0.5.0+03 <0.6.0'
quiver: '>=0.21.0 <0.24.0'
test: any

0 comments on commit ffdc059

Please sign in to comment.