diff options
author | Emilio Cobos Álvarez <emilio@crisal.io> | 2019-10-22 18:53:13 +0200 |
---|---|---|
committer | Emilio Cobos Álvarez <emilio@crisal.io> | 2019-10-22 17:48:52 +0200 |
commit | fa6a68d7c768cd9d4efc418f5d8d9ceb104704ad (patch) | |
tree | f308583ea8731eda342f797f29cbfb511f3b1fa4 /src/codegen/mod.rs | |
parent | c462b63ec4c0f14833e581a698ed870f19a66c61 (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.rs | 4 |
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! { |