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