Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rollup of 6 pull requests #69271

Merged
merged 31 commits into from
Feb 19, 2020
Merged

Rollup of 6 pull requests #69271

merged 31 commits into from
Feb 19, 2020

Commits on Feb 15, 2020

  1. Configuration menu
    Copy the full SHA
    0663f25 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    f2980e7 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    2fd1544 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    f06df16 View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    e2ae717 View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    95dc9b9 View commit details
    Browse the repository at this point in the history
  7. Configuration menu
    Copy the full SHA
    f3e9763 View commit details
    Browse the repository at this point in the history
  8. Configuration menu
    Copy the full SHA
    1c2906e View commit details
    Browse the repository at this point in the history
  9. parse associated statics.

    Centril committed Feb 15, 2020
    Configuration menu
    Copy the full SHA
    f8d2264 View commit details
    Browse the repository at this point in the history
  10. parse extern consts

    Centril committed Feb 15, 2020
    Configuration menu
    Copy the full SHA
    35884fe View commit details
    Browse the repository at this point in the history
  11. Configuration menu
    Copy the full SHA
    91110fd View commit details
    Browse the repository at this point in the history
  12. Configuration menu
    Copy the full SHA
    0e0c028 View commit details
    Browse the repository at this point in the history
  13. Configuration menu
    Copy the full SHA
    cf87edf View commit details
    Browse the repository at this point in the history
  14. Configuration menu
    Copy the full SHA
    5abedd8 View commit details
    Browse the repository at this point in the history
  15. Configuration menu
    Copy the full SHA
    d6238bd View commit details
    Browse the repository at this point in the history
  16. Configuration menu
    Copy the full SHA
    fe62bed View commit details
    Browse the repository at this point in the history
  17. Configuration menu
    Copy the full SHA
    f12ae4a View commit details
    Browse the repository at this point in the history

Commits on Feb 17, 2020

  1. Configuration menu
    Copy the full SHA
    8bafe88 View commit details
    Browse the repository at this point in the history
  2. ast: add a FIXME

    Centril committed Feb 17, 2020
    Configuration menu
    Copy the full SHA
    045b7d5 View commit details
    Browse the repository at this point in the history
  3. Do not emit note suggesting to implement trait to foreign type

    Update tests
    
    Extend to other operations
    
    Refractor check in a separate function
    
    Fix more tests
    LeSeulArtichaut committed Feb 17, 2020
    Configuration menu
    Copy the full SHA
    2e07892 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    0b1e08c View commit details
    Browse the repository at this point in the history
  5. parser: Do not call bump recursively

    Token normalization is merged directly into `bump`.
    Special "unknown macro variable" diagnostic for unexpected `$`s is removed as preventing legal code from compiling.
    petrochenkov committed Feb 17, 2020
    Configuration menu
    Copy the full SHA
    d33b356 View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    ed2fd28 View commit details
    Browse the repository at this point in the history
  7. parser: Remove Options from unnormalized tokens

    They are always set synchronously with normalized tokens now
    petrochenkov committed Feb 17, 2020
    Configuration menu
    Copy the full SHA
    06fbb0b View commit details
    Browse the repository at this point in the history
  8. Configuration menu
    Copy the full SHA
    950845c View commit details
    Browse the repository at this point in the history

