Skip to content

Commit e81d275

Browse files
🧹 Remove dead code in _enumFieldsMap (#194)
Refactor `_enumFieldsMap` and `enumValueMapFromType` in `build_cli/lib/src/enum_helpers.dart` to eliminate an unreachable `return null` and redundant null checks. - Changed `_enumFieldsMap` to return `Map<FieldElement, String>` (non-nullable) and use an explicit cast to `EnumElement` for the target type's element, as it's only called for enums. - Updated `enumValueMapFromType` to return `String` (non-nullable) and removed the now unnecessary null check. - Cleaned up the call site in `build_cli/lib/src/build_cli_generator.dart` to remove a redundant bang operator. Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
1 parent 0e03dad commit e81d275

2 files changed

Lines changed: 8 additions & 16 deletions

File tree

build_cli/lib/src/build_cli_generator.dart

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,9 +153,12 @@ ${element.name} $resultParserName(ArgResults result) =>''');
153153
'ArgParser $populateParserName(ArgParser parser$overrideArgs) => '
154154
'parser',
155155
);
156+
final enumTypes = <DartType>{};
156157
for (var f in fields.values) {
157158
if (f.type.isEnum) {
158-
yield enumValueMapFromType(f.type)!;
159+
if (enumTypes.add(f.type)) {
160+
yield enumValueMapFromType(f.type);
161+
}
159162
}
160163

161164
_parserOptionFor(buffer, f);

build_cli/lib/src/enum_helpers.dart

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,9 @@ import 'package:analyzer/dart/element/element.dart';
44
import 'package:analyzer/dart/element/type.dart';
55
import 'package:source_helper/source_helper.dart';
66

7-
String? enumValueMapFromType(DartType targetType) {
7+
String enumValueMapFromType(DartType targetType) {
88
final enumMap = _enumFieldsMap(targetType);
99

10-
if (enumMap == null) {
11-
return null;
12-
}
13-
1410
final items = enumMap.entries.map(
1511
(e) =>
1612
' ${targetType.element!.name}.${e.key.name}: '
@@ -24,16 +20,9 @@ String? enumValueMapFromType(DartType targetType) {
2420
String enumConstMapName(DartType targetType) =>
2521
'_\$${targetType.element!.name}EnumMapBuildCli';
2622

27-
/// If [targetType] is not an enum, `null` is returned.
28-
Map<FieldElement, String>? _enumFieldsMap(DartType targetType) {
29-
if (targetType is InterfaceType && targetType.element is EnumElement) {
30-
return Map<FieldElement, String>.fromEntries(
31-
targetType.element.fields
32-
.where((p) => p.isOriginDeclaration)
33-
.map((p) => MapEntry(p, p.name!)),
34-
);
35-
}
36-
return null;
23+
Map<FieldElement, String> _enumFieldsMap(DartType targetType) {
24+
final element = targetType.element as EnumElement;
25+
return {for (final p in element.constants) p: p.name!};
3726
}
3827

3928
const enumValueHelperFunctionName = r'_$enumValueHelper';

0 commit comments

Comments
 (0)