1. 26 3月, 2021 1 次提交
  2. 21 2月, 2021 1 次提交
  3. 23 8月, 2020 1 次提交
    • A
      Use smaller def span for functions · e3cd43eb
      Aaron Hill 提交于
      Currently, the def span of a funtion encompasses the entire function
      signature and body. However, this is usually unnecessarily verbose - when we are
      pointing at an entire function in a diagnostic, we almost always want to
      point at the signature. The actual contents of the body tends to be
      irrelevant to the diagnostic we are emitting, and just takes up
      additional screen space.
      
      This commit changes the `def_span` of all function items (freestanding
      functions, `impl`-block methods, and `trait`-block methods) to be the
      span of the signature. For example, the function
      
      ```rust
      pub fn foo<T>(val: T) -> T { val }
      ```
      
      now has a `def_span` corresponding to `pub fn foo<T>(val: T) -> T`
      (everything before the opening curly brace).
      
      Trait methods without a body have a `def_span` which includes the
      trailing semicolon. For example:
      
      ```rust
      trait Foo {
          fn bar();
      }```
      
      the function definition `Foo::bar` has a `def_span` of `fn bar();`
      
      This makes our diagnostic output much shorter, and emphasizes
      information that is relevant to whatever diagnostic we are reporting.
      
      We continue to use the full span (including the body) in a few of
      places:
      
      * MIR building uses the full span when building source scopes.
      * 'Outlives suggestions' use the full span to sort the diagnostics being
        emitted.
      * The `#[rustc_on_unimplemented(enclosing_scope="in this scope")]`
      attribute points the entire scope body.
      * The 'unconditional recursion' lint uses the full span to show
        additional context for the recursive call.
      
      All of these cases work only with local items, so we don't need to
      add anything extra to crate metadata.
      e3cd43eb
  4. 31 5月, 2020 2 次提交