Skip to content

Commit c244f9e

Browse files
committed
---
yaml --- r: 273375 b: refs/heads/beta c: 173676e h: refs/heads/master i: 273373: 51b37b8 273371: fa36d0e 273367: fa67a3a 273359: fb6d490 273343: 6e75a7d
1 parent e5efd0e commit c244f9e

27 files changed

+507
-241
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ refs/tags/0.9: 36870b185fc5f5486636d4515f0e22677493f225
2323
refs/tags/0.10: ac33f2b15782272ae348dbd7b14b8257b2148b5a
2424
refs/tags/0.11.0: e1247cb1d0d681be034adb4b558b5a0c0d5720f9
2525
refs/tags/0.12.0: f0c419429ef30723ceaf6b42f9b5a2aeb5d2e2d1
26-
refs/heads/beta: 63b66bfbcdec1208998dae83d26a3b4d808551d8
26+
refs/heads/beta: 173676efdc8a9f1f2a86d37c08a104e2e505f9e4
2727
refs/tags/1.0.0-alpha: e42bd6d93a1d3433c486200587f8f9e12590a4d7
2828
refs/heads/tmp: e06d2ad9fcd5027bcaac5b08fc9aa39a49d0ecd3
2929
refs/tags/1.0.0-alpha.2: 4c705f6bc559886632d3871b04f58aab093bfa2f

branches/beta/src/bootstrap/build/native.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,12 @@ pub fn llvm(build: &Build, target: &str) {
3939

4040
let _ = fs::remove_dir_all(&dst.join("build"));
4141
t!(fs::create_dir_all(&dst.join("build")));
42-
let assertions = if build.config.llvm_assertions {"ON"} else {"OFF"};
42+
let mut assertions = if build.config.llvm_assertions {"ON"} else {"OFF"};
43+
44+
// Disable LLVM assertions on ARM compilers until #32360 is fixed
45+
if target.contains("arm") && target.contains("gnu") {
46+
assertions = "OFF";
47+
}
4348

4449
// http://llvm.org/docs/CMake.html
4550
let mut cfg = cmake::Config::new(build.src.join("src/llvm"));

branches/beta/src/librustc/middle/infer/error_reporting.rs

Lines changed: 138 additions & 76 deletions
Large diffs are not rendered by default.

branches/beta/src/librustc/middle/infer/mod.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -407,7 +407,7 @@ pub fn common_supertype<'a, 'tcx>(cx: &InferCtxt<'a, 'tcx>,
407407
match result {
408408
Ok(t) => t,
409409
Err(ref err) => {
410-
cx.report_and_explain_type_error(trace, err);
410+
cx.report_and_explain_type_error(trace, err).emit();
411411
cx.tcx.types.err
412412
}
413413
}
@@ -1396,7 +1396,7 @@ impl<'a, 'tcx> InferCtxt<'a, 'tcx> {
13961396
found: actual
13971397
})
13981398
};
1399-
self.report_and_explain_type_error(trace, &err);
1399+
self.report_and_explain_type_error(trace, &err).emit();
14001400
}
14011401

14021402
pub fn report_conflicting_default_types(&self,
@@ -1411,11 +1411,13 @@ impl<'a, 'tcx> InferCtxt<'a, 'tcx> {
14111411
})
14121412
};
14131413

1414-
self.report_and_explain_type_error(trace,
1414+
self.report_and_explain_type_error(
1415+
trace,
14151416
&TypeError::TyParamDefaultMismatch(ExpectedFound {
14161417
expected: expected,
14171418
found: actual
1418-
}));
1419+
}))
1420+
.emit();
14191421
}
14201422

14211423
pub fn replace_late_bound_regions_with_fresh_var<T>(

branches/beta/src/librustc/middle/infer/region_inference/mod.rs

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ pub use self::CombineMapType::*;
1717
pub use self::RegionResolutionError::*;
1818
pub use self::VarValue::*;
1919

20-
use super::{RegionVariableOrigin, SubregionOrigin, TypeTrace, MiscVariable};
20+
use super::{RegionVariableOrigin, SubregionOrigin, MiscVariable};
2121
use super::unify_key;
2222

2323
use rustc_data_structures::graph::{self, Direction, NodeIndex};
@@ -27,7 +27,6 @@ use middle::ty::{self, Ty, TyCtxt};
2727
use middle::ty::{BoundRegion, Region, RegionVid};
2828
use middle::ty::{ReEmpty, ReStatic, ReFree, ReEarlyBound};
2929
use middle::ty::{ReLateBound, ReScope, ReVar, ReSkolemized, BrFresh};
30-
use middle::ty::error::TypeError;
3130
use util::common::indenter;
3231
use util::nodemap::{FnvHashMap, FnvHashSet};
3332

@@ -152,11 +151,16 @@ pub enum RegionResolutionError<'tcx> {
152151
/// more specific errors message by suggesting to the user where they
153152
/// should put a lifetime. In those cases we process and put those errors
154153
/// into `ProcessedErrors` before we do any reporting.
155-
ProcessedErrors(Vec<RegionVariableOrigin>,
156-
Vec<(TypeTrace<'tcx>, TypeError<'tcx>)>,
154+
ProcessedErrors(Vec<ProcessedErrorOrigin<'tcx>>,
157155
Vec<SameRegions>),
158156
}
159157

158+
#[derive(Clone, Debug)]
159+
pub enum ProcessedErrorOrigin<'tcx> {
160+
ConcreteFailure(SubregionOrigin<'tcx>, Region, Region),
161+
VariableFailure(RegionVariableOrigin),
162+
}
163+
160164
/// SameRegions is used to group regions that we think are the same and would
161165
/// like to indicate so to the user.
162166
/// For example, the following function
@@ -530,16 +534,14 @@ impl<'a, 'tcx> RegionVarBindings<'a, 'tcx> {
530534
assert!(self.values_are_none());
531535

532536
debug!("RegionVarBindings: lub_regions({:?}, {:?})", a, b);
533-
match (a, b) {
534-
(ReStatic, _) | (_, ReStatic) => {
535-
ReStatic // nothing lives longer than static
536-
}
537-
538-
_ => {
539-
self.combine_vars(Lub, a, b, origin.clone(), |this, old_r, new_r| {
540-
this.make_subregion(origin.clone(), old_r, new_r)
541-
})
542-
}
537+
if a == ty::ReStatic || b == ty::ReStatic {
538+
ReStatic // nothing lives longer than static
539+
} else if a == b {
540+
a // LUB(a,a) = a
541+
} else {
542+
self.combine_vars(Lub, a, b, origin.clone(), |this, old_r, new_r| {
543+
this.make_subregion(origin.clone(), old_r, new_r)
544+
})
543545
}
544546
}
545547

@@ -550,8 +552,11 @@ impl<'a, 'tcx> RegionVarBindings<'a, 'tcx> {
550552
debug!("RegionVarBindings: glb_regions({:?}, {:?})", a, b);
551553
match (a, b) {
552554
(ReStatic, r) | (r, ReStatic) => {
553-
// static lives longer than everything else
554-
r
555+
r // static lives longer than everything else
556+
}
557+
558+
_ if a == b => {
559+
a // GLB(a,a) = a
555560
}
556561

557562
_ => {

0 commit comments

Comments
 (0)