Commit graph

4606 commits

Author SHA1 Message Date
Aaron Turon
bc33dd7ac4 Provide overlapping types for coherence errors
Currently, a coherence error based on overlapping impls simply mentions
the trait, and points to the two conflicting impls:

```
error: conflicting implementations for trait `Foo`
```

With this commit, the error will include all input types to the
trait (including the `Self` type) after unification between the
overlapping impls. In other words, the error message will provide
feedback with full type details, like:

```
error: conflicting implementations of trait `Foo<u32>` for type `u8`:
```

When the `Self` type for the two impls unify to an inference variable,
it is elided in the output, since "for type `_`" is just noise in that
case.

Closes #23980
2015-12-16 09:47:23 -08:00
bors
e9ac44026d Auto merge of #29383 - petrochenkov:empstr, r=pnkfelix
Fixes https://github.com/rust-lang/rust/issues/28692
Fixes https://github.com/rust-lang/rust/issues/28992
Fixes some other similar issues (see the tests)

[breaking-change], needs crater run (cc @brson or @alexcrichton )

The pattern with parens `UnitVariant(..)` for unit variants seems to be popular in rustc (see the second commit), but mostly used by one person (@nikomatsakis), according to git blame. If it causes breakage on crates.io I'll add an exceptional case for it.
2015-11-28 00:45:34 +00:00
bors
5dc91a74b1 Auto merge of #30064 - fhartwig:macro-suggestions, r=sanxiyn
Fixes #13677
This does the same sort of suggestion for misspelt macros that we already do for misspelt identifiers.
Example. Compiling this program:

```rust
macro_rules! foo {
    ($e:expr) => ( $e )
}

fn main() {
    fob!("hello!");
}
```

gives the following error message:

```
/Users/mcp/temp/test.rs:7:5: 7:8 error: macro undefined: 'fob!'
/Users/mcp/temp/test.rs:7     fob!("hello!");
                              ^~~
/Users/mcp/temp/test.rs:7:5: 7:8 help: did you mean `foo`?
/Users/mcp/temp/test.rs:7     fob!("hello!");
```

I had to move the levenshtein distance function into libsyntax for this. Maybe this should live somewhere else (some utility crate?), but I couldn't find a crate to put it in that is imported by libsyntax and the other rustc crates.
2015-11-27 18:41:53 +00:00
Ariel Ben-Yehuda
4190dce3a7 fix tidy 2015-11-26 18:22:40 +02:00
Florian Hartwig
9ba657cad5 Add '!' to macro name suggestion, use fileline_help instead of span_help 2015-11-26 11:59:41 +01:00
bors
6d88afe477 Auto merge of #30015 - petrochenkov:staged, r=brson
Closes https://github.com/rust-lang/rust/issues/30008

`#[stable]`, `#[unstable]` and `#[rustc_deprecated]` are now guarded by `#[feature(staged_api)]`

r? @brson
2015-11-26 10:22:37 +00:00
Florian Hartwig
ac0220cf4c Add test for macro suggestions 2015-11-26 00:36:30 +01:00
Jonas Schievink
47cb5d8dbd Add a test 2015-11-25 21:01:23 +01:00
Vadim Petrochenkov
be8ace8cac Remove all uses of #[staged_api] 2015-11-25 21:55:26 +03:00
Vadim Petrochenkov
5127d24a3e Remove #[staged_api] 2015-11-25 21:55:26 +03:00
bors
7fa2c6ca31 Auto merge of #30011 - jonas-schievink:macro-context, r=nrc
Fixes #22425

Also fixes #30007, since it's just a change from `true` to `false`.
2015-11-25 03:02:05 +00:00
Jonas Schievink
5cb5d20bf9 Fix test failures 2015-11-24 17:46:10 +01:00
bors
ebb560a069 Auto merge of #29934 - arielb1:constrained-projection-2, r=nikomatsakis
Fixes #29861 - it was a bug I accidentally introduced in #26275.

