Commit Graph

78562 Commits

Author SHA1 Message Date
est31
5724dad82e Fail typecheck if we encounter a bogus break
Lone breaks outside of loops create errors in the
loop check pass but as they are not fatal,
compilation continues.

MIR building code assumes all HIR break statements
to point to valid locations and fires ICEs if this
assumption is violated. In normal compilation,
this causes no issues, as code apparently prevents
MIR from being built if errors are present.

However, before that, typecheck runs and with it
MIR const eval. Here we operate differently
from normal compilation: it doesn't check for any
errors except for type checker ones and then
directly builds the MIR.

This constellation causes an ICE-on-error if
bogus break statements are being put into array
length expressions.

This commit fixes this ICE by letting typecheck
fail if bogus break statements are encountered.
This way, MIR const eval fails cleanly with a
type check error.

Fixes #50576
Fixes #50581
2018-05-26 03:09:55 +02:00
bors
990d8aa743 Auto merge of #50967 - oli-obk:miri_api_refactor, r=eddyb
Miri api refactor

r? @eddyb

cc @Zoxc

based on https://github.com/rust-lang/rust/pull/50916
2018-05-25 13:59:48 +00:00
Oliver Schneider
5f599bb490 Adjust test for 32 bit targets 2018-05-25 15:13:54 +02:00
Oliver Schneider
50d3783b95 Sanity abort to_bits if used on zsts 2018-05-25 11:56:33 +02:00
bors
9823cb99c5 Auto merge of #51051 - nikomatsakis:turbofish-impl-trait-method, r=eddyb
prohibit turbofish in `impl Trait` methods

Fix #50950
2018-05-25 09:01:11 +00:00
Oliver Schneider
eceeb63d11 Update comment 2018-05-25 10:18:57 +02:00
bors
910e29a45b Auto merge of #50998 - bobtwinkles:nll_facts_invalidate_followup, r=nikomatsakis
NLL facts invalidate followup

Refactors to share code with the rest of borrow-check.

r? @nikomatsakis
2018-05-25 06:26:26 +00:00
bors
7942022bf7 Auto merge of #50986 - estebank:main-start-span, r=nikomatsakis
Tweak `main` type arguments and where clause spans

Tweak the spans for error when finding type arguments or where clauses
in main and start functions.
2018-05-25 03:46:14 +00:00
bors
c8e10e386a Auto merge of #50879 - petrochenkov:lintconv, r=nikomatsakis
Fix naming conventions for new lints

We actually have an RFC from Oct 2014 specifying naming conventions for lints that is still relevant - https://github.com/rust-lang/rfcs/blob/master/text/0344-conventions-galore.md#lints.
Unfortunately, human memory doesn't work for such prolonged periods of time, so a number of recently added edition-related lints don't follow the conventions.
This PR fixes names for those lints.

Unstable lints, simply renamed:
- `unused_lifetime` -> `unused_lifetimes`
- `absolute_path_not_starting_with_crate` -> `absolute_paths_not_starting_with_crate`
- `unnecessary_extern_crate` -> `unnecessary_extern_crates`

New lints stabilized in the last couple of releases, registered as renamed (old names still work with a warning):
- `single_use_lifetime` -> `single_use_lifetimes`
- `elided_lifetime_in_path` -> `elided_lifetimes_in_paths`
- `bare_trait_object` -> `bare_trait_objects`
- `unstable_name_collision` -> `unstable_name_collisions`
- `unused_doc_comment` -> `unused_doc_comments`

NOT changed, too old to rename:
- `const_err` -> `const_errors`
- `unused_allocation` -> `unused_allocations`

NOT changed, deprecation lints, no need to rename, they are going to be removed anyway:
- `invalid_type_param_default` -> `invalid_type_param_defaults`
- `missing_fragment_specifier` -> `missing_fragment_specifiers`
- `tyvar_behind_raw_pointer` -> `tyvars_behind_raw_pointer`
- `illegal_floating_point_literal_pattern` -> `illegal_floating_point_literal_patterns`
2018-05-25 01:33:45 +00:00
Vadim Petrochenkov
e60eaf59df Fix naming conventions for new lints 2018-05-25 02:35:07 +03:00
bors
b86d909f86 Auto merge of #50937 - nikomatsakis:chalkify-engine-2, r=scalexm
implement the chalk-engine traits

Preliminary implementation for the Chalk traits in rustc. Lots of `panic!()` placeholders to be filled in later.

This is currently blocked on us landing https://github.com/rust-lang-nursery/chalk/pull/131  in chalk and issuing a new release, which should occur later today.

r? @scalexm
cc @leodasvacas
2018-05-24 23:10:18 +00:00
Niko Matsakis
558cbfb19b prohibit turbofish in impl Trait methods 2018-05-24 18:43:48 -04:00
bors
c2d46037fa Auto merge of #50984 - cramertj:unpin-changes, r=aturon
Unpin changes

