summary refs log tree commit diff
path: root/src/libsyntax_pos
AgeCommit message (Collapse)AuthorLines
2020-01-23Do not ICE on malformed suggestion spansEsteban Küber-4/+7
2020-01-17Fix `next_point` to be unicode awareEsteban Küber-1/+1
(cherry picked from commit 3250057da983fa4d5bfd0799adaa41cb038f0e25)
2019-12-15Auto merge of #67216 - ecstatic-morse:const-loop, r=oli-obkbors-0/+1
Enable `loop` and `while` in constants behind a feature flag This PR is an initial implementation of #52000. It adds a `const_loop` feature gate, which allows `while` and `loop` expressions through both HIR and MIR const-checkers if enabled. `for` expressions remain forbidden by the HIR const-checker, since they desugar to a call to `IntoIterator::into_iter`, which will be rejected anyways. `while` loops also require [`#![feature(const_if_match)]`](https://github.com/rust-lang/rust/pull/66507), since they have a conditional built into them. The diagnostics from the HIR const checker will suggest this to the user. r? @oli-obk cc @rust-lang/wg-const-eval
2019-12-13Add feature gate for `const_loop`Dylan MacKenzie-0/+1
2019-12-13Require stable/unstable annotations for the constness of all stable ↵Oliver Scherer-0/+1
functions with a `const` modifier
2019-12-08async/await: more improvements to non-send errorsDavid Wood-0/+2
Signed-off-by: David Wood <david@davidtw.co>
2019-12-06Rollup merge of #66606 - christianpoveda:mut-refs-in-const-fn, r=oli-obkMazdak Farrokhzad-0/+1
Add feature gate for mut refs in const fn r? @oli-obk
2019-12-05Rollup merge of #67010 - estebank:raw-idents, r=CentrilMazdak Farrokhzad-0/+6
Accurately portray raw identifiers in error messages When refering to or suggesting raw identifiers, refer to them with `r#`. Fix #65634.
2019-12-04Auto merge of #66275 - oli-obk:organize-intrinsics-promotion-checks, r=RalfJungbors-0/+29
Organize intrinsics promotion checks cc @vertexclique supersedes #61835 r? @RalfJung
2019-12-03Accurately portray raw identifiers in error messagesEsteban Küber-0/+6
When refering to or suggesting raw identifiers, refer to them with `r#`. Fix #65634.
2019-12-03Rollup merge of #66651 - Areredify:on-unimplemented-scope, r=davidtwcoMazdak Farrokhzad-0/+1
Add `enclosing scope` parameter to `rustc_on_unimplemented` Adds a new parameter to `#[rustc_on_unimplemented]`, `enclosing scope`, which highlights the function or closure scope with a message. The wip part refers to adding this annotation to `Try` trait to improve ergonomics (which I don't know how to do since I change both std and librustc) Closes #61709.
2019-12-03Check intrinsics for callability in const fnsMahmut Bulut-0/+29
2019-12-02Rename feature gateChristian Poveda-1/+1
2019-12-02Add feature gate for &mut in const fnsChristian Poveda-0/+1
2019-12-01Conditional compilation for sanitizersTomasz Miąsko-0/+2
Configure sanitize option when compiling with a sanitizer to make it possible to execute different code depending on whether given sanitizer is enabled or not.
2019-11-25add `enclosing_scope` param to `rustc_on_unimplmented`Mikhail Babenko-0/+1
add ui test compute enclosing_scope_span on demand add scope test make tidy happy stylistic and typo fixes
2019-11-25Auto merge of #66279 - cjgillot:hashstable, r=Zoxcbors-6/+207
Use proc-macro to derive HashStable everywhere Hello, A second proc-macro is added to derive HashStable for crates librustc depends on. This proc-macro `HashStable_Generic` (to bikeshed) allows to decouple code and strip much of librustc's boilerplate. Still, two implementations `Span` and `TokenKind` require to be placed in librustc. The latter only depends on the `bug` macro. Advise welcome on how to sever that link. A trait `StableHasingContextLike` has been introduced at each crate root, in order to handle those implementations which require librustc's very `StableHashingContext`. This overall effort allowed to remove the `impl_stable_hash_for` macro. Each commit passes the `x.py check`. I still have to double check there was no change in the implementation.
2019-11-25Auto merge of #66671 - matthewjasper:ast-address-of, r=Centrilbors-0/+2
Ast address-of This is the parts of #64588 that don't affect MIR. If an address-of expression makes it to MIR lowering we error and lower to the best currently expressible approximation to limit further errors. r? @Centril
2019-11-24Parse and feature gate raw address of expressionsMatthew Jasper-0/+2
2019-11-24rustc_plugin: Remove support for syntactic pluginsVadim Petrochenkov-2/+0
2019-11-23Rollup merge of #61351 - GuillaumeGomez:stabilize-cfg-rustdoc, r=QuietMisdreavusMazdak Farrokhzad-1/+0
Stabilize cfg(doc) cc #43781.
2019-11-23Implement HashStable for Span in libsyntax_pos.Camille GILLOT-10/+90
2019-11-23Move CachingSourceMapView to libsyntax_pos.Camille GILLOT-0/+105
2019-11-23Rename StableHashingContextLike to HashStableContext.Camille GILLOT-2/+2
2019-11-23Auto merge of #66507 - ecstatic-morse:const-if-match, r=oli-obkbors-0/+1
Enable `if` and `match` in constants behind a feature flag This PR is an initial implementation of #49146. It introduces a `const_if_match` feature flag and does the following if it is enabled: - Allows `Downcast` projections, `SwitchInt` terminators and `FakeRead`s for matched places through the MIR const-checker. - Allows `if` and `match` expressions through the HIR const-checker. - Stops converting `&&` to `&` and `||` to `|` in `const` and `static` items. As a result, the following operations are now allowed in a const context behind the feature flag: - `if` and `match` - short circuiting logic operators (`&&` and `||`) - the `assert` and `debug_assert` macros (if the `const_panic` feature flag is also enabled) However, the following operations remain forbidden: - `while`, `loop` and `for` (see #52000) - the `?` operator (calls `From::from` on its error variant) - the `assert_eq` and `assert_ne` macros, along with their `debug` variants (calls `fmt::Debug`) This PR is possible now that we use dataflow for const qualification (see #64470 and #66385). r? @oli-obk cc @rust-lang/wg-const-eval @eddyb
2019-11-22Retire impl_stable_hash_for_spanned.Camille GILLOT-1/+1
2019-11-22Derive HashStable_Generic for Ident.Camille GILLOT-2/+2
2019-11-22Derive HashStable_Generic for ExpnData.Camille GILLOT-1/+2
2019-11-22Invert flow in impl HashStable of Span.Camille GILLOT-2/+12
2019-11-22Add StableHashingContextLike to HashStable_Generic derive.Camille GILLOT-0/+5
2019-11-22Auto merge of #66460 - cjgillot:hashstable_generic, r=Zoxcbors-7/+48
Add a proc-macro to derive HashStable in librustc dependencies A second proc-macro is added to derive HashStable for crates librustc depends on. This proc-macro HashStable_Generic (to bikeshed) allows to decouple code and some librustc's boilerplate. Not everything is migrated, because `Span` and `TokenKind` require to be placed inside librustc. Types using them stay there too. Split out of #66279 r? @Zoxc
2019-11-21Add feature gate for const `if` and `match`Dylan MacKenzie-0/+1
2019-11-21Rename the cfg attribute from rustdoc to docGuillaume Gomez-1/+0
2019-11-21Gate fallback via `#![feature(never_type_fallback)]`.Mazdak Farrokhzad-0/+1
2019-11-20Rollup merge of #66060 - traxys:test_65401, r=michaelwoeristerMazdak Farrokhzad-0/+1
Making ICEs and test them in incremental This adds: - A way to make the compiler ICE - A way to check for ICE in `cfail` tests with `should-ice` - A regression test for issue #65401 I am not sure the attribute added `should-ice` is the best for this job
2019-11-17Simplify impl for SymbolStr.Camille GILLOT-2/+1
2019-11-17HashStable_Generic for libsyntax_pos.Camille GILLOT-6/+12
2019-11-17Further HashStable_Generic derives.Camille GILLOT-1/+3
2019-11-17Move impl HashStable for Symbol in libsyntax_pos.Camille GILLOT-0/+16
2019-11-17Move impl HashStable for SymbolStr in libsyntax_pos.Camille GILLOT-0/+18
2019-11-17Address review commentsVadim Petrochenkov-1/+0
2019-11-15Remove SourceMapper traitMark Rousskov-34/+8
SourceMap is now in the root of all rustc-specific crates, syntax_pos, so there's no need for the trait object to decouple the dependencies between librustc_errors and libsyntax as was needed previously.
2019-11-15Move SourceMap to syntax_posMark Rousskov-0/+1259
This does not update the use sites or delete the now unnecessary SourceMapper trait, to allow git to interpret the file move as a rename rather than a new file.
2019-11-15Move FatalError to syntax_posMark Rousskov-0/+31
This is a bit unfortunate, but code needs to be able to fatally error early on (in particular, syntax_pos after we move SourceMap there). It's also a tiny bit of code, which means it's ultimately not that bad.
2019-11-12Snap cfgsMark Rousskov-2/+0
2019-11-11Avoid a string comparison in MIR constructionMatthew Jasper-0/+1
2019-11-10Auto merge of #66070 - petrochenkov:regattr, r=matthewjasperbors-0/+2
Support registering inert attributes and attribute tools using crate-level attributes And remove `#[feature(custom_attribute)]`. (`rustc_plugin::Registry::register_attribute` is not removed yet, I'll do it in a follow up PR.) ```rust #![register_attr(my_attr)] #![register_tool(my_tool)] #[my_attr] // OK #[my_tool::anything] // OK fn main() {} ``` --- Some tools (`rustfmt` and `clippy`) used in tool attributes are hardcoded in the compiler. We need some way to introduce them without hardcoding as well. This PR introduces a way to do it with a crate level attribute. The previous attempt to introduce them through command line (https://github.com/rust-lang/rust/pull/57921) met some resistance. This probably needs to go through an RFC before stabilization. However, I'd prefer to land *this* PR without an RFC to able to remove `#[feature(custom_attribute)]` and `Registry::register_attribute` while also providing a replacement. --- `register_attr` is a direct replacement for `#![feature(custom_attribute)]` (https://github.com/rust-lang/rust/issues/29642), except it doesn't rely on implicit fallback from unresolved attributes to custom attributes (which was always hacky and is the primary reason for the removal of `custom_attribute`) and requires registering the attribute explicitly. It's not clear whether it should go through stabilization or not. It's quite possible that all the uses should migrate to `#![register_tool]` (https://github.com/rust-lang/rust/issues/66079) instead. --- Details: - The naming is `register_attr`/`register_tool` rather than some `register_attributes` (plural, no abbreviation) for consistency with already existing attributes like `cfg_attr`, or `feature`, etc. --- Previous attempt: https://github.com/rust-lang/rust/pull/57921 cc https://github.com/rust-lang/rust/issues/44690 Tracking issues: #66079 (`register_tool`), #66080 (`register_attr`) Closes https://github.com/rust-lang/rust/issues/29642
2019-11-10Rollup merge of #66217 - RalfJung:diagnostic-items, r=CentrilYuki Okushi-6/+4
invalid_value lint: use diagnostic items This adjusts the invalid_value lint to use diagnostic items. @Centril @oli-obk For some reason, this fails to recognize `transmute` -- somehow the diagnostic item is not found. Any idea why? r? @Centril Cc https://github.com/rust-lang/rust/issues/66075
2019-11-09Support registering attributes and attribute tools using crate-level attributesVadim Petrochenkov-0/+2
2019-11-09partially port invalid_value lint to diagnostic itemsRalf Jung-6/+4