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

Implement global constants, alter the meaning of static #17718

Closed
alexcrichton opened this issue Oct 2, 2014 · 1 comment · Fixed by #17853
Closed

Implement global constants, alter the meaning of static #17718

alexcrichton opened this issue Oct 2, 2014 · 1 comment · Fixed by #17853
Assignees
Labels
B-RFC-approved Blocker: Approved by a merged RFC but not yet implemented.
Milestone

Comments

@alexcrichton
Copy link
Member

Tracking issue for rust-lang/rfcs#246

Nominating

@alexcrichton alexcrichton added I-nominated B-RFC-approved Blocker: Approved by a merged RFC but not yet implemented. labels Oct 2, 2014
@pnkfelix
Copy link
Member

pnkfelix commented Oct 2, 2014

in particular the change in how patterns will work in tandem with static before const and after const is a backwards incompat change.

P-backcompat-lang, 1.0.

@pnkfelix pnkfelix added this to the 1.0 milestone Oct 2, 2014
alexcrichton added a commit to alexcrichton/rust that referenced this issue Oct 3, 2014
This rewrites them to the current `ItemStatic` production of the compiler, but I
want to get this into a snapshot. It will be illegal to use a `static` in a
pattern of a `match` statement, so all those current uses will need to be
rewritten to `const` once it's implemented. This requires that the stage0
snapshot is able to parse `const`.

cc rust-lang#17718
bors added a commit that referenced this issue Oct 10, 2014
This change is an implementation of [RFC 69][rfc] which adds a third kind of
global to the language, `const`. This global is most similar to what the old
`static` was, and if you're unsure about what to use then you should use a
`const`.

The semantics of these three kinds of globals are:

