Commit graph

454 commits

Author SHA1 Message Date
bors
a1a13b2bc4 Auto merge of #78461 - TimDiekmann:vec-alloc, r=Amanieu
Add support for custom allocators in `Vec`

This follows the [roadmap](https://github.com/rust-lang/wg-allocators/issues/7) of the allocator WG to add custom allocators to collections.

r? `@Amanieu`

This pull request requires a crater run.

### Prior work:
- #71873: Crater-test to solve rust-lang/wg-allocators#1
- [`alloc-wg`](https://github.com/TimDiekmann/alloc-wg)-crate
2020-11-21 22:46:50 +00:00
Tim Diekmann
8c78e97672 Use Cell instead of Vec in const-generics test
As `Cell` won't receive an allocator parameter, it is used. Otherwise a `#![feature(allocator_api)]` could have been added, but for the purpose of this test, changing the type is more clear.
2020-11-18 19:34:34 +01:00
varkor
85bc953892 Add tests for multi-segment paths in const generic arguments 2020-11-18 13:16:35 +00:00
varkor
efcbf1b00b Permit standalone generic parameters as const generic arguments in macros 2020-11-18 13:16:35 +00:00
Bastian Kauschke
5f2a627f89 extend macro braces test 2020-11-17 10:18:27 +01:00
Mara Bos
835faa532f
Rollup merge of #79032 - lcnr:arg-count, r=varkor
improve type const mismatch errors

Doesn't completely remove `check_generic_arg_count` as that would have required some more complex changes but
instead checks type and const params in only one step. Also moved the help added by `@JulianKnodt` in #75611 to `generic_arg_mismatch_err`.

r? `@varkor` cc `@petrochenkov`
2020-11-16 17:26:35 +01:00
Bastian Kauschke
69b43c209c improve error message for const ty param mismatch 2020-11-16 16:07:59 +01:00
bors
98d66340d6 Auto merge of #78809 - vn-ki:fix-issue-76064, r=oli-obk
add error_occured field to ConstQualifs,

fix #76064

I wasn't sure what `in_return_place` actually did and not sure why it returns `ConstQualifs` while it's sibling functions return `bool`. So I tried to make as minimal changes to the structure as possible. Please point out whether I have to refactor it or not.

r? `@oli-obk`
cc `@RalfJung`
2020-11-14 18:03:17 +00:00
Bastian Kauschke
06c9c599ed lessen restriction in check_kind_count 2020-11-13 19:12:49 +01:00
Guillaume Gomez
7ea8e32adb
Rollup merge of #78996 - lcnr:cg-promotion, r=RalfJung
add explicit test for const param promotion

r? `@RalfJung`
2020-11-13 15:26:20 +01:00
Mara Bos
38ca6e3561
Rollup merge of #78987 - lcnr:integer-sizes, r=varkor
extend min_const_generics param ty tests

Apparently we never tested for `u128` and `i128` before this, so I added a test for all types which are allowed.

r? ``@varkor``
2020-11-12 19:46:19 +01:00
Bastian Kauschke
c56add0dcb cg: add explicit test for const param promotion 2020-11-12 19:20:47 +01:00
Vishnunarayan K I
5029a19313 check mir exists before validation; fix tests 2020-11-12 21:08:18 +05:30
Bastian Kauschke
80b2835dbf extend min_const_generics param ty tests 2020-11-12 16:34:53 +01:00
Guillaume Gomez
a2e9e3b6af
Rollup merge of #78960 - ethanboxx:const-gen-test-default-error, r=lcnr
Test default values for const parameters.

The last topic on #78433

I originally intended to place these tests in a single file, however, due to them being parser errors that are fatal, they must be in separate files to be detected.

Thanks, ``@lcnr`` for mentoring me on this PR.

r? ``@lcnr``
2020-11-12 11:31:51 +01:00
Guillaume Gomez
0cd118d967
Rollup merge of #78916 - lcnr:const-generics-tests, r=varkor
extend const generics test suite

should implement most of #78433, especially all parts of [the hackmd](https://hackmd.io/WnFmN4MjRCqAjGmYfYcu2A?view) which I did not explicitly mention in that issue.

r? ``@varkor``
2020-11-12 11:31:45 +01:00
Ethan Brierley
1d3f9d030b default_trait_param 2020-11-11 22:49:09 +00:00
Ethan Brierley
ad7f330f52 Add test default_function_param 2020-11-11 22:48:52 +00:00
Jonas Schievink
2e0a0b42ad
Rollup merge of #78832 - lcnr:const-evaluatable-unevaluated, r=oli-obk
look at assoc ct, check the type of nodes

an example where types matter are function objects, see the added test which previously passed.

Now does a shallow comparison of unevaluated constants.

r? ```@oli-obk```
2020-11-11 20:59:02 +01:00
Bastian Kauschke
f4790ec2b6 add cross crate test 2020-11-10 12:31:57 +01:00
Bastian Kauschke
4b5cd04130 add test for where clauses mentioning const params 2020-11-10 12:31:57 +01:00
Bastian Kauschke
de1ebbb0a7 const param in async 2020-11-10 12:31:57 +01:00
Bastian Kauschke
a30b28e893 try referencing outer params 2020-11-10 12:31:57 +01:00
Bastian Kauschke
19a3fe6324 exhaustively enumerate all values of a const param 2020-11-10 10:08:51 +01:00
Bastian Kauschke
a8310e202c add associated type bounds test 2020-11-10 10:02:33 +01:00
Bastian Kauschke
dd78188185 add macro_rules test regarding braces 2020-11-10 10:02:33 +01:00
kadmin
857dd8b1fa Add macro test for min-const-generics 2020-11-10 08:56:48 +00:00
Bastian Kauschke
359031e1d3 add generic param mismatch test 2020-11-10 09:51:02 +01:00
Bastian Kauschke
d76cdb052e const param macro test 2020-11-10 09:51:01 +01:00
Bastian Kauschke
439171e094 look at assoc ct, check the type of nodes 2020-11-07 12:39:52 +01:00
Yuki Okushi
572ea25e01
Rollup merge of #78478 - hameerabbasi:const-generics-supertraits, r=lcnr
Add const generics tests for supertraits + dyn traits.

Partially addresses #78433
2020-10-29 12:08:56 +09:00
Yuki Okushi
a7a0538802
Rollup merge of #78460 - varkor:turbofish-string-generic, r=lcnr
Adjust turbofish help message for const generics

Types are no longer special. (This message arguably only makes sense with `min_const_generics` or more, but we'll be there soon.)

r? @lcnr
2020-10-29 12:08:50 +09:00
Yuki Okushi
2555e07be1
Rollup merge of #78428 - JulianKnodt:invalid_patterns, r=lcnr
MinConstGenerics UI test for invalid values for bool & char

This adds a test for `feature(min_const_generics)` with some invalid values for bools and chars and ensures that they do not ICE and error with understandable messages.

r? @lcnr
2020-10-29 12:08:48 +09:00
Yuki Okushi
270d2e0c2e
Rollup merge of #78224 - lcnr:repeat-expr, r=varkor
min_const_generics: allow ty param in repeat expr

implements https://rust-lang.zulipchat.com/#narrow/stream/260443-project-const-generics/topic/repeat.20expressions

Even with `min_const_generics` active, now keeps resulting in future compat warnings instead of hard errors.
Const parameters, for example `[0; N + 1]`, still result in hard errors during resolve.
```rust
#![allow(dead_code)]

fn foo<T>() {
    [0; std::mem::size_of::<*mut T>()];
}

struct Foo<T>(T);

impl<T> Foo<T> {
    const ASSOC: usize = 4;

    fn test() {
        [0; Self::ASSOC];
    }
}
```

r? @varkor cc @petrochenkov
2020-10-29 12:08:40 +09:00
Hameer Abbasi
22060fa0dc Assert in every case. 2020-10-28 12:51:15 +00:00
Hameer Abbasi
fab79c27ef Extend test to cover dyn methods/functions. 2020-10-28 12:29:13 +00:00
varkor
6c73adf324 Adjust turbofish help message for const generics 2020-10-28 10:47:27 +00:00
Hameer Abbasi
9e60f4511e Add const generics tests for supertraits + dyn traits. 2020-10-28 10:36:19 +00:00
Dylan DPC
c3f842baee
Rollup merge of #78391 - JulianKnodt:mc_test, r=lcnr
Add const_fn in generics test

Adds a test that constant functions in generic parameters work properly. I was surprised this works, but I also to turbofish the constant in main, otherwise it didn't infer properly:
```
let v: ConstU32<3> = ...
```
Did not work as I expected, which I can highlight in the test if that's the intended behaviour.

r? @lcnr
2020-10-28 01:21:27 +01:00
Dylan DPC
1a64e570c6
Rollup merge of #78365 - lcnr:const-eval-obj-safety, r=oli-obk
check object safety of generic constants

As `Self` can only be effectively used in constants with `const_evaluatable_checked` this should not matter outside of it.

Implements the first item of #72219

> Object safety interactions with constants

r? @oli-obk for now cc @nikomatsakis
2020-10-28 01:21:21 +01:00
kadmin
eb8e8bd8bf Add UI test for invalid values for bool & char 2020-10-27 22:54:41 +00:00
kadmin
23c4a46eff Add const_fn in generics test 2020-10-27 19:22:13 +00:00
bors
20b1e05a8d Auto merge of #77502 - varkor:const-generics-suggest-enclosing-braces, r=petrochenkov
Suggest that expressions that look like const generic arguments should be enclosed in brackets

I pulled out the changes for const expressions from https://github.com/rust-lang/rust/pull/71592 (without the trait object diagnostic changes) and made some small changes; the implementation is `@estebank's.`

We're also going to want to make some changes separately to account for trait objects (they result in poor diagnostics, as is evident from one of the test cases here), such as an adaption of https://github.com/rust-lang/rust/pull/72273.

Fixes https://github.com/rust-lang/rust/issues/70753.

r? `@petrochenkov`
2020-10-27 09:25:54 +00:00
varkor
ac1454001c Suggest expressions that look like const generic arguments should be enclosed in brackets
Co-Authored-By: Esteban Kuber <github@kuber.com.ar>
2020-10-26 21:54:45 +00:00
Bastian Kauschke
8546a80dc1 add fixme 2020-10-26 13:11:00 +01:00
Bastian Kauschke
0e419efb1c check for object safety violations in constants 2020-10-25 18:33:45 +01:00
Jonas Schievink
5ed8ac45d4
Rollup merge of #78272 - lcnr:abstract-const-unused-node, r=oli-obk
const_evaluatable_checked: deal with unused nodes + div

r? @oli-obk
2020-10-24 22:39:57 +02:00
Bastian Kauschke
83ecbb4a29 add tests for self with const params 2020-10-23 22:10:44 +02:00
Bastian Kauschke
47cb871f14 review 2020-10-23 15:04:12 +02:00
Bastian Kauschke
6ad140ca19 const_eval_checked: deal with unused nodes + div 2020-10-23 12:16:58 +02:00