Skip to content

Commit e53634e

Browse files
authored
Merge pull request #75 from Cysharp/hadashiA/ignore-fielded-enum
Ignore fielded enum
2 parents 6f7b417 + 7319015 commit e53634e

File tree

2 files changed

+10
-5
lines changed

2 files changed

+10
-5
lines changed

csbindgen/src/emitter.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -280,7 +280,7 @@ pub fn emit_csharp(
280280
Some(x) => format!(" : {}", convert_token_enum_repr(x)),
281281
None => "".to_string(),
282282
};
283-
let name = &item.enum_name;
283+
let name = (options.csharp_type_rename)(escape_csharp_name(&item.enum_name));
284284
if item.is_flags {
285285
enum_string.push_str_ln(" [Flags]");
286286
}

csbindgen/src/parser.rs

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use crate::{alias_map::AliasMap, builder::BindgenOptions, field_map::FieldMap, type_meta::*};
22
use regex::Regex;
33
use std::collections::HashSet;
4-
use syn::{Abi, ForeignItem, Ident, Item, Meta, MetaNameValue, Pat, ReturnType};
4+
use syn::{ForeignItem, Item, Meta, MetaNameValue, Pat, ReturnType};
55
use crate::type_meta::ExportSymbolNaming::{ExportName, NoMangle};
66

77
enum FnItem {
@@ -117,13 +117,13 @@ fn parse_method(item: FnItem, options: &BindgenOptions) -> Option<ExternMethod>
117117

118118
// check attrs
119119
let mut export_naming = NoMangle;
120-
if (!is_foreign_item) {
120+
if !is_foreign_item {
121121
let found = attrs.iter()
122122
.map(|attr| {
123123
let name = &attr.path.segments.last().unwrap().ident;
124-
if (name == "no_mangle") {
124+
if name == "no_mangle" {
125125
return Some(NoMangle)
126-
} else if (name == "export_name") {
126+
} else if name == "export_name" {
127127
if let Ok(Meta::NameValue(MetaNameValue { lit: syn::Lit::Str(x), .. })) = attr.parse_meta() {
128128
return Some(ExportName(x.value()));
129129
}
@@ -342,6 +342,11 @@ pub fn collect_enum(ast: &syn::File, result: &mut Vec<RustEnum>) {
342342
let enum_name = t.ident.to_string();
343343
let mut fields = Vec::new(); // Vec<(String, Option<String>)>
344344

345+
if t.variants.iter().any(|x| !matches!(x.fields, syn::Fields::Unit)) {
346+
println!("csbindgen can't handle Enum containing any variable with field, so ignore generate, enum_name: {enum_name}");
347+
continue;
348+
}
349+
345350
for v in &t.variants {
346351
let name = v.ident.to_string();
347352
let mut value = None;

0 commit comments

Comments
 (0)