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 {
28
28
. map ( |( n, v) | ( n, Some ( v) ) )
29
29
. unwrap_or ( ( pkg_id, None ) ) ;
30
30
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?;
32
48
33
49
if let Some ( version) = version {
34
50
semver:: VersionReq :: parse ( version)
Original file line number Diff line number Diff line change @@ -21,4 +21,4 @@ fn case() {
21
21
. stderr_eq ( file ! [ "stderr.term.svg" ] ) ;
22
22
23
23
assert_ui ( ) . subset_matches ( current_dir ! ( ) . join ( "out" ) , & project_root) ;
24
- }
24
+ }
You can’t perform that action at this time.
0 commit comments