@@ -106,8 +106,7 @@ mod foo {
106
106
use foo::MyTrait::do_something;
107
107
```
108
108
109
- In general, it's not legal to directly import methods belonging to a
110
- trait or concrete type.
109
+ It's illegal to directly import methods belonging to a trait or concrete type.
111
110
"## ,
112
111
113
112
E0255 : r##"
@@ -272,7 +271,160 @@ See the 'Use Declarations' section of the reference for more information
272
271
on this topic:
273
272
274
273
http://doc.rust-lang.org/reference.html#use-declarations
275
- "##
274
+ "## ,
275
+
276
+ E0403 : r##"
277
+ Some type parameters have the same name. Example of erroneous code:
278
+
279
+ ```
280
+ fn foo<T, T>(s: T, u: T) {} // error: the name `T` is already used for a type
281
+ // parameter in this type parameter list
282
+ ```
283
+
284
+ Please verify that none of the type parameterss are misspelled, and rename any
285
+ clashing parameters. Example:
286
+
287
+ ```
288
+ fn foo<T, Y>(s: T, u: Y) {} // ok!
289
+ ```
290
+ "## ,
291
+
292
+ E0404 : r##"
293
+ You tried to implement something which was not a trait on an object. Example of
294
+ erroneous code:
295
+
296
+ ```
297
+ struct Foo;
298
+ struct Bar;
299
+
300
+ impl Foo for Bar {} // error: `Foo` is not a trait
301
+ ```
302
+
303
+ Please verify that you didn't misspell the trait's name or otherwise use the
304
+ wrong identifier. Example:
305
+
306
+ ```
307
+ trait Foo {
308
+ // some functions
309
+ }
310
+ struct Bar;
311
+
312
+ impl Foo for Bar { // ok!
313
+ // functions implementation
314
+ }
315
+ ```
316
+ "## ,
317
+
318
+ E0405 : r##"
319
+ An unknown trait was implemented. Example of erroneous code:
320
+
321
+ ```
322
+ struct Foo;
323
+
324
+ impl SomeTrait for Foo {} // error: use of undeclared trait name `SomeTrait`
325
+ ```
326
+
327
+ Please verify that the name of the trait wasn't misspelled and ensure that it
328
+ was imported. Example:
329
+
330
+ ```
331
+ // solution 1:
332
+ use some_file::SomeTrait;
333
+
334
+ // solution 2:
335
+ trait SomeTrait {
336
+ // some functions
337
+ }
338
+
339
+ struct Foo;
340
+
341
+ impl SomeTrait for Foo { // ok!
342
+ // implements functions
343
+ }
344
+ ```
345
+ "## ,
346
+
347
+ E0407 : r##"
348
+ A definition of a method not in the implemented trait was given in a trait
349
+ implementation. Example of erroneous code:
350
+
351
+ ```
352
+ trait Foo {
353
+ fn a();
354
+ }
355
+
356
+ struct Bar;
357
+
358
+ impl Foo for Bar {
359
+ fn a() {}
360
+ fn b() {} // error: method `b` is not a member of trait `Foo`
361
+ }
362
+ ```
363
+
364
+ Please verify you didn't misspell the method name and you used the correct
365
+ trait. First example:
366
+
367
+ ```
368
+ trait Foo {
369
+ fn a();
370
+ fn b();
371
+ }
372
+
373
+ struct Bar;
374
+
375
+ impl Foo for Bar {
376
+ fn a() {}
377
+ fn b() {} // ok!
378
+ }
379
+ ```
380
+
381
+ Second example:
382
+
383
+ ```
384
+ trait Foo {
385
+ fn a();
386
+ }
387
+
388
+ struct Bar;
389
+
390
+ impl Foo for Bar {
391
+ fn a() {}
392
+ }
393
+
394
+ impl Bar {
395
+ fn b() {}
396
+ }
397
+ ```
398
+ "## ,
399
+
400
+ E0428 : r##"
401
+ A type or module has been defined more than once. Example of erroneous
402
+ code:
403
+
404
+ ```
405
+ struct Bar;
406
+ struct Bar; // error: duplicate definition of value `Bar`
407
+ ```
408
+
409
+ Please verify you didn't misspell the type/module's name or remove/rename the
410
+ duplicated one. Example:
411
+
412
+ ```
413
+ struct Bar;
414
+ struct Bar2; // ok!
415
+ ```
416
+ "## ,
417
+
418
+ E0433 : r##"
419
+ Invalid import. Example of erroneous code:
420
+
421
+ ```
422
+ use something_which_doesnt_exist;
423
+ // error: unresolved import `something_which_doesnt_exist`
424
+ ```
425
+
426
+ Please verify you didn't misspell the import's name.
427
+ "## ,
276
428
277
429
}
278
430
@@ -284,11 +436,7 @@ register_diagnostics! {
284
436
E0258 ,
285
437
E0401 , // can't use type parameters from outer function
286
438
E0402 , // cannot use an outer type parameter in this context
287
- E0403 , // the name `{}` is already used
288
- E0404 , // is not a trait
289
- E0405 , // use of undeclared trait name
290
439
E0406 , // undeclared associated type
291
- E0407 , // method is not a member of trait
292
440
E0408 , // variable from pattern #1 is not bound in pattern #
293
441
E0409 , // variable is bound with different mode in pattern # than in
294
442
// pattern #1
@@ -313,13 +461,11 @@ register_diagnostics! {
313
461
E0425 , // unresolved name
314
462
E0426 , // use of undeclared label
315
463
E0427 , // cannot use `ref` binding mode with ...
316
- E0428 , // duplicate definition of ...
317
464
E0429 , // `self` imports are only allowed within a { } list
318
465
E0430 , // `self` import can only appear once in the list
319
466
E0431 , // `self` import can only appear in an import list with a non-empty
320
467
// prefix
321
468
E0432 , // unresolved import
322
- E0433 , // failed to resolve
323
469
E0434 , // can't capture dynamic environment in a fn item
324
470
E0435 , // attempt to use a non-constant value in a constant
325
471
E0437 , // type is not a member of trait
0 commit comments