File tree Expand file tree Collapse file tree 2 files changed +19
-9
lines changed Expand file tree Collapse file tree 2 files changed +19
-9
lines changed Original file line number Diff line number Diff line change @@ -352,8 +352,14 @@ impl Cursor {
352
352
/// Returns `LLONG_MIN` if the cursor's referent is not an enum variant,
353
353
/// which is also a valid enum value, so callers should check the cursor
354
354
/// kind before calling this method (see issue #127).
355
- pub fn enum_val_signed ( & self ) -> i64 {
356
- unsafe { clang_getEnumConstantDeclValue ( self . x ) as i64 }
355
+ pub fn enum_val_signed ( & self ) -> Option < i64 > {
356
+ unsafe {
357
+ if self . kind ( ) == CXCursor_EnumConstantDecl {
358
+ Some ( clang_getEnumConstantDeclValue ( self . x ) as i64 )
359
+ } else {
360
+ None
361
+ }
362
+ }
357
363
}
358
364
359
365
/// Get the unsigned constant value for this cursor's enum variant referent.
Original file line number Diff line number Diff line change @@ -71,16 +71,20 @@ impl Enum {
71
71
} ;
72
72
73
73
declaration. visit ( |cursor| {
74
- if cursor. kind ( ) == CXCursor_EnumConstantDecl {
74
+ let val = if is_signed {
75
+ cursor. enum_val_signed ( ) . map ( |val| EnumVariantValue :: Signed ( val) )
76
+ } else {
77
+ if cursor. kind ( ) == CXCursor_EnumConstantDecl {
78
+ Some ( EnumVariantValue :: Unsigned ( cursor. enum_val_unsigned ( ) ) )
79
+ } else {
80
+ None
81
+ }
82
+ } ;
83
+ if let Some ( val) = val {
75
84
let name = cursor. spelling ( ) ;
76
85
let comment = cursor. raw_comment ( ) ;
77
- let val = if is_signed {
78
- EnumVariantValue :: Signed ( cursor. enum_val_signed ( ) )
79
- } else {
80
- EnumVariantValue :: Unsigned ( cursor. enum_val_unsigned ( ) )
81
- } ;
82
86
variants. push ( EnumVariant :: new ( name, comment, val) ) ;
83
- }
87
+ } ;
84
88
CXChildVisit_Continue
85
89
} ) ;
86
90
You can’t perform that action at this time.
0 commit comments