diff --git a/src/doc/grammar.md b/src/doc/grammar.md
index 8e803aff4d6..239afd41f02 100644
--- a/src/doc/grammar.md
+++ b/src/doc/grammar.md
@@ -780,6 +780,14 @@ never_type : "!" ;
 
 **FIXME:** grammar?
 
+### Type parameter bounds
+
+```antlr
+bound := ty_bound | lt_bound
+lt_bound := lifetime
+ty_bound := [?] [ for<lt_param_defs> ] simple_path
+```
+
 ### Self types
 
 **FIXME:** grammar?
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs
index 3b928ea93c7..5cacb0da9e5 100644
--- a/src/libsyntax/parse/parser.rs
+++ b/src/libsyntax/parse/parser.rs
@@ -4066,7 +4066,7 @@ impl<'a> Parser<'a> {
         }).emit();
     }
 
-    // Parse bounds of a type parameter `BOUND + BOUND + BOUND` without trailing `+`.
+    // Parse bounds of a type parameter `BOUND + BOUND + BOUND`.
     // BOUND = TY_BOUND | LT_BOUND
     // LT_BOUND = LIFETIME (e.g. `'a`)
     // TY_BOUND = [?] [for<LT_PARAM_DEFS>] SIMPLE_PATH (e.g. `?for<'a: 'b> m::Trait<'a>`)
@@ -4107,7 +4107,7 @@ impl<'a> Parser<'a> {
         self.parse_ty_param_bounds_common(true)
     }
 
-    // Parse bounds of a type parameter `BOUND + BOUND + BOUND` without trailing `+`.
+    // Parse bounds of a type parameter `BOUND + BOUND + BOUND`.
     // BOUND = LT_BOUND (e.g. `'a`)
     fn parse_lt_param_bounds(&mut self) -> Vec<Lifetime> {
         let mut lifetimes = Vec::new();