google / google/built_value.dart

non-instantiable Builders can't be used as Builder attributes

Open
#831 2 comments 0 reactions 1 assignee Claimed by @davidmorgan View on GitHub
p2 / bug
Dominant language
Dart
Stars
886
Forks
195
Avg merge
1d 11h
Merged PRs (30d)
4

Description

The following fails due to the `NamedBuilder named` attribute on the builder, probably because non-instantiable builders aren't really `Builders`:
```
[SEVERE] built_value_generator:built_value on lib/graphql/temp.dart:
Error in BuiltValueGenerator for abstract class Container implements Built.
Please make the following changes to use BuiltValue:

1. Make builder have exactly these fields: named
```

Source:
```dart
import 'package:meta/meta.dart';
import 'package:built_collection/built_collection.dart';
import 'package:built_value/built_value.dart';

part 'temp.g.dart';

@BuiltValue(instantiable: false)
abstract class Named {
@nullable
String get name;

Named rebuild(void Function(NamedBuilder) updates);
NamedBuilder toBuilder();
}

/// Exposes the name attribute of [Named]
abstract class Container implements Built {
Container._();
factory Container([void Function(ContainerBuilder) updates]) = _$Container;

Named get named;
}

abstract class ContainerBuilder
implements Builder {
factory ContainerBuilder() = _$ContainerBuilder;
ContainerBuilder._();

NamedBuilder named;
// Named named; // works just fine
}
```

relevant pubspec:
```yaml
dependencies:
built_collection: ^4.3.2
built_value: ^7.0.9
built_value_generator: ^7.0.9
build: ^1.2.2

dev_dependencies:
build_runner: ^1.7.4
build_test:
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.