From cfa5268af28e8bd78896c3673634d454b0c99377 Mon Sep 17 00:00:00 2001 From: Aleksey Kulikov Date: Tue, 12 Oct 2021 14:56:56 +0300 Subject: [PATCH] style: use "map/where" instead of "for" loop --- lib/src/bindings/checkout.dart | 26 +++---- lib/src/bindings/index.dart | 4 +- lib/src/bindings/merge.dart | 65 ++++++++++++------ lib/src/bindings/remote.dart | 16 ++--- lib/src/bindings/stash.dart | 6 +- lib/src/blame.dart | 3 +- lib/src/blob.dart | 6 +- lib/src/branch.dart | 7 +- lib/src/config.dart | 11 +-- lib/src/diff.dart | 60 ++++------------ lib/src/features.dart | 14 ++-- lib/src/index.dart | 8 +-- lib/src/note.dart | 15 ++-- lib/src/odb.dart | 9 +-- lib/src/patch.dart | 3 +- lib/src/rebase.dart | 11 +-- lib/src/repository.dart | 122 +++++++++++---------------------- lib/src/revparse.dart | 19 ++--- lib/src/revwalk.dart | 15 ++-- lib/src/submodule.dart | 34 ++------- lib/src/tree.dart | 24 ++----- test/diff_test.dart | 2 +- test/features_test.dart | 2 +- test/mailmap_test.dart | 10 +-- test/merge_test.dart | 6 +- test/packbuilder_test.dart | 4 +- test/repository_test.dart | 2 +- test/revwalk_test.dart | 12 ++-- 28 files changed, 193 insertions(+), 323 deletions(-) diff --git a/lib/src/bindings/checkout.dart b/lib/src/bindings/checkout.dart index 9ba90e4..a3353be 100644 --- a/lib/src/bindings/checkout.dart +++ b/lib/src/bindings/checkout.dart @@ -19,15 +19,18 @@ void head({ String? directory, List? paths, }) { - final initOpts = - initOptions(strategy: strategy, directory: directory, paths: paths); + final initOpts = initOptions( + strategy: strategy, + directory: directory, + paths: paths, + ); final optsC = initOpts[0]; final pathPointers = initOpts[1]; final strArray = initOpts[2]; final error = libgit2.git_checkout_head(repoPointer, optsC); - for (var p in pathPointers) { + for (final p in pathPointers) { calloc.free(p); } @@ -48,15 +51,18 @@ void index({ String? directory, List? paths, }) { - final initOpts = - initOptions(strategy: strategy, directory: directory, paths: paths); + final initOpts = initOptions( + strategy: strategy, + directory: directory, + paths: paths, + ); final optsC = initOpts[0]; final pathPointers = initOpts[1]; final strArray = initOpts[2]; final error = libgit2.git_checkout_index(repoPointer, nullptr, optsC); - for (var p in pathPointers) { + for (final p in pathPointers) { calloc.free(p); } @@ -90,7 +96,7 @@ void tree({ final error = libgit2.git_checkout_tree(repoPointer, treeishPointer, optsC); - for (var p in pathPointers) { + for (final p in pathPointers) { calloc.free(p); } @@ -128,9 +134,5 @@ List initOptions({ optsC.ref.paths.count = paths.length; } - var result = []; - result.add(optsC); - result.add(pathPointers); - result.add(strArray); - return result; + return [optsC, pathPointers, strArray]; } diff --git a/lib/src/bindings/index.dart b/lib/src/bindings/index.dart index 416540b..edd062e 100644 --- a/lib/src/bindings/index.dart +++ b/lib/src/bindings/index.dart @@ -230,7 +230,7 @@ void addAll({ ); calloc.free(pathspecC); - for (var p in pathPointers) { + for (final p in pathPointers) { calloc.free(p); } calloc.free(strArray); @@ -296,7 +296,7 @@ void removeAll({ ); calloc.free(pathspecC); - for (var p in pathPointers) { + for (final p in pathPointers) { calloc.free(p); } calloc.free(strArray); diff --git a/lib/src/bindings/merge.dart b/lib/src/bindings/merge.dart index 2a671d4..c067abe 100644 --- a/lib/src/bindings/merge.dart +++ b/lib/src/bindings/merge.dart @@ -66,14 +66,13 @@ void merge({ required Pointer> theirHeadsPointer, required int theirHeadsLen, }) { - final mergeOpts = calloc(sizeOf()); + final mergeOpts = calloc(); libgit2.git_merge_options_init(mergeOpts, GIT_MERGE_OPTIONS_VERSION); - final checkoutOpts = - calloc(sizeOf()); + final checkoutOpts = calloc(); libgit2.git_checkout_options_init(checkoutOpts, GIT_CHECKOUT_OPTIONS_VERSION); checkoutOpts.ref.checkout_strategy = - git_checkout_strategy_t.GIT_CHECKOUT_SAFE + + git_checkout_strategy_t.GIT_CHECKOUT_SAFE | git_checkout_strategy_t.GIT_CHECKOUT_RECREATE_MISSING; final error = libgit2.git_merge( @@ -131,24 +130,26 @@ Pointer mergeCommits({ required Pointer repoPointer, required Pointer ourCommitPointer, required Pointer theirCommitPointer, - required Map opts, + required int favor, + required int mergeFlags, + required int fileFlags, }) { final out = calloc>(); - final optsC = calloc(sizeOf()); - optsC.ref.file_favor = opts['favor']!; - optsC.ref.flags = opts['mergeFlags']!; - optsC.ref.file_flags = opts['fileFlags']!; - optsC.ref.version = GIT_MERGE_OPTIONS_VERSION; + final opts = _initMergeOptions( + favor: favor, + mergeFlags: mergeFlags, + fileFlags: fileFlags, + ); final error = libgit2.git_merge_commits( out, repoPointer, ourCommitPointer, theirCommitPointer, - optsC, + opts, ); - calloc.free(optsC); + calloc.free(opts); if (error < 0) { throw LibGit2Error(libgit2.git_error_last()); @@ -170,14 +171,16 @@ Pointer mergeTrees({ required Pointer ancestorTreePointer, required Pointer ourTreePointer, required Pointer theirTreePointer, - required Map opts, + required int favor, + required int mergeFlags, + required int fileFlags, }) { final out = calloc>(); - final optsC = calloc(sizeOf()); - optsC.ref.file_favor = opts['favor']!; - optsC.ref.flags = opts['mergeFlags']!; - optsC.ref.file_flags = opts['fileFlags']!; - optsC.ref.version = GIT_MERGE_OPTIONS_VERSION; + final opts = _initMergeOptions( + favor: favor, + mergeFlags: mergeFlags, + fileFlags: fileFlags, + ); final error = libgit2.git_merge_trees( out, @@ -185,10 +188,10 @@ Pointer mergeTrees({ ancestorTreePointer, ourTreePointer, theirTreePointer, - optsC, + opts, ); - calloc.free(optsC); + calloc.free(opts); if (error < 0) { throw LibGit2Error(libgit2.git_error_last()); @@ -215,3 +218,25 @@ void cherryPick({ throw LibGit2Error(libgit2.git_error_last()); } } + +Pointer _initMergeOptions({ + required int favor, + required int mergeFlags, + required int fileFlags, +}) { + final opts = calloc(); + final error = libgit2.git_merge_options_init( + opts, + GIT_MERGE_OPTIONS_VERSION, + ); + + if (error < 0) { + throw LibGit2Error(libgit2.git_error_last()); + } + + opts.ref.file_favor = favor; + opts.ref.flags = mergeFlags; + opts.ref.file_flags = fileFlags; + + return opts; +} diff --git a/lib/src/bindings/remote.dart b/lib/src/bindings/remote.dart index 9325968..61c6c8c 100644 --- a/lib/src/bindings/remote.dart +++ b/lib/src/bindings/remote.dart @@ -17,9 +17,8 @@ List list(Pointer repo) { if (error < 0) { throw LibGit2Error(libgit2.git_error_last()); } else { - final count = out.ref.count; var result = []; - for (var i = 0; i < count; i++) { + for (var i = 0; i < out.ref.count; i++) { result.add(out.ref.strings[i].cast().toDartString()); } calloc.free(out); @@ -151,9 +150,8 @@ List rename({ if (error < 0) { throw LibGit2Error(libgit2.git_error_last()); } else { - final count = out.ref.count; var result = []; - for (var i = 0; i < count; i++) { + for (var i = 0; i < out.ref.count; i++) { result.add(out.ref.strings[i].cast().toDartString()); } calloc.free(out); @@ -249,8 +247,7 @@ List fetchRefspecs(Pointer remote) { libgit2.git_remote_get_fetch_refspecs(out, remote); var result = []; - final count = out.ref.count; - for (var i = 0; i < count; i++) { + for (var i = 0; i < out.ref.count; i++) { result.add(out.ref.strings[i].cast().toDartString()); } calloc.free(out); @@ -263,8 +260,7 @@ List pushRefspecs(Pointer remote) { libgit2.git_remote_get_push_refspecs(out, remote); var result = []; - final count = out.ref.count; - for (var i = 0; i < count; i++) { + for (var i = 0; i < out.ref.count; i++) { result.add(out.ref.strings[i].cast().toDartString()); } calloc.free(out); @@ -462,7 +458,7 @@ void fetch({ reflogMessageC, ); - for (var p in refspecsPointers) { + for (final p in refspecsPointers) { calloc.free(p); } calloc.free(strArray); @@ -516,7 +512,7 @@ void push({ final error = libgit2.git_remote_push(remotePointer, refspecsC, opts); - for (var p in refspecsPointers) { + for (final p in refspecsPointers) { calloc.free(p); } calloc.free(strArray); diff --git a/lib/src/bindings/stash.dart b/lib/src/bindings/stash.dart index ad2dbaf..ad14e88 100644 --- a/lib/src/bindings/stash.dart +++ b/lib/src/bindings/stash.dart @@ -71,10 +71,9 @@ void apply({ throw LibGit2Error(libgit2.git_error_last()); } - for (var p in pathPointers) { + for (final p in pathPointers) { calloc.free(p); } - calloc.free(strArray); calloc.free(optsC); calloc.free(options); @@ -125,10 +124,9 @@ void pop({ throw LibGit2Error(libgit2.git_error_last()); } - for (var p in pathPointers) { + for (final p in pathPointers) { calloc.free(p); } - calloc.free(strArray); calloc.free(optsC); calloc.free(options); diff --git a/lib/src/blame.dart b/lib/src/blame.dart index 690a12a..21e1e99 100644 --- a/lib/src/blame.dart +++ b/lib/src/blame.dart @@ -46,8 +46,7 @@ class Blame with IterableMixin { }) { libgit2.git_libgit2_init(); - final int flagsInt = - flags.fold(0, (previousValue, e) => previousValue | e.value); + final int flagsInt = flags.fold(0, (acc, e) => acc | e.value); _blamePointer = bindings.file( repoPointer: repo.pointer, diff --git a/lib/src/blob.dart b/lib/src/blob.dart index 626b125..fc5e972 100644 --- a/lib/src/blob.dart +++ b/lib/src/blob.dart @@ -87,8 +87,7 @@ class Blob { int contextLines = 3, int interhunkLines = 0, }) { - final int flagsInt = - flags.fold(0, (previousValue, e) => previousValue | e.value); + final int flagsInt = flags.fold(0, (acc, e) => acc | e.value); final result = patch_bindings.fromBlobs( oldBlobPointer: _blobPointer, @@ -116,8 +115,7 @@ class Blob { int contextLines = 3, int interhunkLines = 0, }) { - final int flagsInt = - flags.fold(0, (previousValue, e) => previousValue | e.value); + final int flagsInt = flags.fold(0, (acc, e) => acc | e.value); final result = patch_bindings.fromBlobAndBuffer( oldBlobPointer: _blobPointer, diff --git a/lib/src/branch.dart b/lib/src/branch.dart index fb55cdb..6324e67 100644 --- a/lib/src/branch.dart +++ b/lib/src/branch.dart @@ -84,12 +84,7 @@ class Branch { flags: type.value, ); - final result = []; - for (var pointer in pointers) { - result.add(Branch(pointer)); - } - - return result; + return pointers.map((e) => Branch(e)).toList(); } /// Deletes an existing branch reference. diff --git a/lib/src/config.dart b/lib/src/config.dart index 9dbd795..e8bc532 100644 --- a/lib/src/config.dart +++ b/lib/src/config.dart @@ -196,14 +196,9 @@ class ConfigEntry { /// Returns which config file this was found in. GitConfigLevel get level { - late GitConfigLevel result; - for (var level in GitConfigLevel.values) { - if (_configEntryPointer.ref.level == level.value) { - result = level; - break; - } - } - return result; + return GitConfigLevel.values.singleWhere( + (e) => _configEntryPointer.ref.level == e.value, + ); } /// Releases memory allocated for config entry object. diff --git a/lib/src/diff.dart b/lib/src/diff.dart index b8e9382..8944fbe 100644 --- a/lib/src/diff.dart +++ b/lib/src/diff.dart @@ -96,8 +96,7 @@ class Diff { int breakRewriteThreshold = 60, int renameLimit = 200, }) { - final int flagsInt = - flags.fold(0, (previousValue, e) => previousValue | e.value); + final int flagsInt = flags.fold(0, (acc, e) => acc | e.value); bindings.findSimilar( diffPointer: _diffPointer, @@ -136,14 +135,9 @@ class DiffDelta { /// Returns type of change. GitDelta get status { - late final GitDelta status; - for (var type in GitDelta.values) { - if (_diffDeltaPointer.ref.status == type.value) { - status = type; - break; - } - } - return status; + return GitDelta.values.singleWhere( + (e) => _diffDeltaPointer.ref.status == e.value, + ); } /// Looks up the single character abbreviation for a delta status code. @@ -156,14 +150,9 @@ class DiffDelta { /// Returns flags for the delta object. Set get flags { - var flags = {}; - for (var flag in GitDiffFlag.values) { - if (_diffDeltaPointer.ref.flags & flag.value == flag.value) { - flags.add(flag); - } - } - - return flags; + return GitDiffFlag.values + .where((e) => _diffDeltaPointer.ref.flags & e.value == e.value) + .toSet(); } /// Returns a similarity score for renamed or copied files between 0 and 100 @@ -206,26 +195,14 @@ class DiffFile { /// Returns flags for the diff file object. Set get flags { - var flags = {}; - for (var flag in GitDiffFlag.values) { - if (_diffFile.flags & flag.value == flag.value) { - flags.add(flag); - } - } - - return flags; + return GitDiffFlag.values + .where((e) => _diffFile.flags & e.value == e.value) + .toSet(); } /// Returns one of the [GitFilemode] values. GitFilemode get mode { - late final GitFilemode result; - for (var mode in GitFilemode.values) { - if (_diffFile.mode == mode.value) { - result = mode; - break; - } - } - return result; + return GitFilemode.values.singleWhere((e) => _diffFile.mode == e.value); } } @@ -252,8 +229,7 @@ class DiffStats { /// /// Throws a [LibGit2Error] if error occured. String print({required Set format, required int width}) { - final int formatInt = - format.fold(0, (previousValue, e) => previousValue | e.value); + final int formatInt = format.fold(0, (acc, e) => acc | e.value); return bindings.statsPrint( statsPointer: _diffStatsPointer, @@ -335,15 +311,9 @@ class DiffLine { /// Returns type of the line. GitDiffLine get origin { - final originInt = _diffLinePointer.ref.origin; - late final GitDiffLine result; - for (var type in GitDiffLine.values) { - if (originInt == type.value) { - result = type; - break; - } - } - return result; + return GitDiffLine.values.singleWhere( + (e) => _diffLinePointer.ref.origin == e.value, + ); } /// Returns line number in old file or -1 for added line. diff --git a/lib/src/features.dart b/lib/src/features.dart index bf3502e..6616cc4 100644 --- a/lib/src/features.dart +++ b/lib/src/features.dart @@ -3,16 +3,10 @@ import 'util.dart'; class Features { /// Returns list of compile time options for libgit2. - static List get list { - var result = []; + static Set get list { final featuresInt = libgit2.git_libgit2_features(); - - for (var feature in GitFeature.values) { - if (featuresInt & feature.value == feature.value) { - result.add(feature); - } - } - - return result; + return GitFeature.values + .where((e) => featuresInt & e.value == e.value) + .toSet(); } } diff --git a/lib/src/index.dart b/lib/src/index.dart index bbeaa9a..7aace5c 100644 --- a/lib/src/index.dart +++ b/lib/src/index.dart @@ -55,7 +55,7 @@ class Index with IterableMixin { final conflicts = bindings.conflictList(_indexPointer); var result = {}; - for (var entry in conflicts) { + for (final entry in conflicts) { IndexEntry? ancestor, our, their; String path; @@ -190,8 +190,7 @@ class Index with IterableMixin { int interhunkLines = 0, }) { final repo = bindings.owner(_indexPointer); - final int flagsInt = - flags.fold(0, (previousValue, e) => previousValue | e.value); + final int flagsInt = flags.fold(0, (acc, e) => acc | e.value); return Diff(diff_bindings.indexToWorkdir( repoPointer: repo, @@ -212,8 +211,7 @@ class Index with IterableMixin { int interhunkLines = 0, }) { final repo = bindings.owner(_indexPointer); - final int flagsInt = - flags.fold(0, (previousValue, e) => previousValue | e.value); + final int flagsInt = flags.fold(0, (acc, e) => acc | e.value); return Diff(diff_bindings.treeToIndex( repoPointer: repo, diff --git a/lib/src/note.dart b/lib/src/note.dart index 2903b18..b424d76 100644 --- a/lib/src/note.dart +++ b/lib/src/note.dart @@ -82,15 +82,12 @@ class Note { /// Throws a [LibGit2Error] if error occured. static List list(Repository repo) { final notesPointers = bindings.list(repo.pointer); - var result = []; - for (var note in notesPointers) { - result.add(Note( - note['note'] as Pointer, - note['annotatedId'] as Pointer, - )); - } - - return result; + return notesPointers + .map((e) => Note( + e['note'] as Pointer, + e['annotatedId'] as Pointer, + )) + .toList(); } /// Returns the note object's [Oid]. diff --git a/lib/src/odb.dart b/lib/src/odb.dart index ac369c9..938c92c 100644 --- a/lib/src/odb.dart +++ b/lib/src/odb.dart @@ -109,15 +109,8 @@ class OdbObject { /// Returns the type of an ODB object. GitObject get type { - late GitObject result; final typeInt = bindings.objectType(_odbObjectPointer); - for (var type in GitObject.values) { - if (typeInt == type.value) { - result = type; - break; - } - } - return result; + return GitObject.values.singleWhere((e) => typeInt == e.value); } /// Returns the data of an ODB object. diff --git a/lib/src/patch.dart b/lib/src/patch.dart index 0af8557..ace149e 100644 --- a/lib/src/patch.dart +++ b/lib/src/patch.dart @@ -31,8 +31,7 @@ class Patch { }) { libgit2.git_libgit2_init(); - final int flagsInt = - flags.fold(0, (previousValue, e) => previousValue | e.value); + final int flagsInt = flags.fold(0, (acc, e) => acc | e.value); var result = {}; if (a is Blob || a == null) { diff --git a/lib/src/rebase.dart b/lib/src/rebase.dart index 9983ab1..7c2c795 100644 --- a/lib/src/rebase.dart +++ b/lib/src/rebase.dart @@ -121,14 +121,9 @@ class RebaseOperation { /// Returns the type of rebase operation. GitRebaseOperation get type { - late final GitRebaseOperation result; - for (var operation in GitRebaseOperation.values) { - if (_rebaseOperationPointer.ref.type == operation.value) { - result = operation; - break; - } - } - return result; + return GitRebaseOperation.values.singleWhere( + (e) => _rebaseOperationPointer.ref.type == e.value, + ); } /// The commit ID being cherry-picked. This will be populated for diff --git a/lib/src/repository.dart b/lib/src/repository.dart index 6310d99..a22d0f1 100644 --- a/lib/src/repository.dart +++ b/lib/src/repository.dart @@ -42,7 +42,7 @@ class Repository { }) { libgit2.git_libgit2_init(); - int flagsInt = flags.fold(0, (previousValue, e) => previousValue | e.value); + int flagsInt = flags.fold(0, (acc, e) => acc | e.value); if (bare) { flagsInt |= GitRepositoryInit.bare.value; @@ -717,15 +717,12 @@ class Repository { .toDartString(); } - var statuses = {}; // Skipping GitStatus.current because entry that is in the list can't be without changes // but `&` on `0` value falsly adds it to the set of flags - for (var status in GitStatus.values.skip(1)) { - if (entry.ref.status & status.value == status.value) { - statuses.add(status); - } - } - result[path] = statuses; + result[path] = GitStatus.values + .skip(1) + .where((e) => entry.ref.status & e.value == e.value) + .toSet(); } status_bindings.listFree(list); @@ -747,19 +744,15 @@ class Repository { path: path, ); - var statuses = {}; if (statusInt == GitStatus.current.value) { - statuses.add(GitStatus.current); + return {GitStatus.current}; } else { // Skipping GitStatus.current because `&` on `0` value falsly adds it to the set of flags - for (var status in GitStatus.values.skip(1)) { - if (statusInt & status.value == status.value) { - statuses.add(status); - } - } + return GitStatus.values + .skip(1) + .where((e) => statusInt & e.value == e.value) + .toSet(); } - - return statuses; } /// Finds a merge base between two commits. @@ -782,7 +775,7 @@ class Repository { /// respectively. /// /// Throws a [LibGit2Error] if error occured. - List> mergeAnalysis({ + List mergeAnalysis({ required Oid theirHead, String ourRef = 'HEAD', }) { @@ -791,29 +784,24 @@ class Repository { repoPointer: _repoPointer, oidPointer: theirHead.pointer, ); - - var result = >[]; - var analysisSet = {}; final analysisInt = merge_bindings.analysis( repoPointer: _repoPointer, ourRefPointer: ref.pointer, theirHeadPointer: head, theirHeadsLen: 1, ); - for (var analysis in GitMergeAnalysis.values) { - if (analysisInt[0] & analysis.value == analysis.value) { - analysisSet.add(analysis); - } - } - result.add(analysisSet); - result.add( - {GitMergePreference.values.singleWhere((e) => analysisInt[1] == e.value)}, + + final analysisSet = GitMergeAnalysis.values + .where((e) => analysisInt[0] & e.value == e.value) + .toSet(); + final mergePreference = GitMergePreference.values.singleWhere( + (e) => analysisInt[1] == e.value, ); commit_bindings.annotatedFree(head.value); ref.free(); - return result; + return [analysisSet, mergePreference]; } /// Merges the given commit(s) oid into HEAD, writing the results into the working directory. @@ -870,21 +858,14 @@ class Repository { Set mergeFlags = const {GitMergeFlag.findRenames}, Set fileFlags = const {GitMergeFileFlag.defaults}, }) { - var opts = {}; - opts['favor'] = favor.value; - opts['mergeFlags'] = - mergeFlags.fold(0, (previousValue, e) => previousValue | e.value); - opts['fileFlags'] = - fileFlags.fold(0, (previousValue, e) => previousValue | e.value); - - final result = merge_bindings.mergeCommits( + return Index(merge_bindings.mergeCommits( repoPointer: _repoPointer, ourCommitPointer: ourCommit.pointer, theirCommitPointer: theirCommit.pointer, - opts: opts, - ); - - return Index(result); + favor: favor.value, + mergeFlags: mergeFlags.fold(0, (acc, e) => acc | e.value), + fileFlags: fileFlags.fold(0, (acc, e) => acc | e.value), + )); } /// Reverts the given commit against the given "our" commit, producing an index that @@ -924,26 +905,15 @@ class Repository { List mergeFlags = const [GitMergeFlag.findRenames], List fileFlags = const [GitMergeFileFlag.defaults], }) { - var opts = {}; - opts['favor'] = favor.value; - opts['mergeFlags'] = mergeFlags.fold( - 0, - (previousValue, element) => previousValue + element.value, - ); - opts['fileFlags'] = fileFlags.fold( - 0, - (previousValue, element) => previousValue + element.value, - ); - - final result = merge_bindings.mergeTrees( + return Index(merge_bindings.mergeTrees( repoPointer: _repoPointer, ancestorTreePointer: ancestorTree.pointer, ourTreePointer: ourTree.pointer, theirTreePointer: theirTree.pointer, - opts: opts, - ); - - return Index(result); + favor: favor.value, + mergeFlags: mergeFlags.fold(0, (acc, element) => acc | element.value), + fileFlags: fileFlags.fold(0, (acc, element) => acc | element.value), + )); } /// Cherry-picks the provided commit, producing changes in the index and working directory. @@ -980,8 +950,7 @@ class Repository { String? directory, List? paths, }) { - final int strat = - strategy.fold(0, (previousValue, e) => previousValue | e.value); + final int strat = strategy.fold(0, (acc, e) => acc | e.value); if (refName == null) { checkout_bindings.index( @@ -1057,8 +1026,7 @@ class Repository { int contextLines = 3, int interhunkLines = 0, }) { - final int flagsInt = - flags.fold(0, (previousValue, e) => previousValue | e.value); + final int flagsInt = flags.fold(0, (acc, e) => acc | e.value); if (a is Tree && b is Tree) { return Diff(diff_bindings.treeToTree( @@ -1173,15 +1141,11 @@ class Repository { String? directory, List? paths, }) { - int flags = reinstateIndex ? GitStashApply.reinstateIndex.value : 0; - final int strat = - strategy.fold(0, (previousValue, e) => previousValue | e.value); - stash_bindings.apply( repoPointer: _repoPointer, index: index, - flags: flags, - strategy: strat, + flags: reinstateIndex ? GitStashApply.reinstateIndex.value : 0, + strategy: strategy.fold(0, (acc, e) => acc | e.value), directory: directory, paths: paths, ); @@ -1210,15 +1174,11 @@ class Repository { String? directory, List? paths, }) { - int flags = reinstateIndex ? GitStashApply.reinstateIndex.value : 0; - final int strat = - strategy.fold(0, (previousValue, e) => previousValue | e.value); - stash_bindings.pop( repoPointer: _repoPointer, index: index, - flags: flags, - strategy: strat, + flags: reinstateIndex ? GitStashApply.reinstateIndex.value : 0, + strategy: strategy.fold(0, (acc, e) => acc | e.value), directory: directory, paths: paths, ); @@ -1292,12 +1252,9 @@ class Repository { required String name, Set flags = const {GitAttributeCheck.fileThenIndex}, }) { - final int flagsInt = - flags.fold(0, (previousValue, e) => previousValue | e.value); - return attr_bindings.getAttribute( repoPointer: _repoPointer, - flags: flagsInt, + flags: flags.fold(0, (acc, e) => acc | e.value), path: path, name: name, ); @@ -1532,10 +1489,13 @@ class Repository { /// let libgit2 to autodetect number of CPUs. /// /// Throws a [LibGit2Error] if error occured. - int pack( - {String? path, void Function(PackBuilder)? packDelegate, int? threads}) { + int pack({ + String? path, + void Function(PackBuilder)? packDelegate, + int? threads, + }) { void packAll(PackBuilder packbuilder) { - for (var object in odb.objects) { + for (final object in odb.objects) { packbuilder.add(object); } } diff --git a/lib/src/revparse.dart b/lib/src/revparse.dart index 591e229..4002d67 100644 --- a/lib/src/revparse.dart +++ b/lib/src/revparse.dart @@ -78,22 +78,15 @@ class RevSpec { /// The right element of the revspec; must be freed by the user. Commit? get to { - if (_revSpecPointer.ref.to == nullptr) { - return null; - } else { - return Commit(_revSpecPointer.ref.to.cast()); - } + return _revSpecPointer.ref.to == nullptr + ? null + : Commit(_revSpecPointer.ref.to.cast()); } /// The intent of the revspec. Set get flags { - final flagInt = _revSpecPointer.ref.flags; - var flags = {}; - for (var flag in GitRevSpec.values) { - if (flagInt & flag.value == flag.value) { - flags.add(flag); - } - } - return flags; + return GitRevSpec.values + .where((e) => _revSpecPointer.ref.flags & e.value == e.value) + .toSet(); } } diff --git a/lib/src/revwalk.dart b/lib/src/revwalk.dart index f9fe5cb..4ab5f69 100644 --- a/lib/src/revwalk.dart +++ b/lib/src/revwalk.dart @@ -18,17 +18,13 @@ class RevWalk { /// Default sorting is reverse chronological order (default in git). List walk() { final repoPointer = bindings.repository(_revWalkPointer); - var result = []; - final commits = bindings.walk( + final pointers = bindings.walk( repoPointer: repoPointer, walkerPointer: _revWalkPointer, ); - for (var commit in commits) { - result.add(Commit(commit)); - } - return result; + return pointers.map((e) => Commit(e)).toList(); } /// Changes the sorting mode when iterating through the repository's contents. @@ -37,11 +33,10 @@ class RevWalk { /// /// Throws a [LibGit2Error] if error occured. void sorting(Set sorting) { - final int sort = sorting.fold( - 0, - (previousValue, e) => previousValue | e.value, + bindings.sorting( + walkerPointer: _revWalkPointer, + sortMode: sorting.fold(0, (acc, e) => acc | e.value), ); - bindings.sorting(walkerPointer: _revWalkPointer, sortMode: sort); } /// Adds a new root for the traversal. diff --git a/lib/src/submodule.dart b/lib/src/submodule.dart index 4bdf49c..78a6811 100644 --- a/lib/src/submodule.dart +++ b/lib/src/submodule.dart @@ -141,20 +141,16 @@ class Submodule { GitSubmoduleIgnore ignore = GitSubmoduleIgnore.unspecified, }) { final repo = bindings.owner(_submodulePointer); + final resultInt = bindings.status( repoPointer: repo, name: name, ignore: ignore.value, ); - var result = {}; - for (var status in GitSubmoduleStatus.values) { - if (resultInt & status.value == status.value) { - result.add(status); - } - } - - return result; + return GitSubmoduleStatus.values + .where((e) => resultInt & e.value == e.value) + .toSet(); } /// Copies submodule remote info into submodule repo. @@ -242,17 +238,8 @@ class Submodule { /// Returns the ignore rule that will be used for the submodule. GitSubmoduleIgnore get ignore { - late GitSubmoduleIgnore result; final ruleInt = bindings.ignore(_submodulePointer); - - for (var rule in GitSubmoduleIgnore.values) { - if (ruleInt == rule.value) { - result = rule; - break; - } - } - - return result; + return GitSubmoduleIgnore.values.singleWhere((e) => ruleInt == e.value); } /// Sets the ignore rule for the submodule in the configuration. @@ -269,17 +256,8 @@ class Submodule { /// /// This value controls the behavior of the `git submodule update` command. GitSubmoduleUpdate get updateRule { - late GitSubmoduleUpdate result; final ruleInt = bindings.updateRule(_submodulePointer); - - for (var rule in GitSubmoduleUpdate.values) { - if (ruleInt == rule.value) { - result = rule; - break; - } - } - - return result; + return GitSubmoduleUpdate.values.singleWhere((e) => ruleInt == e.value); } /// Sets the update rule for the submodule in the configuration. diff --git a/lib/src/tree.dart b/lib/src/tree.dart index a64893a..c5bbb16 100644 --- a/lib/src/tree.dart +++ b/lib/src/tree.dart @@ -83,14 +83,10 @@ class Tree { int contextLines = 3, int interhunkLines = 0, }) { - final repo = bindings.owner(_treePointer); - final int flagsInt = - flags.fold(0, (previousValue, e) => previousValue | e.value); - return Diff(diff_bindings.treeToWorkdir( - repoPointer: repo, + repoPointer: bindings.owner(_treePointer), treePointer: _treePointer, - flags: flagsInt, + flags: flags.fold(0, (acc, e) => acc | e.value), contextLines: contextLines, interhunkLines: interhunkLines, )); @@ -105,15 +101,11 @@ class Tree { int contextLines = 3, int interhunkLines = 0, }) { - final repo = bindings.owner(_treePointer); - final int flagsInt = - flags.fold(0, (previousValue, e) => previousValue | e.value); - return Diff(diff_bindings.treeToIndex( - repoPointer: repo, + repoPointer: bindings.owner(_treePointer), treePointer: _treePointer, indexPointer: index.pointer, - flags: flagsInt, + flags: flags.fold(0, (acc, e) => acc | e.value), contextLines: contextLines, interhunkLines: interhunkLines, )); @@ -128,15 +120,11 @@ class Tree { int contextLines = 3, int interhunkLines = 0, }) { - final repo = bindings.owner(_treePointer); - final int flagsInt = - flags.fold(0, (previousValue, e) => previousValue | e.value); - return Diff(diff_bindings.treeToTree( - repoPointer: repo, + repoPointer: bindings.owner(_treePointer), oldTreePointer: _treePointer, newTreePointer: tree.pointer, - flags: flagsInt, + flags: flags.fold(0, (acc, e) => acc | e.value), contextLines: contextLines, interhunkLines: interhunkLines, )); diff --git a/test/diff_test.dart b/test/diff_test.dart index 2b03e03..399cfda 100644 --- a/test/diff_test.dart +++ b/test/diff_test.dart @@ -313,7 +313,7 @@ index e69de29..c217c63 100644 expect(patches.length, 8); expect(patches.first.delta.status, GitDelta.deleted); - for (var p in patches) { + for (final p in patches) { p.free(); } diff.free(); diff --git a/test/features_test.dart b/test/features_test.dart index c7d5e86..d2df857 100644 --- a/test/features_test.dart +++ b/test/features_test.dart @@ -6,7 +6,7 @@ void main() { test('returns list of compile time options for libgit2', () { expect( Features.list, - [GitFeature.threads, GitFeature.https, GitFeature.ssh, GitFeature.nsec], + {GitFeature.threads, GitFeature.https, GitFeature.ssh, GitFeature.nsec}, ); }); }); diff --git a/test/mailmap_test.dart b/test/mailmap_test.dart index 66b1960..d66a07e 100644 --- a/test/mailmap_test.dart +++ b/test/mailmap_test.dart @@ -148,7 +148,7 @@ Santa Claus final mailmap = Mailmap.fromBuffer(testMailmap); expect(mailmap, isA()); - for (var entry in testResolve) { + for (final entry in testResolve) { expect( mailmap.resolve(name: entry['name']!, email: entry['email']!), [entry['realName'], entry['realEmail']], @@ -162,7 +162,7 @@ Santa Claus final mailmap = Mailmap.fromRepository(repo); expect(mailmap, isA()); - for (var entry in testResolve) { + for (final entry in testResolve) { expect( mailmap.resolve(name: entry['name']!, email: entry['email']!), [entry['realName'], entry['realEmail']], @@ -175,7 +175,7 @@ Santa Claus test('successfully resolves names and emails when mailmap is empty', () { final mailmap = Mailmap.empty(); - for (var entry in testResolve) { + for (final entry in testResolve) { expect( mailmap.resolve(name: entry['name']!, email: entry['email']!), [entry['name'], entry['email']], @@ -188,7 +188,7 @@ Santa Claus test('successfully adds entries and resolves them', () { final mailmap = Mailmap.empty(); - for (var entry in testEntries) { + for (final entry in testEntries) { mailmap.addEntry( realName: entry['realName'], realEmail: entry['realEmail'], @@ -197,7 +197,7 @@ Santa Claus ); } - for (var entry in testResolve) { + for (final entry in testResolve) { expect( mailmap.resolve(name: entry['name']!, email: entry['email']!), [entry['realName'], entry['realEmail']], diff --git a/test/merge_test.dart b/test/merge_test.dart index 914ed93..257c003 100644 --- a/test/merge_test.dart +++ b/test/merge_test.dart @@ -27,8 +27,10 @@ void main() { ); final result = repo.mergeAnalysis(theirHead: commit.id); - expect(result[0], {GitMergeAnalysis.upToDate}); - expect(result[1], {GitMergePreference.none}); + expect(result, [ + {GitMergeAnalysis.upToDate}, + GitMergePreference.none, + ]); expect(repo.status, isEmpty); commit.free(); diff --git a/test/packbuilder_test.dart b/test/packbuilder_test.dart index 5642e7c..43a6d30 100644 --- a/test/packbuilder_test.dart +++ b/test/packbuilder_test.dart @@ -87,9 +87,9 @@ void main() { test('successfully packs with provided packDelegate', () { void packDelegate(PackBuilder packBuilder) { final branches = repo.branches; - for (var branch in branches) { + for (final branch in branches) { final ref = repo.lookupReference('refs/heads/${branch.name}'); - for (var commit in repo.log(sha: ref.target.sha)) { + for (final commit in repo.log(sha: ref.target.sha)) { packBuilder.addRecursively(commit.id); commit.free(); } diff --git a/test/repository_test.dart b/test/repository_test.dart index 3132d98..e09b119 100644 --- a/test/repository_test.dart +++ b/test/repository_test.dart @@ -45,7 +45,7 @@ void main() { expect(commits[i].id.sha, log[i]); } - for (var c in commits) { + for (final c in commits) { c.free(); } }); diff --git a/test/revwalk_test.dart b/test/revwalk_test.dart index 9efbbf0..4076ecd 100644 --- a/test/revwalk_test.dart +++ b/test/revwalk_test.dart @@ -36,7 +36,7 @@ void main() { expect(commits[i].id.sha, log[i]); } - for (var c in commits) { + for (final c in commits) { c.free(); } walker.free(); @@ -54,7 +54,7 @@ void main() { expect(commits[i].id.sha, log.reversed.toList()[i]); } - for (var c in commits) { + for (final c in commits) { c.free(); } walker.free(); @@ -77,10 +77,10 @@ void main() { expect(reverseSortedCommits[i].id.sha, log.reversed.toList()[i]); } - for (var c in timeSortedCommits) { + for (final c in timeSortedCommits) { c.free(); } - for (var c in reverseSortedCommits) { + for (final c in reverseSortedCommits) { c.free(); } walker.free(); @@ -97,7 +97,7 @@ void main() { expect(commits.length, 2); - for (var c in commits) { + for (final c in commits) { c.free(); } walker.free(); @@ -129,7 +129,7 @@ void main() { expect(commits.length, 3); } - for (var c in commits) { + for (final c in commits) { c.free(); } walker.free();