diff options
author | Chris Lattner <sabre@nondot.org> | 2007-12-12 06:13:27 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2007-12-12 06:13:27 +0000 |
commit | dcc2cbcd40bb7ba48b3d222c831bbb5e04140343 (patch) | |
tree | 6617b27802e11788ed25b0d2a79205e27158cee0 /Parse/ParseDecl.cpp | |
parent | ca5eede5fa2c0c359aae63c476da4a823e2fb4c7 (diff) |
simplify some code.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44913 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'Parse/ParseDecl.cpp')
-rw-r--r-- | Parse/ParseDecl.cpp | 68 |
1 files changed, 25 insertions, 43 deletions
diff --git a/Parse/ParseDecl.cpp b/Parse/ParseDecl.cpp index 2781c8f2f5..5d7c94cab0 100644 --- a/Parse/ParseDecl.cpp +++ b/Parse/ParseDecl.cpp @@ -556,51 +556,33 @@ void Parser::ParseDeclarationSpecifiers(DeclSpec &DS) { /// qualifier list and builds their bitmask representation in the input /// argument. void Parser::ParseObjcTypeQualifierList(ObjcDeclSpec &DS) { - bool found = true; - while (found) { - found = false; - if (Tok.is(tok::identifier)) { - const IdentifierInfo *II = Tok.getIdentifierInfo(); - unsigned i; - for (i = 0; i < objc_NumQuals; ++i) { - if (II == ObjcTypeQuals[i]) { - switch (i) { - case objc_in: - DS.setObjcDeclQualifier(ObjcDeclSpec::DQ_In); - ConsumeToken(); - found = true; - break; - case objc_out: - DS.setObjcDeclQualifier(ObjcDeclSpec::DQ_Out); - ConsumeToken(); - found = true; - break; - case objc_inout: - DS.setObjcDeclQualifier(ObjcDeclSpec::DQ_Inout); - ConsumeToken(); - found = true; - break; - case objc_oneway: - DS.setObjcDeclQualifier(ObjcDeclSpec::DQ_Oneway); - ConsumeToken(); - found = true; - break; - case objc_bycopy: - DS.setObjcDeclQualifier(ObjcDeclSpec::DQ_Bycopy); - ConsumeToken(); - found = true; - break; - case objc_byref: - DS.setObjcDeclQualifier(ObjcDeclSpec::DQ_Byref); - ConsumeToken(); - found = true; - break; - } - if (found) - break; - } + while (1) { + if (!Tok.is(tok::identifier)) + return; + + const IdentifierInfo *II = Tok.getIdentifierInfo(); + for (unsigned i = 0; i != objc_NumQuals; ++i) { + if (II != ObjcTypeQuals[i]) + continue; + + ObjcDeclSpec::ObjcDeclQualifier Qual; + switch (i) { + default: assert(0 && "Unknown decl qualifier"); + case objc_in: Qual = ObjcDeclSpec::DQ_In; break; + case objc_out: Qual = ObjcDeclSpec::DQ_Out; break; + case objc_inout: Qual = ObjcDeclSpec::DQ_Inout; break; + case objc_oneway: Qual = ObjcDeclSpec::DQ_Oneway; break; + case objc_bycopy: Qual = ObjcDeclSpec::DQ_Bycopy; break; + case objc_byref: Qual = ObjcDeclSpec::DQ_Byref; break; } + DS.setObjcDeclQualifier(Qual); + ConsumeToken(); + II = 0; + break; } + + // If this wasn't a recognized qualifier, bail out. + if (II) return; } } |