Add context to i/o errors
diff --git a/gen/src/mod.rs b/gen/src/mod.rs
index 873ce1d..c52d273 100644
--- a/gen/src/mod.rs
+++ b/gen/src/mod.rs
@@ -3,6 +3,7 @@
 
 pub(super) mod error;
 mod file;
+pub(super) mod fs;
 pub(super) mod include;
 pub(super) mod out;
 mod write;
@@ -15,7 +16,6 @@
 use self::file::File;
 use crate::syntax::report::Errors;
 use crate::syntax::{self, check, Types};
-use std::fs;
 use std::path::Path;
 
 /// Options for C++ code generation.
@@ -71,7 +71,7 @@
 pub(super) fn generate_from_path(path: &Path, opt: &Opt) -> GeneratedCode {
     let source = match fs::read_to_string(path) {
         Ok(source) => source,
-        Err(err) => format_err(path, "", Error::Io(err)),
+        Err(err) => format_err(path, "", Error::Fs(err)),
     };
     match generate_from_string(&source, opt) {
         Ok(out) => out,