@@ -2282,25 +2282,27 @@ pub impl Resolver {
2282
2282
}
2283
2283
2284
2284
let i = import_resolution;
2285
+ let mut resolve_fail = false;
2286
+ let mut priv_fail = false;
2285
2287
match (i.value_target, i.type_target) {
2286
2288
// If this name wasn't found in either namespace, it's definitely
2287
2289
// unresolved.
2288
- (None, None) => { return Failed ; }
2290
+ (None, None) => { resolve_fail = true ; }
2289
2291
// If it's private, it's also unresolved.
2290
2292
(Some(t), None) | (None, Some(t)) => {
2291
2293
let bindings = &mut *t.bindings;
2292
2294
match bindings.type_def {
2293
2295
Some(ref type_def) => {
2294
2296
if type_def.privacy == Private {
2295
- return Failed ;
2297
+ priv_fail = true ;
2296
2298
}
2297
2299
}
2298
2300
_ => ()
2299
2301
}
2300
2302
match bindings.value_def {
2301
2303
Some(ref value_def) => {
2302
2304
if value_def.privacy == Private {
2303
- return Failed ;
2305
+ priv_fail = true ;
2304
2306
}
2305
2307
}
2306
2308
_ => ()
@@ -2313,13 +2315,25 @@ pub impl Resolver {
2313
2315
(Some(ref value_def), Some(ref type_def)) =>
2314
2316
if value_def.privacy == Private
2315
2317
&& type_def.privacy == Private {
2316
- return Failed ;
2318
+ priv_fail = true ;
2317
2319
},
2318
2320
_ => ()
2319
2321
}
2320
2322
}
2321
2323
}
2322
2324
2325
+ if resolve_fail {
2326
+ self.session.err(fmt!(" unresolved import: there is no `%s` in `%s`",
2327
+ * self . session. str_of( source) ,
2328
+ self . module_to_str( containing_module) ) ) ;
2329
+ return Failed ;
2330
+ } else if priv_fail {
2331
+ self. session . err ( fmt ! ( "unresolved import: found `%s` in `%s` but it is private" ,
2332
+ * self . session. str_of( source) ,
2333
+ self . module_to_str( containing_module) ) ) ;
2334
+ return Failed ;
2335
+ }
2336
+
2323
2337
assert!( import_resolution. outstanding_references >= 1 ) ;
2324
2338
import_resolution. outstanding_references -= 1 ;
2325
2339
@@ -2491,7 +2505,8 @@ pub impl Resolver {
2491
2505
*segment_name));
2492
2506
return Failed;
2493
2507
}
2494
- self . session . span_err ( span, ~"unresolved name") ;
2508
+ self.session.span_err(span, fmt!(" unresolved import: could not find %s in %s. ",
2509
+ *segment_name, module_name));
2495
2510
return Failed;
2496
2511
}
2497
2512
Indeterminate => {
0 commit comments