248 Commits

Author SHA1 Message Date
Isaac van Bakel
400075d9d9 Fixed all unnecessary muts in language core 2017-08-01 23:01:24 +01:00
Esteban Küber
552ff07758 Point at path segment on module not found
Point at the correct path segment on a import statement where a module
doesn't exist.

New output:

```rust
error[E0432]: unresolved import `std::bar`
 --> <anon>:1:10
  |
1 | use std::bar::{foo1, foo2};
  |          ^^^ Could not find `bar` in `std`
```

instead of:

```rust
error[E0432]: unresolved import `std::bar::foo1`
 --> <anon>:1:16
  |
1 | use std::bar::{foo1, foo2};
  |                ^^^^ Could not find `bar` in `std`

error[E0432]: unresolved import `std::bar::foo2`
 --> <anon>:1:22
  |
1 | use std::bar::{foo1, foo2};
  |                      ^^^^ Could not find `bar` in `std`
```
2017-07-25 21:25:43 -07:00
Vadim Petrochenkov
bdffb9722d Move public reexports of private extern crates into a separate lint
This is going to be a hard error while all private-in-public errors from rustc_privacy will be reclassified into lints.
2017-07-08 01:56:27 +03:00
Tommy Ip
b89db83e6c Only emit one error for use foo::self;
Currently `use foo::self;` would emit both E0429 and E0432. This
commit silence the latter one (assuming `foo` is a valid module).

Fixes #42559
2017-06-10 13:03:11 +01:00
Vadim Petrochenkov
d73a0fef38 Turn public reexporting of private extern crates into a lint again 2017-05-30 22:00:30 +03:00
Vadim Petrochenkov
caecb76f08 Turn sufficiently old compatibility lints into hard errors 2017-05-30 22:00:30 +03:00
Jeffrey Seyfried
3eb235b45e Improve intercrate hygiene. 2017-05-25 05:52:11 +00:00
Jeffrey Seyfried
1f175fa35d Hygienize librustc_resolve. 2017-05-25 05:51:50 +00:00
Jeffrey Seyfried
2a1d2edb82 Declarative macros 2.0 without hygiene. 2017-05-25 05:51:06 +00:00
Oliver Schneider
a54bbf2cb3 Weave the span of an import through the resolve code 2017-05-12 11:21:11 +02:00
Oliver Schneider
dd87eabd83 Remove need for &format!(...) or &&"" dances in span_label calls 2017-05-08 12:56:15 +02:00
Jeffrey Seyfried
64e9af47f4 Allow declarative macros 2.0 and use macro imports to shadow builtin macros. 2017-03-24 21:05:52 +00:00
Jeffrey Seyfried
678e882ce2
Check for conflicts between macros 1.0 exports (#[macro_export], #[macro_reexport])
and macros 2.0 exports (`pub use` macro re-exports and `pub macro` (once implemented)
at the crate root.
2017-03-21 16:23:18 -04:00
Son
823e185a40 Suggest only if resolution was previously resolved 2017-02-02 22:05:49 +11:00
Jeffrey Seyfried
356fa2c5db Warn on unused #[macro_use] imports. 2017-01-22 01:31:00 +00:00
Jeffrey Seyfried
2efec3c180 Improve unused_extern_crate warnings. 2017-01-21 07:40:19 +00:00
Jeffrey Seyfried
d86e487b0b Start warning cycle. 2017-01-10 05:54:24 +00:00
Jeffrey Seyfried
235a7a743c Change self in an import list use foo::{self, ...} to only import a module or enum foo. 2017-01-10 05:54:22 +00:00
Jeffrey Seyfried
927408d9c5 Fix regression with duplicate #[macro_export] macro_rules!. 2017-01-04 08:03:23 +00:00
Vadim Petrochenkov
09aba18e10 More systematic error reporting in path resolution 2016-12-26 15:01:49 +03:00
bors
44ad63e487 Auto merge of #38490 - jseyfried:def_id_vis, r=nrc
Use `DefId`s instead of `NodeId`s for `pub(restricted)` visibilities

This is groundwork for hygiene 2.0, specifically privacy checking hygienic intercrate name resolutions.
r? @nrc
2016-12-25 21:32:37 +00:00
bors
c74ac6cb97 Auto merge of #38566 - jseyfried:fix_import_resolution_bug, r=eddyb
Fix bug in import resolution

Fixes #38535 and fixes #38556.
r? @nrc
2016-12-25 13:14:12 +00:00
Jeffrey Seyfried
41f1e189ee Use DefIds instead of NodeIds for pub(restricted) visibilities. 2016-12-24 00:23:03 +00:00
Jeffrey Seyfried
31d9cc3833 Fix import resolution bug and fold all idents in the AST. 2016-12-23 02:16:31 +00:00
Jeffrey Seyfried
f10f50b426 Refactor how global paths are represented (for both ast and hir). 2016-12-22 06:14:35 +00:00
Alex Crichton
0cf7d5dcae Merge branch 'rfc_1560_warning_cycle' of https://github.com/jseyfried/rust into rollup
Conflicts:
	src/librustc_resolve/lib.rs
	src/librustc_resolve/resolve_imports.rs
2016-12-20 13:00:16 -08:00
Jeffrey Seyfried
aa19274b72 De-genericize try_define. 2016-12-18 23:26:26 +00:00
Jeffrey Seyfried
59de7f8f04 Add ident.unhygienize() and use Ident more instead of Name in resolve. 2016-12-18 23:26:22 +00:00
Jeffrey Seyfried
b35c306b65 Fix the path resolutions of glob imports. 2016-12-18 23:23:23 +00:00
Aaron Turon
9a5cef4de5 Address fallout 2016-12-16 19:42:17 -08:00
Jeffrey Seyfried
cfabce2230 Demote most backwards incompatible ambiguity errors from RFC 1560 to warnings. 2016-12-15 06:02:49 +00:00
Jeffrey Seyfried
ed9a09d40c Support paths in macro invocations. 2016-11-30 22:54:40 +00:00
Jeffrey Seyfried
e9e178a581 Refactor away ResolveResult. 2016-11-29 00:18:39 +00:00
Jeffrey Seyfried
af2d89c7f6 Refactor path resoloution. 2016-11-29 00:18:34 +00:00
Jeffrey Seyfried
1fd9041b82 Avoid loading needless proc-macro dependencies. 2016-11-28 03:37:02 +00:00
Jeffrey Seyfried
bf41c85c24 Cleanup. 2016-11-21 09:21:48 +00:00
Jeffrey Seyfried
9c88650080 Add feature use_extern_macros. 2016-11-17 08:08:06 +00:00
Jeffrey Seyfried
b25c063caa Refactor out PerNS. 2016-11-17 08:07:47 +00:00
Jeffrey Seyfried
1bbf7a43d3 Add field expansion: Mark to NameBinding. 2016-11-17 08:07:46 +00:00
Jeffrey Seyfried
641274f907 Resolve imports during expansion. 2016-11-17 08:07:44 +00:00
Jeffrey Seyfried
907120637e Add field module.unresolved_invocations. 2016-11-17 08:07:41 +00:00
Jeffrey Seyfried
872943c317 Improve macro reexports. 2016-11-10 10:04:24 +00:00
Jeffrey Seyfried
b0e13dc5ba Treat extern crates more like imports (pure refactoring). 2016-11-10 06:04:40 +00:00
Jeffrey Seyfried
7b81106a85 Use Idents instead of Names in ImportDirective's paths. 2016-10-19 09:58:12 +00:00
Alex Crichton
20991829e2 Rollup merge of #37084 - jseyfried:cleanup_expanded_macro_use_scopes, r=nrc
macros: clean up scopes of expanded `#[macro_use]` imports

This PR changes the scope of macro-expanded `#[macro_use]` imports to match that of unexpanded `#[macro_use]` imports. For example, this would be allowed:
```rust
example!();
macro_rules! m { () => { #[macro_use(example)] extern crate example_crate; } }
m!();
```

This PR also enforces the full shadowing restrictions from RFC 1560 on `#[macro_use]` imports (currently, we only enforce the weakened restrictions from #36767).

This is a [breaking-change], but I believe it is highly unlikely to cause breakage in practice.
r? @nrc
2016-10-12 14:07:56 -07:00
Jeffrey Seyfried
31e0e12e69 Add support for undetermined macro invocations. 2016-10-11 03:41:48 +00:00
Jeffrey Seyfried
dd19bf0843 Support importing inaccessible extern crates with a warning again. 2016-10-07 07:39:00 +00:00
Vadim Petrochenkov
d19c16acfb Fix cross-crate resolution of half-items created by export shadowing 2016-10-04 22:20:37 +03:00
Jeffrey Seyfried
dd47815478 Avoid re-export errors in the generated test harness. 2016-09-27 20:23:59 +00:00
Jeffrey Seyfried
9a0e88a339 Refactor away ParentLink. 2016-09-22 07:13:54 +00:00