Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[cdt-patch] Applied [HEAD & 1_1] : Refactoring parser testcase hierarchy, 1 b ugfix

Title: Applied [HEAD & 1_1] : Refactoring parser testcase hierarchy, 1 bugfix

CORE
        Fixed Bug36799  STL Testing: Parser fails on Variable Definition

TESTS
        Moved fixed tests from FailedTests to DOMTests.
        Added DOMTests::testBug36799().
        Cleaned up tests to reduce amount of code necessary to maintain these things.

JohnC


<<cdt-ui-tests-patch.txt>> <<cdt-core-patch.txt>>

Index: ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui.tests/ChangeLog,v
retrieving revision 1.37.2.3
diff -u -r1.37.2.3 ChangeLog
--- ChangeLog	24 Apr 2003 18:50:52 -0000	1.37.2.3
+++ ChangeLog	24 Apr 2003 20:52:29 -0000
@@ -1,5 +1,10 @@
 2003-04-24 John Camelon
 	Moved fixed tests from FailedTests to DOMTests. 
+	Added DOMTests::testBug36799().
+	Cleaned up tests to reduce amount of code necessary to maintain these things. 
+
+2003-04-24 John Camelon
+	Moved fixed tests from FailedTests to DOMTests. 
 	Added LokiFailures.java to failed tests directory.
 
 2003-04-24 Andrew Niefer
Index: failures/org/eclipse/cdt/core/parser/failedTests/ACEFailedTest.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui.tests/failures/org/eclipse/cdt/core/parser/failedTests/ACEFailedTest.java,v
retrieving revision 1.1
diff -u -r1.1 ACEFailedTest.java
--- failures/org/eclipse/cdt/core/parser/failedTests/ACEFailedTest.java	23 Apr 2003 17:30:50 -0000	1.1
+++ failures/org/eclipse/cdt/core/parser/failedTests/ACEFailedTest.java	24 Apr 2003 20:52:29 -0000
@@ -13,12 +13,7 @@
 import java.io.StringWriter;
 import java.io.Writer;
 
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-import org.eclipse.cdt.core.parser.tests.DOMTests;
-import org.eclipse.cdt.internal.core.dom.TranslationUnit;
-import org.eclipse.cdt.internal.core.parser.ParserException;
+import org.eclipse.cdt.core.parser.tests.BaseDOMTest;
 
 
 /**
@@ -27,7 +22,7 @@
  * To change the template for this generated type comment go to
  * Window>Preferences>Java>Code Generation>Code and Comments
  */
-public class ACEFailedTest extends DOMTests {
+public class ACEFailedTest extends BaseDOMTest {
 
 	/**
 	 * @param arg
@@ -35,44 +30,19 @@
 	public ACEFailedTest(String arg) {
 		super(arg);
 	}
-	public static Test suite() {
-		TestSuite suite = new TestSuite();
-
-		suite.addTest(new ACEFailedTest("testBug36769"));
-		suite.addTest(new ACEFailedTest("testBug36771"));
-		return suite;
-	}
 	
-	public void testBug36771(){
-		boolean testPassed = false;
-		try{
-			Writer code = new StringWriter();
-			code.write("#include /**/ \"foo.h\"\n");
-			TranslationUnit tu = parse( code.toString());
-			testPassed = true;
-		} catch( Throwable e ){
-			if( ! (e instanceof ParserException))
-				fail( "Unexpected Error: " + e.getMessage() );
-		}
-		if( testPassed )
-			fail( "The expected error did not occur.");		
+	public void testBug36771() throws Exception {
+		Writer code = new StringWriter();
+		code.write("#include /**/ \"foo.h\"\n");
+		failTest( code.toString());
 	}
 	
-	public void testBug36769(){
-		boolean testPassed = false;
-		try{
-			Writer code = new StringWriter();
-			code.write("template <class A, B> cls<A, C>::operator op &() const {}\n");
-			code.write("template <class A, B> cls<A, C>::cls() {}\n");
-			code.write("template <class A, B> cls<A, C>::~cls() {}\n");
+	public void testBug36769() throws Exception {
+		Writer code = new StringWriter();
+		code.write("template <class A, B> cls<A, C>::operator op &() const {}\n");
+		code.write("template <class A, B> cls<A, C>::cls() {}\n");
+		code.write("template <class A, B> cls<A, C>::~cls() {}\n");
 			
-			TranslationUnit tu = parse( code.toString());
-			testPassed = true;
-		} catch( Throwable e ){
-			if( ! (e instanceof ParserException))
-				fail( "Unexpected Error: " + e.getMessage() );
-		}
-		if( testPassed )
-			fail( "The expected error did not occur.");
+		failTest( code.toString());
 	}
 }
Index: failures/org/eclipse/cdt/core/parser/failedTests/DOMFailedTest.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui.tests/failures/org/eclipse/cdt/core/parser/failedTests/DOMFailedTest.java,v
retrieving revision 1.3.2.1
diff -u -r1.3.2.1 DOMFailedTest.java
--- failures/org/eclipse/cdt/core/parser/failedTests/DOMFailedTest.java	24 Apr 2003 18:37:12 -0000	1.3.2.1
+++ failures/org/eclipse/cdt/core/parser/failedTests/DOMFailedTest.java	24 Apr 2003 20:52:29 -0000
@@ -13,157 +13,77 @@
 import java.io.StringWriter;
 import java.io.Writer;
 
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-import org.eclipse.cdt.core.parser.tests.DOMTests;
-import org.eclipse.cdt.internal.core.dom.TranslationUnit;
-import org.eclipse.cdt.internal.core.parser.ParserException;
+import org.eclipse.cdt.core.parser.tests.BaseDOMTest;
 
 /**
  * @author jcamelon
  */