r? @nikomatsakis
2015-11-24 14:30:46 +00:00
bors
561d0884e5 Auto merge of #30000 - Manishearth:unreachable-call, r=nrc
Fixes #1889
2015-11-24 06:58:25 +00:00
Manish Goregaokar
7fbcb51589 Fix unreachable code in libsyntax 2015-11-24 10:05:51 +05:30
bors
77c995b96a Auto merge of #30001 - Detegr:master, r=Manishearth
r? @Manishearth
2015-11-24 01:42:31 +00:00
Manish Goregaokar
2eca64de71 Make unreachable_code lint warn on diverging call arguments as well
Fixes #1889
2015-11-24 01:45:21 +05:30
bors
040a77f772 Auto merge of #29952 - petrochenkov:depr, r=brson
Part of https://github.com/rust-lang/rust/issues/29935

The deprecation lint is still called "deprecated", so people can continue using `#[allow(deprecated)]` and similar things.
2015-11-23 20:08:49 +00:00
Jonas Schievink
d4a0e545e7 Print the macro context name on incomplete parse
Fixes #22425

Also fixes #30007, since it's just a change from `true` to `false`.
2015-11-23 21:06:51 +01:00
Antti Keränen
210c435752 Add compile-fail test for issue #10969 2015-11-23 21:06:08 +02:00
bors
8e9a97529d Auto merge of #29530 - jseyfried:resolve, r=nikomatsakis
Replace `TypeNsDef` and `ValueNsDef` with a more general type `NsDef`.

Define a newtype `NameBinding` for `Rc<RefCell<Option<NsDef>>>` and refactor `NameBindings` to be a `NameBinding` for each namespace.

Replace uses of `NameBindings` with `NameBinding` where only one binding is being used (in `NamespaceResult`, `Target,` etc).

Refactor away `resolve_definition_of_name_in_module` and `NameDefinition`, fixing issue #4952.
2015-11-23 17:31:19 +00:00
Manish Goregaokar
99925fb562 Look up macro names as well when suggesting replacements for function resolve errors
fixes #5780
2015-11-22 06:48:46 +05:30
Vadim Petrochenkov
a613059e3f Rename #[deprecated] to #[rustc_deprecated] 2015-11-20 16:11:20 +03:00
bors
f8827f5275 Auto merge of #29534 - oli-obk:fix/const_fn_eval, r=dotdash 2015-11-20 09:48:11 +00:00
Ariel Ben-Yehuda
3c0d55cc76 constrained_type_params: make projections depend on their trait-ref
As this is a soundness fix, it is a [breaking-change].

