diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-06-14 11:24:36 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-06-14 11:28:19 +0900 |
| commit | 716f44031a39c5e43fb441ecc470db76efc23dd4 (patch) | |
| tree | e6f4a31e4bf55a0a8efb06d9dd4844c567e7390f /crates/shirabe/src/package | |
| parent | ef9118c788c1cbb22ca7721b6a9e40c2bf2fe243 (diff) | |
| download | php-shirabe-716f44031a39c5e43fb441ecc470db76efc23dd4.tar.gz php-shirabe-716f44031a39c5e43fb441ecc470db76efc23dd4.tar.zst php-shirabe-716f44031a39c5e43fb441ecc470db76efc23dd4.zip | |
refactor(pcre): drop Result from Preg method return types
The Preg methods panic on PCRE failure (per the file header rationale),
so their anyhow::Result wrappers never carried an Err.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe/src/package')
13 files changed, 65 insertions, 106 deletions
diff --git a/crates/shirabe/src/package/archiver/archivable_files_finder.rs b/crates/shirabe/src/package/archiver/archivable_files_finder.rs index 2e9a3f2..c6a2d39 100644 --- a/crates/shirabe/src/package/archiver/archivable_files_finder.rs +++ b/crates/shirabe/src/package/archiver/archivable_files_finder.rs @@ -59,8 +59,7 @@ impl ArchivableFilesFinder { &format!("^{}", preg_quote(&sources_clone, Some('#'))), "", &fs.normalize_path(&realpath.to_string_lossy()), - ) - .unwrap_or_default(); + ); let mut exclude = false; for f in &filters { diff --git a/crates/shirabe/src/package/archiver/archive_manager.rs b/crates/shirabe/src/package/archiver/archive_manager.rs index a4169ef..cb15b76 100644 --- a/crates/shirabe/src/package/archiver/archive_manager.rs +++ b/crates/shirabe/src/package/archiver/archive_manager.rs @@ -62,7 +62,7 @@ impl ArchiveManager { ) -> anyhow::Result<IndexMap<String, String>> { let base_name = match package.get_archive_name() { Some(name) => name.to_string(), - None => Preg::replace("#[^a-z0-9-_]#i", "-", &package.get_name())?, + None => Preg::replace("#[^a-z0-9-_]#i", "-", &package.get_name()), }; let mut parts: IndexMap<String, String> = IndexMap::new(); @@ -70,7 +70,7 @@ impl ArchiveManager { let dist_reference = package.get_dist_reference(); if let Some(ref dist_ref) = dist_reference { - if Preg::is_match("{^[a-f0-9]{40}$}", dist_ref).unwrap_or(false) { + if Preg::is_match("{^[a-f0-9]{40}$}", dist_ref) { parts.insert("dist_reference".to_string(), dist_ref.to_string()); if let Some(dist_type) = package.get_dist_type() { parts.insert("dist_type".to_string(), dist_type.to_string()); diff --git a/crates/shirabe/src/package/archiver/base_exclude_filter.rs b/crates/shirabe/src/package/archiver/base_exclude_filter.rs index 4de3cbb..1bd5b85 100644 --- a/crates/shirabe/src/package/archiver/base_exclude_filter.rs +++ b/crates/shirabe/src/package/archiver/base_exclude_filter.rs @@ -86,11 +86,8 @@ pub trait BaseExcludeFilter { relative_path }; - // suppressed RuntimeException, equivalent to PHP try-catch - if let Ok(matched) = Preg::is_match(pattern, path) { - if matched { - exclude = !negate; - } + if Preg::is_match(pattern, path) { + exclude = !negate; } } diff --git a/crates/shirabe/src/package/archiver/git_exclude_filter.rs b/crates/shirabe/src/package/archiver/git_exclude_filter.rs index ffa349c..aeaed0a 100644 --- a/crates/shirabe/src/package/archiver/git_exclude_filter.rs +++ b/crates/shirabe/src/package/archiver/git_exclude_filter.rs @@ -34,7 +34,7 @@ impl GitExcludeFilter { } fn parse_git_attributes_line_static(line: &str) -> Option<(String, bool, bool)> { - let parts = Preg::split(r"\s+", line).unwrap_or_default(); + let parts = Preg::split(r"\s+", line); if parts.len() == 2 && parts[1] == "export-ignore" { return Some(BaseExcludeFilterBase::generate_pattern(&parts[0])); diff --git a/crates/shirabe/src/package/loader/array_loader.rs b/crates/shirabe/src/package/loader/array_loader.rs index 8e87302..222b5df 100644 --- a/crates/shirabe/src/package/loader/array_loader.rs +++ b/crates/shirabe/src/package/loader/array_loader.rs @@ -517,7 +517,7 @@ impl ArrayLoader { if let Some(time_value) = config.get("time") { if !shirabe_php_shim::empty(time_value) { let time_str = time_value.as_string().unwrap_or(""); - let time = if Preg::is_match(r"/^\d++$/D", time_str).unwrap_or(false) { + let time = if Preg::is_match(r"/^\d++$/D", time_str) { format!("@{}", time_str) } else { time_str.to_string() @@ -692,7 +692,7 @@ impl ArrayLoader { let alias_normalized = self.get_branch_alias(config)?; if let Some(alias_normalized) = alias_normalized { if !alias_normalized.is_empty() { - let pretty_alias = Preg::replace(r"{(\.9{7})+}", ".x", &alias_normalized)?; + let pretty_alias = Preg::replace(r"{(\.9{7})+}", ".x", &alias_normalized); return Ok(match package { CompleteOrRootPackage::Root(root) => RootAliasPackageHandle::new( @@ -956,7 +956,7 @@ impl ArrayLoader { && default_branch_is_true && self .version_parser - .parse_numeric_alias_prefix(&Preg::replace(r"{^v}", "", &version_str)?) + .parse_numeric_alias_prefix(&Preg::replace(r"{^v}", "", &version_str)) .is_none() { return Ok(Some(VersionParser::DEFAULT_BRANCH_ALIAS.to_string())); diff --git a/crates/shirabe/src/package/loader/root_package_loader.rs b/crates/shirabe/src/package/loader/root_package_loader.rs index 476f6bd..92f2be0 100644 --- a/crates/shirabe/src/package/loader/root_package_loader.rs +++ b/crates/shirabe/src/package/loader/root_package_loader.rs @@ -278,9 +278,7 @@ impl RootPackageLoader { r"(?:^|\| *|, *)([^,\s#|]+)(?:#[^ ]+)? +as +([^,\s|]+)(?:$| *\|| *,)", req_version, Some(&mut m), - ) - .unwrap_or(false) - { + ) { let m1 = m.get(&CaptureKey::ByIndex(1)).cloned().unwrap_or_default(); let m2 = m.get(&CaptureKey::ByIndex(2)).cloned().unwrap_or_default(); let mut alias = IndexMap::new(); @@ -331,13 +329,12 @@ impl RootPackageLoader { for (req_name, req_version) in requires { let mut constraints: Vec<String> = vec![]; - let or_split = Preg::split(r"\s*\|\|?\s*", req_version.trim()).unwrap_or_default(); + let or_split = Preg::split(r"\s*\|\|?\s*", req_version.trim()); for or_constraint in &or_split { let and_split = Preg::split( r"(?<!^|as|[=>< ,]) *(?<!-)[, ](?!-) *(?!,|as|$)", or_constraint, - ) - .unwrap_or_default(); + ); for and_constraint in and_split { constraints.push(and_constraint); } @@ -349,7 +346,7 @@ impl RootPackageLoader { let mut matched = false; for constraint in &constraints { let mut m: IndexMap<CaptureKey, String> = IndexMap::new(); - if Preg::is_match3(&pattern, constraint, Some(&mut m)).unwrap_or(false) { + if Preg::is_match3(&pattern, constraint, Some(&mut m)) { let name = strtolower(req_name); let m1 = m.get(&CaptureKey::ByIndex(1)).cloned().unwrap_or_default(); let normalized_m1 = VersionParser::normalize_stability(&m1).unwrap_or_default(); @@ -368,9 +365,8 @@ impl RootPackageLoader { } for constraint in &constraints { - let req_version_stripped = - Preg::replace(r"^([^,\s@]+) as .+$", "$1", constraint).unwrap_or_default(); - if Preg::is_match(r"^[^,\s@]+$", &req_version_stripped).unwrap_or(false) { + let req_version_stripped = Preg::replace(r"^([^,\s@]+) as .+$", "$1", constraint); + if Preg::is_match(r"^[^,\s@]+$", &req_version_stripped) { let stability_name = VersionParser::parse_stability(&req_version_stripped); if stability_name != "stable" { let name = strtolower(req_name); @@ -394,12 +390,9 @@ impl RootPackageLoader { mut references: IndexMap<String, String>, ) -> IndexMap<String, String> { for (req_name, req_version) in requires { - let req_version = - Preg::replace(r"^([^,\s@]+) as .+$", "$1", req_version).unwrap_or_default(); + let req_version = Preg::replace(r"^([^,\s@]+) as .+$", "$1", req_version); let mut m: IndexMap<CaptureKey, String> = IndexMap::new(); - if Preg::is_match3(r"^[^,\s@]+?#([a-f0-9]+)$", &req_version, Some(&mut m)) - .unwrap_or(false) - { + if Preg::is_match3(r"^[^,\s@]+?#([a-f0-9]+)$", &req_version, Some(&mut m)) { if VersionParser::parse_stability(&req_version) == "dev" { let name = strtolower(req_name); references.insert( diff --git a/crates/shirabe/src/package/loader/validating_array_loader.rs b/crates/shirabe/src/package/loader/validating_array_loader.rs index 4a1e2c2..dd2642e 100644 --- a/crates/shirabe/src/package/loader/validating_array_loader.rs +++ b/crates/shirabe/src/package/loader/validating_array_loader.rs @@ -901,7 +901,7 @@ impl ValidatingArrayLoader { } if let Some(err) = Self::has_package_naming_error(&package, true) { self.warnings.push(format!("{}.{}", link_type, err)); - } else if !Preg::is_match("{^[A-Za-z0-9_./-]+$}", &package).unwrap_or(false) { + } else if !Preg::is_match("{^[A-Za-z0-9_./-]+$}", &package) { self.errors.push(format!( "{}.{} : invalid key, package names must be strings containing only [A-Za-z0-9_./-]", link_type, package @@ -1161,7 +1161,7 @@ impl ValidatingArrayLoader { } if let Some(ref_val) = section.get("reference") { let ref_str = php_to_string(&**ref_val); - if Preg::is_match("{^\\s*-}", &ref_str).unwrap_or(false) { + if Preg::is_match("{^\\s*-}", &ref_str) { self.errors.push(format!( "{}.reference : must not start with a \"-\", \"{}\" given", src_type, ref_str @@ -1170,7 +1170,7 @@ impl ValidatingArrayLoader { } if let Some(url_val) = section.get("url") { let url_str = php_to_string(&**url_val); - if Preg::is_match("{^\\s*-}", &url_str).unwrap_or(false) { + if Preg::is_match("{^\\s*-}", &url_str) { self.errors.push(format!( "{}.url : must not start with a \"-\", \"{}\" given", src_type, url_str @@ -1332,9 +1332,7 @@ impl ValidatingArrayLoader { if !Preg::is_match( "{^[a-z0-9](?:[_.-]?[a-z0-9]++)*+/[a-z0-9](?:(?:[_.]|-{1,2})?[a-z0-9]++)*+$}iD", name, - ) - .unwrap_or(false) - { + ) { return Some(format!( "{} is invalid, it should have a vendor name, a forward slash, and a package name. The vendor and package name can be words separated by -, . or _. The complete name should match \"^[a-z0-9]([_.-]?[a-z0-9]+)*/[a-z0-9](([_.]?|-{{0,2}})[a-z0-9]+)*$\".", name @@ -1355,14 +1353,14 @@ impl ValidatingArrayLoader { )); } - if Preg::is_match("{\\.json$}", name).unwrap_or(false) { + if Preg::is_match("{\\.json$}", name) { return Some(format!( "{} is invalid, package names can not end in .json, consider renaming it or perhaps using a -json suffix instead.", name )); } - if Preg::is_match("{[A-Z]}", name).unwrap_or(false) { + if Preg::is_match("{[A-Z]}", name) { if is_link { return Some(format!( "{} is invalid, it should not contain uppercase characters. Please use {} instead.", @@ -1375,8 +1373,7 @@ impl ValidatingArrayLoader { "{(?:([a-z])([A-Z])|([A-Z])([A-Z][a-z]))}", "\\1\\3-\\2\\4", name, - ) - .unwrap_or_else(|_| name.to_string()); + ); let suggest_name = strtolower(&suggest_name); return Some(format!( @@ -1394,7 +1391,7 @@ impl ValidatingArrayLoader { } let value = self.config[property].as_string().unwrap_or("").to_string(); - if !Preg::is_match(&format!("{{^{}$}}u", regex), &value).unwrap_or(false) { + if !Preg::is_match(&format!("{{^{}$}}u", regex), &value) { let message = format!( "{} : invalid value ({}), must match {}", property, value, regex @@ -1508,7 +1505,7 @@ impl ValidatingArrayLoader { if let Some(regex_str) = regex { let value_str = php_to_string(&*value); - if !Preg::is_match(&format!("{{^{}$}}u", regex_str), &value_str).unwrap_or(false) { + if !Preg::is_match(&format!("{{^{}$}}u", regex_str), &value_str) { self.warnings.push(format!( "{}.{} : invalid value ({}), must match {}", property, key, value_str, regex_str diff --git a/crates/shirabe/src/package/locker.rs b/crates/shirabe/src/package/locker.rs index 8c84b4e..1a16c27 100644 --- a/crates/shirabe/src/package/locker.rs +++ b/crates/shirabe/src/package/locker.rs @@ -874,7 +874,7 @@ impl Locker { ), None, ); - if Preg::is_match(r"{^\s*\d+\s*$}", &output_str).unwrap_or(false) { + if Preg::is_match(r"{^\s*\d+\s*$}", &output_str) { let ts = trim(&output_str, None).parse::<i64>().unwrap_or(0); datetime = chrono::DateTime::from_timestamp(ts, 0); } @@ -899,9 +899,7 @@ impl Locker { r"{^\s*(\d+)\s*}", output.as_string().unwrap_or(""), Some(&mut m), - ) - .unwrap_or(false) - { + ) { let ts = m .get(&CaptureKey::ByIndex(1)) .cloned() diff --git a/crates/shirabe/src/package/package.rs b/crates/shirabe/src/package/package.rs index f1c8cc9..8ef93be 100644 --- a/crates/shirabe/src/package/package.rs +++ b/crates/shirabe/src/package/package.rs @@ -145,8 +145,7 @@ impl Package { "{ (?:^|[\\\\/]+) \\.\\.? (?:[\\\\/]+|$) (?:\\.\\.? (?:[\\\\/]+|$) )*}x", "/", target_dir, - ) - .unwrap_or_else(|_| target_dir.clone()); + ); Some(replaced.trim_start_matches('/').to_string()) } @@ -423,17 +422,13 @@ impl Package { "{^https?://(?:(?:www\\.)?bitbucket\\.org|(api\\.)?github\\.com|(?:www\\.)?gitlab\\.com)/}i", self.get_dist_url().unwrap_or(""), ) - .unwrap_or(false) { self.set_dist_reference(Some(reference.clone())); - self.set_dist_url(Some( - Preg::replace( - "{(?<=/|sha=)[a-f0-9]{40}(?=/|$)}i", - &reference, - self.get_dist_url().unwrap_or(""), - ) - .unwrap_or_default(), - )); + self.set_dist_url(Some(Preg::replace( + "{(?<=/|sha=)[a-f0-9]{40}(?=/|$)}i", + &reference, + self.get_dist_url().unwrap_or(""), + ))); } else if self.get_dist_reference().is_some() { // update the dist reference if there was one, but if none was provided ignore it self.set_dist_reference(Some(reference)); diff --git a/crates/shirabe/src/package/version/version_bumper.rs b/crates/shirabe/src/package/version/version_bumper.rs index 627a0fb..2f4e513 100644 --- a/crates/shirabe/src/package/version/version_bumper.rs +++ b/crates/shirabe/src/package/version/version_bumper.rs @@ -46,12 +46,11 @@ impl VersionBumper { return Ok(pretty_constraint); } - let major = Preg::replace(r"{^([1-9][0-9]*|0\.\d+).*}", "$1", &version)?; - let version_without_suffix = - Preg::replace(r"{(?:\.(?:0|9999999))+(-dev)?$}", "", &version)?; + let major = Preg::replace(r"{^([1-9][0-9]*|0\.\d+).*}", "$1", &version); + let version_without_suffix = Preg::replace(r"{(?:\.(?:0|9999999))+(-dev)?$}", "", &version); let new_pretty_constraint = format!("^{}", version_without_suffix); - if !Preg::is_match(r"{^\^\d+(\.\d+)*$}", &new_pretty_constraint)? { + if !Preg::is_match(r"{^\^\d+(\.\d+)*$}", &new_pretty_constraint) { return Ok(pretty_constraint); } @@ -71,7 +70,7 @@ impl VersionBumper { ); let mut matches: IndexMap<CaptureKey, Vec<(String, usize)>> = IndexMap::new(); - if Preg::is_match_all_with_offsets3(&pattern, &pretty_constraint, Some(&mut matches))? { + if Preg::is_match_all_with_offsets3(&pattern, &pretty_constraint, Some(&mut matches)) { let mut modified = pretty_constraint.clone(); let constraint_matches = matches .get(&CaptureKey::ByName("constraint".to_string())) diff --git a/crates/shirabe/src/package/version/version_guesser.rs b/crates/shirabe/src/package/version/version_guesser.rs index 562d141..4eb3864 100644 --- a/crates/shirabe/src/package/version/version_guesser.rs +++ b/crates/shirabe/src/package/version/version_guesser.rs @@ -130,16 +130,12 @@ impl VersionGuesser { if "-dev" == substr(version_data.version.as_deref().unwrap_or(""), -4, None) && Preg::is_match(r"{\.9{7}}", version_data.version.as_deref().unwrap_or("")) - .unwrap_or(false) { - version_data.pretty_version = Some( - Preg::replace( - r"{(\.9{7})+}", - ".x", - version_data.version.as_deref().unwrap_or(""), - ) - .unwrap_or_default(), - ); + version_data.pretty_version = Some(Preg::replace( + r"{(\.9{7})+}", + ".x", + version_data.version.as_deref().unwrap_or(""), + )); } let feature_non_empty = version_data @@ -158,16 +154,12 @@ impl VersionGuesser { r"{\.9{7}}", version_data.feature_version.as_deref().unwrap_or(""), ) - .unwrap_or(false) { - version_data.feature_pretty_version = Some( - Preg::replace( - r"{(\.9{7})+}", - ".x", - version_data.feature_version.as_deref().unwrap_or(""), - ) - .unwrap_or_default(), - ); + version_data.feature_pretty_version = Some(Preg::replace( + r"{(\.9{7})+}", + ".x", + version_data.feature_version.as_deref().unwrap_or(""), + )); } version_data @@ -210,19 +202,13 @@ impl VersionGuesser { for branch in self.process.borrow().split_lines(&output) { if !branch.is_empty() { let mut m: IndexMap<CaptureKey, String> = IndexMap::new(); - if Preg::is_match3(r"{^(?:\* ) *(\(no branch\)|\(detached from \S+\)|\(HEAD detached at \S+\)|\S+) *([a-f0-9]+) .*$}", - &branch, - Some(&mut m),) - .unwrap_or(false) - { - let g1 = m - .get(&CaptureKey::ByIndex(1)) - .cloned() - .unwrap_or_default(); - let g2 = m - .get(&CaptureKey::ByIndex(2)) - .cloned() - .unwrap_or_default(); + if Preg::is_match3( + r"{^(?:\* ) *(\(no branch\)|\(detached from \S+\)|\(HEAD detached at \S+\)|\S+) *([a-f0-9]+) .*$}", + &branch, + Some(&mut m), + ) { + let g1 = m.get(&CaptureKey::ByIndex(1)).cloned().unwrap_or_default(); + let g2 = m.get(&CaptureKey::ByIndex(2)).cloned().unwrap_or_default(); if g1 == "(no branch)" || strpos(&g1, "(detached ") == Some(0) || strpos(&g1, "(HEAD detached at") == Some(0) @@ -243,16 +229,14 @@ impl VersionGuesser { if !branch.is_empty() && { let mut tmp: IndexMap<CaptureKey, String> = IndexMap::new(); - !Preg::is_match3(r"{^ *.+/HEAD }", &branch, Some(&mut tmp)).unwrap_or(false) + !Preg::is_match3(r"{^ *.+/HEAD }", &branch, Some(&mut tmp)) } { let mut m: IndexMap<CaptureKey, String> = IndexMap::new(); if Preg::is_match3( r"{^(?:\* )? *((?:remotes/(?:origin|upstream)/)?[^\s/]+) *([a-f0-9]+) .*$}", &branch, Some(&mut m), - ) - .unwrap_or(false) - { + ) { branches.push(m.get(&CaptureKey::ByIndex(1)).cloned().unwrap_or_default()); } } @@ -498,8 +482,7 @@ impl VersionGuesser { ) .is_some(); if !has_branch_alias || has_self_version { - let branch = - Preg::replace(r"{^dev-}", "", version.as_deref().unwrap_or("")).unwrap_or_default(); + let branch = Preg::replace(r"{^dev-}", "", version.as_deref().unwrap_or("")); let mut length: i64 = PHP_INT_MAX; // return directly, if branch is configured to be non-feature branch @@ -532,8 +515,7 @@ impl VersionGuesser { let mut last_index: i64 = -1; for (index, candidate) in branches.iter().enumerate() { let index = index as i64; - let candidate_version = - Preg::replace(r"{^remotes/\S+/}", "", candidate).unwrap_or_default(); + let candidate_version = Preg::replace(r"{^remotes/\S+/}", "", candidate); // do not compare against itself or other feature branches if candidate == &branch @@ -613,7 +595,6 @@ impl VersionGuesser { ), branch_name.unwrap_or(""), ) - .unwrap_or(false) } /// @return array{version: string|null, commit: '', pretty_version: string|null} @@ -700,7 +681,7 @@ impl VersionGuesser { trunk_path, branches_path, tags_path, ); - if let Some(matches) = Preg::is_match_with_indexed_captures(&url_pattern, &output)? { + if let Some(matches) = Preg::is_match_with_indexed_captures(&url_pattern, &output) { let m1 = matches.get(1).cloned().unwrap_or_default(); let m2 = matches.get(2).cloned(); let m3 = matches.get(3).cloned(); @@ -758,7 +739,7 @@ impl VersionGuesser { } }; let mut m: IndexMap<CaptureKey, String> = IndexMap::new(); - if Preg::is_match3(r"{^(\d+(?:\.\d+)*)-dev$}i", &version, Some(&mut m)).unwrap_or(false) { + if Preg::is_match3(r"{^(\d+(?:\.\d+)*)-dev$}i", &version, Some(&mut m)) { return Ok(format!( "{}.x-dev", m.get(&CaptureKey::ByIndex(1)).cloned().unwrap_or_default() diff --git a/crates/shirabe/src/package/version/version_parser.rs b/crates/shirabe/src/package/version/version_parser.rs index 1b588bc..e600c37 100644 --- a/crates/shirabe/src/package/version/version_parser.rs +++ b/crates/shirabe/src/package/version/version_parser.rs @@ -45,11 +45,11 @@ impl VersionParser { let count = pairs.len(); let mut i = 0_usize; while i < count { - let mut pair = Preg::replace(r"{^([^=: ]+)[=: ](.*)$}", "$1 $2", &pairs[i].trim())?; + let mut pair = Preg::replace(r"{^([^=: ]+)[=: ](.*)$}", "$1 $2", &pairs[i].trim()); if !pair.contains(' ') && i + 1 < count && !pairs[i + 1].contains('/') - && !Preg::is_match(r"{(?<=[a-z0-9_/-])\*|\*(?=[a-z0-9_/-])}i", &pairs[i + 1])? + && !Preg::is_match(r"{(?<=[a-z0-9_/-])\*|\*(?=[a-z0-9_/-])}i", &pairs[i + 1]) && !PlatformRepository::is_platform_package(&pairs[i + 1]) { pair += &format!(" {}", pairs[i + 1]); diff --git a/crates/shirabe/src/package/version/version_selector.rs b/crates/shirabe/src/package/version/version_selector.rs index d4ce4c1..872ca93 100644 --- a/crates/shirabe/src/package/version/version_selector.rs +++ b/crates/shirabe/src/package/version/version_selector.rs @@ -282,7 +282,7 @@ impl VersionSelector { if let Some(extra) = extra { if extra != VersionParser::DEFAULT_BRANCH_ALIAS { let new_extra = - Preg::replace(r"{^(\d+\.\d+\.\d+)(\.9999999)-dev$}", "$1.0", &extra)?; + Preg::replace(r"{^(\d+\.\d+\.\d+)(\.9999999)-dev$}", "$1.0", &extra); if new_extra != extra { let new_extra = new_extra.replace(".9999999", ".0"); return self.transform_version(&new_extra, &new_extra, "dev"); @@ -302,7 +302,7 @@ impl VersionSelector { let semantic_version_parts: Vec<&str> = version.split('.').collect(); if semantic_version_parts.len() == 4 - && Preg::is_match(r"{^\d+\D?}", semantic_version_parts[3]).unwrap_or(false) + && Preg::is_match(r"{^\d+\D?}", semantic_version_parts[3]) { let mut parts: Vec<String> = semantic_version_parts .iter() |
