rust/src/libsyntax
bors 39e9516532 Auto merge of #51990 - oli-obk:unstable_union, r=nikomatsakis
Place unions, pointer casts and pointer derefs behind extra feature gates

To ensure we don't stabilize these things together with const fn stabilization (or any other stabilization)

This PR moves union field accesses inside `const fn` behind a feature gate. It was possible without a feature gate before, but since `const fn` was behind a feature gate we can do this change.

While "dereferencing raw pointers" and "casting raw pointers to usize" were hard errors before this PR, one could work around them by abusing unions:

```rust
// deref
union Foo<T> {
    x: &'static T,
    y: *const T,
}
const FOO: u32 = unsafe { *Foo { y: 42 as *const T }.x };

// as usize cast
union Bar<T> {
    x: usize,
    y: *const T,
}
const BAR: usize = unsafe { Bar { y: &1u8 }.x };
```

r? @eddyb

cc @nikomatsakis
2018-08-07 13:14:37 +00:00
..
attr Auto merge of #52841 - petrochenkov:premacro, r=alexcrichton 2018-08-02 21:39:14 +00:00
diagnostics Deny bare trait objects in in src/libsyntax 2018-07-10 21:06:26 +02:00
ext Auto merge of #52841 - petrochenkov:premacro, r=alexcrichton 2018-08-02 21:39:14 +00:00
parse Enable macros to pass $:literal to another macro 2018-08-05 11:02:59 -05:00
print Auto merge of #52767 - ljedrz:avoid_format, r=petrochenkov 2018-07-29 09:33:37 +00:00
util Remove some tests using AST comparisons, fix other tests 2018-07-14 14:57:14 +03:00
ast.rs Switch syntax attribute tracking to BitVector 2018-08-01 06:48:42 -06:00
build.rs rustc: Add some build scripts for librustc crates 2017-07-22 22:04:13 -07:00
Cargo.toml rustc_target: move in syntax::abi and flip dependency. 2018-04-26 17:49:16 +03:00
codemap.rs Rollup merge of #52224 - ljedrz:dyn_libsyntax, r=oli-obk 2018-07-11 12:38:39 -06:00
config.rs Deny #[cfg] and #[cfg_attr] on generic parameters. 2018-06-02 05:11:33 +08:00
diagnostic_list.rs Fix diagnostic_list error 2018-08-05 22:26:06 +01:00
early_buffered_lints.rs make it a migration lint 2018-07-23 21:55:51 -05:00
entry.rs Cleanup InternedString. 2016-11-21 09:00:56 +00:00
feature_gate.rs Auto merge of #51990 - oli-obk:unstable_union, r=nikomatsakis 2018-08-07 13:14:37 +00:00
fold.rs Implement existential types 2018-07-18 10:53:08 +02:00
json.rs Deny bare trait objects in in src/libsyntax 2018-07-10 21:06:26 +02:00
lib.rs Remove unnecessary or invalid feature attributes 2018-08-05 15:54:48 +01:00
ptr.rs Remove most of PartialEq impls from AST and HIR structures 2018-07-14 14:56:57 +03:00
README.md Replace many of the last references to readmes 2018-03-16 12:43:22 -05:00
show_span.rs use field init shorthand EVERYWHERE 2017-08-15 15:29:17 -07:00
std_inject.rs Implement #[macro_export(local_inner_macros)] 2018-06-27 13:10:16 +03:00
str.rs Inline char_at() and record_width. 2018-05-13 17:16:02 +10:00
test.rs Address comments 2018-07-14 14:57:15 +03:00
test_snippet.rs Remove the now redundant CodeMap::new_filemap_with_lines() method. 2018-06-27 14:00:34 +02:00
tokenstream.rs rustc: Implement tokenization of nested items 2018-07-22 08:57:31 -07:00
visit.rs Implement existential types 2018-07-18 10:53:08 +02:00

The syntax crate contains those things concerned purely with syntax that is, the AST ("abstract syntax tree"), parser, pretty-printer, lexer, macro expander, and utilities for traversing ASTs.

For more information about how these things work in rustc, see the rustc guide: