@@ -109,6 +109,21 @@ func runUse(ctx context.Context, cmd *base.Command, args []string) {
109
109
base .Fatalf ("go: 'go work use' requires one or more directory arguments" )
110
110
}
111
111
for _ , useDir := range args {
112
+ absArg , _ := pathRel (workDir , useDir )
113
+
114
+ info , err := os .Stat (absArg )
115
+ if err != nil {
116
+ if os .IsNotExist (err ) {
117
+ base .Errorf ("go: %v directory not found" , absArg )
118
+ } else {
119
+ base .Errorf ("go: %v" , err )
120
+ }
121
+ continue
122
+ } else if ! info .IsDir () {
123
+ base .Errorf ("go: %s not a directory" , absArg )
124
+ continue
125
+ }
126
+
112
127
if ! * useR {
113
128
if target , err := fsys .Stat (useDir ); err == nil && ! target .IsDir () {
114
129
base .Errorf (`go: argument "%s" is not a directory` , useDir )
@@ -119,7 +134,11 @@ func runUse(ctx context.Context, cmd *base.Command, args []string) {
119
134
}
120
135
121
136
// Add or remove entries for any subdirectories that still exist.
122
- err := fsys .Walk (useDir , func (path string , info fs.FileInfo , err error ) error {
137
+ err = fsys .Walk (useDir , func (path string , info fs.FileInfo , err error ) error {
138
+ if err != nil {
139
+ return err
140
+ }
141
+
123
142
if ! info .IsDir () {
124
143
if info .Mode ()& fs .ModeSymlink != 0 {
125
144
if target , err := fsys .Stat (path ); err == nil && target .IsDir () {
@@ -137,7 +156,6 @@ func runUse(ctx context.Context, cmd *base.Command, args []string) {
137
156
138
157
// Remove entries for subdirectories that no longer exist.
139
158
// Because they don't exist, they will be skipped by Walk.
140
- absArg , _ := pathRel (workDir , useDir )
141
159
for absDir , _ := range haveDirs {
142
160
if str .HasFilePathPrefix (absDir , absArg ) {
143
161
if _ , ok := keepDirs [absDir ]; ! ok {
0 commit comments