Skip to content

Commit

Permalink
If dependencies is empty, add const (#2310)
Browse files Browse the repository at this point in the history
  • Loading branch information
K9i-0 committed Apr 7, 2023
1 parent a823388 commit 0fc89f6
Show file tree
Hide file tree
Showing 9 changed files with 223 additions and 45 deletions.
127 changes: 109 additions & 18 deletions examples/pub/lib/pub_repository.freezed.dart
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,9 @@ class __$$_PackageMetricsScoreCopyWithImpl<$Res>

/// @nodoc
@JsonSerializable()
class _$_PackageMetricsScore implements _PackageMetricsScore {
class _$_PackageMetricsScore
with DiagnosticableTreeMixin
implements _PackageMetricsScore {
_$_PackageMetricsScore(
{required this.grantedPoints,
required this.maxPoints,
Expand Down Expand Up @@ -179,10 +181,22 @@ class _$_PackageMetricsScore implements _PackageMetricsScore {
}

@override
String toString() {
String toString({DiagnosticLevel minLevel = DiagnosticLevel.info}) {
return 'PackageMetricsScore(grantedPoints: $grantedPoints, maxPoints: $maxPoints, likeCount: $likeCount, popularityScore: $popularityScore, tags: $tags)';
}

@override
void debugFillProperties(DiagnosticPropertiesBuilder properties) {
super.debugFillProperties(properties);
properties
..add(DiagnosticsProperty('type', 'PackageMetricsScore'))
..add(DiagnosticsProperty('grantedPoints', grantedPoints))
..add(DiagnosticsProperty('maxPoints', maxPoints))
..add(DiagnosticsProperty('likeCount', likeCount))
..add(DiagnosticsProperty('popularityScore', popularityScore))
..add(DiagnosticsProperty('tags', tags));
}

@override
bool operator ==(dynamic other) {
return identical(this, other) ||
Expand Down Expand Up @@ -344,7 +358,9 @@ class __$$_PackageMetricsResponseCopyWithImpl<$Res>

/// @nodoc
@JsonSerializable()
class _$_PackageMetricsResponse implements _PackageMetricsResponse {
class _$_PackageMetricsResponse
with DiagnosticableTreeMixin
implements _PackageMetricsResponse {
_$_PackageMetricsResponse({required this.score});

factory _$_PackageMetricsResponse.fromJson(Map<String, dynamic> json) =>
Expand All @@ -354,10 +370,18 @@ class _$_PackageMetricsResponse implements _PackageMetricsResponse {
final PackageMetricsScore score;

@override
String toString() {
String toString({DiagnosticLevel minLevel = DiagnosticLevel.info}) {
return 'PackageMetricsResponse(score: $score)';
}

@override
void debugFillProperties(DiagnosticPropertiesBuilder properties) {
super.debugFillProperties(properties);
properties
..add(DiagnosticsProperty('type', 'PackageMetricsResponse'))
..add(DiagnosticsProperty('score', score));
}

@override
bool operator ==(dynamic other) {
return identical(this, other) ||
Expand Down Expand Up @@ -493,7 +517,9 @@ class __$$_PackageDetailsCopyWithImpl<$Res>

/// @nodoc
@JsonSerializable()
class _$_PackageDetails implements _PackageDetails {
class _$_PackageDetails
with DiagnosticableTreeMixin
implements _PackageDetails {
_$_PackageDetails({required this.version, required this.pubspec});

factory _$_PackageDetails.fromJson(Map<String, dynamic> json) =>
Expand All @@ -505,10 +531,19 @@ class _$_PackageDetails implements _PackageDetails {
final Pubspec pubspec;

@override
String toString() {
String toString({DiagnosticLevel minLevel = DiagnosticLevel.info}) {
return 'PackageDetails(version: $version, pubspec: $pubspec)';
}

@override
void debugFillProperties(DiagnosticPropertiesBuilder properties) {
super.debugFillProperties(properties);
properties
..add(DiagnosticsProperty('type', 'PackageDetails'))
..add(DiagnosticsProperty('version', version))
..add(DiagnosticsProperty('pubspec', pubspec));
}

@override
bool operator ==(dynamic other) {
return identical(this, other) ||
Expand Down Expand Up @@ -656,7 +691,7 @@ class __$$_PackageCopyWithImpl<$Res>

/// @nodoc
@JsonSerializable()
class _$_Package implements _Package {
class _$_Package with DiagnosticableTreeMixin implements _Package {
_$_Package({required this.name, required this.latest});

factory _$_Package.fromJson(Map<String, dynamic> json) =>
Expand All @@ -668,10 +703,19 @@ class _$_Package implements _Package {
final PackageDetails latest;

@override
String toString() {
String toString({DiagnosticLevel minLevel = DiagnosticLevel.info}) {
return 'Package(name: $name, latest: $latest)';
}

@override
void debugFillProperties(DiagnosticPropertiesBuilder properties) {
super.debugFillProperties(properties);
properties
..add(DiagnosticsProperty('type', 'Package'))
..add(DiagnosticsProperty('name', name))
..add(DiagnosticsProperty('latest', latest));
}

@override
bool operator ==(dynamic other) {
return identical(this, other) ||
Expand Down Expand Up @@ -809,7 +853,7 @@ class __$$_LikedPackageCopyWithImpl<$Res>

/// @nodoc
@JsonSerializable()
class _$_LikedPackage implements _LikedPackage {
class _$_LikedPackage with DiagnosticableTreeMixin implements _LikedPackage {
_$_LikedPackage({required this.package, required this.liked});

factory _$_LikedPackage.fromJson(Map<String, dynamic> json) =>
Expand All @@ -821,10 +865,19 @@ class _$_LikedPackage implements _LikedPackage {
final bool liked;

@override
String toString() {
String toString({DiagnosticLevel minLevel = DiagnosticLevel.info}) {
return 'LikedPackage(package: $package, liked: $liked)';
}

@override
void debugFillProperties(DiagnosticPropertiesBuilder properties) {
super.debugFillProperties(properties);
properties
..add(DiagnosticsProperty('type', 'LikedPackage'))
..add(DiagnosticsProperty('package', package))
..add(DiagnosticsProperty('liked', liked));
}

@override
bool operator ==(dynamic other) {
return identical(this, other) ||
Expand Down Expand Up @@ -954,7 +1007,9 @@ class __$$_LikesPackagesResponseCopyWithImpl<$Res>

/// @nodoc
@JsonSerializable()
class _$_LikesPackagesResponse implements _LikesPackagesResponse {
class _$_LikesPackagesResponse
with DiagnosticableTreeMixin
implements _LikesPackagesResponse {
_$_LikesPackagesResponse({required final List<LikedPackage> likedPackages})
: _likedPackages = likedPackages;

Expand All @@ -970,10 +1025,18 @@ class _$_LikesPackagesResponse implements _LikesPackagesResponse {
}

@override
String toString() {
String toString({DiagnosticLevel minLevel = DiagnosticLevel.info}) {
return 'LikedPackagesResponse(likedPackages: $likedPackages)';
}

@override
void debugFillProperties(DiagnosticPropertiesBuilder properties) {
super.debugFillProperties(properties);
properties
..add(DiagnosticsProperty('type', 'LikedPackagesResponse'))
..add(DiagnosticsProperty('likedPackages', likedPackages));
}

@override
bool operator ==(dynamic other) {
return identical(this, other) ||
Expand Down Expand Up @@ -1101,7 +1164,9 @@ class __$$_PubPackagesResponseCopyWithImpl<$Res>

/// @nodoc
@JsonSerializable()
class _$_PubPackagesResponse implements _PubPackagesResponse {
class _$_PubPackagesResponse
with DiagnosticableTreeMixin
implements _PubPackagesResponse {
_$_PubPackagesResponse({required final List<Package> packages})
: _packages = packages;

Expand All @@ -1117,10 +1182,18 @@ class _$_PubPackagesResponse implements _PubPackagesResponse {
}

@override
String toString() {
String toString({DiagnosticLevel minLevel = DiagnosticLevel.info}) {
return 'PubPackagesResponse(packages: $packages)';
}

@override
void debugFillProperties(DiagnosticPropertiesBuilder properties) {
super.debugFillProperties(properties);
properties
..add(DiagnosticsProperty('type', 'PubPackagesResponse'))
..add(DiagnosticsProperty('packages', packages));
}

@override
bool operator ==(dynamic other) {
return identical(this, other) ||
Expand Down Expand Up @@ -1246,7 +1319,7 @@ class __$$_SearchPackageCopyWithImpl<$Res>

/// @nodoc
@JsonSerializable()
class _$_SearchPackage implements _SearchPackage {
class _$_SearchPackage with DiagnosticableTreeMixin implements _SearchPackage {
_$_SearchPackage({required this.package});

factory _$_SearchPackage.fromJson(Map<String, dynamic> json) =>
Expand All @@ -1256,10 +1329,18 @@ class _$_SearchPackage implements _SearchPackage {
final String package;

@override
String toString() {
String toString({DiagnosticLevel minLevel = DiagnosticLevel.info}) {
return 'SearchPackage(package: $package)';
}

@override
void debugFillProperties(DiagnosticPropertiesBuilder properties) {
super.debugFillProperties(properties);
properties
..add(DiagnosticsProperty('type', 'SearchPackage'))
..add(DiagnosticsProperty('package', package));
}

@override
bool operator ==(dynamic other) {
return identical(this, other) ||
Expand Down Expand Up @@ -1382,7 +1463,9 @@ class __$$_PubSearchResponseCopyWithImpl<$Res>

/// @nodoc
@JsonSerializable()
class _$_PubSearchResponse implements _PubSearchResponse {
class _$_PubSearchResponse
with DiagnosticableTreeMixin
implements _PubSearchResponse {
_$_PubSearchResponse({required final List<SearchPackage> packages})
: _packages = packages;

Expand All @@ -1398,10 +1481,18 @@ class _$_PubSearchResponse implements _PubSearchResponse {
}

@override
String toString() {
String toString({DiagnosticLevel minLevel = DiagnosticLevel.info}) {
return 'PubSearchResponse(packages: $packages)';
}

@override
void debugFillProperties(DiagnosticPropertiesBuilder properties) {
super.debugFillProperties(properties);
properties
..add(DiagnosticsProperty('type', 'PubSearchResponse'))
..add(DiagnosticsProperty('packages', packages));
}

@override
bool operator ==(dynamic other) {
return identical(this, other) ||
Expand Down
5 changes: 5 additions & 0 deletions packages/riverpod_generator/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
## Unreleased patch

- If a provider has an empty list of dependencies, the generated list is now `const`
(thanks to @K9i-0)

## 2.1.5 - 2023-04-06

- `riverpod_annotation` upgraded to `2.0.3`
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,9 @@ String? serializeDependencies(
) {
if (dependencies == null) return 'null';

final buffer = StringBuffer('<ProviderOrFamily>');
final buffer = StringBuffer(
'${dependencies.isEmpty ? 'const ' : ''}<ProviderOrFamily>',
);
// Use list vs set based on the number of dependencies to optimize "contains" call
if (dependencies.length < 4) {
buffer.write('[');
Expand Down
37 changes: 37 additions & 0 deletions packages/riverpod_generator/test/dependencies_test.dart
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import 'package:riverpod_annotation/riverpod_annotation.dart';
import 'package:test/test.dart';

import 'integration/dependencies.dart';
Expand Down Expand Up @@ -27,6 +28,16 @@ void main() {
);

expect(transitiveDependenciesProvider.dependencies, [providerProvider]);

expect(
emptyDependenciesStatelessProvider.dependencies,
same(const <ProviderOrFamily>[]),
);

expect(
emptyDependenciesStatefulProvider.dependencies,
same(const <ProviderOrFamily>[]),
);
});

test('Generates transitive dependencies', () {
Expand Down Expand Up @@ -62,6 +73,16 @@ void main() {
family2Provider,
],
);

expect(
emptyDependenciesStatelessProvider.allTransitiveDependencies,
same(const <ProviderOrFamily>[]),
);

expect(
emptyDependenciesStatefulProvider.allTransitiveDependencies,
same(const <ProviderOrFamily>[]),
);
});

test('Caches dependencies', () {
Expand All @@ -85,6 +106,18 @@ void main() {
transitiveDependenciesProvider.dependencies,
same(transitiveDependenciesProvider.dependencies),
);
expect(
smallTransitiveDependencyCountProvider.dependencies,
same(smallTransitiveDependencyCountProvider.dependencies),
);
expect(
emptyDependenciesStatelessProvider.dependencies,
same(emptyDependenciesStatelessProvider.dependencies),
);
expect(
emptyDependenciesStatefulProvider.dependencies,
same(emptyDependenciesStatefulProvider.dependencies),
);

expect(
provider3Provider.allTransitiveDependencies,
Expand All @@ -98,5 +131,9 @@ void main() {
transitiveDependenciesProvider.allTransitiveDependencies,
same(transitiveDependenciesProvider.allTransitiveDependencies),
);
expect(
smallTransitiveDependencyCountProvider.allTransitiveDependencies,
same(smallTransitiveDependencyCountProvider.allTransitiveDependencies),
);
});
}
Original file line number Diff line number Diff line change
Expand Up @@ -43,3 +43,12 @@ int transitiveDependencies(TransitiveDependenciesRef ref) => 0;

@Riverpod(dependencies: [dep, family, Dep2])
int smallTransitiveDependencyCount(SmallTransitiveDependencyCountRef ref) => 0;

@Riverpod(dependencies: [])
int emptyDependenciesStateless(EmptyDependenciesStatelessRef ref) => 0;

@Riverpod(dependencies: [])
class EmptyDependenciesStateful extends _$EmptyDependenciesStateful {
@override
int build() => 0;
}
Loading

0 comments on commit 0fc89f6

Please sign in to comment.