diff options
author | Emilio Cobos Álvarez <me@emiliocobos.me> | 2016-05-18 09:44:06 +0200 |
---|---|---|
committer | Emilio Cobos Álvarez <me@emiliocobos.me> | 2016-05-18 09:44:06 +0200 |
commit | ea14bb1233acbfa65919574e7d61c495ef5fc336 (patch) | |
tree | 41e873058c5cf0496eb3bb04b9913fbd6dfed256 | |
parent | ea7d300c57acbc367cdcd14a715ba1c280dac030 (diff) |
gen: Use the topmost template parent with the name for compound decls with args
-rw-r--r-- | src/gen.rs | 9 |
1 files changed, 8 insertions, 1 deletions
@@ -384,8 +384,15 @@ fn gen_global(mut ctx: &mut GenCtx, defs.extend(ctypedef_to_rs(&mut ctx, t).into_iter()) }, GCompDecl(ci) => { - let c = ci.borrow().clone(); + let mut c = ci.borrow().clone(); let name = comp_name(&ctx, c.kind, &c.name); + // Use the reference template if any + while let Some(TComp(ref_template)) = c.ref_template.clone() { + if c.name != ref_template.borrow().name { + break; + } + c = ref_template.borrow().clone(); + } if !c.args.is_empty() && !c.args.iter().any(|a| a.name().map(|name| name.is_empty()).unwrap_or(true)) { defs.extend(comp_to_rs(&mut ctx, &name, c).into_iter()); |