Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Niefer2004-10-06 20:15:10 +0000
committerAndrew Niefer2004-10-06 20:15:10 +0000
commit1f751745a975ab6747e9e2bc29504c4dff2d4056 (patch)
tree160dc39c6f6add4331150e342e5a043b4574f292 /core/org.eclipse.cdt.core.tests
parent2ed6f2cd4df492d3ff1ce73e7433e43869310d84 (diff)
downloadorg.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')
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/CompletionParseTest.java1
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/GCCCompleteParseExtensionsTest.java13
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/scanner2/GCCScannerExtensionsTest.java20
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$
+ }
}

Back to the top