File tree Expand file tree Collapse file tree 3 files changed +23
-3
lines changed
tests/testsuite/cargo_add/missing_at_in_crate_spec Expand file tree Collapse file tree 3 files changed +23
-3
lines changed Original file line number Diff line number Diff line change @@ -28,7 +28,23 @@ impl CrateSpec {
2828 . map ( |( n, v) | ( n, Some ( v) ) )
2929 . unwrap_or ( ( pkg_id, None ) ) ;
3030
31- PackageName :: new ( name) ?;
31+ let package_name = PackageName :: new ( name) ;
32+ if !pkg_id. contains ( "@" ) && package_name. is_err ( ) {
33+ for ( idx, ch) in pkg_id. char_indices ( ) {
34+ if !( unicode_xid:: UnicodeXID :: is_xid_continue ( ch) || ch == '-' ) {
35+ let mut suggested_pkg_id = pkg_id. to_string ( ) ;
36+ suggested_pkg_id. insert_str ( idx, "@" ) ;
37+ if let Ok ( _) = CrateSpec :: resolve ( & suggested_pkg_id. as_str ( ) ) {
38+ let err = package_name. unwrap_err ( ) ;
39+ return Err (
40+ anyhow:: format_err!( "{err}\n \n \
41+ help: if this is meant to be a package name followed by a version, insert an `@` like `{suggested_pkg_id}`") . into ( ) ) ;
42+ }
43+ }
44+ }
45+ }
46+
47+ package_name?;
3248
3349 if let Some ( version) = version {
3450 semver:: VersionReq :: parse ( version)
Original file line number Diff line number Diff line change @@ -21,4 +21,4 @@ fn case() {
2121 . stderr_eq ( file ! [ "stderr.term.svg" ] ) ;
2222
2323 assert_ui ( ) . subset_matches ( current_dir ! ( ) . join ( "out" ) , & project_root) ;
24- }
24+ }
You can’t perform that action at this time.
0 commit comments