From b560a0fabfbafd3a222a140bd76df13b1daf270c Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Fri, 30 Oct 2020 21:28:45 -0700 Subject: [PATCH] Make type information accessible through OutFile --- gen/src/out.rs | 9 ++++++--- gen/src/write.rs | 4 ++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/gen/src/out.rs b/gen/src/out.rs index 8a6bd861..94a54e41 100644 --- a/gen/src/out.rs +++ b/gen/src/out.rs @@ -1,9 +1,11 @@ use crate::gen::include::Includes; +use crate::syntax::Types; use std::cell::RefCell; use std::fmt::{self, Arguments, Write}; -pub(crate) struct OutFile { +pub(crate) struct OutFile<'a> { pub header: bool, + pub types: &'a Types<'a>, pub include: Includes, pub front: Content, content: RefCell, @@ -15,10 +17,11 @@ pub struct Content { blocks_pending: Vec<&'static str>, } -impl OutFile { - pub fn new(header: bool) -> Self { +impl<'a> OutFile<'a> { + pub fn new(header: bool, types: &'a Types) -> Self { OutFile { header, + types, include: Includes::new(), front: Content::new(), content: RefCell::new(Content::new()), diff --git a/gen/src/write.rs b/gen/src/write.rs index b2d52bb6..3be5e353 100644 --- a/gen/src/write.rs +++ b/gen/src/write.rs @@ -10,8 +10,8 @@ use crate::syntax::{ use proc_macro2::Ident; use std::collections::HashMap; -pub(super) fn gen(apis: &[Api], types: &Types, opt: &Opt, header: bool) -> OutFile { - let mut out_file = OutFile::new(header); +pub(super) fn gen<'a>(apis: &[Api], types: &'a Types, opt: &Opt, header: bool) -> OutFile<'a> { + let mut out_file = OutFile::new(header, types); let out = &mut out_file; if header {