diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,5 +1,9 @@
 # Revision history for alex-tools
 
+## 0.2.0.0  -- 2017-03-21
+
+* Add the `sourceFile` field to `SourceRange`
+
 ## 0.1.1.0  -- 2016-09-02
 
 * Add `NFData` instances
diff --git a/alex-tools.cabal b/alex-tools.cabal
--- a/alex-tools.cabal
+++ b/alex-tools.cabal
@@ -1,5 +1,5 @@
 name:                alex-tools
-version:             0.1.1.0
+version:             0.2.0.0
 synopsis:            A set of functions for a common use case of Alex.
 description:         This captures a common patter for using Alex.
 license:             ISC
diff --git a/src/AlexTools.hs b/src/AlexTools.hs
--- a/src/AlexTools.hs
+++ b/src/AlexTools.hs
@@ -88,7 +88,8 @@
 
 -- | A range in the source code.
 data SourceRange = SourceRange
-  { sourceFrom :: !SourcePos
+  { sourceFile :: !Text
+  , sourceFrom :: !SourcePos
   , sourceTo   :: !SourcePos
   } deriving (Show, Eq)
 
@@ -97,13 +98,15 @@
                       prettySourcePos (sourceTo x)
 
 instance NFData SourceRange where
-  rnf (SourceRange x y) = rnf (x,y)
+  rnf (SourceRange t x y) = rnf (t,x,y)
 
 class HasRange t where
   range :: t -> SourceRange
 
 instance HasRange SourcePos where
-  range p = SourceRange { sourceFrom = p, sourceTo = p }
+  range p = SourceRange { sourceFile = Text.empty
+                        , sourceFrom = p
+                        , sourceTo   = p }
 
 instance HasRange SourceRange where
   range = id
@@ -116,9 +119,12 @@
   range (Right x) = range x
 
 (<->) :: (HasRange a, HasRange b) => a -> b -> SourceRange
-x <-> y = SourceRange { sourceFrom = sourceFrom (range x)
+x <-> y = SourceRange { sourceFile = sourceFile xr
+                      , sourceFrom = sourceFrom xr
                       , sourceTo   = sourceTo   (range y)
                       }
+  where
+  xr = range x
 
 
 --------------------------------------------------------------------------------
@@ -263,7 +269,7 @@
          body go mode inp cfg =
            caseE [| $alexScanUser $mode $inp (lexerStateMode $cfg $mode) |]
              [ alexEOF   ~> [| lexerEOF $cfg $mode |]
-             , alexError ~> [| error "language-lua lexer internal error" |]
+             , alexError ~> [| error "internal error in lexer (AlexTools.hs)" |]
              , alexSkip  ~> [| $go $mode $xE |]
              , alexToken ~> [| case runA $zE $inp $xE $yE $mode of
                                  (mode', ts) -> ts ++ $go mode' $xE |]
