summaryrefslogtreecommitdiffstats
path: root/src/scanner.l
diff options
context:
space:
mode:
Diffstat (limited to 'src/scanner.l')
-rw-r--r--src/scanner.l32
1 files changed, 20 insertions, 12 deletions
diff --git a/src/scanner.l b/src/scanner.l
index 4846433..be8f716 100644
--- a/src/scanner.l
+++ b/src/scanner.l
@@ -4733,19 +4733,27 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?)
BEGIN( ClassVar );
}
<ClassVar>":" {
- current->type.resize(0);
- if ((current->spec & Entry::Interface) ||
- (current->spec & Entry::Struct) ||
- (current->spec & Entry::Ref) ||
- (current->spec & Entry::Value) ||
- insidePHP || insideCS || insideD || insideObjC
- )
- baseProt=Public;
+ if (current->section == Entry::VARIABLE_SEC) // enum a b:2, see bug 313527
+ {
+ BEGIN(BitFields);
+ current->bitfields+=":";
+ }
else
- baseProt=Private;
- baseVirt=Normal;
- baseName.resize(0);
- BEGIN( BasesProt ) ;
+ {
+ current->type.resize(0);
+ if ((current->spec & Entry::Interface) ||
+ (current->spec & Entry::Struct) ||
+ (current->spec & Entry::Ref) ||
+ (current->spec & Entry::Value) ||
+ insidePHP || insideCS || insideD || insideObjC
+ )
+ baseProt=Public;
+ else
+ baseProt=Private;
+ baseVirt=Normal;
+ baseName.resize(0);
+ BEGIN( BasesProt ) ;
+ }
}
<ClassVar>[;=*&] {
unput(*yytext);