about summary refs log tree commit diff
path: root/src
AgeCommit message (Collapse)AuthorLines
2018-07-13Fix some RangeInclusive test cases.kennytm-10/+19
2018-07-13Change RangeInclusive to a three-field struct.kennytm-97/+155
Fix #45222.
2018-07-12Rollup merge of #52298 - RalfJung:dirs, r=Mark-Simulacrumkennytm-1/+1
make reference to dirs crate clickable in terminals Currently I have to copy-paste the link; with this change I can just click it right in my terminal window.
2018-07-12Rollup merge of #52295 - ljedrz:dyn_libsyntax_ext, r=petrochenkovkennytm-35/+37
Deny bare trait objects in src/libsyntax_ext Enforce `#![deny(bare_trait_objects)]` in `src/libsyntax_ext`.
2018-07-12Rollup merge of #52287 - ljedrz:dyn_librustc_resolve, r=petrochenkovkennytm-4/+6
Deny bare trait objects in src/librustc_resolve Enforce `#![deny(bare_trait_objects)]` in `src/librustc_resolve`.
2018-07-12Rollup merge of #52277 - kraai:patch-2, r=kennytmkennytm-1/+1
Uncapitalize "If"
2018-07-12Rollup merge of #52276 - alexcrichton:validate-proc-macro-attr, r=petrochenkovkennytm-4/+78
rustc: Verify #[proc_macro] is only a word ... and perform the same verification for #[proc_macro_attribute], currently neither of these attributes take any arguments. Closes #52273
2018-07-12Rollup merge of #52220 - ljedrz:dyn_bootstrap, r=kennytmkennytm-5/+6
Deny bare trait objects in `src/bootstrap` Enforce `#![deny(bare_trait_objects)]` in `src/bootstrap`.
2018-07-12Rollup merge of #52164 - euclio:references, r=TimNNkennytm-13/+11
use proper footnote syntax for references The previous syntax was causing rustdoc to interpret them as links.
2018-07-12Rollup merge of #51912 - mbrubeck:more_box_slice_clone, r=alexcrichtonkennytm-0/+24
impl Clone for Box<CStr>, Box<OsStr>, Box<Path> Implements #51908.
2018-07-12Rollup merge of #51816 - nodakai:conf-py-tmpfile, r=kennytmkennytm-5/+18
bootstrap: write texts to a .tmp file first for atomicity If you are using a hard-linked file as your config.toml, this change will affect the way other instances of the file is modified. The original version would modify all other instances whereas the new version will leave others unchanged, reducing the ref count by one.
2018-07-12make reference to dirs crate clickable in terminalsRalf Jung-1/+1
2018-07-12Auto merge of #52230 - alexcrichton:attr-and-derive, r=petrochenkovbors-1/+69
rustc: Search all derives for inert attributes This commit fixes an apparent mistake in librustc_resolve where when the `proc_macro` feature is enabled (or `rust_2018_preview`) the resolution of custom attributes for custom derive was tweaked. Previously when an attribute failed to resolve it was attempted to locate if there is a custom derive also in scope which declares the attribute, but only the first custom derive directive was search. Instead this commit fixes the loop to search all custom derive invocations looking for any which register the attribute in question. Closes #52219
2018-07-12Deny bare trait objects in src/libsyntax_extljedrz-35/+37
2018-07-12Deny bare trait objects in src/librustc_resolveljedrz-4/+6
2018-07-12Auto merge of #52282 - kennytm:fix-rls-break, r=oli-obkbors-23/+2
Patch clippy_lints to use the in-tree clippy as well. Should fix the most recent RLS build break.
2018-07-12Auto merge of #52194 - steveklabnik:remove-plugins, ↵bors-58/+12
r=QuietMisdreavus,GuillaumeGomez Remove rustdoc's plugins feature This fixes CVE-2018-1000622. https://cve.mitre.org/cgi-bin/cvename.cgi?name=%20CVE-2018-1000622 r? @QuietMisdreavus @GuillaumeGomez
2018-07-12Update [patch] section of clippy to include clippy_lints.kennytm-23/+2
2018-07-12Auto merge of #52089 - eddyb:issue-51907, r=nagisabors-37/+69
rustc_codegen_llvm: replace the first argument early in FnType::new_vtable. Fixes #51907 by removing the vtable pointer before the `ArgType` is even created. This allows any ABI to support trait object method calls, regardless of how it passes `*dyn Trait`. r? @nikomatsakis
2018-07-11Uncapitalize "If"Matt Kraai-1/+1
2018-07-11rustc: Verify #[proc_macro] is only a wordAlex Crichton-4/+78
... and perform the same verification for #[proc_macro_attribute], currently neither of these attributes take any arguments. Closes #52273
2018-07-11Auto merge of #52172 - oli-obk:clippy_in_rls, r=nrcbors-32/+28
Inject clippy into the rls again Also makes sure we actually point to the local rustfmt r? @nrc cc @Manishearth
2018-07-11Rollup merge of #52265 - ljedrz:dyn_librustc_codegen_utils, r=oli-obkMark Rousskov-12/+13
Deny bare trait objects in in src/librustc_codegen_utils Enforce `#![deny(bare_trait_objects)]` in `src/librustc_codegen_utils`.
2018-07-11Rollup merge of #52261 - ljedrz:dyn_libpanic_unwind, r=alexcrichtonMark Rousskov-17/+18
Deny bare trait objects in in src/libpanic_unwind Enforce `#![deny(bare_trait_objects)]` in `src/libpanic_unwind`.
2018-07-11Rollup merge of #52254 - ljedrz:dyn_librustc_metadata, r=cramertjMark Rousskov-12/+14
Deny bare trait objects in in src/librustc_metadata Enforce `#![deny(bare_trait_objects)]` in `src/librustc_metadata`.
2018-07-11Rollup merge of #52253 - ljedrz:dyn_librustc_data_structures, r=cramertjMark Rousskov-28/+30
Deny bare trait objects in in src/librustc_data_structures Enforce `#![deny(bare_trait_objects)]` in `src/librustc_data_structures`.
2018-07-11Rollup merge of #52252 - ljedrz:dyn_librustc_codegen_llvm, r=varkorMark Rousskov-33/+34
Deny bare trait objects in in src/librustc_codegen_llvm Enforce `#![deny(bare_trait_objects)]` in `src/librustc_codegen_llvm`.
2018-07-11Rollup merge of #52248 - ljedrz:dyn_librustc_allocator, r=oli-obkMark Rousskov-3/+4
Deny bare trait objects in in src/librustc_allocator Enforce `#![deny(bare_trait_objects)]` in `src/librustc_allocator`.
2018-07-11Rollup merge of #52247 - ljedrz:dyn_librustc, r=oli-obkMark Rousskov-5/+7
Deny bare trait objects in in src/librustc Enforce `#![deny(bare_trait_objects)]` in `src/librustc`.
2018-07-11Rollup merge of #52239 - CAD97:patch-1, r=alexcrichtonMark Rousskov-6/+6
Remove sync::Once::call_once 'static bound See https://internals.rust-lang.org/t/sync-once-per-instance/7918 for more context. Suggested r is @alexcrichton, the one who added the `'static` bound back in 2014. I don't want to officially r? though, if the system would even let me. I'd rather let the system choose the appropriate member since it knows more than I do. `git blame` history for `sync::Once::call_once`'s signature: - [std: Second pass stabilization of sync](https://github.com/rust-lang/rust/commit/f3a7ec7028c76b3a1c6051131328f372b068e33a) (Dec 2014) ```diff - pub fn doit<F>(&'static self, f: F) where F: FnOnce() { + #[stable] + pub fn call_once<F>(&'static self, f: F) where F: FnOnce() { ``` - [libstd: use unboxed closures](https://github.com/rust-lang/rust/commit/cdbb3ca9b776b066e2c93acfb60da8537d2b1c9b) (Dec 2014) ```diff - pub fn doit(&'static self, f: ||) { + pub fn doit<F>(&'static self, f: F) where F: FnOnce() { ``` - [std: Rewrite the `sync` module](https://github.com/rust-lang/rust/commit/71d4e77db8ad4b6d821da7e5d5300134ac95974e) (Nov 2014) ```diff - pub fn doit(&self, f: ||) { + pub fn doit(&'static self, f: ||) { ``` > ```text > The second layer is the layer provided by `std::sync` which is intended to be > the thinnest possible layer on top of `sys_common` which is entirely safe to > use. There are a few concerns which need to be addressed when making these > system primitives safe: > > * Once used, the OS primitives can never be **moved**. This means that they > essentially need to have a stable address. The static primitives use > `&'static self` to enforce this, and the non-static primitives all use a > `Box` to provide this guarantee. > ``` The author of this diff is @alexcrichton. `sync::Once` now contains only a pointer to (privately hidden) `Waiter`s, which are all stack-allocated. The `'static` bound to `sync::Once` is thus unnecessary to guarantee that any OS primitives are non-relocatable. As the `'static` bound is not required for `sync::Once`'s operation, removing it is strictly more useful. As an example, it allows attaching a one-time operation to instances rather than only to global singletons.
2018-07-11Rollup merge of #52224 - ljedrz:dyn_libsyntax, r=oli-obkMark Rousskov-73/+76
Deny bare trait objects in in src/libsyntax Enforce `#![deny(bare_trait_objects)]` in `src/libsyntax`.
2018-07-11Rollup merge of #52223 - ljedrz:dyn_liballoc, r=cramertjMark Rousskov-38/+39
Deny bare trait objects in in src/liballoc Enforce #![deny(bare_trait_objects)] in src/liballoc.
2018-07-11Rollup merge of #52207 - RalfJung:unsafety-errors, r=estebankMark Rousskov-50/+114
improve error message shown for unsafe operations Add a short explanation saying why undefined behavior could arise. In particular, the error many people got for "creating a pointer to a packed field requires unsafe block" was not worded great -- it lead to people just adding the unsafe block without considering if what they are doing follows the rules. I am not sure if a "note" is the right thing, but that was the easiest thing to add... Inspired by @gnzlbg at https://github.com/rust-lang/rust/issues/46043#issuecomment-381544673
2018-07-11Rollup merge of #52193 - Emerentius:step_by_note, r=alexcrichtonMark Rousskov-1/+22
step_by: leave time of item skip unspecified This gives us some leeway when optimizing. `StepBy<RangeFrom<_>>` is one case where this is needed.
2018-07-11Rollup merge of #51952 - petrochenkov:transmark, r=alexcrichtonMark Rousskov-173/+450
hygiene: Decouple transparencies from expansion IDs And remove fallback to parent modules during resolution of names in scope. This is a breaking change for users of unstable macros 2.0 (both procedural and declarative), code like this: ```rust #![feature(decl_macro)] macro m($S: ident) { struct $S; mod m { type A = $S; } } fn main() { m!(S); } ``` or equivalent ```rust #![feature(decl_macro)] macro m($S: ident) { mod m { type A = $S; } } fn main() { struct S; m!(S); } ``` stops working due to module boundaries being properly enforced. For proc macro derives this is still reported as a compatibility warning to give `actix_derive`, `diesel_derives` and `palette_derive` time to fix their issues. Fixes https://github.com/rust-lang/rust/issues/50504 in accordance with [this comment](https://github.com/rust-lang/rust/issues/50504#issuecomment-399764767).
2018-07-11Rollup merge of #51614 - csmoe:lit_sugg, r=estebankMark Rousskov-29/+38
Correct suggestion for println Closes https://github.com/rust-lang/rust/issues/51585 r? @estebank
2018-07-11use proper footnote syntax for referencesAndy Russell-13/+11
The previous syntax was causing rustdoc to interpret them as links.
2018-07-11Auto merge of #51702 - ecstatic-morse:infinite-loop-detection, r=oli-obkbors-26/+301
Infinite loop detection for const evaluation Resolves #50637. An `EvalContext` stores the transient state (stack, heap, etc.) of the MIRI virtual machine while it executing code. As long as MIRI only executes pure functions, we can detect if a program is in a state where it will never terminate by periodically taking a "snapshot" of this transient state and comparing it to previous ones. If any two states are exactly equal, the machine must be in an infinite loop. Instead of fully cloning a snapshot every time the detector is run, we store a snapshot's hash. Only when a hash collision occurs do we fully clone the interpreter state. Future snapshots which cause a collision will be compared against this clone, causing the interpreter to abort if they are equal. At the moment, snapshots are not taken until MIRI has progressed a certain amount. After this threshold, snapshots are taken every `DETECTOR_SNAPSHOT_PERIOD` steps. This means that an infinite loop with period `P` will be detected after a maximum of `2 * P * DETECTOR_SNAPSHOT_PERIOD` interpreter steps. The factor of 2 arises because we only clone a snapshot after it causes a hash collision.
2018-07-11Deny bare trait objects in in src/librustc_codegen_utilsljedrz-12/+13
2018-07-11Deny bare trait objects in in src/libpanic_unwindljedrz-17/+18
2018-07-11Auto merge of #51553 - jD91mZM2:uds, r=sfacklerbors-1/+740
Unix sockets on redox This is done using the ipcd daemon. It's not exactly like unix sockets because there is not actually a physical file for the path, but it's close enough for a basic implementation :) This allows mio-uds and tokio-uds to work with a few modifications as well, which is exciting!
2018-07-11add a missing `dyn`ljedrz-1/+1
2018-07-11Deny bare trait objects in in src/librustc_metadataljedrz-12/+14
2018-07-11Enforce #![deny(bare_trait_objects)] in src/librustc_data_structures testsljedrz-14/+14
2018-07-11Auto merge of #51230 - nikic:no-verify-lto, r=pnkfelixbors-15/+31
Disable LLVM verification by default Currently -Z no-verify only controls IR verification prior to LLVM codegen, while verification is performed unconditionally both before and after linking with (Thin)LTO. Also wondering what the sentiment is on disabling verification by default (and e.g. only enabling it on ALT builds with assertions). This does not seem terribly useful outside of rustc development and it does seem to show up in profiles (at something like 3%). **EDIT:** A table showing the various configurations and what is enabled when. | Configuration | Dynamic verification performed | LLVM static assertions compiled in | | --- | --- | --- | | alt builds | | yes | | nightly builds | | no | | stable builds | | no | | CI builds | | | | dev builds in a checkout | | |
2018-07-11Deny bare trait objects in in src/librustc_data_structuresljedrz-13/+15
2018-07-11suggest on new snippetcsmoe-33/+31
2018-07-11Deny bare trait objects in in src/librustc_codegen_llvmljedrz-33/+34
2018-07-11Deny bare trait objects in in src/librustc_allocatorljedrz-3/+4
2018-07-11Deny bare trait objects in in src/librustcljedrz-5/+7