r? @aturon

cc @withoutboats, @RalfJung, @pythonesque, #49150
2018-05-24 20:58:12 +00:00
Oliver Schneider
fb9060ac06 Revert "Ensure llvm doesn't trigger an assert for crazy transmutes"
This reverts commit 776c632e2a9a044fd134321a9d561e28994ff3ff.
2018-05-24 20:49:38 +02:00
Oliver Schneider
85de4efdd8 Rename amt variables to shift 2018-05-24 20:49:38 +02:00
Oliver Schneider
5c8741f32e Use in-band-lifetimes instead of unused explicit lifetimes 2018-05-24 20:49:38 +02:00
Oliver Schneider
80a1488601 Prefer to_value_with_len over manual expanison of it 2018-05-24 20:49:38 +02:00
Oliver Schneider
6d513f752f Remove dead code 2018-05-24 20:49:38 +02:00
Oliver Schneider
d0610fd26e Add missing newlines 2018-05-24 20:49:38 +02:00
Oliver Schneider
bdd23bf215 tcx.lift_to_global > tcx.global_tcx().lift 2018-05-24 20:49:38 +02:00
Oliver Schneider
569ae80a0a Wrongly named a closure clamp when it was doing truncation 2018-05-24 20:49:38 +02:00
Oliver Schneider
1f9fa53738 Sanity check the bits argument to the from_bits function 2018-05-24 20:49:38 +02:00
Oliver Schneider
f1ea9ef315 Remove ty_to_primitive 2018-05-24 20:49:38 +02:00
Oliver Schneider
879d8f7070 Properly check defined bits range 2018-05-24 20:49:38 +02:00
Oliver Schneider
cfd5fb5102 Reuse to_bits instead of badly reinventing it 2018-05-24 20:49:38 +02:00
Oliver Schneider
50628b7373 Only defined bits are relevant 2018-05-24 20:49:38 +02:00
Oliver Schneider
c6d25dc224 Don't ICE on horrible transmutes in pattern constants 2018-05-24 20:49:38 +02:00
Oliver Schneider
1a2964a541 Simplify a ScalarPair creation 2018-05-24 20:49:38 +02:00
Oliver Schneider
ca8c27e1c1 Ensure llvm doesn't trigger an assert for crazy transmutes 2018-05-24 20:49:38 +02:00
Oliver Schneider
bc3ba91737 Printing a fn definition needs to know nothing about its ZST's value 2018-05-24 20:49:38 +02:00
Oliver Schneider
09a996b0a6 Printing values should ignore whether bits are undefined 2018-05-24 20:49:38 +02:00
Oliver Schneider
98e5129375 Better variable naming 2018-05-24 20:49:38 +02:00
Oliver Schneider
97da01f8ad Remove the last mention of Undef 2018-05-24 20:49:38 +02:00
Oliver Schneider
c420531304 Replace ScalarKind with Primitive 2018-05-24 20:49:37 +02:00
Oliver Schneider
cc60a22b10 Get rid of scalar_size 2018-05-24 20:49:37 +02:00
Oliver Schneider
0da702a6d4 Remove an instance of scalar_size in a Debug impl 2018-05-24 20:49:37 +02:00
Oliver Schneider
ff652b8a01 Update outdated comment 2018-05-24 20:49:37 +02:00
Oliver Schneider
f82256e473 primval -> scalar rename 2018-05-24 20:49:37 +02:00
Oliver Schneider
1550fd212b Use the destination type size instead of the source type size 2018-05-24 20:49:37 +02:00
Oliver Schneider
edbdf3d263 Formatting nit 2018-05-24 20:49:37 +02:00
Oliver Schneider
ea8f544964 Rebase fallout 2018-05-24 20:49:37 +02:00
Oliver Schneider
9456ba66bf Accidentally used byte-size instead of bit-size 2018-05-24 20:49:37 +02:00
Oliver Schneider
4ca169ce84 Use the target types bitsize instead of the source type's 2018-05-24 20:49:37 +02:00
Oliver Schneider
bf39c7f87c Floats are scalars! 2018-05-24 20:49:37 +02:00
Oliver Schneider
64a75ecc80 change Value::Bytes to Value::Bits 2018-05-24 20:49:37 +02:00
Oliver Schneider
3bbf2fd715 Remove Pointer::zero in favor of Pointer::from 2018-05-24 20:48:54 +02:00
Oliver Schneider
d7324631ae Rename MemoryPointer to Pointer 2018-05-24 20:48:54 +02:00
Oliver Schneider
03a92b61ec Eliminate the Pointer wrapper type 2018-05-24 20:48:13 +02:00
Oliver Schneider
6436de89fe Differentiate between interpret::Scalar and layout::Scalar 2018-05-24 20:47:35 +02:00
Oliver Schneider
ef2177cffc Rename ByVal(Pair) to Scalar(Pair) 2018-05-24 20:47:35 +02:00