1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-06-06 17:26:01 +02:00

Bug 75401: [Scanner][Parser] problem w/using va_arg macro

This commit is contained in:
Andrew Niefer 2004-10-05 17:45:39 +00:00
parent 40ae4797e1
commit 95b192460c
2 changed files with 20 additions and 0 deletions

View file

@ -208,4 +208,18 @@ public class GCCCompleteParseExtensionsTest extends CompleteParseBaseTest {
writer.write( "else z = - y;\n" );//$NON-NLS-1$
writer.write( "z; }) zoot;\n" );//$NON-NLS-1$
}
public void testBug75401() throws Exception
{
Writer writer = new StringWriter();
writer.write( "#define va_arg __builtin_va_arg \n"); //$NON-NLS-1$
writer.write( "#define va_list __builtin_va_list \n"); //$NON-NLS-1$
writer.write( "void main( int argc, char** argv ) { \n"); //$NON-NLS-1$
writer.write( " va_list v; \n"); //$NON-NLS-1$
writer.write( " long l = va_arg( v, long ); \n"); //$NON-NLS-1$
writer.write( "} \n"); //$NON-NLS-1$
parse( writer.toString() );
}
}

View file

@ -90,6 +90,11 @@ public class GCCScannerExtension implements IScannerExtension {
emptyCharArray,
new char[][] { "arg".toCharArray() } ); //$NON-NLS-1$
private static final FunctionStyleMacro __builtin_va_arg
= new FunctionStyleMacro(
"__builtin_va_arg".toCharArray(), //$NON-NLS-1$
"*(type *)ap".toCharArray(), //$NON-NLS-1$
new char[][] { "ap".toCharArray(), "type".toCharArray() } ); //$NON-NLS-1$//$NON-NLS-2$
/* (non-Javadoc)
* @see org.eclipse.cdt.core.parser.IScannerExtension#setupBuiltInMacros()
*/
@ -109,6 +114,7 @@ public class GCCScannerExtension implements IScannerExtension {
scannerData.getRealDefinitions().put(__complex__.name, __complex__ );
scannerData.getRealDefinitions().put(__imag__.name, __imag__ );
scannerData.getRealDefinitions().put(__real__.name, __real__ );
scannerData.getRealDefinitions().put( __builtin_va_arg.name, __builtin_va_arg );
if( scannerData.getLanguage() == ParserLanguage.CPP )
scannerData.getRealDefinitions().put(__asm__.name, __asm__);
else