Update to codespan-reporting 0.9
diff --git a/gen/error.rs b/gen/error.rs
index b8ac337..ca78acb 100644
--- a/gen/error.rs
+++ b/gen/error.rs
@@ -1,8 +1,8 @@
 use crate::gen::Error;
 use crate::syntax;
 use anyhow::anyhow;
-use codespan::{FileId, Files};
 use codespan_reporting::diagnostic::{Diagnostic, Label};
+use codespan_reporting::files::SimpleFiles;
 use codespan_reporting::term::termcolor::{ColorChoice, StandardStream, WriteColor};
 use codespan_reporting::term::{self, Config};
 use std::io::Write;
@@ -46,32 +46,30 @@
     }
     end_offset += end.column;
 
-    let mut files = Files::new();
+    let mut files = SimpleFiles::new();
     let file = files.add(path.to_string_lossy(), source);
 
-    let range = start_offset as u32..end_offset as u32;
-    let diagnostic = diagnose(file, range, error);
+    let diagnostic = diagnose(file, start_offset..end_offset, error);
 
     let config = Config::default();
     let _ = term::emit(stderr, &config, &files, &diagnostic);
 }
 
-fn diagnose(file: FileId, range: Range<u32>, error: syn::Error) -> Diagnostic {
+fn diagnose(file: usize, range: Range<usize>, error: syn::Error) -> Diagnostic<usize> {
     let message = error.to_string();
     let info = syntax::error::ERRORS
         .iter()
         .find(|e| message.contains(e.msg));
-    let mut diagnostic = if let Some(info) = info {
-        let label = Label::new(file, range, info.label.unwrap_or(&message));
-        let mut diagnostic = Diagnostic::new_error(&message, label);
-        if let Some(note) = info.note {
-            diagnostic = diagnostic.with_notes(vec![note.to_owned()]);
-        }
-        diagnostic
+    let mut diagnostic = Diagnostic::error().with_message(&message);
+    let mut label = Label::primary(file, range);
+    if let Some(info) = info {
+        label.message = info.label.map_or(message, str::to_owned);
+        diagnostic.labels.push(label);
+        diagnostic.notes.extend(info.note.map(str::to_owned));
     } else {
-        let label = Label::new(file, range, &message);
-        Diagnostic::new_error(&message, label)
-    };
+        label.message = message;
+        diagnostic.labels.push(label);
+    }
     diagnostic.code = Some("cxxbridge".to_owned());
     diagnostic
 }