Commit Graph

836 Commits

Author SHA1 Message Date
Vadim Petrochenkov
c3f53d1b12 Resolve prefix in imports with empty braces 2015-09-17 14:13:14 +03:00
Nick Cameron
e9f1b06329 Use ast attributes every where (remove HIR attributes).
This could be a [breaking-change] if your lint or syntax extension (is that even possible?) uses HIR attributes or literals.
2015-09-16 10:57:06 +12:00
bors
7161530fc4 Auto merge of #28406 - petrochenkov:primitive, r=eddyb
This was missing from https://github.com/rust-lang/rust/pull/27451

r? @eddyb
2015-09-15 11:35:11 +00:00
Vadim Petrochenkov
cfa2925f2e Prohibit renaming to primitive types' names in import lists 2015-09-15 01:07:17 +03:00
Alex Crichton
f0b1326dc7 std: Stabilize/deprecate features for 1.4
The FCP is coming to a close and 1.4 is coming out soon, so this brings in the
libs team decision for all library features this cycle.

Stabilized APIs:

* `<Box<str>>::into_string`
* `Arc::downgrade`
* `Arc::get_mut`
* `Arc::make_mut`
* `Arc::try_unwrap`
* `Box::from_raw`
* `Box::into_raw`
* `CStr::to_str`
* `CStr::to_string_lossy`
* `CString::from_raw`
* `CString::into_raw`
* `IntoRawFd::into_raw_fd`
* `IntoRawFd`
* `IntoRawHandle::into_raw_handle`
* `IntoRawHandle`
* `IntoRawSocket::into_raw_socket`
* `IntoRawSocket`
* `Rc::downgrade`
* `Rc::get_mut`
* `Rc::make_mut`
* `Rc::try_unwrap`
* `Result::expect`
* `String::into_boxed_slice`
* `TcpSocket::read_timeout`
* `TcpSocket::set_read_timeout`
* `TcpSocket::set_write_timeout`
* `TcpSocket::write_timeout`
* `UdpSocket::read_timeout`
* `UdpSocket::set_read_timeout`
* `UdpSocket::set_write_timeout`
* `UdpSocket::write_timeout`
* `Vec::append`
* `Vec::split_off`
* `VecDeque::append`
* `VecDeque::retain`
* `VecDeque::split_off`
* `rc::Weak::upgrade`
* `rc::Weak`
* `slice::Iter::as_slice`
* `slice::IterMut::into_slice`
* `str::CharIndices::as_str`
* `str::Chars::as_str`
* `str::split_at_mut`
* `str::split_at`
* `sync::Weak::upgrade`
* `sync::Weak`
* `thread::park_timeout`
* `thread::sleep`

Deprecated APIs

* `BTreeMap::with_b`
* `BTreeSet::with_b`
* `Option::as_mut_slice`
* `Option::as_slice`
* `Result::as_mut_slice`
* `Result::as_slice`
* `f32::from_str_radix`
* `f64::from_str_radix`

