 ;; Font-locking definitions and helpers
 (defconst reason-mode-keywords
   '("as"
-    "box" "break"
-    "const" "continue" "crate"
-    "do"
-    "else" "enum" "extern"
+    "break"
+    "else" "extern"
     "false" "fun" "for"
     "if" "impl" "in"
-    "let" "loop"
-    "match" "mod" "move" "mut"
+    "let"
+    "module" "match" "mod" "move" "mut"
     "priv" "pub"
     "ref" "return"
-    "self" "static" "struct" "super"
+    "self" "static" "switch" "struct" "super"
     "true" "trait" "type"
     "use"
     "virtual"

                      (back-to-indentation)
                      ;; Avoid using multiple-value-bind
                      (setq function-start (point)
                            function-level (rust-paren-level)))
                    ;; When we're not on a line starting with "where ", but
                    ;; still on a where-clause line, go to "where "
                    (when (and

       ;; introducing a loop, so the y is an expression
       ((and (equal token 'ident) (rust-looking-back-symbols '("for")))
        (backward-sexp)
        (reason-rewind-irrelevant)
        (looking-back "[{;]" (1- (point))))

       ((rust-looking-back-ident)
        (rust-rewind-qualified-ident)
        (reason-rewind-irrelevant)
        (cond
         ((equal token 'open-brace)
          ;; We now know we have:
