File tree Expand file tree Collapse file tree 3 files changed +20
-4
lines changed
tests/testsuite/cargo_add/missing_at_in_crate_spec Expand file tree Collapse file tree 3 files changed +20
-4
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+ return Err ( anyhow:: anyhow!(
39+ "possible missing `@` detected in package name `{pkg_id}`. Try `{suggested_pkg_id}` instead."
40+ ) )
41+ . 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