Oli Scherer
a9a79f657c
Completely remove ConstnessAnd
2021-11-29 21:19:49 +08:00
Oli Scherer
e37947f097
Re-use constness_for_typeck
instead of rolling it ourselves
2021-11-29 21:19:46 +08:00
Oli Scherer
721ffd14c3
Add constness to ParamEnv
...
This now causes a lot of queries to be executed twice, as reveal_all forces NotConst
2021-11-29 21:19:46 +08:00
Jakob Degen
746091c610
Recurse through query system when checking ADT drop types, hopefully improving perf
2021-11-13 14:47:17 -05:00
bstrie
ce1143e94d
impl Copy/Clone for arrays in std, not in compiler
2021-11-08 13:11:58 -05:00
bors
85c0558d03
Auto merge of #90218 - JakobDegen:adt_significant_drop_fix, r=nikomatsakis
...
Fixes incorrect handling of ADT's drop requirements
Fixes #90024 and a bunch of duplicates.
The main issue was just that the contract of `NeedsDropTypes::adt_components` was inconsistent; the list of types it might return were the generic parameters themselves or the fields of the ADT, depending on the nature of the drop impl. This meant that the caller could not determine whether a `.subst()` call was still needed on those types; it called `.subst()` in all cases, and this led to ICEs when the returned types were the generic params.
First contribution of more than a few lines, so feedback definitely appreciated.
2021-10-28 16:03:13 +00:00
Jakob Degen
aff37f8f7b
Clean up debug statements in needs_drop
2021-10-25 20:45:46 -04:00
b-naber
c6b69017e2
expose default substs in param_env
2021-10-25 16:04:57 +02:00
Jakob Degen
9158fc2071
Fixes incorrect handling of ADT's drop requirements
...
See https://github.com/rust-lang/rust/issues/90024#issuecomment-950105433
2021-10-23 06:47:17 -04:00
Camille GILLOT
6e98688e68
Replace FnLikeNode by FnKind.
2021-10-19 23:31:51 +02:00
bjorn3
83ddedf170
Remove various unused feature gates
2021-10-02 19:09:18 +02:00
bors
05044c2e6c
Auto merge of #89144 - sexxi-goose:insig_stdlib, r=nikomatsakis
...
2229: Mark insignificant dtor in stdlib
I looked at all public [stdlib Drop implementations](https://doc.rust-lang.org/stable/std/ops/trait.Drop.html#implementors ) and categorized them into Insigificant/Maybe/Significant Drop.
Reasons are noted here: https://docs.google.com/spreadsheets/d/19edb9r5lo2UqMrCOVjV0fwcSdS-R7qvKNL76q7tO8VA/edit#gid=1838773501
One thing missing from this PR is tagging HashMap as insigificant destructor as that needs some discussion.
r? `@Mark-Simulacrum`
cc `@nikomatsakis`
2021-09-26 19:36:00 +00:00
Aman Arora
994793faab
PR fixup
2021-09-22 05:17:30 -04:00
Aman Arora
d2cbe21756
Handle type params in insig dtors
2021-09-21 05:06:19 -04:00
Aman Arora
95cfbe43d2
2229: Early exit when we see an insigificant drop
2021-09-21 04:06:00 -04:00
Camille GILLOT
d7795d302a
Do not store visibility in *ItemRef.
2021-09-20 00:29:53 +02:00
Deadbeef
82117289f2
Remove the queries
2021-09-09 05:21:32 +00:00
Deadbeef
a13b13ff46
Const drop selection candidates
2021-09-09 05:21:31 +00:00
Deadbeef
104e40fb74
Const dropping
2021-09-09 05:21:29 +00:00
bors
d5cd3205fd
Auto merge of #88371 - Manishearth:rollup-pkkjsme, r=Manishearth
...
Rollup of 11 pull requests
Successful merges:
- #87832 (Fix debugger stepping behavior with `match` expressions)
- #88123 (Make spans for tuple patterns in E0023 more precise)
- #88215 (Reland #83738 : "rustdoc: Don't load all extern crates unconditionally")
- #88216 (Don't stabilize creation of TryReserveError instances)
- #88270 (Handle type ascription type ops in NLL HRTB diagnostics)
- #88289 (Fixes for LLVM change 0f45c16f2caa7c035e5c3edd40af9e0d51ad6ba7)
- #88320 (type_implements_trait consider obligation failure on overflow)
- #88332 (Add argument types tait tests)
- #88340 (Add `c_size_t` and `c_ssize_t` to `std::os::raw`.)
- #88346 (Revert "Add type of a let tait test impl trait straight in let")
- #88348 (Add field types tait tests)
Failed merges:
r? `@ghost`
`@rustbot` modify labels: rollup
2021-08-27 01:07:17 +00:00
Manish Goregaokar
8aa46e51df
Rollup merge of #88123 - camelid:tup-pat-precise-spans, r=estebank
...
Make spans for tuple patterns in E0023 more precise
As suggested in #86307 . Closes #86307 .
r? ````@estebank````
2021-08-26 12:38:06 -07:00
lcnr
cc47998e28
add tcx
to fn walk
2021-08-26 11:00:30 +02:00
lcnr
bfaf13af4e
make unevaluated const substs optional
2021-08-26 11:00:30 +02:00
lcnr
f4b606fd17
require a tcx
for TypeVisitor
2021-08-26 10:54:01 +02:00
Frank Steffahn
bf88b113ea
Fix typos “a”→“an”
2021-08-22 15:35:11 +02:00
Noah Lev
0fa3b4f940
Make E0023 spans even more precise
2021-08-21 16:15:09 -07:00
Charles Lew
6b1c52ff25
Fold vtable_trait_upcasting_coercion_new_vptr_slot
logic into obligation processing.
2021-08-18 13:00:27 +08:00
Deadbeef
89d190f090
Add impl_constness query
2021-07-10 20:54:49 +08:00
bjorn3
489ad8b8b5
Revert "Revert "Merge CrateDisambiguator into StableCrateId""
...
This reverts commit 8176ab8bc1
.
2021-07-06 11:28:04 +02:00
Aaron Hill
7e5a88a56c
Combine individual limit queries into single limits
query
2021-07-04 13:02:51 -05:00
Aaron Hill
ff15b5e2c7
Query-ify global limit attribute handling
2021-07-04 12:33:14 -05:00
Yuki Okushi
58f6cb4557
Simplify visit_region
implementation
2021-07-03 02:21:19 +09:00
Yuki Okushi
e28a93365a
Correct visit_region
implementation
2021-07-03 01:12:31 +09:00
Yuki Okushi
13e116f1f7
Use BoundVarsCollector
for now
2021-07-03 01:12:31 +09:00
Yuki Okushi
242ac57015
Fix const-generics ICE related to binding
2021-07-03 01:12:27 +09:00
Tomasz Miąsko
56219870ee
Include terminators in instance size estimate
...
For example, drop glue generated for struct below, doesn't have any
statements, only terminators. Previously it received an estimate of 0,
the new estimate is 13 (6+5 drop terminators, +1 resume, +1 return).
struct S {
a: String,
b: String,
c: String,
d: String,
e: String,
f: String,
}
Originally reported in https://github.com/rust-lang/rust/issues/69382#issue-569392141
2021-07-01 13:31:57 +02:00
bjorn3
8176ab8bc1
Revert "Merge CrateDisambiguator into StableCrateId"
...
This reverts commit d0ec85d3fb
.
2021-06-07 10:37:45 +02:00
Camille GILLOT
0e71283495
Restrict access to crate_name.
...
Also remove original_crate_name, which had the exact same implementation
2021-06-02 18:35:32 +02:00
Camille Gillot
0f0f3138cb
Revert "Reduce the amount of untracked state in TyCtxt"
2021-06-01 09:05:22 +02:00
Camille GILLOT
10fb4b2fe5
Restrict access to crate_name.
...
Also remove original_crate_name, which had the exact same implementation
2021-05-30 19:54:04 +02:00
bjorn3
d0ec85d3fb
Merge CrateDisambiguator into StableCrateId
2021-05-30 12:51:34 +02:00
Dhruv Jauhar
a7e1cec621
add new attribute rustc_insignificant_dtor and a query to check if a type has a significant drop
2021-05-14 22:57:33 -04:00
Fabian Wolff
98728c2b35
Implement changes suggested by tmiasko and davidtwco
2021-05-10 17:47:50 +02:00
Fabian Wolff
309710dece
Fix stack overflow when checking for structural recursion
2021-05-06 22:31:42 +02:00
Camille GILLOT
323f5b2ac9
Split crate_hash from index_hir.
2021-04-29 21:36:48 +02:00
lcnr
b3629d21ba
move representability
out of rustc_middle
2021-04-27 15:01:37 +02:00
hi-rustin
6c3f5b8535
resolve conflicts
...
resolve conflicts
2021-04-05 22:58:11 +08:00
Jack Huey
30187c81f6
Track bound vars
2021-03-31 10:15:27 -04:00
Nikita Popov
c3f9403f59
Don't consider !Unpin references as noalias
...
Such structures may contain self-references, in which case the
same location may be accessible through a pointer that is not
based-on the noalias pointer.
This is still grey area as far as language semantics are concerned,
but checking for !Unpin as an indicator for self-referential
sturctures seems like a good approach for the meantime.
2021-03-21 20:10:53 +01:00
bors
1fdadbf13a
Auto merge of #82159 - BoxyUwU:uwu, r=varkor
...
Use correct param_env in conservative_is_privately_uninhabited
cc `@lcnr`
r? `@varkor` since this is your FIXME that was removed ^^
2021-02-24 21:54:52 +00:00