Eduard-Mihai Burtescu
69e596744f
Rollup merge of #40027 - cramertj:stabilize_static_recursion, r=nrc
...
Stabilize static_recursion
Fix #29719 .
2017-02-25 14:13:35 +02:00
Eduard-Mihai Burtescu
c3075f3d96
Rollup merge of #40025 - est31:master, r=eddyb
...
Implement non-capturing closure to fn coercion
Implements non capturing closure coercion ([RFC 1558](https://github.com/rust-lang/rfcs/blob/master/text/1558-closure-to-fn-coercion.md )).
cc tracking issue #39817
2017-02-25 14:13:33 +02:00
Eduard-Mihai Burtescu
a6a5c32e0e
Rollup merge of #39953 - keeperofdakeys:macro-error, r=jseyfried
...
Provide suggestions for unknown macros imported with `use`
cc https://github.com/rust-lang/rust/issues/30197
r? @jseyfried
2017-02-25 14:13:23 +02:00
est31
f753a6ef02
Feature gate
2017-02-23 22:32:25 +01:00
Josh Driver
4ecdc68153
Move MacroKind into Def::Macro
2017-02-23 20:12:33 +10:30
Taylor Cramer
802a826a57
Stabilize static_recursion
2017-02-21 23:41:04 -08:00
Steve Klabnik
a1301c3495
Create "The Unstable Book"
...
part of #39588
2017-02-21 21:12:52 -05:00
Guillaume Gomez
b6818be41d
Add long error explanations
2017-02-21 15:52:14 +01:00
Guillaume Gomez
ea2a684099
Add error codes for errors in libsyntax
2017-02-20 17:47:44 +01:00
bors
16c94cd673
Auto merge of #39752 - keeperofdakeys:macro-error, r=keeperofdakeys
...
Refactor macro resolution errors + add derive macro suggestions
Move legacy macro resolution error reporting to `finalize_current_module_macro_resolutions`, and provide suggestions for derive macros.
Fixes #39323
cc https://github.com/rust-lang/rust/issues/30197
r? @jseyfried
2017-02-17 04:02:18 +00:00
Josh Driver
2d91e7aab8
Refactor macro resolution errors + add derive macro suggestions
2017-02-16 22:03:15 +10:30
est31
aebd94fd3c
Stabilize field init shorthand
...
Closes #37340 .
2017-02-15 07:11:13 +01:00
Corey Farwell
c2ea734734
Rollup merge of #39730 - jseyfried:fix_empty_seq_rep_ice, r=nrc
...
macros: fix ICE on certain sequence repetitions
Fixes #39709 .
r? @nrc
2017-02-14 10:07:30 -05:00
Jeffrey Seyfried
2cc61eebb7
Allow using inert attributes from proc_macro_derives with #![feature(proc_macro)].
2017-02-12 07:20:04 +00:00
Jeffrey Seyfried
4b413bc393
Move legacy custom derives collection into resolver.find_attr_invoc().
2017-02-12 03:22:52 +00:00
Jeffrey Seyfried
b3d73995da
Fix ICE on certain sequence repetitions.
2017-02-10 23:58:18 +00:00
Corey Farwell
ed7f3c4635
Rollup merge of #39674 - jseyfried:fix_token_tree_parsing_ICE, r=nrc
...
parser: fix ICE when parsing token trees after an error
Fixes #39388 , fixes #39616 .
r? @nrc
2017-02-09 19:43:21 -05:00
bors
1129ce51a6
Auto merge of #39265 - est31:master, r=petrochenkov
...
Stabilize static lifetime in statics
Stabilize the "static_in_const" feature. Blockers before this PR can be merged:
* [x] The [FCP with inclination to stabilize](https://github.com/rust-lang/rust/issues/35897#issuecomment-270441437 ) needs to be over. FCP lasts roughly three weeks, so will be over at Jan 25, aka this thursday.
* [x] Documentation needs to be added (#37928 )
Closes #35897 .
2017-02-09 11:42:49 +00:00
Corey Farwell
3053494a9a
Rollup merge of #38699 - japaric:lsan, r=alexcrichton
...
LeakSanitizer, ThreadSanitizer, AddressSanitizer and MemorySanitizer support
```
$ cargo new --bin leak && cd $_
$ edit Cargo.toml && tail -n3 $_
```
``` toml
[profile.dev]
opt-level = 1
```
```
$ edit src/main.rs && cat $_
```
``` rust
use std::mem;
fn main() {
let xs = vec![0, 1, 2, 3];
mem::forget(xs);
}
```
```
$ RUSTFLAGS="-Z sanitizer=leak" cargo run --target x86_64-unknown-linux-gnu; echo $?
Finished dev [optimized + debuginfo] target(s) in 0.0 secs
Running `target/debug/leak`
=================================================================
==10848==ERROR: LeakSanitizer: detected memory leaks
Direct leak of 16 byte(s) in 1 object(s) allocated from:
#0 0x557c3488db1f in __interceptor_malloc /shared/rust/checkouts/lsan/src/compiler-rt/lib/lsan/lsan_interceptors.cc:55
#1 0x557c34888aaa in alloc::heap::exchange_malloc::h68f3f8b376a0da42 /shared/rust/checkouts/lsan/src/liballoc/heap.rs:138
#2 0x557c34888afc in leak::main::hc56ab767de6d653a $PWD/src/main.rs:4
#3 0x557c348c0806 in __rust_maybe_catch_panic ($PWD/target/debug/leak+0x3d806)
SUMMARY: LeakSanitizer: 16 byte(s) leaked in 1 allocation(s).
23
```
```
$ cargo new --bin racy && cd $_
$ edit src/main.rs && cat $_
```
``` rust
use std::thread;
static mut ANSWER: i32 = 0;
fn main() {
let t1 = thread::spawn(|| unsafe { ANSWER = 42 });
unsafe {
ANSWER = 24;
}
t1.join().ok();
}
```
```
$ RUSTFLAGS="-Z sanitizer=thread" cargo run --target x86_64-unknown-linux-gnu; echo $?
==================
WARNING: ThreadSanitizer: data race (pid=12019)
Write of size 4 at 0x562105989bb4 by thread T1:
#0 racy::main::_$u7b$$u7b$closure$u7d$$u7d$::hbe13ea9e8ac73f7e $PWD/src/main.rs:6 (racy+0x000000010e3f)
#1 _$LT$std..panic..AssertUnwindSafe$LT$F$GT$$u20$as$u20$core..ops..FnOnce$LT$$LP$$RP$$GT$$GT$::call_once::h2e466a92accacc78 /shared/rust/checkouts/lsan/src/libstd/panic.rs:296 (racy+0x000000010cc5)
#2 std::panicking::try::do_call::h7f4d2b38069e4042 /shared/rust/checkouts/lsan/src/libstd/panicking.rs:460 (racy+0x00000000c8f2)
#3 __rust_maybe_catch_panic <null> (racy+0x0000000b4e56)
#4 std::panic::catch_unwind::h31ca45621ad66d5a /shared/rust/checkouts/lsan/src/libstd/panic.rs:361 (racy+0x00000000b517)
#5 std:🧵 :Builder::spawn::_$u7b$$u7b$closure$u7d$$u7d$::hccfc37175dea0b01 /shared/rust/checkouts/lsan/src/libstd/thread/mod.rs:357 (racy+0x00000000c226)
#6 _$LT$F$u20$as$u20$alloc..boxed..FnBox$LT$A$GT$$GT$::call_box::hd880bbf91561e033 /shared/rust/checkouts/lsan/src/liballoc/boxed.rs:605 (racy+0x00000000f27e)
#7 std::sys:👿 🧵 :Thread:🆕 :thread_start::hebdfc4b3d17afc85 <null> (racy+0x0000000abd40)
Previous write of size 4 at 0x562105989bb4 by main thread:
#0 racy::main::h23e6e5ca46d085c3 $PWD/src/main.rs:8 (racy+0x000000010d7c)
#1 __rust_maybe_catch_panic <null> (racy+0x0000000b4e56)
#2 __libc_start_main <null> (libc.so.6+0x000000020290)
Location is global 'racy::ANSWER::h543d2b139f819b19' of size 4 at 0x562105989bb4 (racy+0x0000002f8bb4)
Thread T1 (tid=12028, running) created by main thread at:
#0 pthread_create /shared/rust/checkouts/lsan/src/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:902 (racy+0x00000001aedb)
#1 std::sys:👿 🧵 :Thread:🆕 :hce44187bf4a36222 <null> (racy+0x0000000ab9ae)
#2 std:🧵 :spawn::he382608373eb667e /shared/rust/checkouts/lsan/src/libstd/thread/mod.rs:412 (racy+0x00000000b5aa)
#3 racy::main::h23e6e5ca46d085c3 $PWD/src/main.rs:6 (racy+0x000000010d5c)
#4 __rust_maybe_catch_panic <null> (racy+0x0000000b4e56)
#5 __libc_start_main <null> (libc.so.6+0x000000020290)
SUMMARY: ThreadSanitizer: data race $PWD/src/main.rs:6 in racy::main::_$u7b$$u7b$closure$u7d$$u7d$::hbe13ea9e8ac73f7e
==================
ThreadSanitizer: reported 1 warnings
66
```
```
$ cargo new --bin oob && cd $_
$ edit src/main.rs && cat $_
```
``` rust
fn main() {
let xs = [0, 1, 2, 3];
let y = unsafe { *xs.as_ptr().offset(4) };
}
```
```
$ RUSTFLAGS="-Z sanitizer=address" cargo run --target x86_64-unknown-linux-gnu; echo $?
=================================================================
==13328==ERROR: AddressSanitizer: stack-buffer-overflow on address 0x7fff29f3ecd0 at pc 0x55802dc6bf7e bp 0x7fff29f3ec90 sp 0x7fff29f3ec88
READ of size 4 at 0x7fff29f3ecd0 thread T0
#0 0x55802dc6bf7d in oob::main::h0adc7b67e5feb2e7 $PWD/src/main.rs:3
#1 0x55802dd60426 in __rust_maybe_catch_panic ($PWD/target/debug/oob+0xfe426)
#2 0x55802dd58dd9 in std::rt::lang_start::hb2951fc8a59d62a7 ($PWD/target/debug/oob+0xf6dd9)
#3 0x55802dc6c002 in main ($PWD/target/debug/oob+0xa002)
#4 0x7fad8c3b3290 in __libc_start_main (/usr/lib/libc.so.6+0x20290)
#5 0x55802dc6b719 in _start ($PWD/target/debug/oob+0x9719)
Address 0x7fff29f3ecd0 is located in stack of thread T0 at offset 48 in frame
#0 0x55802dc6bd5f in oob::main::h0adc7b67e5feb2e7 $PWD/src/main.rs:1
This frame has 1 object(s):
[32, 48) 'xs' <== Memory access at offset 48 overflows this variable
HINT: this may be a false positive if your program uses some custom stack unwind mechanism or swapcontext
(longjmp and C++ exceptions *are* supported)
SUMMARY: AddressSanitizer: stack-buffer-overflow $PWD/src/main.rs:3 in oob::main::h0adc7b67e5feb2e7
Shadow bytes around the buggy address:
0x1000653dfd40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x1000653dfd50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x1000653dfd60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x1000653dfd70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x1000653dfd80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
=>0x1000653dfd90: 00 00 00 00 f1 f1 f1 f1 00 00[f3]f3 00 00 00 00
0x1000653dfda0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x1000653dfdb0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x1000653dfdc0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x1000653dfdd0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x1000653dfde0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Shadow byte legend (one shadow byte represents 8 application bytes):
Addressable: 00
Partially addressable: 01 02 03 04 05 06 07
Heap left redzone: fa
Heap right redzone: fb
Freed heap region: fd
Stack left redzone: f1
Stack mid redzone: f2
Stack right redzone: f3
Stack partial redzone: f4
Stack after return: f5
Stack use after scope: f8
Global redzone: f9
Global init order: f6
Poisoned by user: f7
Container overflow: fc
Array cookie: ac
Intra object redzone: bb
ASan internal: fe
Left alloca redzone: ca
Right alloca redzone: cb
==13328==ABORTING
1
```
```
$ cargo new --bin uninit && cd $_
$ edit src/main.rs && cat $_
```
``` rust
use std::mem;
fn main() {
let xs: [u8; 4] = unsafe { mem::uninitialized() };
let y = xs[0] + xs[1];
}
```
```
$ RUSTFLAGS="-Z sanitizer=memory" cargo run; echo $?
==30198==WARNING: MemorySanitizer: use-of-uninitialized-value
#0 0x563f4b6867da in uninit::main::hc2731cd4f2ed48f8 $PWD/src/main.rs:5
#1 0x563f4b7033b6 in __rust_maybe_catch_panic ($PWD/target/debug/uninit+0x873b6)
#2 0x563f4b6fbd69 in std::rt::lang_start::hb2951fc8a59d62a7 ($PWD/target/debug/uninit+0x7fd69)
#3 0x563f4b6868a9 in main ($PWD/target/debug/uninit+0xa8a9)
#4 0x7fe844354290 in __libc_start_main (/usr/lib/libc.so.6+0x20290)
#5 0x563f4b6864f9 in _start ($PWD/target/debug/uninit+0xa4f9)
SUMMARY: MemorySanitizer: use-of-uninitialized-value $PWD/src/main.rs:5 in uninit::main::hc2731cd4f2ed48f8
Exiting
77
```
2017-02-08 23:55:43 -05:00
Jeffrey Seyfried
66bd8eede5
Fix ICE when parsing token trees after an error.
2017-02-09 03:01:54 +00:00
Jorge Aparicio
9af6aa3889
sanitizer support
2017-02-08 18:51:43 -05:00
Corey Farwell
75f97db367
Rollup merge of #39557 - bjorn3:pp-docs, r=jseyfried
...
A few documentation improvements for `syntax::print::pp`
* Moved algorithm explanation to module docs
* Added ``` before and after the examples
* Explanation of the `rbox`, `ibox` and `cbox` names
* Added docs about the breaking types to `Breaks`
2017-02-08 10:19:50 -05:00
est31
f8b6108deb
Stabilize static in const
...
Closes #35897 .
2017-02-08 12:33:35 +01:00
Jordi Polo
b74e668ded
Change deprecation warning to indicate custom derive support was removed from the current compiler version
2017-02-07 18:17:06 +09:00
bjorn3
1ee88e516c
A few documentation improvements for syntax::print::pp
...
* Moved algorithm explanation to module docs
* Added ``` before and after the examples
* Explanation of the `rbox`, `ibox` and `cbox` names
* Added docs about the breaking types to `Breaks`
2017-02-06 19:20:06 +01:00
Corey Farwell
0a09274e27
Rollup merge of #39552 - zackmdavis:more_struct_aliases_stabilization_version, r=petrochenkov
...
correct version in which more_struct_aliases was/will be stable
The stabilizing commit is 5056a437 , which is not in 1.14, but is (at
time of writing) on the 1.16 beta branch. [See discussion](https://github.com/rust-lang/rust/pull/39282#discussion_r99481687 ).
2017-02-05 09:14:57 -05:00
Corey Farwell
296c07e27e
Rollup merge of #39454 - abonander:proc_macro_tracking_issue, r=jseyfried
...
Change tracking issue for `proc_macro` feature to #38356
r? @jseyfried
2017-02-05 09:14:50 -05:00
Corey Farwell
ece9240824
Rollup merge of #39453 - nrc:save-path, r=nikomatsakis
...
save-analysis: be more paranoid about generated paths
fixes https://github.com/rust-lang-nursery/rls/issues/160
2017-02-05 09:14:49 -05:00
Corey Farwell
805a99e6cb
Rollup merge of #39442 - keeperofdakeys:expand-derives, r=jseyfried
...
Expand derive macros in the MacroExpander
This removes the expand_derives function, and sprinkles the functionality throughout the Invocation Collector, Expander and Resolver.
Fixes https://github.com/rust-lang/rust/issues/39326
r? @jseyfried
2017-02-05 09:14:46 -05:00
Zack M. Davis
5e06aeeef0
correct version in which more_struct_aliases was/will be stable
...
The stabilizing commit is 5056a437 , which is not in 1.14, but is (at
time of writing) on the 1.16 beta branch.
2017-02-04 21:30:16 -08:00
Josh Driver
fbdd038866
Move derive macro expansion into the MacroExpander
...
This removes the expand_derives function, and sprinkles
the functionality throughout the Invocation Collector,
Expander and Resolver.
2017-02-05 09:31:02 +10:30
Josh Driver
0a7380d7fc
Rename CustomDerive to ProcMacroDerive for macros 1.1
2017-02-05 09:31:02 +10:30
Josh Driver
0477daf9f0
Make builtin derives a SyntaxExtension
...
This allows builtin derives to be registered and
resolved, just like other derive types.
2017-02-05 09:31:01 +10:30
bors
ea7a6486a2
Auto merge of #38426 - vadimcn:nobundle, r=alexcrichton
...
Implement kind="static-nobundle" (RFC 1717)
This implements the "static-nobundle" library kind (last item from #37403 ).
Rustc handles "static-nobundle" libs very similarly to dylibs, except that on Windows, uses of their symbols do not get marked with "dllimport". Which is the whole point of this feature.
2017-02-04 21:13:07 +00:00
bors
c781fc4a6a
Auto merge of #36320 - GuillaumeGomez:rustdoc_test_info, r=alexcrichton
...
Add information in case of markdown block code test failure
r? @steveklabnik
cc @jonathandturner
2017-02-04 01:32:21 +00:00
Alex Crichton
626e754473
Bump version, upgrade bootstrap
...
This commit updates the version number to 1.17.0 as we're not on that version of
the nightly compiler, and at the same time this updates src/stage0.txt to
bootstrap from freshly minted beta compiler and beta Cargo.
2017-02-03 13:25:46 -08:00
Guillaume Gomez
62fb7fc54a
Switch logic to Span instead of HashMap
2017-02-03 11:08:20 +01:00
Guillaume Gomez
a561ad831d
Rollup merge of #39420 - oli-obk:sugg, r=pnkfelix
...
parser: use suggestions instead of helps with code in them
2017-02-02 22:22:29 +01:00
Austin Bonander
89f9767356
Change tracking issue for proc_macro feature to #38356
2017-02-01 20:11:10 -08:00
Nick Cameron
395f23c9f7
save-analysis: be more paranoid about generated paths
...
fixes https://github.com/rust-lang-nursery/rls/issues/160
2017-02-02 16:23:27 +13:00
Oliver Schneider
d73e84d2e7
use suggestions instead of helps with code in them
2017-01-31 14:45:08 +01:00
Vadim Petrochenkov
962d88b5ee
Fix the fallout
2017-01-29 02:57:14 +03:00
bors
c81c1d6a41
Auto merge of #39360 - osa1:typos, r=GuillaumeGomez
...
Fix typos in libsyntax/tokenstream.rs
2017-01-28 14:13:00 +00:00
Ömer Sinan Ağacan
15411fb0fa
Fix typos in libsyntax/tokenstream.rs
2017-01-28 17:00:43 +03:00
Alex Crichton
915242af7a
Rollup merge of #39335 - cramertj:cramertj/can_begin_expr_fix, r=petrochenkov
...
Fix can_begin_expr keyword behavior
Partial fix for #28784 .
2017-01-27 16:42:07 -08:00
bors
463affee6b
Auto merge of #39282 - petrochenkov:selfstab, r=nikomatsakis
...
Stabilize Self and associated types in struct expressions and patterns
Rebase of https://github.com/rust-lang/rust/pull/37734
Closes https://github.com/rust-lang/rust/issues/37544
r? @nikomatsakis
2017-01-27 12:23:23 +00:00
Taylor Cramer
d83687f68c
Fix can_begin_expr keyword behavior
2017-01-26 21:51:20 -08:00
bors
23a94697c2
Auto merge of #39158 - petrochenkov:bounds, r=nikomatsakis
...
Bounds parsing refactoring 2
See https://github.com/rust-lang/rust/pull/37511 for previous discussion.
cc @matklad
Relaxed parsing rules:
- zero bounds after `:` are allowed in all contexts.
- zero predicates are allowed after `where`.
- trailing separator `,` is allowed after predicates in `where` clauses not followed by `{`.
Other parsing rules:
- trailing separator `+` is still allowed in all bound lists.
Code is also cleaned up and tests added.
I haven't touched parsing of trait object types yet, I'll do it later.
2017-01-27 01:27:12 +00:00
Vadim Petrochenkov
bd4d5ec758
Better comments for FIXMEs
2017-01-26 17:41:37 +03:00
bors
5158501367
Auto merge of #39075 - est31:remove_reflect, r=nikomatsakis
...
Remove Reflect
PR for removing the `Reflect` trait. Opened so that a crater run can be done for testing the impact: https://github.com/rust-lang/rust/issues/27749#issuecomment-272665163
Fixes #27749
2017-01-26 09:54:03 +00:00