1. 13 3月, 2022 2 次提交
  2. 11 3月, 2022 1 次提交
    • N
      Improve `AdtDef` interning. · ca5525d5
      Nicholas Nethercote 提交于
      This commit makes `AdtDef` use `Interned`. Much the commit is tedious
      changes to introduce getter functions. The interesting changes are in
      `compiler/rustc_middle/src/ty/adt.rs`.
      ca5525d5
  3. 09 3月, 2022 2 次提交
  4. 08 3月, 2022 5 次提交
  5. 02 3月, 2022 1 次提交
  6. 01 3月, 2022 1 次提交
  7. 23 2月, 2022 2 次提交
  8. 21 2月, 2022 1 次提交
  9. 20 2月, 2022 1 次提交
  10. 17 2月, 2022 1 次提交
  11. 15 2月, 2022 2 次提交
    • N
      Overhaul `Const`. · a95fb8b1
      Nicholas Nethercote 提交于
      Specifically, rename the `Const` struct as `ConstS` and re-introduce `Const` as
      this:
      ```
      pub struct Const<'tcx>(&'tcx Interned<ConstS>);
      ```
      This now matches `Ty` and `Predicate` more closely, including using
      pointer-based `eq` and `hash`.
      
      Notable changes:
      - `mk_const` now takes a `ConstS`.
      - `Const` was copy, despite being 48 bytes. Now `ConstS` is not, so need a
        we need separate arena for it, because we can't use the `Dropless` one any
        more.
      - Many `&'tcx Const<'tcx>`/`&Const<'tcx>` to `Const<'tcx>` changes
      - Many `ct.ty` to `ct.ty()` and `ct.val` to `ct.val()` changes.
      - Lots of tedious sigil fiddling.
      a95fb8b1
    • N
      Overhaul `TyS` and `Ty`. · e9a0c429
      Nicholas Nethercote 提交于
      Specifically, change `Ty` from this:
      ```
      pub type Ty<'tcx> = &'tcx TyS<'tcx>;
      ```
      to this
      ```
      pub struct Ty<'tcx>(Interned<'tcx, TyS<'tcx>>);
      ```
      There are two benefits to this.
      - It's now a first class type, so we can define methods on it. This
        means we can move a lot of methods away from `TyS`, leaving `TyS` as a
        barely-used type, which is appropriate given that it's not meant to
        be used directly.
      - The uniqueness requirement is now explicit, via the `Interned` type.
        E.g. the pointer-based `Eq` and `Hash` comes from `Interned`, rather
        than via `TyS`, which wasn't obvious at all.
      
      Much of this commit is boring churn. The interesting changes are in
      these files:
      - compiler/rustc_middle/src/arena.rs
      - compiler/rustc_middle/src/mir/visit.rs
      - compiler/rustc_middle/src/ty/context.rs
      - compiler/rustc_middle/src/ty/mod.rs
      
      Specifically:
      - Most mentions of `TyS` are removed. It's very much a dumb struct now;
        `Ty` has all the smarts.
      - `TyS` now has `crate` visibility instead of `pub`.
      - `TyS::make_for_test` is removed in favour of the static `BOOL_TY`,
        which just works better with the new structure.
      - The `Eq`/`Ord`/`Hash` impls are removed from `TyS`. `Interned`s impls
        of `Eq`/`Hash` now suffice. `Ord` is now partly on `Interned`
        (pointer-based, for the `Equal` case) and partly on `TyS`
        (contents-based, for the other cases).
      - There are many tedious sigil adjustments, i.e. adding or removing `*`
        or `&`. They seem to be unavoidable.
      e9a0c429
  12. 12 2月, 2022 1 次提交
  13. 19 1月, 2022 1 次提交
  14. 17 1月, 2022 1 次提交
  15. 16 1月, 2022 1 次提交
  16. 15 1月, 2022 1 次提交
  17. 11 1月, 2022 1 次提交
    • A
      Store a `Symbol` instead of an `Ident` in `VariantDef`/`FieldDef` · 450ef861
      Aaron Hill 提交于
      The field is also renamed from `ident` to `name. In most cases,
      we don't actually need the `Span`. A new `ident` method is added
      to `VariantDef` and `FieldDef`, which constructs the full `Ident`
      using `tcx.def_ident_span()`. This method is used in the cases
      where we actually need an `Ident`.
      
      This makes incremental compilation properly track changes
      to the `Span`, without all of the invalidations caused by storing
      a `Span` directly via an `Ident`.
      450ef861
  18. 13 12月, 2021 1 次提交
  19. 06 12月, 2021 1 次提交
  20. 24 11月, 2021 1 次提交
  21. 21 11月, 2021 1 次提交
  22. 12 11月, 2021 1 次提交
  23. 09 11月, 2021 1 次提交
  24. 07 11月, 2021 1 次提交
  25. 20 10月, 2021 1 次提交
  26. 12 10月, 2021 1 次提交
  27. 09 10月, 2021 1 次提交
  28. 02 10月, 2021 1 次提交
  29. 30 9月, 2021 1 次提交
  30. 26 9月, 2021 3 次提交