| Age | Commit message (Collapse) | Author | Lines |
|
This PR is intended as alternative to #20958. It fixes the same grammar inconsistencies, but does not increase the operator precedence of `..`, leaving it at the same level as the assignment operator.
For previous discussion, see #20811 and #20958.
Grammar changes:
* allow `for _ in 1..i {}` (fixes #20241)
* allow `for _ in 1.. {}` as infinite loop
* prevent use of range notation in contexts where only operators of high precedence are expected (fixes #20811)
Parser code cleanup:
* remove `RESTRICTION_NO_DOTS`
* make `AS_PREC` const and follow naming convention
* make `min_prec` inclusive
r? nikomatsakis
|
|
Lifetime elision documentation was reference a previously existing function
that doesn't exist. After talking with Steve Klabnik, I confirmed the correct
function to be referenced and updated documentation accordingly.
|
|
Fixes #21430
|
|
Compiling won't produce an executable just yet because (as stated in the next
paragraph) there are errors. By removing this sentance, the reader won't get
confused when they expect a successful compile i.e. if they don't read ahead one
paragraph, they are going to be checking their code and wondering why it's not
compiling.
|
|
Updated incorrect error messages, and removed explicit return statements from example code.
|
|
Fixes #6444
I need some help with the macro docs here, as I couldn't figure it out. @kmcallister @eddyb or someone else?
|
|
When we moved over to the book, we lost this.
|
|
Fixes #6444
|
|
Grammar changes:
* allow 'for _ in 1..i {}' (fixes #20241)
* allow 'for _ in 1.. {}' as infinite loop
* prevent use of range notation in contexts where only operators of high
precedence are expected (fixes #20811)
Parser code cleanup:
* remove RESTRICTION_NO_DOTS
* make AS_PREC const and follow naming convention
* make min_prec inclusive
|
|
When we moved over to the book, we lost this.
|
|
|
|
* Include an illustration of a function that accepts two closures.
|
|
Fixes #21430
|
|
Conflicts:
src/librustc/diagnostics.rs
src/librustdoc/clean/mod.rs
src/librustdoc/html/format.rs
src/libsyntax/parse/parser.rs
|
|
Conflicts:
src/libcore/ops.rs
src/librustc_typeck/astconv.rs
src/libstd/io/mem.rs
src/libsyntax/parse/lexer/mod.rs
|
|
|
|
Tiny fix
|
|
r? @FlaPer87
|
|
Slightly change the title to make it look more consistent with other chapters (e.g. Match.)
|
|
|
|
|
|
|
|
Compiling won't produce an executable just yet because (as stated in the next
paragraph) there are errors. By removing this sentance, the reader won't get
confused when they expect a successful compile i.e. if they don't read ahead one
paragraph, they are going to be checking their code and wondering why it's not
compiling.
|
|
Continuation of https://github.com/rust-lang/rust/pull/21428
|
|
|
|
|
|
This should have been done together with 56dcbd17fdad5d39b7b02e22a7490d2468718d08 for rust-lang/rust#20361
|
|
Multiple people have asked me if this is a reference to Hacker News, and
I _certainly_ don't want to give them that impression.
|
|
After PR #19766 added implicit coersions `*mut T -> *const T`, the explicit casts can be removed.
(The number of such casts turned out to be relatively small).
|
|
From std::markers to std::marker.
|
|
|
|
Having both "Right now" and "at the moment" in the same statement is redundant.
|
|
The reference should be `x`, not `FOO` itself.
|
|
Now both the enum values and the prose describing them mention the values in the same order.
|
|
Wrong verb.
|
|
More [u]int => [i|u]size and [i|u] => [i|u]s changes
|
|
This removes the extra "the" from the phrase "the the Rust Programming Language book", which isn't particularly grammatical, in stub documents introduced in #20802 to direct users from the old guides to the corresponding sections of the book.
|
|
There are a large number of places that incorrectly refer
to deriving in comments, instead of derives.
If someone could look at src/etc/generate-deriving-span-tests.py,
I'm not sure how those tests were passing before/if they were.
|
|
Multiple people have asked me if this is a reference to Hacker News, and
I _certainly_ don't want to give them that impression.
|
|
Original [issue](https://github.com/rust-lang/rust/issues/19278) that inspired this patch.
The [reference.md] has evolved past simple grammatical constructs, and it serves a different purpose.
The intent for the proposed _grammar.md_ is to hold **only** the official reference for the language grammar. This document would keep track of grammatical changes to the language over time, facilitate discussions over proposed changes to the existing grammar, and serve as basis for building parsers by third-parties (IDE's, GitHub linguist, CodeMirror, etc.).
The current state of the PR contains all the grammars that were available in [reference.md] and nothing else.
There are still a lot of missing pieces that weren't available. The following are just a few of the definitions missing:
- [Functions](https://github.com/icorderi/rust/blob/docs/grammar/src/doc/grammar.md#functions)
- [Structures](https://github.com/icorderi/rust/blob/docs/grammar/src/doc/grammar.md#structures)
- [Traits](https://github.com/icorderi/rust/blob/docs/grammar/src/doc/grammar.md#traits)
- [Implementations](https://github.com/icorderi/rust/blob/docs/grammar/src/doc/grammar.md#implementations)
- [Operators](https://github.com/icorderi/rust/blob/docs/grammar/src/doc/grammar.md#unary-operator-expressions)
- [Statements](https://github.com/icorderi/rust/blob/docs/grammar/src/doc/grammar.md#statements)
- [Expressions](https://github.com/icorderi/rust/blob/docs/grammar/src/doc/grammar.md#expressions)
[reference.md]: https://github.com/rust-lang/rust/blob/master/src/doc/reference.md
We need help from people familiar with those grammatical constructs to fill in the missing pieces.
|
|
These two attributes are used to change the entry point into a Rust program, but
for now they're being put behind feature gates until we have a chance to think
about them a little more. The #[start] attribute specifically may have its
signature changed.
This is a breaking change to due the usage of these attributes generating errors
by default now. If your crate is using these attributes, add this to your crate
root:
#![feature(start)] // if you're using the #[start] attribute
#![feature(main)] // if you're using the #[main] attribute
cc #20064
|
|
|
|
|
|
|
|
From std::markers to std::marker.
|
|
|
|
|
|
Having both "Right now" and "at the moment" in the same statement is redundant.
|
|
|
|
The reference should be `x`, not `FOO` itself.
|