Closes #27277
Closes #27718
Closes #27736
Closes #27764
Closes #27765
Closes #27766
Closes #27767
Closes #27768
Closes #27769
Closes #27771
Closes #27773
Closes #27775
Closes #27776
Closes #27785
Closes #27792
Closes #27795
Closes #27797
2015-09-11 09:48:48 -07:00
Niko Matsakis
004d70212a track, for each upvar, its index in list of upvars 2015-09-06 07:27:22 -04:00
Simonas Kazlauskas
d8074e65b0 Use proper span for break and continue labels
Fixes #28109
2015-09-03 03:50:43 +03:00
Nick Cameron
facdf2ebb1 Add an intital HIR and lowering step 2015-09-03 10:02:36 +12:00
Ms2ger
2076cddcf2 Rename FnKind variants and stop re-exporting them from the visit module.
There is no longer a need for that pattern, since enums are now qualified.
2015-08-26 12:02:58 +02:00
bors
797d0ba59c Auto merge of #27857 - Manishearth:improve-fnkind, r=pnkfelix
Since enums are namespaced now, should we also remove the `Fk` prefixes from `FnKind` and remove the reexport? (The reexport must be removed because otherwise it clashes with glob imports containing `ItemFn`). IMO writing `FnKind::Method` is much clearer than `FkMethod`.
2015-08-24 12:47:57 +00:00
Niko Matsakis
c0de23de81 convert to use is_local instead of == LOCAL_CRATE 2015-08-24 05:35:34 -04:00
Niko Matsakis
e91bef2e05 fallout from moving def-id 2015-08-24 05:35:34 -04:00
Alexis Beingessner
5bbaa3c9ac fallout of reworking rc and arc APIs 2015-08-19 15:52:12 -07:00
bors
e47eb7c2c8 Auto merge of #27493 - GSam:master, r=nrc
In order to test the validity of identifiers, exposing the name resolution module is necessary. Other changes mostly comprise of exposing modules publicly like parts of save-analysis, so they can be called appropriately.
2015-08-19 03:50:05 +00:00
Manish Goregaokar
c03bf18b84 FnFnBlock -> FkClosure 2015-08-16 18:23:58 +05:30
Alex Crichton
2972b77134 Add issue for the rustc_private feature everywhere 2015-08-15 18:09:17 -07:00
Alex Crichton
737397c584 rollup merge of #27622: eefriedman/https-url
Also fixes a few outdated links.
2015-08-11 22:11:25 -07:00
Garming Sam
fc9ecae444 Modify the callback to be run from a macro 2015-08-10 19:12:47 +12:00
Eli Friedman
bbbfed2f93 Use https URLs to refer to rust-lang.org where appropriate.
Also fixes a few outdated links.
2015-08-09 14:28:46 -07:00
Garming Sam
fdba872944 Add a proper comment for create_resolver 2015-08-09 21:09:55 +12:00
Garming Sam
8b98256f64 Remove some duplicated code with new create_resolver 2015-08-09 20:54:12 +12:00
Garming Sam
251696ed0d Remove unused language items 2015-08-09 20:54:11 +12:00
Garming Sam
ff6dd5c24b Avoid change to current module on escape from callback 2015-08-09 20:54:11 +12:00
Garming Sam
f4ea3928ac Introduce callback to resolver
Sets a flag to pass through the rest of the walker.
2015-08-09 20:53:57 +12:00
Victor Berger
8e24091f98 Factor inc/dec count methods. 2015-08-06 12:47:10 +02:00
Victor Berger
b69bf1153d Block import resolution only on 'pub' imports.
When resolving 'use' statements, only consider pub imports of the
target module as blocking.

Closes #4865
2015-08-05 21:57:27 +02:00
bors
6a3545ef05 Auto merge of #27439 - vberger:more_perseverant_resolve, r=nrc
(This is a second try at #26242. This time I think things should be ok.)

The current algorithm handling import resolutions works sequentially, handling imports in the order they appear in the source file, and blocking/bailing on the first one generating an error/being unresolved.

This can lead to situations where the order of the `use` statements can make the difference between "this code compiles" and "this code fails on an unresolved import" (see #18083 for example). This is especially true when considering glob imports.

This PR changes the behaviour of the algorithm to instead try to resolve all imports in a module. If one fails, it is recorded and the next one is tried (instead of directly giving up). Also, all errors generated are stored (and not reported directly).

The main loop of the algorithms guaranties that the algorithm will always finish: if a round of resolution does not resolve anything new, we are stuck and give up. At this point, the new version of the algorithm will display all errors generated by the last round of resolve. This way we are sure to not silence relevant errors or help messages, but also to not give up too early.

**As a consequence, the import resolution becomes independent of the order in which the `use` statements are written in the source files.** I personally don't see any situations where this could be a problem, but this might need some thought.

I passed `rpass` and `cfail` tests on my computer, and now am compiling a full stage2 compiler to ensure the crates reporting errors in my previous attempts still build correctly. I guess once I have checked it, this will need a crater run?

Fixes #18083.

r? @alexcrichton , cc @nrc @brson
2015-08-05 03:52:39 +00:00
Manish Goregaokar
6be272cff5 Rollup merge of #27491 - GuillaumeGomez:patch-4, r=Manishearth 2015-08-04 18:00:53 +05:30
Eduard Burtescu
a34b0a4691 rustc: replace def::MethodProvenance with ty::ImplOrTraitItemContainer. 2015-08-04 01:16:53 +03:00
Guillaume Gomez
d6f713be3f Improve E0423 error message 2015-08-03 10:43:13 +02:00
Victor Berger
96041ccd10 More perseverant about indeterminate imports.
Most errors generated by resolve might be caused by
not-yet-resolved glob imports. This changes the behavior of the
resolve imports algorithms to not fail prematurally on first
error, but instead buffer intermediate errors and report them
only when stuck.

Fixes #18083
2015-07-31 19:10:14 +02:00
Victor Berger
88c2914e56 Remove unused resolve error message.
There is not situation where `foo` would be unresolved but not `foo::*`.
2015-07-31 19:10:14 +02:00
bors
6fcf62831e Auto merge of #27349 - arielb1:constant-at, r=alexcrichton
Fixes #27033
Fixes #27077 

r? @alexcrichton
2015-07-29 08:23:04 +00:00
Ariel Ben-Yehuda
757b0c176f prohibit the lhs of an @-pattern being a constant
as this breaks code that worked under some conditions, this is a
[breaking-change]

Fixes #27033
Fixes #27077
2015-07-28 19:51:08 +03:00
Oliver Schneider
00a5e66f81 remove get_ident and get_name, make as_str sound 2015-07-28 18:07:20 +02:00
Andrew Paseltiner
ce856a55f6 add separate errors for out-of-place associated consts and types
Previously, these would both be labeled as methods.
2015-07-19 15:32:24 -04:00
Manish Goregaokar
1da1a46d56 Rollup merge of #26898 - GuillaumeGomez:fixup, r=eddyb
r? @eddyb

First part of the improvement. I then intend to improve resolve_error as indicated by @eddyb. Do not merge for now (please !).
2015-07-16 14:13:25 +05:30
Guillaume Gomez
60133aa6dd Remove macro, import function and enum 2015-07-14 19:53:09 +02:00
Guillaume Gomez
31262c206e Arguments are now passed directly to the function instead of the enum variants 2015-07-14 16:32:43 +02:00
Guillaume Gomez
c5f7c19cf2 End of error code spanning centralization 2015-07-14 15:37:52 +02:00
Guillaume Gomez
f52a87c44e Centralize error spaning and add an enum to make this treatment easier 2015-07-13 19:32:45 +02:00
Guillaume Gomez
cbf0b1b399 Remove warnings by centralizing error codes usage 2015-07-13 02:05:02 +02:00
Guillaume Gomez
48ee57e656 Update error codes 2015-07-13 00:57:16 +02:00
Guillaume Gomez
f1b231dd71 Remove unused method 2015-07-13 00:45:50 +02:00
Guillaume Gomez
8b731a5cac Add error codes 2015-07-13 00:31:09 +02:00
Simonas Kazlauskas
7a90865db5 Implement RFC 1058 2015-07-12 00:47:56 +03:00
Guillaume Gomez
2e00b31770 We just have to replace error codes but code is good now 2015-07-11 21:46:06 +02:00
Guillaume Gomez
c3fd0e1229 Remove token::get_name when unneeded 2015-07-10 00:00:08 +02:00
Seo Sanghyeon
8d9f1bab75 Remove a FIXME 2015-07-08 23:30:19 +09:00
Eduard Burtescu
84b49b2d35 rustc_resolve: don't require redundant arguments to resolve_crate. 2015-06-19 01:18:42 +03:00