1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-23 08:55:25 +02:00

Bug 66496 - added handling for macros that occur between 'class' and the class name for the model builder in quick parse mode. This is commonly used in Windows for dllexport'ing a whole class.

This commit is contained in:
Doug Schaefer 2005-07-27 02:01:58 +00:00
parent a7d6556d98
commit 196a2bb1d7
2 changed files with 12 additions and 4 deletions

View file

@ -2148,7 +2148,10 @@ public class QuickParseASTTests extends BaseASTTest
public void testBug59179() throws Exception
{
Iterator i = parse( "class __decl main{ int main; };", true, false ).getDeclarations(); //$NON-NLS-1$
assertFalse( i.hasNext() );
// Bug 66496 - added in handling for things like this
// changing assertFalse to assertTrue
// however, I don't think this is really testing the bug...
assertTrue( i.hasNext() );
}
public void testBug57652() throws Exception
@ -2156,7 +2159,6 @@ public class QuickParseASTTests extends BaseASTTest
parse("struct file_operations driver_fops = { open: device_open, release: device_release };", true, true, ParserLanguage.C ).getDeclarations(); //$NON-NLS-1$
}
public void testBug60142() throws Exception
{
IASTVariable var = (IASTVariable) assertSoleDeclaration( "unsigned long var;"); //$NON-NLS-1$

View file

@ -5626,8 +5626,14 @@ public class Parser implements IParserData, IParser
setCompletionValues(sdw.getScope(), completionKind, KeywordSetKey.EMPTY);
// class name
if (LT(1) == IToken.tIDENTIFIER)
duple = name(sdw.getScope(), completionKind, KeywordSetKey.EMPTY);
if (LT(1) == IToken.tIDENTIFIER) {
// Bug 66496
// special magic to handle macros that resolve to dllimport/dllexport in quick parse
if (mode == ParserMode.QUICK_PARSE && LT(2) == IToken.tIDENTIFIER)
consume();
duple = name(sdw.getScope(), completionKind, KeywordSetKey.EMPTY);
}
if (duple != null && !duple.isIdentifier())
nameType = ClassNameType.TEMPLATE;
if (LT(1) != IToken.tCOLON && LT(1) != IToken.tLBRACE) {