Skip to content

Commit b214085

Browse files
committed
review comments
1 parent c9d05aa commit b214085

File tree

5 files changed

+34
-32
lines changed

5 files changed

+34
-32
lines changed

src/librustc/hir/mod.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -2751,9 +2751,8 @@ pub enum Node<'hir> {
27512751
Crate,
27522752
}
27532753

2754-
impl<'hir> Node<'hir> {
2754+
impl Node<'_> {
27552755
pub fn ident(&self) -> Option<Ident> {
2756-
27572756
match self {
27582757
Node::TraitItem(TraitItem { ident, .. }) |
27592758
Node::ImplItem(ImplItem { ident, .. }) |

src/librustc_typeck/check/mod.rs

+22-19
Original file line numberDiff line numberDiff line change
@@ -4736,25 +4736,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
47364736
// First, store the "user substs" for later.
47374737
self.write_user_type_annotation_from_substs(hir_id, def_id, substs, user_self_ty);
47384738

4739-
// Add all the obligations that are required, substituting and
4740-
// normalized appropriately.
4741-
let (bounds, spans) = self.instantiate_bounds(span, def_id, &substs);
4742-
4743-
for (i, mut obligation) in traits::predicates_for_generics(
4744-
traits::ObligationCause::new(
4745-
span,
4746-
self.body_id,
4747-
traits::ItemObligation(def_id),
4748-
),
4749-
self.param_env,
4750-
&bounds,
4751-
).into_iter().enumerate() {
4752-
// This makes the error point at the bound, but we want to point at the argument
4753-
if let Some(span) = spans.get(i) {
4754-
obligation.cause.code = traits::BindingObligation(def_id, *span);
4755-
}
4756-
self.register_predicate(obligation);
4757-
}
4739+
self.add_required_obligations(span, def_id, &substs);
47584740

47594741
// Substitute the values for the type parameters into the type of
47604742
// the referenced item.
@@ -4791,6 +4773,27 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
47914773
(ty_substituted, res)
47924774
}
47934775

4776+
/// Add all the obligations that are required, substituting and normalized appropriately.
4777+
fn add_required_obligations(&self, span: Span, def_id: DefId, substs: &SubstsRef<'tcx>) {
4778+
let (bounds, spans) = self.instantiate_bounds(span, def_id, &substs);
4779+
4780+
for (i, mut obligation) in traits::predicates_for_generics(
4781+
traits::ObligationCause::new(
4782+
span,
4783+
self.body_id,
4784+
traits::ItemObligation(def_id),
4785+
),
4786+
self.param_env,
4787+
&bounds,
4788+
).into_iter().enumerate() {
4789+
// This makes the error point at the bound, but we want to point at the argument
4790+
if let Some(span) = spans.get(i) {
4791+
obligation.cause.code = traits::BindingObligation(def_id, *span);
4792+
}
4793+
self.register_predicate(obligation);
4794+
}
4795+
}
4796+
47944797
fn check_rustc_args_require_const(&self,
47954798
def_id: DefId,
47964799
hir_id: hir::HirId,

src/libsyntax/parse/parser/path.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ impl<'a> Parser<'a> {
197197
let (args, constraints) =
198198
self.parse_generic_args_with_leaning_angle_bracket_recovery(style, lo)?;
199199
self.expect_gt()?;
200-
let span = ident.span.to(self.prev_span);
200+
let span = lo.to(self.prev_span);
201201
AngleBracketedArgs { args, constraints, span }.into()
202202
} else {
203203
// `(T, U) -> R`

src/test/ui/parser/type-parameters-in-field-exprs.stderr

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
error: field expressions may not have generic arguments
2-
--> $DIR/type-parameters-in-field-exprs.rs:13:7
2+
--> $DIR/type-parameters-in-field-exprs.rs:13:10
33
|
44
LL | f.x::<isize>;
5-
| ^^^^^^^^^^
5+
| ^^^^^^^
66

77
error: field expressions may not have generic arguments
8-
--> $DIR/type-parameters-in-field-exprs.rs:15:7
8+
--> $DIR/type-parameters-in-field-exprs.rs:15:10
99
|
1010
LL | f.x::<>;
11-
| ^^^^^
11+
| ^^
1212

1313
error: field expressions may not have generic arguments
1414
--> $DIR/type-parameters-in-field-exprs.rs:17:7
+6-6
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
error: generic arguments in macro path
2-
--> $DIR/macro-ty-params.rs:10:5
2+
--> $DIR/macro-ty-params.rs:10:10
33
|
44
LL | foo::<T>!();
5-
| ^^^^^^^^
5+
| ^^^
66

77
error: generic arguments in macro path
8-
--> $DIR/macro-ty-params.rs:11:5
8+
--> $DIR/macro-ty-params.rs:11:10
99
|
1010
LL | foo::<>!();
11-
| ^^^^^^^
11+
| ^^
1212

1313
error: unexpected generic arguments in path
1414
--> $DIR/macro-ty-params.rs:12:8
@@ -17,10 +17,10 @@ LL | m!(Default<>);
1717
| ^^^^^^^^^
1818

1919
error: generic arguments in macro path
20-
--> $DIR/macro-ty-params.rs:12:8
20+
--> $DIR/macro-ty-params.rs:12:15
2121
|
2222
LL | m!(Default<>);
23-
| ^^^^^^^^^
23+
| ^^
2424

2525
error: aborting due to 4 previous errors
2626

0 commit comments

Comments
 (0)