---
# System prepended metadata

title: '2021-02-24: Lints and editions'
tags: [design-meeting]

---

---
tags: design-meeting
---

# 2021-02-24: Lints and editions

## Links

* [Proposed lint/error policy](https://hackmd.io/i1Ob4XS6TwuUv-rOVEoM4A)
* [Lint categorizations and descriptions](https://hackmd.io/HETreGqPSRezlN109vgCnQ)

## Agenda

* Overview general lint policy (15 minutes)
    * Key questions:
        * 
* Overview lints (30 minutes)
    * Per
* Revisit general lint policy (15 minutes)

## General lint policy


| name | Edition N | Edition N+1 | Migrations? |
| --- | --- | --- | --- |
| repurposed syntax | allow | new meaning | mandatory |
| edition error | allow | error | mandatory |
| soft deprecations | warn | warn | recommended |
| hard deprecations | warn then deny | deny | mandatory |
| bug fix | warn then error | warn then error | recommended |

Niko's concerns

* edition error: is there syntax we remove that is NOT deprecated?
* hard deprecation: is there a reason that we would want deny in the new edition, and not error?
    * something we want people to be able to type but they have to opt-in with allow (versus some other mechanism)?
* soft vs hard:
    * hard is for likely BUGS
    * not just a matter of "it'd be nice if this were better" but more like "some horrible problem"
    * Extreme danger of misuse or unsoundness.
    * Third-party tooling may wish to drop support for the pattern (and limit itself to the newer editions).

## Table

| Lint | Current status | Proposed resolution | Bugs | Meeting consensus? |
| --- | --- | --- | --- | --- |
| BARE_TRAIT_OBJECTS | warn | soft deprecation<br>edition error | :heavy_check_mark: |
| ELIDED_LIFETIMES_IN_PATHS | allow | no consensus | |
| ELLIPSIS_INCLUSIVE_RANGE_PATTERNS | warn | soft deprecation<br>edition error |
| EXPLICIT_OUTLIVES_REQUIREMENTS | allow | revisit after bugs are fixed | [#54630]  |
| UNUSED_EXTERN_CRATES | allow | not edition (though it take the edition into account) | 53964, 44294 |
| UNREACHABLE_PUB | allow | defer, not edition |

| MACRO_USE_EXTERN_CRATE | allow | decide as part of pub macro-rules | #52043
| CLASHING_EXTERN_DECLARATIONS | allow | hard deprecation | #52043 |


[#54630]: https://github.com/rust-lang/rust/issues/54630
