diff options
author | Andrew Niefer | 2004-10-06 20:15:10 +0000 |
---|---|---|
committer | Andrew Niefer | 2004-10-06 20:15:10 +0000 |
commit | 1f751745a975ab6747e9e2bc29504c4dff2d4056 (patch) | |
tree | 160dc39c6f6add4331150e342e5a043b4574f292 /core/org.eclipse.cdt.core.tests | |
parent | 2ed6f2cd4df492d3ff1ce73e7433e43869310d84 (diff) | |
download | org.eclipse.cdt-1f751745a975ab6747e9e2bc29504c4dff2d4056.tar.gz org.eclipse.cdt-1f751745a975ab6747e9e2bc29504c4dff2d4056.tar.xz org.eclipse.cdt-1f751745a975ab6747e9e2bc29504c4dff2d4056.zip |
bug 73954: [Parser] GCC built_in symbols
added
- __builtin_types_compatible_p
- __builtin_constant_p
- __builtin_choose_expr
added a new DynamicFunctionStyleMacro to implement the __builtin_choose_expr
also fixed the typeSpec and typeId caches in the factory
Diffstat (limited to 'core/org.eclipse.cdt.core.tests')
3 files changed, 34 insertions, 0 deletions
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/CompletionParseTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/CompletionParseTest.java index 66cca9ab846..7e18f4f3463 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/CompletionParseTest.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/CompletionParseTest.java @@ -700,6 +700,7 @@ public class CompletionParseTest extends CompletionParseBaseTest { results.add("__builtin_ctzll"); //$NON-NLS-1$ results.add("__builtin_popcountll"); //$NON-NLS-1$ results.add("__builtin_parityll"); //$NON-NLS-1$ + results.add("__builtin_types_compatible_p"); //$NON-NLS-1$ } validateLookupResult(result, results ); } diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/GCCCompleteParseExtensionsTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/GCCCompleteParseExtensionsTest.java index bd1416b02ea..cd1348462ca 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/GCCCompleteParseExtensionsTest.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/GCCCompleteParseExtensionsTest.java @@ -222,4 +222,17 @@ public class GCCCompleteParseExtensionsTest extends CompleteParseBaseTest { parse( writer.toString() ); } + public void testBug73954B() throws Exception{ + Writer writer = new StringWriter(); + writer.write( "#define foo(x) \\\n"); //$NON-NLS-1$ + writer.write( " __builtin_choose_expr( 1, foo_d(x), (void)0 ) \n"); //$NON-NLS-1$ + writer.write( "int foo_d( int x ); \n"); //$NON-NLS-1$ + writer.write( "int main() { \n"); //$NON-NLS-1$ + writer.write( " if( __builtin_constant_p(1) && \n"); //$NON-NLS-1$ + writer.write( " __builtin_types_compatible_p( 1, 'c') ) \n"); //$NON-NLS-1$ + writer.write( " foo(1); \n"); //$NON-NLS-1$ + writer.write( "} \n"); //$NON-NLS-1$ + + parse( writer.toString(), true, ParserLanguage.C ); + } } diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/scanner2/GCCScannerExtensionsTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/scanner2/GCCScannerExtensionsTest.java index fdbb7ac71a1..887d14d9b4f 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/scanner2/GCCScannerExtensionsTest.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/scanner2/GCCScannerExtensionsTest.java @@ -10,8 +10,12 @@ ***********************************************************************/ package org.eclipse.cdt.core.parser.tests.scanner2; +import java.io.StringWriter; +import java.io.Writer; + import org.eclipse.cdt.core.parser.IGCCToken; import org.eclipse.cdt.core.parser.IToken; +import org.eclipse.cdt.core.parser.ParserLanguage; /** * @author jcamelon @@ -42,4 +46,20 @@ public class GCCScannerExtensionsTest extends BaseScanner2Test { validateEOF(); } + public void testBug73954B() throws Exception{ + Writer writer = new StringWriter(); + writer.write( "#define foo(x) \\\n"); //$NON-NLS-1$ + writer.write( " __builtin_choose_expr( \\\n"); //$NON-NLS-1$ + writer.write( " __builtin_types_compatible_p( typeof(x), double ), \\\n"); //$NON-NLS-1$ + writer.write( " foo_double( x ), (void)0 ) \n"); //$NON-NLS-1$ + writer.write( "__builtin_constant_p(1) \n"); //$NON-NLS-1$ + writer.write( "foo( 1 ) \n"); //$NON-NLS-1$ + + initializeScanner( writer.toString(), ParserLanguage.C ); + validateInteger( "0" ); //$NON-NLS-1$ + validateToken( IToken.tLPAREN ); + validateToken( IToken.t_void ); + validateToken( IToken.tRPAREN ); + validateInteger( "0" ); //$NON-NLS-1$ + } } |