about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorEsteban Küber <esteban@kuber.com.ar>2019-09-04 23:41:51 -0700
committerEsteban Küber <esteban@kuber.com.ar>2019-09-22 11:33:12 -0700
commitb21408527a77136af7aed22ffbe256a6116ddc4e (patch)
tree81394d4baf29b9c09374b43ceca598b95f332f53 /src
parentc9d05aa9ceb82f31a86a548eaaffab8bdb229d76 (diff)
downloadrust-b21408527a77136af7aed22ffbe256a6116ddc4e.tar.gz
rust-b21408527a77136af7aed22ffbe256a6116ddc4e.zip
review comments
Diffstat (limited to 'src')
-rw-r--r--src/librustc/hir/mod.rs3
-rw-r--r--src/librustc_typeck/check/mod.rs41
-rw-r--r--src/libsyntax/parse/parser/path.rs2
-rw-r--r--src/test/ui/parser/type-parameters-in-field-exprs.stderr8
-rw-r--r--src/test/ui/span/macro-ty-params.stderr12
5 files changed, 34 insertions, 32 deletions
diff --git a/src/librustc/hir/mod.rs b/src/librustc/hir/mod.rs
index 4f942a22cb8..92a8c008047 100644
--- a/src/librustc/hir/mod.rs
+++ b/src/librustc/hir/mod.rs
@@ -2751,9 +2751,8 @@ pub enum Node<'hir> {
     Crate,
 }
 
-impl<'hir> Node<'hir> {
+impl Node<'_> {
     pub fn ident(&self) -> Option<Ident> {
-
         match self {
             Node::TraitItem(TraitItem { ident, .. }) |
             Node::ImplItem(ImplItem { ident, .. }) |
diff --git a/src/librustc_typeck/check/mod.rs b/src/librustc_typeck/check/mod.rs
index 743e6661247..edea91c717e 100644
--- a/src/librustc_typeck/check/mod.rs
+++ b/src/librustc_typeck/check/mod.rs
@@ -4736,25 +4736,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
         // First, store the "user substs" for later.
         self.write_user_type_annotation_from_substs(hir_id, def_id, substs, user_self_ty);
 
-        // Add all the obligations that are required, substituting and
-        // normalized appropriately.
-        let (bounds, spans) = self.instantiate_bounds(span, def_id, &substs);
-
-        for (i, mut obligation) in traits::predicates_for_generics(
-            traits::ObligationCause::new(
-                span,
-                self.body_id,
-                traits::ItemObligation(def_id),
-            ),
-            self.param_env,
-            &bounds,
-        ).into_iter().enumerate() {
-            // This makes the error point at the bound, but we want to point at the argument
-            if let Some(span) = spans.get(i) {
-                obligation.cause.code = traits::BindingObligation(def_id, *span);
-            }
-            self.register_predicate(obligation);
-        }
+        self.add_required_obligations(span, def_id, &substs);
 
         // Substitute the values for the type parameters into the type of
         // the referenced item.
@@ -4791,6 +4773,27 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
         (ty_substituted, res)
     }
 
+    /// Add all the obligations that are required, substituting and normalized appropriately.
+    fn add_required_obligations(&self, span: Span, def_id: DefId, substs: &SubstsRef<'tcx>) {
+        let (bounds, spans) = self.instantiate_bounds(span, def_id, &substs);
+
+        for (i, mut obligation) in traits::predicates_for_generics(
+            traits::ObligationCause::new(
+                span,
+                self.body_id,
+                traits::ItemObligation(def_id),
+            ),
+            self.param_env,
+            &bounds,
+        ).into_iter().enumerate() {
+            // This makes the error point at the bound, but we want to point at the argument
+            if let Some(span) = spans.get(i) {
+                obligation.cause.code = traits::BindingObligation(def_id, *span);
+            }
+            self.register_predicate(obligation);
+        }
+    }
+
     fn check_rustc_args_require_const(&self,
                                       def_id: DefId,
                                       hir_id: hir::HirId,
diff --git a/src/libsyntax/parse/parser/path.rs b/src/libsyntax/parse/parser/path.rs
index f6df24c0568..87839f8c70e 100644
--- a/src/libsyntax/parse/parser/path.rs
+++ b/src/libsyntax/parse/parser/path.rs
@@ -197,7 +197,7 @@ impl<'a> Parser<'a> {
                 let (args, constraints) =
                     self.parse_generic_args_with_leaning_angle_bracket_recovery(style, lo)?;
                 self.expect_gt()?;
-                let span = ident.span.to(self.prev_span);
+                let span = lo.to(self.prev_span);
                 AngleBracketedArgs { args, constraints, span }.into()
             } else {
                 // `(T, U) -> R`
diff --git a/src/test/ui/parser/type-parameters-in-field-exprs.stderr b/src/test/ui/parser/type-parameters-in-field-exprs.stderr
index dd8a3feb049..8f32fb0eca1 100644
--- a/src/test/ui/parser/type-parameters-in-field-exprs.stderr
+++ b/src/test/ui/parser/type-parameters-in-field-exprs.stderr
@@ -1,14 +1,14 @@
 error: field expressions may not have generic arguments
-  --> $DIR/type-parameters-in-field-exprs.rs:13:7
+  --> $DIR/type-parameters-in-field-exprs.rs:13:10
    |
 LL |     f.x::<isize>;
-   |       ^^^^^^^^^^
+   |          ^^^^^^^
 
 error: field expressions may not have generic arguments
-  --> $DIR/type-parameters-in-field-exprs.rs:15:7
+  --> $DIR/type-parameters-in-field-exprs.rs:15:10
    |
 LL |     f.x::<>;
-   |       ^^^^^
+   |          ^^
 
 error: field expressions may not have generic arguments
   --> $DIR/type-parameters-in-field-exprs.rs:17:7
diff --git a/src/test/ui/span/macro-ty-params.stderr b/src/test/ui/span/macro-ty-params.stderr
index 139247c0388..39b3edc6703 100644
--- a/src/test/ui/span/macro-ty-params.stderr
+++ b/src/test/ui/span/macro-ty-params.stderr
@@ -1,14 +1,14 @@
 error: generic arguments in macro path
-  --> $DIR/macro-ty-params.rs:10:5
+  --> $DIR/macro-ty-params.rs:10:10
    |
 LL |     foo::<T>!();
-   |     ^^^^^^^^
+   |          ^^^
 
 error: generic arguments in macro path
-  --> $DIR/macro-ty-params.rs:11:5
+  --> $DIR/macro-ty-params.rs:11:10
    |
 LL |     foo::<>!();
-   |     ^^^^^^^
+   |          ^^
 
 error: unexpected generic arguments in path
   --> $DIR/macro-ty-params.rs:12:8
@@ -17,10 +17,10 @@ LL |     m!(Default<>);
    |        ^^^^^^^^^
 
 error: generic arguments in macro path
-  --> $DIR/macro-ty-params.rs:12:8
+  --> $DIR/macro-ty-params.rs:12:15
    |
 LL |     m!(Default<>);
-   |        ^^^^^^^^^
+   |               ^^
 
 error: aborting due to 4 previous errors