[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[cdt-patch] Applied [ HEAD & 1_1 ] Parser bugfixes
|
Title: Applied [ HEAD & 1_1 ] Parser bugfixes
CORE
Fixed bug36852 - outline window doesn't show all functions
Fixed bug36764 - Bit fields cause parse errors
Fixed bug36702 - Parser error when having function pointers as parameters
TESTS
Added DOMTests::testBug36852().
Added DOMTests::testBug36764().
Moved DOMFailedTests::testBug36702() to DOMTests().
JohnC
<<cdt-core-patch.txt>> <<cdt-ui-tests-patch.txt>>
Index: dom/org/eclipse/cdt/internal/core/dom/BitField.java
===================================================================
RCS file: dom/org/eclipse/cdt/internal/core/dom/BitField.java
diff -N dom/org/eclipse/cdt/internal/core/dom/BitField.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ dom/org/eclipse/cdt/internal/core/dom/BitField.java 25 Apr 2003 16:04:25 -0000
@@ -0,0 +1,47 @@
+/*******************************************************************************
+ * 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.internal.core.dom;
+
+/**
+ * @author jcamelon
+ *
+ */
+public class BitField implements IExpressionOwner {
+
+
+ public BitField( Declarator owner )
+ {
+ ownerDeclarator= owner;
+ }
+ private final Declarator ownerDeclarator;
+ private Expression expression = null;
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.internal.core.dom.IExpressionOwner#getExpression()
+ */
+ public Expression getExpression() {
+ return expression;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.internal.core.dom.IExpressionOwner#setExpression(org.eclipse.cdt.internal.core.dom.Expression)
+ */
+ public void setExpression(Expression exp) {
+ expression = exp;
+ }
+
+ /**
+ * @return
+ */
+ public Declarator getOwnerDeclarator() {
+ return ownerDeclarator;
+ }
+
+}
Index: dom/org/eclipse/cdt/internal/core/dom/DOMBuilder.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/DOMBuilder.java,v
retrieving revision 1.27
diff -u -r1.27 DOMBuilder.java
--- dom/org/eclipse/cdt/internal/core/dom/DOMBuilder.java 22 Apr 2003 15:22:31 -0000 1.27
+++ dom/org/eclipse/cdt/internal/core/dom/DOMBuilder.java 25 Apr 2003 16:04:25 -0000
@@ -918,5 +918,20 @@
public void expressionName(Object expression) {
Expression e = (Expression)expression;
e.add( currName ); }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.internal.core.parser.IParserCallback#startBitfield(java.lang.Object)
+ */
+ public Object startBitfield(Object declarator) {
+ return new BitField((Declarator)declarator);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.internal.core.parser.IParserCallback#endBitfield(java.lang.Object)
+ */
+ public void endBitfield(Object bitfield) {
+ BitField b = (BitField)bitfield;
+ b.getOwnerDeclarator().setBitField( b );
+ }
}
Index: dom/org/eclipse/cdt/internal/core/dom/Declarator.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/Declarator.java,v
retrieving revision 1.11
diff -u -r1.11 Declarator.java
--- dom/org/eclipse/cdt/internal/core/dom/Declarator.java 14 Apr 2003 14:14:50 -0000 1.11
+++ dom/org/eclipse/cdt/internal/core/dom/Declarator.java 25 Apr 2003 16:04:25 -0000
@@ -207,5 +207,21 @@
public IDeclaratorOwner getOwnerDeclarator() {
return ownerDeclarator;
}
+
+ private BitField bitField = null;
+
+ /**
+ * @return
+ */
+ public BitField getBitField() {
+ return bitField;
+ }
+
+ /**
+ * @param field
+ */
+ public void setBitField(BitField field) {
+ bitField = field;
+ }
}
Index: parser/ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/ChangeLog,v
retrieving revision 1.36.2.3
diff -u -r1.36.2.3 ChangeLog
--- parser/ChangeLog 24 Apr 2003 21:00:48 -0000 1.36.2.3
+++ parser/ChangeLog 25 Apr 2003 16:04:25 -0000
@@ -1,3 +1,8 @@
+2003-04-25 John Camelon
+ Fixed bug36852 - outline window doesn't show all functions
+ Fixed bug36764 - Bit fields cause parse errors
+ Fixed bug36702 - Parser error when having function pointers as parameters
+
2003-04-24 John Camelon
Fixed Bug36799 STL Testing: Parser fails on Variable Definition
Index: parser/org/eclipse/cdt/internal/core/parser/ExpressionEvaluator.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ExpressionEvaluator.java,v
retrieving revision 1.22
diff -u -r1.22 ExpressionEvaluator.java
--- parser/org/eclipse/cdt/internal/core/parser/ExpressionEvaluator.java 22 Apr 2003 15:22:31 -0000 1.22
+++ parser/org/eclipse/cdt/internal/core/parser/ExpressionEvaluator.java 25 Apr 2003 16:04:26 -0000
@@ -716,5 +716,19 @@
currName.setEnd(lastToken);
}
- Name currName = null;
+ Name currName = null;
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.internal.core.parser.IParserCallback#startBitfield(java.lang.Object)
+ */
+ public Object startBitfield(Object declarator) {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.internal.core.parser.IParserCallback#endBitfield(java.lang.Object)
+ */
+ public void endBitfield(Object bitfield) {
+ }
}
Index: parser/org/eclipse/cdt/internal/core/parser/IParserCallback.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/IParserCallback.java,v
retrieving revision 1.21
diff -u -r1.21 IParserCallback.java
--- parser/org/eclipse/cdt/internal/core/parser/IParserCallback.java 22 Apr 2003 15:22:31 -0000 1.21
+++ parser/org/eclipse/cdt/internal/core/parser/IParserCallback.java 25 Apr 2003 16:04:26 -0000
@@ -138,5 +138,8 @@
public void templateTypeParameterAbort( Object typeParm );
public void templateTypeParameterInitialTypeId( Object typeParm );
public void templateTypeParameterEnd( Object typeParm );
+
+ public Object startBitfield(Object declarator);
+ public void endBitfield(Object bitfield);
}
Index: parser/org/eclipse/cdt/internal/core/parser/NullParserCallback.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/NullParserCallback.java,v
retrieving revision 1.21
diff -u -r1.21 NullParserCallback.java
--- parser/org/eclipse/cdt/internal/core/parser/NullParserCallback.java 22 Apr 2003 15:22:31 -0000 1.21
+++ parser/org/eclipse/cdt/internal/core/parser/NullParserCallback.java 25 Apr 2003 16:04:26 -0000
@@ -622,4 +622,17 @@
public void expressionName(Object expression) {
}
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.internal.core.parser.IParserCallback#startBitfield(java.lang.Object)
+ */
+ public Object startBitfield(Object declarator) {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.internal.core.parser.IParserCallback#endBitfield(java.lang.Object)
+ */
+ public void endBitfield(Object bitfield) {
+ }
+
}
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.2
diff -u -r1.36.2.2 Parser.java
--- parser/org/eclipse/cdt/internal/core/parser/Parser.java 24 Apr 2003 21:00:48 -0000 1.36.2.2
+++ parser/org/eclipse/cdt/internal/core/parser/Parser.java 25 Apr 2003 16:04:27 -0000
@@ -891,13 +891,15 @@
catch( Backtrack bt )
{
elaboratedTypeSpecifier(decl);
- return;
+ flags.setEncounteredTypename(true);
+ break;
}
}
else
{
elaboratedTypeSpecifier(decl);
- return;
+ flags.setEncounteredTypename(true);
+ break;
}
case Token.t_enum:
if( !parm )
@@ -905,19 +907,21 @@
try
{
enumSpecifier(decl);
- return;
+ break;
}
catch( Backtrack bt )
{
// this is an elaborated class specifier
elaboratedTypeSpecifier(decl);
- return;
+ flags.setEncounteredTypename(true);
+ break;
}
}
else
{
elaboratedTypeSpecifier(decl);
- return;
+ flags.setEncounteredTypename(true);
+ break;
}
default:
break declSpecifiers;
@@ -1428,6 +1432,16 @@
try{ callback.arrayDeclaratorEnd( array );} catch( Exception e ) {}
}
continue;
+ case Token.tCOLON:
+ consume( Token.tCOLON );
+ Object bitfield = null;
+ try{ bitfield = callback.startBitfield( declarator );} catch( Exception e ) {}
+ Object expression = null;
+ try{ expression = callback.expressionBegin( bitfield );} catch( Exception e ) {}
+ constantExpression(expression);
+ try{ callback.expressionEnd( expression ); } catch( Exception e ) {}
+ try{ callback.endBitfield( bitfield );} catch( Exception e ) {}
+
default:
break;
}
@@ -2337,7 +2351,9 @@
switch (type) {
// TO DO: we need more literals...
case Token.tINTEGER:
+ case Token.tFLOATINGPT:
case Token.tSTRING:
+ case Token.tLSTRING:
case Token.t_false:
case Token.t_true:
try{ callback.expressionTerminal(expression, consume());} catch( Exception e ) {}
Index: ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui.tests/ChangeLog,v
retrieving revision 1.37.2.4
diff -u -r1.37.2.4 ChangeLog
--- ChangeLog 24 Apr 2003 21:00:50 -0000 1.37.2.4
+++ ChangeLog 25 Apr 2003 16:04:41 -0000
@@ -1,3 +1,8 @@
+2003-04-25 John Camelon
+ Added DOMTests::testBug36852().
+ Added DOMTests::testBug36764().
+ Moved DOMFailedTests::testBug36702() to DOMTests().
+
2003-04-24 John Camelon
Moved fixed tests from FailedTests to DOMTests.
Added DOMTests::testBug36799().
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.2
diff -u -r1.3.2.2 DOMFailedTest.java
--- failures/org/eclipse/cdt/core/parser/failedTests/DOMFailedTest.java 24 Apr 2003 21:00:50 -0000 1.3.2.2
+++ failures/org/eclipse/cdt/core/parser/failedTests/DOMFailedTest.java 25 Apr 2003 16:04:41 -0000
@@ -64,26 +64,4 @@
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() );
-
- }
-
}
Index: failures/org/eclipse/cdt/core/parser/failedTests/MiscFailedTests.java
===================================================================
RCS file: failures/org/eclipse/cdt/core/parser/failedTests/MiscFailedTests.java
diff -N failures/org/eclipse/cdt/core/parser/failedTests/MiscFailedTests.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ failures/org/eclipse/cdt/core/parser/failedTests/MiscFailedTests.java 25 Apr 2003 16:04:42 -0000
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * 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.failedTests;
+
+import org.eclipse.cdt.core.parser.tests.BaseDOMTest;
+
+/**
+ * @author jcamelon
+ *
+ */
+public class MiscFailedTests extends BaseDOMTest {
+
+ public MiscFailedTests( String arg )
+ {
+ super( arg );
+ }
+
+
+}
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.2
diff -u -r1.25.2.2 DOMTests.java
--- parser/org/eclipse/cdt/core/parser/tests/DOMTests.java 24 Apr 2003 21:00:50 -0000 1.25.2.2
+++ parser/org/eclipse/cdt/core/parser/tests/DOMTests.java 25 Apr 2003 16:04:43 -0000
@@ -1654,5 +1654,44 @@
assertEquals( tu.getDeclarations().size(), 1 );
}
+ public void testBug36852() throws Exception
+ {
+ Writer code = new StringWriter();
+ code.write( "int CBT::senseToAllRect( double id_standardQuot = DOSE, double id_minToleranz =15.0,\n" );
+ code.write( "double id_maxToleranz = 15.0, unsigned int iui_minY = 0, \n" );
+ code.write( "unsigned int iui_maxY = HEIGHT );\n" );
+ TranslationUnit tu = parse( code.toString() );
+ }
+
+ public void testBug36764() throws Exception
+ {
+ TranslationUnit tu = parse( "struct{ int x : 4; int y : 8; };" );
+ assertEquals( tu.getDeclarations().size(), 1 );
+ assertEquals( ((ClassSpecifier)((SimpleDeclaration)tu.getDeclarations().get(0)).getTypeSpecifier()).getDeclarations().size(), 2 );
+ }
+
+ 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" );
+
+ TranslationUnit tu = parse( code.toString() );
+
+ }
+
+
}