-public class DOMFailedTest extends DOMTests {
+public class DOMFailedTest extends BaseDOMTest  {
 
 	public DOMFailedTest(String name) {
 		super(name);
 	}
 
-	public static Test suite() {
-		TestSuite suite = new TestSuite();
+	public void testBug36704() throws Exception {
+		failTest("template <class T, class U> struct Length< Typelist<T, U> >	{ enum { value = 1 + Length<U>::value };};);");
+	}
 
-		suite.addTest(new DOMFailedTest("testBug36691"));
-		suite.addTest(new DOMFailedTest("testBug36699"));
-		suite.addTest(new DOMFailedTest("testBug36704"));
-		suite.addTest(new DOMFailedTest("testBug36707"));
-		suite.addTest(new DOMFailedTest("testBug36708"));
-		suite.addTest(new DOMFailedTest("testBug36713"));
-		suite.addTest(new DOMFailedTest("testBug36714"));
-		suite.addTest(new DOMFailedTest("testBug36730"));
-
-		return suite;
-	}
-
-	public void testBug36691() {
-		boolean testPassed = false;
-		try {
-			Writer code = new StringWriter();
-			code.write("template <class T, class H>\n");
-			code.write(
-				"typename H::template Rebind<T>::Result& Field(H& obj)\n");
-			code.write("{	return obj;	}\n");
-			TranslationUnit tu = parse(code.toString());
-			testPassed = true;
-			fail( "We should not reach this point");
-		} catch (Throwable e) {
-			if (!(e instanceof ParserException))
-				fail("Unexpected Error: " + e.getMessage());
-
-			if (testPassed)
-				fail("The expected error did not occur.");
-		}
-	}
-
-	public void testBug36699() {
-		boolean testPassed = false;
-		try {
-			Writer code = new StringWriter();
-			code.write(
-				"template <	template <class> class ThreadingModel = DEFAULT_THREADING,\n");
-			code.write("std::size_t chunkSize = DEFAULT_CHUNK_SIZE,\n");
-			code.write(
-				"std::size_t maxSmallObjectSize = MAX_SMALL_OBJECT_SIZE	>\n");
-			code.write("class SmallObject : public ThreadingModel<\n");
-			code.write(
-				"SmallObject<ThreadingModel, chunkSize, maxSmallObjectSize> >\n");
-			code.write("{};\n");
-			TranslationUnit tu = parse(code.toString());
-			testPassed = true;
-			fail( "We should not reach this point");
-		} catch (Throwable e) {
-			if (!(e instanceof ParserException))
-				fail("Unexpected Error: " + e.getMessage());
-
-			if (testPassed)
-				fail("The expected error did not occur.");
-		}
-	}
-
-	public void testBug36704() {
-		boolean testPassed = false;
-		try {
-			TranslationUnit tu =
-				parse("template <class T, class U> struct Length< Typelist<T, U> >	{ enum { value = 1 + Length<U>::value };};);");
-			testPassed = true;
-			fail( "We should not reach this point");
-		} catch (Throwable e) {
-			if (!(e instanceof ParserException))
-				fail("Unexpected Error: " + e.getMessage());
-
-			if (testPassed)
-				fail("The expected error did not occur.");
-		}
-	}
-
-	public void testBug36707() {
-		boolean testPassed = false;
-		try {
-			TranslationUnit tu =
-				parse("enum { exists = sizeof(typename H::Small) == sizeof((H::Test(H::MakeT()))) };");
-			testPassed = true;
-		} catch (Throwable e) {
-			if (!(e instanceof ParserException))
-				fail("Unexpected Error: " + e.getMessage());
-
-			if (testPassed)
-				fail("The expected error did not occur.");
-		}
-	}
-
-	public void testBug36708() {
-		boolean testPassed = false;
-		try {
-			TranslationUnit tu =
-				parse("enum { isPointer = PointerTraits<T>::result };");
-			testPassed = true;
-		} catch (Throwable e) {
-			if (!(e instanceof ParserException))
-				fail("Unexpected Error: " + e.getMessage());
-
-			if (testPassed)
-				fail("The expected error did not occur.");
-		}
+	public void testBug36691() throws Exception {
+		Writer code = new StringWriter();
+		code.write("template <class T, class H>\n");
+		code.write(
+			"typename H::template Rebind<T>::Result& Field(H& obj)\n");
+		code.write("{	return obj;	}\n");
+		failTest(code.toString());
+	}
+
+	public void testBug36699() throws Exception {
+		Writer code = new StringWriter();
+		code.write(
+			"template <	template <class> class ThreadingModel = DEFAULT_THREADING,\n");
+		code.write("std::size_t chunkSize = DEFAULT_CHUNK_SIZE,\n");
+		code.write(
+			"std::size_t maxSmallObjectSize = MAX_SMALL_OBJECT_SIZE	>\n");
+		code.write("class SmallObject : public ThreadingModel<\n");
+		code.write(
+			"SmallObject<ThreadingModel, chunkSize, maxSmallObjectSize> >\n");
+		code.write("{};\n");
+		failTest(code.toString());
 	}
+
 	
-	public void testBug36714(){
-		boolean testPassed = false;
-		try{
-			Writer code = new StringWriter();
-			code.write("unsigned long a = 0UL;\n");
-			code.write("unsigned long a2 = 0L; \n");
-
-			TranslationUnit tu = parse(code.toString());
-			testPassed = true;
-		} catch (Throwable e ) {
-			if( ! (e instanceof ParserException))
-				fail( "Unexpected Error: " + e.getMessage() );
-		}
-		if( testPassed )
-			fail( "The expected error did not occur.");
+	public void testBug36714() throws Exception {
+		Writer code = new StringWriter();
+		code.write("unsigned long a = 0UL;\n");
+		code.write("unsigned long a2 = 0L; \n");
+
+		failTest(code.toString());
 	}
 	
 	public void testBug36730(){
-		boolean testPassed = false;
-		try{
-			TranslationUnit tu = parse("FUNCTION_MACRO( 1, a );\n	int i;");
+		failTest("FUNCTION_MACRO( 1, a );\n	int i;");
+	}
+
+	public void testBug36702() throws Exception
+	{
+		Writer code = new StringWriter(); 
+		code.write( "void mad_decoder_init(struct mad_decoder *, void *,\n" ); 
+		code.write( "			  enum mad_flow (*)(void *, struct mad_stream *),\n" ); 
+		code.write( "			  enum mad_flow (*)(void *, struct mad_header const *),\n" ); 
+		code.write( "			  enum mad_flow (*)(void *,\n" ); 
+		code.write( "					struct mad_stream const *,\n" ); 
+		code.write( "					struct mad_frame *),\n" ); 
+		code.write( "			  enum mad_flow (*)(void *,\n" ); 
+		code.write( "					struct mad_header const *,\n" ); 
+		code.write( "					struct mad_pcm *),\n" ); 
+		code.write( "			  enum mad_flow (*)(void *,\n" ); 
+		code.write( "					struct mad_stream *,\n" ); 
+		code.write( "					struct mad_frame *),\n" ); 
+		code.write( "			  enum mad_flow (*)(void *, void *, unsigned int *)\n" ); 
+		code.write( ");\n" );  
+		
+		failTest( code.toString() );
 		
-			testPassed = true;
-		} catch (Throwable e ) {
-			if( ! (e instanceof ParserException))
-				fail( "Unexpected Error: " + e.getMessage() );
-		}
-		if( testPassed )
-			fail( "The expected error did not occur.");
 	}
 
 }
Index: failures/org/eclipse/cdt/core/parser/failedTests/LokiFailures.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui.tests/failures/org/eclipse/cdt/core/parser/failedTests/LokiFailures.java,v
retrieving revision 1.1.2.1
diff -u -r1.1.2.1 LokiFailures.java
--- failures/org/eclipse/cdt/core/parser/failedTests/LokiFailures.java	24 Apr 2003 18:37:12 -0000	1.1.2.1
+++ failures/org/eclipse/cdt/core/parser/failedTests/LokiFailures.java	24 Apr 2003 20:52:29 -0000
@@ -14,31 +14,17 @@
 import java.io.StringWriter;
 import java.io.Writer;
 
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-import org.eclipse.cdt.core.parser.tests.DOMTests;
-import org.eclipse.cdt.internal.core.dom.TranslationUnit;
-import org.eclipse.cdt.internal.core.parser.ParserException;
+import org.eclipse.cdt.core.parser.tests.BaseDOMTest;
 
 /**
  * @author jcamelon
  */
-public class LokiFailures extends DOMTests {
+public class LokiFailures extends BaseDOMTest  {
 
 	public LokiFailures(String name) {
 		super(name);
 	}
 
-	public static Test suite() {
-		TestSuite suite = new TestSuite();
-
-		suite.addTest(new LokiFailures("testBugSingleton192"));
-		suite.addTest(new LokiFailures("testBugFunctor758"));
-		
-		return suite;
-	}
-
 	public void testBugSingleton192() {
 		failTest("int Test::* pMember_;" );
 	}
@@ -58,21 +44,5 @@
 		} catch( IOException ioe ){}
 		failTest( code.toString() );
 	
-    }
-	
-	public void failTest( String code )
-	{
-		boolean testPassed = false;
-		try {
-			TranslationUnit tu = parse(code);
-			testPassed = true;
-			fail( "We should not reach this point");
-		} catch (Throwable e) {
-			if (!(e instanceof ParserException))
-				fail("Unexpected Error: " + e.getMessage());
-		}
-		if (testPassed)
-			fail("The expected error did not occur.");
-	}
-	
+    }	
 }
Index: failures/org/eclipse/cdt/core/parser/failedTests/STLFailedTests.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui.tests/failures/org/eclipse/cdt/core/parser/failedTests/STLFailedTests.java,v
retrieving revision 1.1
diff -u -r1.1 STLFailedTests.java
--- failures/org/eclipse/cdt/core/parser/failedTests/STLFailedTests.java	23 Apr 2003 14:07:50 -0000	1.1
+++ failures/org/eclipse/cdt/core/parser/failedTests/STLFailedTests.java	24 Apr 2003 20:52:29 -0000
@@ -12,90 +12,41 @@
 import java.io.StringWriter;
 import java.io.Writer;
 
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-import org.eclipse.cdt.core.parser.tests.DOMTests;
-import org.eclipse.cdt.internal.core.dom.TranslationUnit;
-import org.eclipse.cdt.internal.core.parser.ParserException;
+import org.eclipse.cdt.core.parser.tests.BaseDOMTest;
 
 /**
  * @author hamer
  */
-public class STLFailedTests extends DOMTests {
+public class STLFailedTests extends BaseDOMTest  {
 
 	public STLFailedTests(String name) {
 		super(name);
 	}
 
-	public static Test suite() {
-		TestSuite suite = new TestSuite();
-	
-		suite.addTest(new STLFailedTests("testBug36766A"));
-		suite.addTest(new STLFailedTests("testBug36766B"));
-		suite.addTest(new STLFailedTests("testBug36766C"));
-	
-		return suite;
-	}
-
-	public void testBug36766A() {
-		boolean testPassed = false;
-		try {
-			Writer code = new StringWriter();
-			code.write("template <class _CharT, class _Alloc>\n");
-			code.write("rope<_CharT, _Alloc>::rope(size_t __n, _CharT __c,\n");
-			code.write("const allocator_type& __a): _Base(__a)\n");
-			code.write("{}\n");
-			TranslationUnit tu = parse(code.toString());
-			testPassed = true;
-			fail( "We should not reach this point");
-		} catch (Throwable e) {
-			if (!(e instanceof ParserException))
-				fail("Unexpected Error: " + e.getMessage());
-	
-			if (testPassed)
-				fail("The expected error did not occur.");
-		}
+	public void testBug36766A() throws Exception {
+		Writer code = new StringWriter();
+		code.write("template <class _CharT, class _Alloc>\n");
+		code.write("rope<_CharT, _Alloc>::rope(size_t __n, _CharT __c,\n");
+		code.write("const allocator_type& __a): _Base(__a)\n");
+		code.write("{}\n");
+		failTest(code.toString());
 	}
 
-	public void testBug36766B() {
-		boolean testPassed = false;
-		try {
-			Writer code = new StringWriter();
-			code.write("template<class _CharT>\n");
-			code.write("bool _Rope_insert_char_consumer<_CharT>::operator()\n");
-			code.write("(const _CharT* __leaf, size_t __n)\n");
-			code.write("{}\n");
-			TranslationUnit tu = parse(code.toString());
-			testPassed = true;
-			fail( "We should not reach this point");
-		} catch (Throwable e) {
-			if (!(e instanceof ParserException))
-				fail("Unexpected Error: " + e.getMessage());
-	
-			if (testPassed)
-				fail("The expected error did not occur.");
-		}
+	public void testBug36766B() throws Exception {
+		Writer code = new StringWriter();
+		code.write("template<class _CharT>\n");
+		code.write("bool _Rope_insert_char_consumer<_CharT>::operator()\n");
+		code.write("(const _CharT* __leaf, size_t __n)\n");
+		code.write("{}\n");
+		failTest(code.toString());
 	}
 
-	public void testBug36766C() {
-		boolean testPassed = false;
-		try {
-			Writer code = new StringWriter();
-			code.write("template <class _CharT, class _Alloc>\n");
-			code.write("_Rope_char_ref_proxy<_CharT, _Alloc>&\n");
-			code.write("_Rope_char_ref_proxy<_CharT, _Alloc>::operator= (_CharT __c)\n");
-			code.write("{}\n");
-			TranslationUnit tu = parse(code.toString());
-			testPassed = true;
-			fail( "We should not reach this point");
-		} catch (Throwable e) {
-			if (!(e instanceof ParserException))
-				fail("Unexpected Error: " + e.getMessage());
-	
-			if (testPassed)
-				fail("The expected error did not occur.");
-		}
+	public void testBug36766C() throws Exception {
+		Writer code = new StringWriter();
+		code.write("template <class _CharT, class _Alloc>\n");
+		code.write("_Rope_char_ref_proxy<_CharT, _Alloc>&\n");
+		code.write("_Rope_char_ref_proxy<_CharT, _Alloc>::operator= (_CharT __c)\n");
+		code.write("{}\n");
+		failTest(code.toString());
 	}
-
 }
Index: failures/org/eclipse/cdt/core/parser/failedTests/ScannerFailedTest.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui.tests/failures/org/eclipse/cdt/core/parser/failedTests/ScannerFailedTest.java,v
retrieving revision 1.6
diff -u -r1.6 ScannerFailedTest.java
--- failures/org/eclipse/cdt/core/parser/failedTests/ScannerFailedTest.java	21 Apr 2003 18:04:53 -0000	1.6
+++ failures/org/eclipse/cdt/core/parser/failedTests/ScannerFailedTest.java	24 Apr 2003 20:52:29 -0000
@@ -17,9 +17,7 @@
 import junit.framework.Test;
 import junit.framework.TestSuite;
 
-import org.eclipse.cdt.core.parser.tests.ScannerTestCase;
-import org.eclipse.cdt.internal.core.parser.ScannerException;
-import org.eclipse.cdt.internal.core.parser.Token;
+import org.eclipse.cdt.core.parser.tests.BaseScannerTest;
 
 /**
  * @author aniefer
@@ -27,7 +25,7 @@
  * To change the template for this generated type comment go to
  * Window>Preferences>Java>Code Generation>Code and Comments
  */
-public class ScannerFailedTest extends ScannerTestCase {
+public class ScannerFailedTest extends BaseScannerTest  {
 
 	public ScannerFailedTest(String name){
 		super(name);
Index: parser/org/eclipse/cdt/core/parser/tests/AutomatedFramework.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui.tests/parser/org/eclipse/cdt/core/parser/tests/AutomatedFramework.java,v
retrieving revision 1.1.2.1
diff -u -r1.1.2.1 AutomatedFramework.java
--- parser/org/eclipse/cdt/core/parser/tests/AutomatedFramework.java	24 Apr 2003 18:50:52 -0000	1.1.2.1
+++ parser/org/eclipse/cdt/core/parser/tests/AutomatedFramework.java	24 Apr 2003 20:52:30 -0000
@@ -20,12 +20,12 @@
 import java.util.Properties;
 import java.util.Set;
 
-import org.eclipse.cdt.internal.core.parser.IParserCallback;
-import org.eclipse.cdt.internal.core.parser.NullParserCallback;
-
 import junit.framework.Test;
 import junit.framework.TestCase;
 import junit.framework.TestSuite;
+
+import org.eclipse.cdt.internal.core.parser.IParserCallback;
+import org.eclipse.cdt.internal.core.parser.NullParserCallback;
 
 /**
  * @author aniefer
Index: parser/org/eclipse/cdt/core/parser/tests/AutomatedTest.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui.tests/parser/org/eclipse/cdt/core/parser/tests/AutomatedTest.java,v
retrieving revision 1.4.2.2
diff -u -r1.4.2.2 AutomatedTest.java
--- parser/org/eclipse/cdt/core/parser/tests/AutomatedTest.java	24 Apr 2003 18:50:52 -0000	1.4.2.2
+++ parser/org/eclipse/cdt/core/parser/tests/AutomatedTest.java	24 Apr 2003 20:52:30 -0000
@@ -14,17 +14,15 @@
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
-
 import java.util.NoSuchElementException;
 import java.util.StringTokenizer;
 
-import org.eclipse.core.runtime.Path;
+import junit.framework.AssertionFailedError;
+import junit.framework.Test;
 
 import org.eclipse.cdt.internal.core.parser.IParser;
 import org.eclipse.cdt.internal.core.parser.Parser;
-
-import junit.framework.AssertionFailedError;
-import junit.framework.Test;
+import org.eclipse.core.runtime.Path;
 
 
 
Index: parser/org/eclipse/cdt/core/parser/tests/BaseDOMTest.java
===================================================================
RCS file: parser/org/eclipse/cdt/core/parser/tests/BaseDOMTest.java
diff -N parser/org/eclipse/cdt/core/parser/tests/BaseDOMTest.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ parser/org/eclipse/cdt/core/parser/tests/BaseDOMTest.java	24 Apr 2003 20:52:30 -0000
@@ -0,0 +1,62 @@
+/*******************************************************************************
+ * Copyright (c) 2001 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials 
+ * are made available under the terms of the Common Public License v0.5 
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v05.html
+ * 
+ * Contributors:
+ *     IBM Corp. - Rational Software - initial implementation
+ ******************************************************************************/
+package org.eclipse.cdt.core.parser.tests;
+
+import junit.framework.TestCase;
+
+import org.eclipse.cdt.internal.core.dom.DOMBuilder;
+import org.eclipse.cdt.internal.core.dom.DOMFactory;
+import org.eclipse.cdt.internal.core.dom.TranslationUnit;
+import org.eclipse.cdt.internal.core.parser.IParser;
+import org.eclipse.cdt.internal.core.parser.Parser;
+import org.eclipse.cdt.internal.core.parser.ParserException;
+
+/**
+ * @author jcamelon
+ *
+ */
+public class BaseDOMTest extends TestCase {
+
+	public BaseDOMTest( String arg )
+	{
+		super( arg );
+	}
+	
+	public TranslationUnit parse( String code ) throws Exception
+	{
+		return parse( code, false, true );
+	}
+	
+	public TranslationUnit parse(String code, boolean quickParse, boolean throwOnError ) throws Exception {
+		DOMBuilder domBuilder = DOMFactory.createDOMBuilder(false); 
+		IParser parser = new Parser(code, domBuilder, quickParse );
+		if( ! parser.parse() )
+			if( throwOnError ) throw new ParserException( "Parse failure" );
+			else domBuilder.getTranslationUnit().setParseSuccessful( false ); 
+		
+		return domBuilder.getTranslationUnit();
+	}
+
+	public void failTest(String code) {
+		boolean testPassed = false;
+		try {
+			TranslationUnit tu = parse(code);
+			testPassed = true;
+			fail( "We should not reach this point");
+		} catch (Throwable e) {
+			if (!(e instanceof ParserException))
+				fail("Unexpected Error: " + e.getMessage());
+		}
+		if (testPassed)
+			fail("The expected error did not occur.");
+	}
+
+}
Index: parser/org/eclipse/cdt/core/parser/tests/BaseScannerTest.java
===================================================================
RCS file: parser/org/eclipse/cdt/core/parser/tests/BaseScannerTest.java
diff -N parser/org/eclipse/cdt/core/parser/tests/BaseScannerTest.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ parser/org/eclipse/cdt/core/parser/tests/BaseScannerTest.java	24 Apr 2003 20:52:30 -0000
@@ -0,0 +1,198 @@
+/*******************************************************************************
+ * Copyright (c) 2001 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials 
+ * are made available under the terms of the Common Public License v0.5 
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v05.html
+ * 
+ * Contributors:
+ *     IBM Corp. - Rational Software - initial implementation
+ ******************************************************************************/
+
+package org.eclipse.cdt.core.parser.tests;
+
+import java.io.StringReader;
+
+import junit.framework.TestCase;
+
+import org.eclipse.cdt.internal.core.parser.Parser;
+import org.eclipse.cdt.internal.core.parser.Scanner;
+import org.eclipse.cdt.internal.core.parser.ScannerException;
+import org.eclipse.cdt.internal.core.parser.Token;
+
+/**
+ * @author jcamelon
+ *
+ */
+public class BaseScannerTest extends TestCase {
+
+	protected Scanner scanner;
+	
+	public BaseScannerTest( String x )
+	{
+		super(x);
+	}
+
+	public void initializeScanner(String input)
+	{
+		scanner= new Scanner(); 
+		scanner.initialize( new StringReader(input),"TEXT");
+	}
+
+	public int fullyTokenize() throws Exception
+	{
+		try
+		{
+			Token t= scanner.nextToken();
+			while (t != null)
+			{
+				if (verbose)
+					System.out.println("Token t = " + t);
+
+				if ((t.type < 1) || (t.type > Token.tLAST))
+					System.out.println("Unknown type for token " + t);
+				t= scanner.nextToken();
+			}
+		}
+		catch (Parser.EndOfFile e)
+		{
+		}
+		catch (ScannerException se)
+		{
+			throw se;
+		}
+		return scanner.getCount();
+	}
+	public void validateIdentifier(String expectedImage) throws ScannerException
+	{
+		try {
+			Token t= scanner.nextToken();
+			assertTrue(t.type == Token.tIDENTIFIER);
+			assertTrue(t.image.equals(expectedImage));
+		} catch (Parser.EndOfFile e) {
+			assertTrue(false);
+		}
+	}
+
+	public void validateInteger(String expectedImage) throws ScannerException
+	{
+		try {
+			Token t= scanner.nextToken();
+			assertTrue(t.type == Token.tINTEGER);
+			assertTrue(t.image.equals(expectedImage));
+		} catch (Parser.EndOfFile e) {
+			assertTrue(false);
+		}
+	}
+	
+	public void validateFloatingPointLiteral(String expectedImage) throws ScannerException
+	{
+		try {
+			Token t= scanner.nextToken();
+			assertTrue(t.type == Token.tFLOATINGPT);
+			assertTrue(t.image.equals(expectedImage));
+		} catch (Parser.EndOfFile e) {
+			assertTrue(false);
+		}
+	}
+	
+	public void validateChar( char expected )throws ScannerException
+	{
+		try {
+			Token t= scanner.nextToken();
+			assertTrue(t.getType() == Token.tCHAR );
+			Character c = new Character( expected ); 
+			assertEquals( t.getImage(), c.toString() ); 
+		} catch (Parser.EndOfFile e) {
+			assertTrue(false);
+		}		
+	}
+	public void validateChar( String expected ) throws ScannerException
+	{
+		try {
+			Token t= scanner.nextToken();
+			assertTrue(t.getType() == Token.tCHAR );
+			assertEquals( t.getImage(), expected ); 
+		} catch (Parser.EndOfFile e) {
+			assertTrue(false);
+		}		
+	}
+
+	public void validateString( String expectedImage ) throws ScannerException
+	{
+		validateString( expectedImage, false );
+	}
+
+	public void validateString(String expectedImage, boolean lString ) throws ScannerException
+	{
+		try {
+			Token t= scanner.nextToken();
+			if( lString )
+				assertTrue(t.getType() == Token.tLSTRING);
+			else
+				assertTrue(t.getType() == Token.tSTRING);
+			assertTrue(t.getImage().equals(expectedImage));
+		} catch (Parser.EndOfFile e) {
+			assertTrue(false);
+		}
+	}
+
+	public void validateToken(int tokenType) throws ScannerException
+	{
+		try {
+			Token t= scanner.nextToken();
+			assertTrue(t.type == tokenType);
+		} catch (Parser.EndOfFile e) {
+			assertTrue(false);
+		}
+	}
+
+	public void validateBalance(int expected)
+	{
+		assertTrue(scanner.getDepth() == expected);
+	}
+
+	public void validateBalance()
+	{
+		assertTrue(scanner.getDepth() == 0);
+	}
+
+	public void validateEOF() throws ScannerException
+	{
+		try {
+			assertNull(scanner.nextToken());
+		} catch (Parser.EndOfFile e) {
+		}
+	}
+
+	public void validateDefinition(String name, String value)
+	{
+		String definition= null;
+		definition= (String) scanner.getDefinition(name);
+		assertNotNull(definition);
+		assertTrue(definition.trim().equals(value));
+	}
+
+	public void validateDefinition(String name, int value)
+	{
+		String definition= null;
+		definition= (String) scanner.getDefinition(name);
+		assertNotNull(definition);
+		int intValue= (Integer.valueOf((String) definition)).intValue();
+		assertEquals(value, intValue);
+	}
+
+	public void validateAsUndefined(String name)
+	{
+		assertNull(scanner.getDefinition(name));
+	}
+
+	public static final String EXCEPTION_THROWN = "Exception thrown ";
+
+	public static final String EXPECTED_FAILURE = "This statement should not be reached "
+				+ "as we sent in bad preprocessor input to the scanner";
+
+	public static final boolean verbose = false;
+	
+
+}
Index: parser/org/eclipse/cdt/core/parser/tests/DOMTests.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui.tests/parser/org/eclipse/cdt/core/parser/tests/DOMTests.java,v
retrieving revision 1.25.2.1
diff -u -r1.25.2.1 DOMTests.java
--- parser/org/eclipse/cdt/core/parser/tests/DOMTests.java	24 Apr 2003 18:37:12 -0000	1.25.2.1
+++ parser/org/eclipse/cdt/core/parser/tests/DOMTests.java	24 Apr 2003 20:52:31 -0000
@@ -6,8 +6,6 @@
 import java.util.Iterator;
 import java.util.List;
 
-import junit.framework.TestCase;
-
 import org.eclipse.cdt.internal.core.dom.ASMDefinition;
 import org.eclipse.cdt.internal.core.dom.AccessSpecifier;
 import org.eclipse.cdt.internal.core.dom.ArrayQualifier;
@@ -17,8 +15,6 @@
 import org.eclipse.cdt.internal.core.dom.ConstructorChain;
 import org.eclipse.cdt.internal.core.dom.ConstructorChainElement;
 import org.eclipse.cdt.internal.core.dom.ConstructorChainElementExpression;
-import org.eclipse.cdt.internal.core.dom.DOMBuilder;
-import org.eclipse.cdt.internal.core.dom.DOMFactory;
 import org.eclipse.cdt.internal.core.dom.DeclSpecifier;
 import org.eclipse.cdt.internal.core.dom.Declarator;
 import org.eclipse.cdt.internal.core.dom.ElaboratedTypeSpecifier;
@@ -42,33 +38,16 @@
 import org.eclipse.cdt.internal.core.dom.TranslationUnit;
 import org.eclipse.cdt.internal.core.dom.UsingDeclaration;
 import org.eclipse.cdt.internal.core.dom.UsingDirective;
-import org.eclipse.cdt.internal.core.parser.IParser;
-import org.eclipse.cdt.internal.core.parser.Parser;
 import org.eclipse.cdt.internal.core.parser.ParserException;
 import org.eclipse.cdt.internal.core.parser.Token;
 
-public class DOMTests extends TestCase {
-
+public class DOMTests extends BaseDOMTest {
+	
 	public DOMTests( String arg )
 	{
 		super( arg );
 	}
 	
-	public TranslationUnit parse( String code ) throws Exception
-	{
-		return parse( code, false, true );
-	}
-	
-	public TranslationUnit parse(String code, boolean quickParse, boolean throwOnError ) throws Exception {
-		DOMBuilder domBuilder = DOMFactory.createDOMBuilder(false); 
-		IParser parser = new Parser(code, domBuilder, quickParse );
-		if( ! parser.parse() )
-			if( throwOnError ) throw new ParserException( "Parse failure" );
-			else domBuilder.getTranslationUnit().setParseSuccessful( false ); 
-		
-		return domBuilder.getTranslationUnit();
-	}
-	
 	public void testNamespaceDefinition() throws Exception
 	{
 		for( int i = 0; i < 2; ++i )
@@ -1635,8 +1614,18 @@
 		Writer code = new StringWriter();
 		code.write("A ( * const fPtr) (void *); \n");
 		code.write("A (* const fPtr2) ( A * ); \n");
-		code.write("A (*const fPtr3) ( A * ) = function\n");
 		TranslationUnit tu = parse(code.toString());
+		assertEquals( tu.getDeclarations().size(), 2 );
+		SimpleDeclaration simple = (SimpleDeclaration)tu.getDeclarations().get(0); 
+		assertEquals( simple.getDeclarators().size(),  1) ;
+		Declarator top = (Declarator)simple.getDeclarators().get(0);
+		assertEquals( top.getPointerOperators().size(), 0 );
+		assertNotNull( top.getDeclarator() ); 
+		assertEquals( top.getDeclarator().getPointerOperators().size(), 1 );
+		PointerOperator po = (PointerOperator)top.getDeclarator().getPointerOperators().get(0);
+		assertTrue( po.isConst());
+		assertFalse( po.isVolatile());
+		assertEquals( po.getType(), PointerOperator.t_pointer);
 	}
 
 	public void testBug36794() throws Exception
@@ -1659,6 +1648,11 @@
 			assertNotNull( i.next() );
 	}
 
+	public void testBug36799() throws Exception
+	{
+		TranslationUnit tu = parse( "static const int __WORD_BIT = int(CHAR_BIT*sizeof(unsigned int));");
+		assertEquals( tu.getDeclarations().size(), 1 );
+	}
 
 }
 
Index: parser/org/eclipse/cdt/core/parser/tests/FractionalAutomatedTest.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui.tests/parser/org/eclipse/cdt/core/parser/tests/FractionalAutomatedTest.java,v
retrieving revision 1.1.2.1
diff -u -r1.1.2.1 FractionalAutomatedTest.java
--- parser/org/eclipse/cdt/core/parser/tests/FractionalAutomatedTest.java	24 Apr 2003 18:50:52 -0000	1.1.2.1
+++ parser/org/eclipse/cdt/core/parser/tests/FractionalAutomatedTest.java	24 Apr 2003 20:52:31 -0000
@@ -21,10 +21,9 @@
 import junit.framework.AssertionFailedError;
 import junit.framework.Test;
 
-import org.eclipse.core.runtime.Path;
-
 import org.eclipse.cdt.internal.core.parser.IParser;
 import org.eclipse.cdt.internal.core.parser.Parser;
+import org.eclipse.core.runtime.Path;
 
 /**
  * @author aniefer
Index: parser/org/eclipse/cdt/core/parser/tests/ParserTestSuite.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui.tests/parser/org/eclipse/cdt/core/parser/tests/ParserTestSuite.java,v
retrieving revision 1.2
diff -u -r1.2 ParserTestSuite.java
--- parser/org/eclipse/cdt/core/parser/tests/ParserTestSuite.java	16 Apr 2003 13:49:36 -0000	1.2
+++ parser/org/eclipse/cdt/core/parser/tests/ParserTestSuite.java	24 Apr 2003 20:52:31 -0000
@@ -10,11 +10,11 @@
 ***********************************************************************/
 package org.eclipse.cdt.core.parser.tests;
 
-import org.eclipse.cdt.core.model.tests.CModelElementsTests;
-
 import junit.framework.Test;
 import junit.framework.TestCase;
 import junit.framework.TestSuite;
+
+import org.eclipse.cdt.core.model.tests.CModelElementsTests;
 
 /**
  * @author jcamelon
Index: parser/org/eclipse/cdt/core/parser/tests/ScannerTestCase.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui.tests/parser/org/eclipse/cdt/core/parser/tests/ScannerTestCase.java,v
retrieving revision 1.16.2.1
diff -u -r1.16.2.1 ScannerTestCase.java
--- parser/org/eclipse/cdt/core/parser/tests/ScannerTestCase.java	24 Apr 2003 18:50:52 -0000	1.16.2.1
+++ parser/org/eclipse/cdt/core/parser/tests/ScannerTestCase.java	24 Apr 2003 20:52:31 -0000
@@ -1,17 +1,11 @@
 package org.eclipse.cdt.core.parser.tests;
 
-import java.io.StringReader;
 import java.io.StringWriter;
 import java.io.Writer;
 import java.util.List;
 
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
 import org.eclipse.cdt.internal.core.parser.IMacroDescriptor;
 import org.eclipse.cdt.internal.core.parser.Parser;
-import org.eclipse.cdt.internal.core.parser.Scanner;
 import org.eclipse.cdt.internal.core.parser.ScannerException;
 import org.eclipse.cdt.internal.core.parser.Token;
 
@@ -23,7 +17,7 @@
  * To enable and disable the creation of type comments go to
  * Window>Preferences>Java>Code Generation.
  */
-public class ScannerTestCase extends TestCase
+public class ScannerTestCase extends BaseScannerTest
 {
 	public class TableRow
 	{
@@ -152,52 +146,12 @@
 
 	}
 
-	public final static String EXCEPTION_THROWN= "Exception thrown ";
-	public final static String EXPECTED_FAILURE=
-		"This statement should not be reached "
-			+ "as we sent in bad preprocessor input to the scanner";
-	public final static boolean verbose= false;
 	public final static boolean doIncludeStdio= false;
 	public final static boolean doIncludeWindowsH= false;
 	public final static boolean doIncludeWinUserH= false;
 	
 	public final static int SIZEOF_TRUTHTABLE = 10; 
 
-	public void initializeScanner(String input)
-	{
-		scanner= new Scanner(); 
-		scanner.initialize( new StringReader(input),"TEXT");
-	}
-
-	public static Test suite()
-	{
-		return new TestSuite(ScannerTestCase.class);
-	}
-
-	public int fullyTokenize() throws Exception
-	{
-		try
-		{
-			Token t= scanner.nextToken();
-			while (t != null)
-			{
-				if (verbose)
-					System.out.println("Token t = " + t);
-
-				if ((t.type < 1) || (t.type > Token.tLAST))
-					System.out.println("Unknown type for token " + t);
-				t= scanner.nextToken();
-			}
-		}
-		catch (Parser.EndOfFile e)
-		{
-		}
-		catch (ScannerException se)
-		{
-			throw se;
-		}
-		return scanner.getCount();
-	}
 
 	public void testWeirdStrings()
 	{
@@ -238,8 +192,6 @@
 		
 	}
 	
-	
-	Scanner scanner;
 
 	/**
 	 * Constructor for ScannerTestCase.
@@ -1026,130 +978,6 @@
 			}
 		}
 
-	}
-
-	public void validateIdentifier(String expectedImage) throws ScannerException
-	{
-		try {
-			Token t= scanner.nextToken();
-			assertTrue(t.type == Token.tIDENTIFIER);
-			assertTrue(t.image.equals(expectedImage));
-		} catch (Parser.EndOfFile e) {
-			assertTrue(false);
-		}
-	}
-
-	public void validateInteger(String expectedImage) throws ScannerException
-	{
-		try {
-			Token t= scanner.nextToken();
-			assertTrue(t.type == Token.tINTEGER);
-			assertTrue(t.image.equals(expectedImage));
-		} catch (Parser.EndOfFile e) {
-			assertTrue(false);
-		}
-	}
-	
-	public void validateFloatingPointLiteral(String expectedImage) throws ScannerException
-	{
-		try {
-			Token t= scanner.nextToken();
-			assertTrue(t.type == Token.tFLOATINGPT);
-			assertTrue(t.image.equals(expectedImage));
-		} catch (Parser.EndOfFile e) {
-			assertTrue(false);
-		}
-	}
-	
-	public void validateChar( char expected )throws ScannerException
-	{
-		try {
-			Token t= scanner.nextToken();
-			assertTrue(t.getType() == Token.tCHAR );
-			Character c = new Character( expected ); 
-			assertEquals( t.getImage(), c.toString() ); 
-		} catch (Parser.EndOfFile e) {
-			assertTrue(false);
-		}		
-	}
-	public void validateChar( String expected ) throws ScannerException
-	{
-		try {
-			Token t= scanner.nextToken();
-			assertTrue(t.getType() == Token.tCHAR );
-			assertEquals( t.getImage(), expected ); 
-		} catch (Parser.EndOfFile e) {
-			assertTrue(false);
-		}		
-	}
-
-	public void validateString( String expectedImage ) throws ScannerException
-	{
-		validateString( expectedImage, false );
-	}
-
-	public void validateString(String expectedImage, boolean lString ) throws ScannerException
-	{
-		try {
-			Token t= scanner.nextToken();
-			if( lString )
-				assertTrue(t.getType() == Token.tLSTRING);
-			else
-				assertTrue(t.getType() == Token.tSTRING);
-			assertTrue(t.getImage().equals(expectedImage));
-		} catch (Parser.EndOfFile e) {
-			assertTrue(false);
-		}
-	}
-
-	public void validateToken(int tokenType) throws ScannerException
-	{
-		try {
-			Token t= scanner.nextToken();
-			assertTrue(t.type == tokenType);
-		} catch (Parser.EndOfFile e) {
-			assertTrue(false);
-		}
-	}
-
-	public void validateBalance(int expected)
-	{
-		assertTrue(scanner.getDepth() == expected);
-	}
-
-	public void validateBalance()
-	{
-		assertTrue(scanner.getDepth() == 0);
-	}
-
-	public void validateEOF() throws ScannerException
-	{
-		try {
-			assertNull(scanner.nextToken());
-		} catch (Parser.EndOfFile e) {
-		}
-	}
-
-	public void validateDefinition(String name, String value)
-	{
-		String definition= null;
-		definition= (String) scanner.getDefinition(name);
-		assertNotNull(definition);
-		assertTrue(definition.trim().equals(value));
-	}
-
-	public void validateDefinition(String name, int value)
-	{
-		String definition= null;
-		definition= (String) scanner.getDefinition(name);
-		assertNotNull(definition);
-		int intValue= (Integer.valueOf((String) definition)).intValue();
-		assertEquals(value, intValue);
-	}
-
-	public void validateAsUndefined(String name)
-	{
-		assertNull(scanner.getDefinition(name));
 	}
 
 	public void validateAllDefinitions(TableRow row)
Index: parser/ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/ChangeLog,v
retrieving revision 1.36.2.2
diff -u -r1.36.2.2 ChangeLog
--- parser/ChangeLog	24 Apr 2003 18:50:47 -0000	1.36.2.2
+++ parser/ChangeLog	24 Apr 2003 20:51:30 -0000
@@ -1,4 +1,7 @@
 2003-04-24 John Camelon
+	Fixed Bug36799  STL Testing: Parser fails on Variable Definition 
+
+2003-04-24 John Camelon
 	Fixed bug36693 - Problem parsing Loki's Reference SmallObj.cpp Impl
 	Fixed bug36696 - Problem parsing Loki's Reference SmartPtr.h Impl
 	Improved our error handling robustness.
Index: parser/org/eclipse/cdt/internal/core/parser/Parser.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Parser.java,v
retrieving revision 1.36.2.1
diff -u -r1.36.2.1 Parser.java
--- parser/org/eclipse/cdt/internal/core/parser/Parser.java	24 Apr 2003 18:36:53 -0000	1.36.2.1
+++ parser/org/eclipse/cdt/internal/core/parser/Parser.java	24 Apr 2003 20:51:31 -0000
@@ -881,39 +881,42 @@
 				case Token.t_class:
 				case Token.t_struct:
 				case Token.t_union:
-					try
+					if( !parm )
 					{
-						classSpecifier(decl);
-						return;
+						try
+						{
+							classSpecifier(decl);
+							return;
+						}
+						catch( Backtrack bt )
+						{
+							elaboratedTypeSpecifier(decl);
+							return;
+						}
 					}
-					catch( Backtrack bt )
+					else
 					{
-						// this is an elaborated class specifier
-						Object elab = null; 
-						try{ elab = callback.elaboratedTypeSpecifierBegin( decl, consume() );} catch( Exception e ) {} 
-						name(); 
-						try{ 
-							callback.elaboratedTypeSpecifierName( elab ); 
-							callback.elaboratedTypeSpecifierEnd( elab );
-						} catch( Exception e ) {}
+						elaboratedTypeSpecifier(decl);
 						return;
 					}
 				case Token.t_enum:
-					try
+					if( !parm )
 					{
-						enumSpecifier(decl);
-						return;
+						try
+						{
+							enumSpecifier(decl);
+							return;
+						}
+						catch( Backtrack bt )
+						{
+							// this is an elaborated class specifier
+							elaboratedTypeSpecifier(decl);
+							return;
+						}
 					}
-					catch( Backtrack bt )
+					else
 					{
-						// this is an elaborated class specifier
-						Object elab = null; 
-						try{ elab = callback.elaboratedTypeSpecifierBegin( decl, consume() ); } catch( Exception e ) {} 
-						name(); 
-						try{ 
-							callback.elaboratedTypeSpecifierName( elab );
-							callback.elaboratedTypeSpecifierEnd( elab );
-						} catch( Exception e ) {}
+						elaboratedTypeSpecifier(decl);
 						return;
 					}
 				default:
@@ -922,6 +925,17 @@
 		}
 	}
 
+	private void elaboratedTypeSpecifier(Object decl) throws Backtrack {
+		// this is an elaborated class specifier
+		Object elab = null; 
+		try{ elab = callback.elaboratedTypeSpecifierBegin( decl, consume() );} catch( Exception e ) {} 
+		name(); 
+		try{ 
+			callback.elaboratedTypeSpecifierName( elab ); 
+			callback.elaboratedTypeSpecifierEnd( elab );
+		} catch( Exception e ) {}
+	}
+
 
 	protected void identifier() throws Backtrack {
 		Token first = consume(Token.tIDENTIFIER); // throws backtrack if its not that
@@ -2236,6 +2250,29 @@
 				consume();
 				// TO DO: this
 				break;
+			// simple-type-specifier ( assignment-expression , .. )
+			case Token.t_char:
+			case Token.t_wchar_t:
+			case Token.t_bool:
+			case Token.t_short:
+			case Token.t_int:
+			case Token.t_long:
+			case Token.t_signed:
+			case Token.t_unsigned:
+			case Token.t_float:
+			case Token.t_double:
+				consume(); 
+				consume( Token.tLPAREN );
+				while( true )
+				{
+					assignmentExpression( expression );
+					if( LT(1) == Token.tRPAREN ) break;
+					consume( Token.tCOMMA );
+				}
+				consume( Token.tRPAREN );
+				break;
+				
+			
 			case Token.t_dynamic_cast:
 			case Token.t_static_cast:
 			case Token.t_reinterpret_cast:

Back to the top