summaryrefslogtreecommitdiff
path: root/src/trans/codegen_c.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/trans/codegen_c.cpp')
-rw-r--r--src/trans/codegen_c.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/trans/codegen_c.cpp b/src/trans/codegen_c.cpp
index f891d267..a4b0387a 100644
--- a/src/trans/codegen_c.cpp
+++ b/src/trans/codegen_c.cpp
@@ -196,6 +196,7 @@ namespace {
} m_options;
::std::vector< ::std::pair< ::HIR::GenericPath, const ::HIR::Struct*> > m_box_glue_todo;
+ ::std::set< ::HIR::TypeRef> m_emitted_fn_types;
public:
CodeGenerator_C(const ::HIR::Crate& crate, const ::std::string& outfile):
m_crate(crate),
@@ -819,6 +820,11 @@ namespace {
}
void emit_type_fn(const ::HIR::TypeRef& ty)
{
+ if( m_emitted_fn_types.count(ty) ) {
+ return ;
+ }
+ m_emitted_fn_types.insert(ty.clone());
+
const auto& te = ty.m_data.as_Function();
m_of << "typedef ";
// TODO: ABI marker, need an ABI enum?