Fixes #29861.
2015-11-19 20:53:59 +02:00
Vadim Petrochenkov
4573bb8e96 Add special case for UnitVariant(..) patterns 2015-11-19 11:41:09 +03:00
Vadim Petrochenkov
35749923ee Fix the fallout 2015-11-19 11:41:09 +03:00
Vadim Petrochenkov
0f8519c341 Fix various bugs around empty structs and patterns 2015-11-19 11:39:18 +03:00
Niko Matsakis
cfe4c3567a ratchet down the recursion limit because, at least in my testing,
under some configurations this still causes a stack overflow and
hence a crash
2015-11-18 19:23:29 -05:00
bors
22e31f10c2 Auto merge of #29083 - petrochenkov:stability3, r=alexcrichton
What this patch does:
- Stability annotations are now based on "exported items" supplied by rustc_privacy and not "public items". Exported items are as accessible for external crates as directly public items and should be annotated with stability attributes.
- Trait impls require annotations now.
- Reexports require annotations now.
- Crates themselves didn't require annotations, now they do.
- Exported macros are annotated now, but these annotations are not used yet.
- Some useless annotations are detected and result in errors
- Finally, some small bugs are fixed - deprecation propagates from stable deprecated parents, items in blocks are traversed correctly (fixes https://github.com/rust-lang/rust/issues/29034) + some code cleanup.
2015-11-18 19:49:33 +00:00
bors
50b969d3b2 Auto merge of #29882 - devonhollowood:master, r=Manishearth
Implement #14615
2015-11-18 02:02:00 +00:00
Vadim Petrochenkov
7e2ffc7090 Add missing annotations and some tests 2015-11-18 01:24:21 +03:00
bors
841e36eb21 Auto merge of #29797 - oli-obk:remove-fromb, r=nikomatsakis
the const evaluator has a bool constant value, no need to use integers

the `fromb` function is very old. It took me a while of git-blame until i found where it was created. I think it was just a hack. All tests still pass.

I also forbade `&&` and `||` on integral types
2015-11-17 22:12:07 +00:00
bors
8809a33c34 Auto merge of #29531 - bltavares:issue-28586, r=sanxiyn
Cloases #28586
2015-11-17 15:39:10 +00:00
Devon Hollowood
07e108f038 Remove 'raw_pointer_derive' lint (#14615) 2015-11-17 01:19:14 -08:00
Jeffrey Seyfried
572c2f3e07 Fix issue #21546 and refactor NsDef 2015-11-17 09:10:41 +00:00
Oliver Schneider
96cfac6301 add unit test for the new and the changed errors 2015-11-17 10:00:34 +01:00
Jeffrey Seyfried
8a6187fde1 Refactor fields def_id and kind of Module into a single field def.
Change build_reduced_graph.rs so the fields def and module of NsDef are never both Some unless the NsDef represents a duplicate definition (see issue 26421).
2015-11-16 07:59:50 +00:00
bors
bf78389656 Auto merge of #29828 - sanxiyn:check-macro, r=nrc
Fix #27409.
2015-11-16 05:48:35 +00:00
Ariel Ben-Yehuda
4a16b562a8 fix remaining bugs 2015-11-15 19:22:32 +02:00
Ariel Ben-Yehuda
a43533a1f5 simplify and reduce the size of EvaluationResult 2015-11-15 19:22:32 +02:00
bors
4f5edf9e38 Auto merge of #29827 - Manishearth:diag-fn-field, r=eddyb
Fixes #29043
2015-11-14 12:02:20 +00:00
Seo Sanghyeon
cce7b8bd25 Check macro definition and do not expand invalid macros 2015-11-14 19:50:46 +09:00
Manish Goregaokar
2b3117cabf Fix diagnostics for calling indirect extern function pointer field
Fixes #29043
2015-11-14 15:34:17 +05:30
Antti Keränen
39c50f74e1 Add feature gate test for #[fundamental] attribute 2015-11-12 16:05:56 +02:00
Manish Goregaokar
9be0ba5cc0 Add test for constant pattern diagnostics 2015-11-12 00:48:02 +05:30
bors
7e82b39768 Auto merge of #29738 - sanxiyn:suggest-mut, r=nrc
Fix #16410.
2015-11-11 04:04:31 +00:00
bors
ad3bd1b46d Auto merge of #29726 - petrochenkov:privsan, r=alexcrichton
- Check privacy sanity in all blocks, not only function bodies
- Check all fields, not only named
- Check all impl items, not only methods
- Check default impls
- Move the sanity check in the beginning of privacy checking, so others could rely on it

Technically it's a [breaking-change], but I expect no breakage because, well, it's *sane* privacy visitor, if code is broken it must be insane by definition!
2015-11-11 00:25:08 +00:00
bors
d668fab0ef Auto merge of #29714 - petrochenkov:strparse, r=nrc
In particular, attributes are now parsed on fields of tuple variants
2015-11-10 19:15:08 +00:00
bors
05b66b8a1c Auto merge of #29705 - Ryman:mismatched_typaram_counts, r=alexcrichton
…type-params for methods
2015-11-10 15:48:00 +00:00