         (or
          ;; The special types can't take type param lists, so a < after one is
          ;; always an operator
-         (looking-at rust-re-special-types)
+         (looking-at reason-re-special-types)
 
          (rust-is-in-expression-context 'ident)))
 

;; newer Emacs versions, but will work on Emacs 23.)
(defun regexp-opt-symbols (words)
  (concat "\\_<" (regexp-opt words t) "\\_>"))
(defconst rust-re-special-types (regexp-opt-symbols rust-special-types))

(defvar reason-mode-font-lock-keywords
  (append

    "virtual"
    "where" "while"))

(defconst reason-special-types
  '("int" "float" "string" "char"
    "bool" "unit" "list" "array" "exn"
    "option" "ref"
))

(defconst rust-re-type-or-constructor
  (rx symbol-start