* A `const` does not represent a memory location, but only a value. Constants
  are translated as rvalues, which means that their values are directly inlined
  at usage location (similar to a #define in C/C++). Constant values are, well,
  constant, and can not be modified. Any "modification" is actually a
  modification to a local value on the stack rather than the actual constant
  itself.

  Almost all values are allowed inside constants, whether they have interior
  mutability or not. There are a few minor restrictions listed in the RFC, but
  they should in general not come up too often.

* A `static` now always represents a memory location (unconditionally). Any
  references to the same `static` are actually a reference to the same memory
  location. Only values whose types ascribe to `Sync` are allowed in a `static`.
  This restriction is in place because many threads may access a `static`
  concurrently. Lifting this restriction (and allowing unsafe access) is a
  future extension not implemented at this time.

* A `static mut` continues to always represent a memory location. All references
  to a `static mut` continue to be `unsafe`.

This is a large breaking change, and many programs will need to be updated
accordingly. A summary of the breaking changes is:

* Statics may no longer be used in patterns. Statics now always represent a
  memory location, which can sometimes be modified. To fix code, repurpose the
  matched-on-`static` to a `const`.

      static FOO: uint = 4;
      match n {
          FOO => { /* ... */ }
          _ => { /* ... */ }
      }

  change this code to:

      const FOO: uint = 4;
      match n {
          FOO => { /* ... */ }
          _ => { /* ... */ }
      }

* Statics may no longer refer to other statics by value. Due to statics being
  able to change at runtime, allowing them to reference one another could
  possibly lead to confusing semantics. If you are in this situation, use a
  constant initializer instead. Note, however, that statics may reference other
  statics by address, however.

* Statics may no longer be used in constant expressions, such as array lengths.
  This is due to the same restrictions as listed above. Use a `const` instead.

[breaking-change]
Closes #17718 

[rfc]: rust-lang/rfcs#246
JohnTitor referenced this issue in JohnTitor/rust Feb 15, 2021
…chenkov

Move some tests to more reasonable directories - 4

cc rust-lang#73494
r? `@petrochenkov`

- [issues/issue-4201.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-4201.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/4201)</sup>: expr 1.000
- [old-suffixes-are-really-forbidden.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/old-suffixes-are-really-forbidden.rs) <sup>unknown</sup>: parser 1.031
- [typeclasses-eq-example-static.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/typeclasses-eq-example-static.rs) <sup>unknown</sup>: binding 1.033
- [issues/issue-33537.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-33537.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/33537)</sup>: consts 1.036
- [issues/issue-31924-non-snake-ffi.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-31924-non-snake-ffi.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/31924)</sup>: lint 1.046
- [issues/issue-44406.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-44406.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/44406)</sup>: parser 1.051
- [type-id-higher-rank.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/type-id-higher-rank.rs) <sup>unknown</sup>: unboxed-closures 1.074
- [issues/issue-20616-3.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-20616-3.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/20616)</sup>: parser 1.077
- [html-literals.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/html-literals.rs) <sup>unknown</sup>: macros 1.083
- [issues/issue-13837.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-13837.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/13837)</sup>: consts 1.089
- [issues/issue-21726.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-21726.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/21726)</sup>: associated-types 1.095
- [one-tuple.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/one-tuple.rs) <sup>unknown</sup>: binding 1.107
- [issues/issue-43784-associated-type.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-43784-associated-type.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/43784)</sup>: associated-types 1.108
- [project-defer-unification.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/project-defer-unification.rs) <sup>unknown</sup>: associated-types 1.109
- [struct-literal-variant-in-if.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/struct-literal-variant-in-if.rs) <sup>unknown</sup>: parser 1.110
- [rvalue-static-promotion.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/rvalue-static-promotion.rs) <sup>unknown</sup>: consts 1.114
- [nullable-pointer-ffi-compat.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/nullable-pointer-ffi-compat.rs) <sup>unknown</sup>: regions 1.129
- [range_inclusive_gate.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/range_inclusive_gate.rs) <sup>unknown</sup>: for-loop-while 1.174
- [simd-type-generic-monomorphisation.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/simd-type-generic-monomorphisation.rs) <sup>unknown</sup>: simd 1.175
- [issues/issue-77993-2.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-77993-2.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/77993)</sup>: async-await 1.183
- [issues/issue-23595-2.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-23595-2.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/23595)</sup>: associated-types 1.194
- [issues/issue-40847.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-40847.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/40847)</sup>: macros 1.194
- [issues/issue-6157.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-6157.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/6157)</sup>: regions 1.195
- [issues/issue-32829.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-32829.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/32829)</sup>: consts 1.241
- [type-sizes.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/type-sizes.rs) <sup>unknown</sup>: structs-enums 1.281
- [issues/issue-24204.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-24204.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/24204)</sup>: associated-types 1.305
- [issues/issue-22560.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-22560.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/22560)</sup>: associated-types 1.354
- [emit-artifact-notifications.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/emit-artifact-notifications.rs) <sup>unknown</sup>: rmeta 1.368
- [repeat_count_const_in_async_fn.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/repeat_count_const_in_async_fn.rs) <sup>unknown</sup>: async-await 1.370
- [expr-if-panic.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/expr-if-panic.rs) <sup>unknown</sup>: expr 1.371
- [cleanup-rvalue-during-if-and-while.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/cleanup-rvalue-during-if-and-while.rs) <sup>unknown</sup>: for-loop-while 1.378
- [write-to-static-mut-in-static.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/write-to-static-mut-in-static.rs) <sup>unknown</sup>: consts 1.381
- [issues/issue-17718-references.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-17718-references.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/17718)</sup>: consts 1.404
- [dotdotdot-expr.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/dotdotdot-expr.rs) <sup>unknown</sup>: parser 1.784
- [regions-fn-subtyping-return-static-fail.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/regions-fn-subtyping-return-static-fail.rs) <sup>unknown</sup>: regions 1.959
Dylan-DPC-zz referenced this issue in Dylan-DPC-zz/rust Feb 16, 2021
…chenkov

Move some tests to more reasonable directories - 4

cc rust-lang#73494
r? `@petrochenkov`

- [issues/issue-4201.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-4201.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/4201)</sup>: expr 1.000
- [old-suffixes-are-really-forbidden.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/old-suffixes-are-really-forbidden.rs) <sup>unknown</sup>: parser 1.031
- [typeclasses-eq-example-static.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/typeclasses-eq-example-static.rs) <sup>unknown</sup>: binding 1.033
- [issues/issue-33537.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-33537.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/33537)</sup>: consts 1.036
- [issues/issue-31924-non-snake-ffi.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-31924-non-snake-ffi.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/31924)</sup>: lint 1.046
- [issues/issue-44406.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-44406.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/44406)</sup>: parser 1.051
- [type-id-higher-rank.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/type-id-higher-rank.rs) <sup>unknown</sup>: unboxed-closures 1.074
- [issues/issue-20616-3.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-20616-3.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/20616)</sup>: parser 1.077
- [html-literals.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/html-literals.rs) <sup>unknown</sup>: macros 1.083
- [issues/issue-13837.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-13837.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/13837)</sup>: consts 1.089
- [issues/issue-21726.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-21726.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/21726)</sup>: associated-types 1.095
- [one-tuple.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/one-tuple.rs) <sup>unknown</sup>: binding 1.107
- [issues/issue-43784-associated-type.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-43784-associated-type.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/43784)</sup>: associated-types 1.108
- [project-defer-unification.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/project-defer-unification.rs) <sup>unknown</sup>: associated-types 1.109
- [struct-literal-variant-in-if.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/struct-literal-variant-in-if.rs) <sup>unknown</sup>: parser 1.110
- [rvalue-static-promotion.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/rvalue-static-promotion.rs) <sup>unknown</sup>: consts 1.114
- [nullable-pointer-ffi-compat.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/nullable-pointer-ffi-compat.rs) <sup>unknown</sup>: regions 1.129
- [range_inclusive_gate.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/range_inclusive_gate.rs) <sup>unknown</sup>: for-loop-while 1.174
- [simd-type-generic-monomorphisation.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/simd-type-generic-monomorphisation.rs) <sup>unknown</sup>: simd 1.175
- [issues/issue-77993-2.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-77993-2.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/77993)</sup>: async-await 1.183
- [issues/issue-23595-2.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-23595-2.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/23595)</sup>: associated-types 1.194
- [issues/issue-40847.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-40847.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/40847)</sup>: macros 1.194
- [issues/issue-6157.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-6157.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/6157)</sup>: regions 1.195
- [issues/issue-32829.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-32829.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/32829)</sup>: consts 1.241
- [type-sizes.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/type-sizes.rs) <sup>unknown</sup>: structs-enums 1.281
- [issues/issue-24204.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-24204.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/24204)</sup>: associated-types 1.305
- [issues/issue-22560.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-22560.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/22560)</sup>: associated-types 1.354
- [emit-artifact-notifications.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/emit-artifact-notifications.rs) <sup>unknown</sup>: rmeta 1.368
- [repeat_count_const_in_async_fn.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/repeat_count_const_in_async_fn.rs) <sup>unknown</sup>: async-await 1.370
- [expr-if-panic.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/expr-if-panic.rs) <sup>unknown</sup>: expr 1.371
- [cleanup-rvalue-during-if-and-while.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/cleanup-rvalue-during-if-and-while.rs) <sup>unknown</sup>: for-loop-while 1.378
- [write-to-static-mut-in-static.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/write-to-static-mut-in-static.rs) <sup>unknown</sup>: consts 1.381
- [issues/issue-17718-references.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-17718-references.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/17718)</sup>: consts 1.404
- [dotdotdot-expr.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/dotdotdot-expr.rs) <sup>unknown</sup>: parser 1.784
- [regions-fn-subtyping-return-static-fail.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/regions-fn-subtyping-return-static-fail.rs) <sup>unknown</sup>: regions 1.959
Dylan-DPC-zz referenced this issue in Dylan-DPC-zz/rust Feb 16, 2021
…chenkov

Move some tests to more reasonable directories - 4

cc rust-lang#73494
r? ``@petrochenkov``

- [issues/issue-4201.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-4201.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/4201)</sup>: expr 1.000
- [old-suffixes-are-really-forbidden.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/old-suffixes-are-really-forbidden.rs) <sup>unknown</sup>: parser 1.031
- [typeclasses-eq-example-static.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/typeclasses-eq-example-static.rs) <sup>unknown</sup>: binding 1.033
- [issues/issue-33537.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-33537.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/33537)</sup>: consts 1.036
- [issues/issue-31924-non-snake-ffi.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-31924-non-snake-ffi.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/31924)</sup>: lint 1.046
- [issues/issue-44406.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-44406.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/44406)</sup>: parser 1.051
- [type-id-higher-rank.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/type-id-higher-rank.rs) <sup>unknown</sup>: unboxed-closures 1.074
- [issues/issue-20616-3.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-20616-3.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/20616)</sup>: parser 1.077
- [html-literals.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/html-literals.rs) <sup>unknown</sup>: macros 1.083
- [issues/issue-13837.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-13837.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/13837)</sup>: consts 1.089
- [issues/issue-21726.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-21726.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/21726)</sup>: associated-types 1.095
- [one-tuple.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/one-tuple.rs) <sup>unknown</sup>: binding 1.107
- [issues/issue-43784-associated-type.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-43784-associated-type.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/43784)</sup>: associated-types 1.108
- [project-defer-unification.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/project-defer-unification.rs) <sup>unknown</sup>: associated-types 1.109
- [struct-literal-variant-in-if.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/struct-literal-variant-in-if.rs) <sup>unknown</sup>: parser 1.110
- [rvalue-static-promotion.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/rvalue-static-promotion.rs) <sup>unknown</sup>: consts 1.114
- [nullable-pointer-ffi-compat.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/nullable-pointer-ffi-compat.rs) <sup>unknown</sup>: regions 1.129
- [range_inclusive_gate.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/range_inclusive_gate.rs) <sup>unknown</sup>: for-loop-while 1.174
- [simd-type-generic-monomorphisation.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/simd-type-generic-monomorphisation.rs) <sup>unknown</sup>: simd 1.175
- [issues/issue-77993-2.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-77993-2.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/77993)</sup>: async-await 1.183
- [issues/issue-23595-2.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-23595-2.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/23595)</sup>: associated-types 1.194
- [issues/issue-40847.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-40847.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/40847)</sup>: macros 1.194
- [issues/issue-6157.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-6157.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/6157)</sup>: regions 1.195
- [issues/issue-32829.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-32829.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/32829)</sup>: consts 1.241
- [type-sizes.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/type-sizes.rs) <sup>unknown</sup>: structs-enums 1.281
- [issues/issue-24204.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-24204.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/24204)</sup>: associated-types 1.305
- [issues/issue-22560.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-22560.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/22560)</sup>: associated-types 1.354
- [emit-artifact-notifications.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/emit-artifact-notifications.rs) <sup>unknown</sup>: rmeta 1.368
- [repeat_count_const_in_async_fn.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/repeat_count_const_in_async_fn.rs) <sup>unknown</sup>: async-await 1.370
- [expr-if-panic.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/expr-if-panic.rs) <sup>unknown</sup>: expr 1.371
- [cleanup-rvalue-during-if-and-while.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/cleanup-rvalue-during-if-and-while.rs) <sup>unknown</sup>: for-loop-while 1.378
- [write-to-static-mut-in-static.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/write-to-static-mut-in-static.rs) <sup>unknown</sup>: consts 1.381
- [issues/issue-17718-references.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-17718-references.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/17718)</sup>: consts 1.404
- [dotdotdot-expr.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/dotdotdot-expr.rs) <sup>unknown</sup>: parser 1.784
- [regions-fn-subtyping-return-static-fail.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/regions-fn-subtyping-return-static-fail.rs) <sup>unknown</sup>: regions 1.959
JohnTitor referenced this issue in JohnTitor/rust Mar 6, 2021
…nkov

Move some tests to more suitable subdirs

## The results from classifui

(The full results can be found here: https://gist.github.com/JohnTitor/c9e00840990b5e4a8fc562ec3571e427)

- [lint-expr-stmt-attrs-for-early-lints.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/lint-expr-stmt-attrs-for-early-lints.rs) <sup>unknown</sup>: lint (1.566), feature-gates (-0.632), numbers-arithmetic (-0.955)
- [try-block.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/try-block.rs) <sup>unknown</sup>: binding (1.385), try-block (-0.097), lint (-0.932)
- [backtrace-debuginfo.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/backtrace-debuginfo.rs) <sup>unknown</sup>: macros (1.365), cfg (-0.279), drop (-0.291)
- [issues/issue-3521.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-3521.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/3521)</sup>: consts (1.298), enum (-0.872), in-band-lifetimes (-0.978)
- [impl-bounds-checking.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/impl-bounds-checking.rs) <sup>unknown</sup>: traits (1.243), for (-0.999), shadowed (-0.999)
- [issues/issue-17718.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-17718.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/17718)</sup>: binding (1.236), consts (0.315), extern (-0.779)
- [issue-6157.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issue-6157.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/6157)</sup>: regions (1.213), unboxed-closures (-0.285), traits (-0.510)
- [issues/issue-44373.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-44373.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/44373)</sup>: consts (1.187), nll (0.427), borrowck (-0.704)
- [nullable-pointer-ffi-compat.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/nullable-pointer-ffi-compat.rs) <sup>unknown</sup>: regions (1.184), consts (0.650), traits (-0.571)
- [issues/issue-52992.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-52992.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/52992)</sup>: nll (1.132), associated-types (-0.628), parser (-0.893)
- [issues/issue-2330.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-2330.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/2330)</sup>: traits (1.116), directory_ownership (-0.691), compare-method (-0.981)
- [issue-74047.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issue-74047.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/74047)</sup>: async-await (1.109), impl-trait (-0.629), resolve (-0.781)
- [issues/issue-33140.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-33140.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/33140)</sup>: traits (1.063), coherence (-0.832), codemap_tests (-0.944)
- [issues/issue-28576.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-28576.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/28576)</sup>: traits (1.062), associated-types (-0.333), impl-trait (-0.697)
- [issues/issue-7222.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-7222.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/7222)</sup>: binding (1.062), consts (-0.226), numbers-arithmetic (-0.294)
- [tup.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/tup.rs) <sup>unknown</sup>: structs-enums (1.061), threads-sendsync (-0.550), moves (-0.790)
- [issues/issue-15261.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-15261.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/15261)</sup>: consts (1.052), where-clauses (-0.833), macros (-0.862)
- [issues/issue-76179.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-76179.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/76179)</sup>: associated-types (1.048), process (-0.887), rfc-2457 (-0.984)
- [issues/issue-42344.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-42344.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/42344)</sup>: borrowck (1.043), macros (-0.481), specialization (-0.966)
- [issues/issue-18661.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-18661.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/18661)</sup>: unboxed-closures (1.038), mir (-0.648), higher-rank-trait-bounds (-0.688)
- [issues/issue-2633.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-2633.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/2633)</sup>: structs-enums (1.020), functions-closures (-0.722), lint (-0.967)

Some notes:
- If there are related tests (e.g. it's for the same issue), they are moved along with it.
- Moved try-block.rs to the `try-block` dir.
- Moved tup.rs to the `tuple` dir.
- Moved some tests that classified as consts to the `statics` dir, as it seems they have statics actually.
- Skipped backtrace-debuginfo.rs because I think classifui overrates their helper macros.

cc rust-lang#73494
r? `@petrochenkov`
m-ou-se referenced this issue in m-ou-se/rust Mar 6, 2021
…nkov

Move some tests to more suitable subdirs

## The results from classifui

(The full results can be found here: https://gist.github.com/JohnTitor/c9e00840990b5e4a8fc562ec3571e427)

- [lint-expr-stmt-attrs-for-early-lints.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/lint-expr-stmt-attrs-for-early-lints.rs) <sup>unknown</sup>: lint (1.566), feature-gates (-0.632), numbers-arithmetic (-0.955)
- [try-block.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/try-block.rs) <sup>unknown</sup>: binding (1.385), try-block (-0.097), lint (-0.932)
- [backtrace-debuginfo.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/backtrace-debuginfo.rs) <sup>unknown</sup>: macros (1.365), cfg (-0.279), drop (-0.291)
- [issues/issue-3521.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-3521.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/3521)</sup>: consts (1.298), enum (-0.872), in-band-lifetimes (-0.978)
- [impl-bounds-checking.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/impl-bounds-checking.rs) <sup>unknown</sup>: traits (1.243), for (-0.999), shadowed (-0.999)
- [issues/issue-17718.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-17718.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/17718)</sup>: binding (1.236), consts (0.315), extern (-0.779)
- [issue-6157.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issue-6157.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/6157)</sup>: regions (1.213), unboxed-closures (-0.285), traits (-0.510)
- [issues/issue-44373.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-44373.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/44373)</sup>: consts (1.187), nll (0.427), borrowck (-0.704)
- [nullable-pointer-ffi-compat.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/nullable-pointer-ffi-compat.rs) <sup>unknown</sup>: regions (1.184), consts (0.650), traits (-0.571)
- [issues/issue-52992.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-52992.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/52992)</sup>: nll (1.132), associated-types (-0.628), parser (-0.893)
- [issues/issue-2330.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-2330.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/2330)</sup>: traits (1.116), directory_ownership (-0.691), compare-method (-0.981)
- [issue-74047.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issue-74047.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/74047)</sup>: async-await (1.109), impl-trait (-0.629), resolve (-0.781)
- [issues/issue-33140.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-33140.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/33140)</sup>: traits (1.063), coherence (-0.832), codemap_tests (-0.944)
- [issues/issue-28576.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-28576.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/28576)</sup>: traits (1.062), associated-types (-0.333), impl-trait (-0.697)
- [issues/issue-7222.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-7222.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/7222)</sup>: binding (1.062), consts (-0.226), numbers-arithmetic (-0.294)
- [tup.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/tup.rs) <sup>unknown</sup>: structs-enums (1.061), threads-sendsync (-0.550), moves (-0.790)
- [issues/issue-15261.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-15261.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/15261)</sup>: consts (1.052), where-clauses (-0.833), macros (-0.862)
- [issues/issue-76179.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-76179.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/76179)</sup>: associated-types (1.048), process (-0.887), rfc-2457 (-0.984)
- [issues/issue-42344.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-42344.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/42344)</sup>: borrowck (1.043), macros (-0.481), specialization (-0.966)
- [issues/issue-18661.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-18661.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/18661)</sup>: unboxed-closures (1.038), mir (-0.648), higher-rank-trait-bounds (-0.688)
- [issues/issue-2633.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-2633.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/2633)</sup>: structs-enums (1.020), functions-closures (-0.722), lint (-0.967)

Some notes:
- If there are related tests (e.g. it's for the same issue), they are moved along with it.
- Moved try-block.rs to the `try-block` dir.
- Moved tup.rs to the `tuple` dir.
- Moved some tests that classified as consts to the `statics` dir, as it seems they have statics actually.
- Skipped backtrace-debuginfo.rs because I think classifui overrates their helper macros.

cc rust-lang#73494
r? ``@petrochenkov``
JohnTitor referenced this issue in JohnTitor/rust Mar 7, 2021
…nkov

Move some tests to more suitable subdirs

## The results from classifui

(The full results can be found here: https://gist.github.com/JohnTitor/c9e00840990b5e4a8fc562ec3571e427)

- [lint-expr-stmt-attrs-for-early-lints.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/lint-expr-stmt-attrs-for-early-lints.rs) <sup>unknown</sup>: lint (1.566), feature-gates (-0.632), numbers-arithmetic (-0.955)
- [try-block.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/try-block.rs) <sup>unknown</sup>: binding (1.385), try-block (-0.097), lint (-0.932)
- [backtrace-debuginfo.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/backtrace-debuginfo.rs) <sup>unknown</sup>: macros (1.365), cfg (-0.279), drop (-0.291)
- [issues/issue-3521.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-3521.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/3521)</sup>: consts (1.298), enum (-0.872), in-band-lifetimes (-0.978)
- [impl-bounds-checking.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/impl-bounds-checking.rs) <sup>unknown</sup>: traits (1.243), for (-0.999), shadowed (-0.999)
- [issues/issue-17718.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-17718.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/17718)</sup>: binding (1.236), consts (0.315), extern (-0.779)
- [issue-6157.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issue-6157.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/6157)</sup>: regions (1.213), unboxed-closures (-0.285), traits (-0.510)
- [issues/issue-44373.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-44373.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/44373)</sup>: consts (1.187), nll (0.427), borrowck (-0.704)
- [nullable-pointer-ffi-compat.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/nullable-pointer-ffi-compat.rs) <sup>unknown</sup>: regions (1.184), consts (0.650), traits (-0.571)
- [issues/issue-52992.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-52992.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/52992)</sup>: nll (1.132), associated-types (-0.628), parser (-0.893)
- [issues/issue-2330.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-2330.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/2330)</sup>: traits (1.116), directory_ownership (-0.691), compare-method (-0.981)
- [issue-74047.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issue-74047.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/74047)</sup>: async-await (1.109), impl-trait (-0.629), resolve (-0.781)
- [issues/issue-33140.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-33140.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/33140)</sup>: traits (1.063), coherence (-0.832), codemap_tests (-0.944)
- [issues/issue-28576.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-28576.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/28576)</sup>: traits (1.062), associated-types (-0.333), impl-trait (-0.697)
- [issues/issue-7222.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-7222.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/7222)</sup>: binding (1.062), consts (-0.226), numbers-arithmetic (-0.294)
- [tup.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/tup.rs) <sup>unknown</sup>: structs-enums (1.061), threads-sendsync (-0.550), moves (-0.790)
- [issues/issue-15261.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-15261.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/15261)</sup>: consts (1.052), where-clauses (-0.833), macros (-0.862)
- [issues/issue-76179.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-76179.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/76179)</sup>: associated-types (1.048), process (-0.887), rfc-2457 (-0.984)
- [issues/issue-42344.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-42344.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/42344)</sup>: borrowck (1.043), macros (-0.481), specialization (-0.966)
- [issues/issue-18661.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-18661.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/18661)</sup>: unboxed-closures (1.038), mir (-0.648), higher-rank-trait-bounds (-0.688)
- [issues/issue-2633.rs](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-2633.rs) <sup>[issue](https://github.com/rust-lang/rust/issues/2633)</sup>: structs-enums (1.020), functions-closures (-0.722), lint (-0.967)

Some notes:
- If there are related tests (e.g. it's for the same issue), they are moved along with it.
- Moved try-block.rs to the `try-block` dir.
- Moved tup.rs to the `tuple` dir.
- Moved some tests that classified as consts to the `statics` dir, as it seems they have statics actually.
- Skipped backtrace-debuginfo.rs because I think classifui overrates their helper macros.

cc rust-lang#73494
r? ```@petrochenkov```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
B-RFC-approved Blocker: Approved by a merged RFC but not yet implemented.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants