summaryrefslogtreecommitdiff
path: root/src/codegen/mod.rs
diff options
context:
space:
mode:
authorEmilio Cobos Álvarez <emilio@crisal.io>2019-10-22 18:53:13 +0200
committerEmilio Cobos Álvarez <emilio@crisal.io>2019-10-22 17:48:52 +0200
commitfa6a68d7c768cd9d4efc418f5d8d9ceb104704ad (patch)
treef308583ea8731eda342f797f29cbfb511f3b1fa4 /src/codegen/mod.rs
parentc462b63ec4c0f14833e581a698ed870f19a66c61 (diff)
codegen: Handle opaque aliases to enums correctly.
Opaque types don't use the path to their aliased type but an opaque type like an array or primitive with the right alignment. Fixes #1599.
Diffstat (limited to 'src/codegen/mod.rs')
-rw-r--r--src/codegen/mod.rs4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/codegen/mod.rs b/src/codegen/mod.rs
index c1bac621..f8db5bba 100644
--- a/src/codegen/mod.rs
+++ b/src/codegen/mod.rs
@@ -703,7 +703,8 @@ impl CodeGenerator for Type {
let mut outer_params = item.used_template_params(ctx);
- let inner_rust_type = if item.is_opaque(ctx, &()) {
+ let is_opaque = item.is_opaque(ctx, &());
+ let inner_rust_type = if is_opaque {
outer_params = vec![];
self.to_opaque(ctx, item)
} else {
@@ -756,6 +757,7 @@ impl CodeGenerator for Type {
'A'..='Z' | 'a'..='z' | '0'..='9' | ':' | '_' | ' ' => true,
_ => false,
}) && outer_params.is_empty() &&
+ !is_opaque &&
inner_item.expect_type().canonical_type(ctx).is_enum()
{
tokens.append_all(quote! {