Commits on Feb 18, 2020

  1. Rollup merge of rust-lang#69146 - matthewjasper:literal-qualif, r=eddyb

    Always const qualify literals by type
    
    r? @eddyb
    Centril authored Feb 18, 2020
    Configuration menu
    Copy the full SHA
    5e2a095 View commit details
    Browse the repository at this point in the history
  2. Rollup merge of rust-lang#69159 - estebank:use-appropriate-lt-name, r…

    …=ecstatic-morse
    
    Select an appropriate unused lifetime name in suggestion
    
    Follow up to rust-lang#69048.
    Centril authored Feb 18, 2020
    Configuration menu
    Copy the full SHA
    981acd9 View commit details
    Browse the repository at this point in the history
  3. Rollup merge of rust-lang#69194 - Centril:assoc-extern-fuse, r=petroc…

    …henkov
    
    parse: fuse associated and extern items up to defaultness
    
    Language changes:
    
    - The grammar of extern `type` aliases is unified with associated ones, and becomes:
      ```rust
      TypeItem = "type" ident generics {":" bounds}? where_clause {"=" type}? ";" ;
      ```
    
      Semantic restrictions (`ast_validation`) are added to forbid any parameters in `generics`, any bounds in `bounds`, and any predicates in `where_clause`, as well as the presence of a type expression (`= u8`).
    
      (Work still remains to fuse this with free `type` aliases, but this can be done later.)
    
    - The grammar of constants and static items (free, associated, and extern) now permits the absence of an expression, and becomes:
    
      ```rust
      GlobalItem = {"const" {ident | "_"} | "static" "mut"? ident} {"=" expr}? ";" ;
      ```
    
      - A semantic restriction is added to enforce the presence of the expression (the body).
      - A semantic restriction is added to reject `const _` in associated contexts.
    
    Together, these changes allow us to fuse the grammar of associated items and extern items up to `default`ness which is the main goal of the PR.
    
    -----------------------
    
    We are now very close to fully fusing the entirely of item parsing and their ASTs. To progress further, we must make a decision: should we parse e.g. `default use foo::bar;` and whatnot? Accepting that is likely easiest from a parsing perspective, as it does not require using look-ahead, but it is perhaps not too onerous to only accept it for `fn`s (and all their various qualifiers), `const`s, `static`s, and `type`s.
    
    r? @petrochenkov
    Centril authored Feb 18, 2020
    Configuration menu
    Copy the full SHA
    b864d23 View commit details
    Browse the repository at this point in the history
  4. Rollup merge of rust-lang#69211 - petrochenkov:prevtok, r=Centril

    parser: Simplify treatment of macro variables in `Parser::bump`
    
    Follow-up to rust-lang#69006.
    
    Token normalization for `$ident` and `$lifetime` is merged directly into `bump`.
    Special "unknown macro variable" diagnostic for unexpected `$`s is removed as preventing legal code from compiling (as a result `bump` also doesn't call itself recursively anymore and can't make `prev_token` inconsistent).
    
    r? @Centril
    Centril authored Feb 18, 2020
    Configuration menu
    Copy the full SHA
    1cf0194 View commit details
    Browse the repository at this point in the history
  5. Rollup merge of rust-lang#69217 - LeSeulArtichaut:remove-lint-impl-op…

    …, r=estebank
    
    Do not emit note suggesting to implement operation trait to foreign type
    
    When a binary operation isn't valid, you will get a lint proposing to add a trait implementation to make the operation possible. However, this cannot be done for foreign types, such as types from `core` or `std`.
    
    For example:
    ```
    = note: an implementation of `std::ops::Add` might be missing for `std::option::Option<i8>`
    ```
    As mentioned in rust-lang#60497 (comment):
    > The note suggesting implementing Add<i8> should only be emitted if Option<i8> were local to the current crate, which it isn't, so in this case it shouldn't be emitted.
    
    (I will use the CI to check tests for me, or my computer will just burn... and running IDEs is not possible on a pile of ashes)
    
    r? @estebank
    Centril authored Feb 18, 2020
    Configuration menu
    Copy the full SHA
    c499570 View commit details
    Browse the repository at this point in the history
  6. Rollup merge of rust-lang#69236 - Centril:mut-parens-at-recovery, r=e…

    …stebank
    
    parse: recover `mut (x @ y)` as `(mut x @ mut y)`.
    
    Follow up to rust-lang#68992 (comment) and rust-lang#63945.
    
    Specifically, when given `let mut (x @ y)` we recover with `let (mut x @ mut y)` as the suggestion:
    
    ```rust
    error: `mut` must be attached to each individual binding
      --> $DIR/mut-patterns.rs:12:9
       |
    LL |     let mut (x @ y) = 0;
       |         ^^^^^^^^^^^ help: add `mut` to each binding: `(mut x @ mut y)`
       |
       = note: `mut` may be followed by `variable` and `variable @ pattern`
    ```
    
    r? @matthewjasper @estebank
    Centril authored Feb 18, 2020
    Configuration menu
    Copy the full SHA
    6c6d45c View commit details
    Browse the repository at this point in the history