[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[cdt-patch] Applied (1_1 & MAIN) : Many Parser bugfixes
|
Title: Applied (1_1 & MAIN) : Many Parser bugfixes
CORE
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 so that we don't mistake function bodies for CElements.
Fixed bug36713 - Parser fails on definitions of pointers to functions
Fixed Dave's performance test parse failure.
Fixed bug36811 - The using directive causes parser to fail
Fixed bug36794 - ClassCastException for A template with no parameters
TESTS
Moved fixed tests from FailedTests to DOMTests.
Added LokiFailures.java to failed tests directory.
JohnC
<<cdt-core-patch.txt>> <<cdt-ui-tests-patch.txt>>
Index: dom/org/eclipse/cdt/internal/core/dom/DeclSpecifier.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/DeclSpecifier.java,v
retrieving revision 1.3
diff -u -r1.3 DeclSpecifier.java
--- dom/org/eclipse/cdt/internal/core/dom/DeclSpecifier.java 14 Apr 2003 16:00:18 -0000 1.3
+++ dom/org/eclipse/cdt/internal/core/dom/DeclSpecifier.java 24 Apr 2003 18:21:45 -0000
@@ -34,6 +34,7 @@
public static final int isLong = 0x80000;
private int declSpecifierSeq = 0;
+ private boolean isTypename = false;
public int getDeclSpecifierSeq() {
return declSpecifierSeq;
}
@@ -168,6 +169,9 @@
public void setType(Token token) {
switch (token.getType()) {
+ case Token.t_typename:
+ setTypename(true);
+ break;
case Token.t_auto :
setAuto(true);
break;
@@ -319,6 +323,8 @@
type.append("void");
break;
case t_type :
+ if (isTypename() )
+ type.append("typename ");
if (getName() != null)
type.append(getName().toString());
else {
@@ -334,6 +340,20 @@
return "";
}
return type.toString();
+ }
+
+ /**
+ * @return
+ */
+ public boolean isTypename() {
+ return isTypename;
+ }
+
+ /**
+ * @param b
+ */
+ public void setTypename(boolean b) {
+ isTypename = b;
}
}
Index: dom/org/eclipse/cdt/internal/core/dom/Declaration.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/Declaration.java,v
retrieving revision 1.3
diff -u -r1.3 Declaration.java
--- dom/org/eclipse/cdt/internal/core/dom/Declaration.java 13 Apr 2003 22:01:29 -0000 1.3
+++ dom/org/eclipse/cdt/internal/core/dom/Declaration.java 24 Apr 2003 18:21:45 -0000
@@ -2,7 +2,7 @@
/**
*/
-public class Declaration {
+public class Declaration implements IOffsetable {
public Declaration( IScope scope )
{
@@ -16,6 +16,74 @@
*/
public IScope getOwnerScope() {
return ownerScope;
+ }
+
+
+ private int startingOffset, endingOffset;
+ private int startingLine, endingLine;
+ private int totalLength;
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.internal.core.dom.IOffsetable#getStartingOffset()
+ */
+ public int getStartingOffset()
+ {
+ return startingOffset;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.internal.core.dom.IOffsetable#getTotalLength()
+ */
+ public int getTotalLength()
+ {
+ return totalLength;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.internal.core.dom.IOffsetable#setStartingOffset(int)
+ */
+ public void setStartingOffset(int i)
+ {
+ startingOffset = i;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.internal.core.dom.IOffsetable#setTotalLength(int)
+ */
+ public void setTotalLength(int i)
+ {
+ totalLength = i;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.internal.core.dom.IOffsetable#setTopLine(int)
+ */
+ public void setTopLine(int lineNumber)
+ {
+ startingLine = lineNumber;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.internal.core.dom.IOffsetable#setBottomLine(int)
+ */
+ public void setBottomLine(int lineNumber)
+ {
+ endingLine = lineNumber;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.internal.core.dom.IOffsetable#getTopLine()
+ */
+ public int getTopLine()
+ {
+ return startingLine;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.internal.core.dom.IOffsetable#getBottomLine()
+ */
+ public int getBottomLine()
+ {
+ return endingLine;
}
}
Index: dom/org/eclipse/cdt/internal/core/dom/NamespaceDefinition.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/NamespaceDefinition.java,v
retrieving revision 1.7
diff -u -r1.7 NamespaceDefinition.java
--- dom/org/eclipse/cdt/internal/core/dom/NamespaceDefinition.java 16 Apr 2003 12:30:47 -0000 1.7
+++ dom/org/eclipse/cdt/internal/core/dom/NamespaceDefinition.java 24 Apr 2003 18:21:45 -0000
@@ -22,11 +22,10 @@
* @author jcamelon
*
*/
-public class NamespaceDefinition extends Declaration implements IScope, IOffsetable {
+public class NamespaceDefinition extends Declaration implements IScope {
private List declarations = new LinkedList();
private Name name = null;
- private int startingOffset = 0, totalLength = 0;
private Token startToken = null;
public NamespaceDefinition( IScope owner )
@@ -66,34 +65,6 @@
}
/**
- * @return
- */
- public int getStartingOffset() {
- return startingOffset;
- }
-
- /**
- * @return
- */
- public int getTotalLength() {
- return totalLength;
- }
-
- /**
- * @param i
- */
- public void setStartingOffset(int i) {
- startingOffset = i;
- }
-
- /**
- * @param i
- */
- public void setTotalLength(int i) {
- totalLength = i;
- }
-
- /**
* Returns the startToken.
* @return Token
*/
@@ -109,32 +80,5 @@
this.startToken = startToken;
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.dom.IOffsetable#setTopLine(int)
- */
- public void setTopLine(int lineNumber) {
- topLine = lineNumber;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.dom.IOffsetable#setBottomLine(int)
- */
- public void setBottomLine(int lineNumber) {
- bottomLine = lineNumber;
- }
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.dom.IOffsetable#getTopLine()
- */
- public int getTopLine() {
- return topLine;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.dom.IOffsetable#getBottomLine()
- */
- public int getBottomLine() {
- return bottomLine;
- }
- private int topLine = 0, bottomLine = 0;
}
Index: dom/org/eclipse/cdt/internal/core/dom/SimpleDeclaration.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/SimpleDeclaration.java,v
retrieving revision 1.10
diff -u -r1.10 SimpleDeclaration.java
--- dom/org/eclipse/cdt/internal/core/dom/SimpleDeclaration.java 16 Apr 2003 12:30:47 -0000 1.10
+++ dom/org/eclipse/cdt/internal/core/dom/SimpleDeclaration.java 24 Apr 2003 18:21:45 -0000
@@ -5,9 +5,8 @@
import java.util.List;
-public class SimpleDeclaration extends Declaration implements DeclSpecifier.IContainer, IOffsetable, TypeSpecifier.IOwner {
+public class SimpleDeclaration extends Declaration implements DeclSpecifier.IContainer, TypeSpecifier.IOwner {
- private int startingOffset = 0, totalLength = 0;
private AccessSpecifier accessSpecifier = null;
private DeclSpecifier declSpec = null;
private boolean isFunctionDefinition = false;
@@ -85,62 +84,4 @@
public void setFunctionDefinition(boolean b) {
isFunctionDefinition = b;
}
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.dom.IOffsettable#getStartingOffset()
- */
- public int getStartingOffset() {
- return startingOffset;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.dom.IOffsettable#getTotalLength()
- */
- public int getTotalLength() {
- return totalLength;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.dom.IOffsettable#setStartingOffset(int)
- */
- public void setStartingOffset(int i) {
- startingOffset = i;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.dom.IOffsettable#setTotalLength(int)
- */
- public void setTotalLength(int i) {
- totalLength = i;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.dom.IOffsetable#setTopLine(int)
- */
- public void setTopLine(int lineNumber) {
- topLine = lineNumber;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.dom.IOffsetable#setBottomLine(int)
- */
- public void setBottomLine(int lineNumber) {
- bottomLine = lineNumber;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.dom.IOffsetable#getTopLine()
- */
- public int getTopLine() {
- return topLine;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.dom.IOffsetable#getBottomLine()
- */
- public int getBottomLine() {
- return bottomLine;
- }
- private int topLine = 0, bottomLine = 0;
-
}
Index: dom/org/eclipse/cdt/internal/core/dom/TemplateDeclaration.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/TemplateDeclaration.java,v
retrieving revision 1.6
diff -u -r1.6 TemplateDeclaration.java
--- dom/org/eclipse/cdt/internal/core/dom/TemplateDeclaration.java 16 Apr 2003 12:30:47 -0000 1.6
+++ dom/org/eclipse/cdt/internal/core/dom/TemplateDeclaration.java 24 Apr 2003 18:21:46 -0000
@@ -22,7 +22,7 @@
* @author jcamelon
*
*/
-public class TemplateDeclaration extends Declaration implements IScope, IAccessable, ITemplateParameterListOwner, IOffsetable {
+public class TemplateDeclaration extends Declaration implements IScope, IAccessable, ITemplateParameterListOwner {
private final boolean exported;
private AccessSpecifier visibility = null;
@@ -91,6 +91,7 @@
*/
public void setFirstToken(Token token) {
firstToken = token;
+ setStartingOffset( getFirstToken().getOffset() );
}
/**
@@ -98,34 +99,7 @@
*/
public void setLastToken(Token token) {
lastToken = token;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.dom.IOffsetable#getStartingOffset()
- */
- public int getStartingOffset() {
- return getFirstToken().getOffset();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.dom.IOffsetable#getTotalLength()
- */
- public int getTotalLength() {
- return getLastToken().getOffset() + getLastToken().getLength() - getStartingOffset();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.dom.IOffsetable#setStartingOffset(int)
- */
- public void setStartingOffset(int i) {
- throw new Error( "Offset should not be set");
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.dom.IOffsetable#setTotalLength(int)
- */
- public void setTotalLength(int i) {
- throw new Error( "Offset should not be set");
+ setTotalLength( getLastToken().getOffset() + getLastToken().getLength() - getStartingOffset() );
}
/**
@@ -144,34 +118,6 @@
else this.visibility.setAccess(visibility);
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.dom.IOffsetable#setTopLine(int)
- */
- public void setTopLine(int lineNumber) {
- topLine = lineNumber;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.dom.IOffsetable#setBottomLine(int)
- */
- public void setBottomLine(int lineNumber) {
- bottomLine = lineNumber;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.dom.IOffsetable#getTopLine()
- */
- public int getTopLine() {
- return topLine;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.dom.IOffsetable#getBottomLine()
- */
- public int getBottomLine() {
- return bottomLine;
- }
- private int topLine = 0, bottomLine = 0;
}
Index: parser/ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/ChangeLog,v
retrieving revision 1.36
diff -u -r1.36 ChangeLog
--- parser/ChangeLog 22 Apr 2003 15:22:31 -0000 1.36
+++ parser/ChangeLog 24 Apr 2003 18:21:46 -0000
@@ -1,3 +1,12 @@
+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.
+ Fixed bug36713 - Parser fails on definitions of pointers to functions
+ Fixed Dave's performance test parse failure.
+ Fixed bug36811 - The using directive causes parser to fail
+ Fixed bug36794 - ClassCastException for A template with no parameters
+
2003-04-21 John Camelon
Revisited bug36247 Parser confused by symbols #defined elsewhere
Fixed Bug36708 Problem parsing Loki's Reference TypeTraits.h
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
diff -u -r1.36 Parser.java
--- parser/org/eclipse/cdt/internal/core/parser/Parser.java 22 Apr 2003 15:22:31 -0000 1.36
+++ parser/org/eclipse/cdt/internal/core/parser/Parser.java 24 Apr 2003 18:21:47 -0000
@@ -131,14 +131,26 @@
try{ callback.translationUnitEnd(translationUnit);} catch( Exception e ) {}
}
- protected void consumeToNextSemicolon() throws EndOfFile {
+ protected void consumeToNextSemicolon() throws Backtrack {
failParse();
consume();
// TODO - we should really check for matching braces too
- while (LT(1) != Token.tSEMI) {
+ int depth = 0;
+ while (LT(1) != Token.tSEMI || depth != 0 ) {
+ switch( LT(1))
+ {
+ case Token.tLBRACE:
+ ++depth;
+ break;
+ case Token.tRBRACE:
+ --depth;
+ break;
+ }
+
consume();
}
- consume();
+ // eat the SEMI as well
+ consume(Token.tSEMI);
}
/**
@@ -156,12 +168,12 @@
*/
protected void usingClause( Object container ) throws Backtrack
{
- consume( Token.t_using );
+ Token firstToken = consume( Token.t_using );
if( LT(1) == Token.t_namespace )
{
Object directive = null;
- try{ directive = callback.usingDirectiveBegin( container );} catch( Exception e ) {}
+ try{ directive = callback.usingDirectiveBegin( container);} catch( Exception e ) {}
// using-directive
consume( Token.t_namespace );
@@ -222,13 +234,8 @@
{
try{ callback.usingDeclarationAbort( usingDeclaration );} catch( Exception e ) {}
throw backtrack;
- }
-
-
+ }
}
-
-
-
}
/**
@@ -482,7 +489,16 @@
return;
}
default:
- simpleDeclaration( container );
+ Token mark = mark();
+ try
+ {
+ simpleDeclaration( container, true );
+ }
+ catch( Backtrack bt)
+ {
+ backup( mark );
+ simpleDeclaration( container, false );
+ }
}
}
@@ -556,10 +572,10 @@
* To do:
* - work in ctorInitializer and functionTryBlock
*/
- protected void simpleDeclaration( Object container ) throws Backtrack {
+ protected void simpleDeclaration( Object container, boolean tryConstructor ) throws Backtrack {
Object simpleDecl = null;
try{ simpleDecl = callback.simpleDeclarationBegin( container, LA(1));} catch( Exception e ) {}
- declSpecifierSeq(simpleDecl, false);
+ declSpecifierSeq(simpleDecl, false, tryConstructor);
Object declarator = null;
if (LT(1) != Token.tSEMI)
@@ -670,7 +686,7 @@
Token current = LA(1);
Object parameterDecl = null;
try{ parameterDecl = callback.parameterDeclarationBegin( containerObject );} catch( Exception e ) {}
- declSpecifierSeq( parameterDecl, true );
+ declSpecifierSeq( parameterDecl, true, false );
if (LT(1) != Token.tSEMI)
try {
@@ -687,6 +703,107 @@
}
+ private class Flags
+ {
+ private boolean encounteredTypename = false;
+ private boolean encounteredRawType = false;
+ private final boolean parm;
+ private final boolean constructor;
+
+ public Flags( boolean parm, boolean c)
+ {
+ this.parm = parm;
+ constructor = c;
+ }
+
+
+ /**
+ * @return
+ */
+ public boolean haveEncounteredRawType() {
+ return encounteredRawType;
+ }
+
+ /**
+ * @return
+ */
+ public boolean haveEncounteredTypename() {
+ return encounteredTypename;
+ }
+
+
+
+ /**
+ * @param b
+ */
+ public void setEncounteredRawType(boolean b) {
+ encounteredRawType = b;
+ }
+
+ /**
+ * @param b
+ */
+ public void setEncounteredTypename(boolean b) {
+ encounteredTypename = b;
+ }
+
+ /**
+ * @return
+ */
+ public boolean isForParameterDeclaration() {
+ return parm;
+ }
+
+ /**
+ * @return
+ */
+ public boolean isForConstructor() {
+ return constructor;
+ }
+
+ }
+
+ private boolean lookAheadForConstructor( Flags flags ) throws EndOfFile
+ {
+ return (
+ !flags.isForParameterDeclaration()
+ ) &&
+ (
+ (
+ (
+ LT(2) == Token.tCOLONCOLON &&
+ (
+ LA(3).getImage().equals( LA(1).getImage() ) ||
+ LT(3) == Token.tCOMPL
+ )
+ ) ||
+ (
+ LT(2) == Token.tLPAREN &&
+ flags.isForConstructor()
+ )
+ )
+ )
+ ;
+ }
+
+ private boolean lookAheadForDeclarator( Flags flags ) throws EndOfFile
+ {
+ return
+ flags.haveEncounteredTypename() &&
+ (
+ (
+ LT(2) != Token.tIDENTIFIER ||
+ (
+ LT(3) != Token.tLPAREN &&
+ LT(3) != Token.tASSIGN
+ )
+ ) &&
+ !LA(2).isPointer()
+ )
+ ;
+ }
+
+
/**
* declSpecifier
* : "auto" | "register" | "static" | "extern" | "mutable"
@@ -704,26 +821,23 @@
* - folded elaboratedTypeSpecifier into classSpecifier and enumSpecifier
* - find template names in name
*/
- protected void declSpecifierSeq( Object decl, boolean parm ) throws Backtrack {
- boolean encounteredTypename = false;
- boolean encounteredRawType = false;
- boolean modifierEncountered = false;
+ protected void declSpecifierSeq( Object decl, boolean parm, boolean tryConstructor ) throws Backtrack {
+ Flags flags = new Flags( parm, tryConstructor );
declSpecifiers:
for (;;) {
switch (LT(1)) {
+ case Token.t_inline:
case Token.t_auto:
case Token.t_register:
case Token.t_static:
case Token.t_extern:
case Token.t_mutable:
- case Token.t_inline:
case Token.t_virtual:
case Token.t_explicit:
case Token.t_typedef:
case Token.t_friend:
case Token.t_const:
case Token.t_volatile:
- modifierEncountered = true;
try{ callback.simpleDeclSpecifier(decl, consume());} catch( Exception e ) {}
break;
case Token.t_signed:
@@ -737,7 +851,7 @@
case Token.t_float:
case Token.t_double:
case Token.t_void:
- encounteredRawType = true;
+ flags.setEncounteredRawType(true);
try{ callback.simpleDeclSpecifier(decl, consume());} catch( Exception e ) {}
break;
case Token.t_typename:
@@ -751,19 +865,19 @@
case Token.tIDENTIFIER:
// TODO - Kludgy way to handle constructors/destructors
// handle nested later:
- if ((modifierEncountered && ! encounteredRawType && LT(2) != Token.tLPAREN)|| (parm && !encounteredRawType) || (!encounteredRawType && LT(2) != Token.tCOLONCOLON && LT(2) != Token.tLPAREN))
- {
- if( ! encounteredTypename || ( LT(2) == Token.tIDENTIFIER &&
- ( LT(3) == Token.tLPAREN || LT(3) == Token.tASSIGN ) || LT(2) == Token.tSTAR || LT(2) == Token.tAMPER ) )
- {
- try{ callback.simpleDeclSpecifier(decl,LA(1));} catch( Exception e ) {}
- name();
- try{ callback.simpleDeclSpecifierName( decl );} catch( Exception e ) {}
- encounteredTypename = true;
- break;
- }
- }
- return;
+ if ( flags.haveEncounteredRawType() )
+ return;
+ if ( lookAheadForConstructor( flags ) )
+ return;
+ if ( lookAheadForDeclarator( flags ) )
+ return;
+ try{ callback.simpleDeclSpecifier(decl,LA(1));} catch( Exception e ) {}
+ name();
+ try{ callback.simpleDeclSpecifierName( decl );} catch( Exception e ) {}
+ flags.setEncounteredTypename(true);
+
+ break;
+
case Token.t_class:
case Token.t_struct:
case Token.t_union:
@@ -1991,8 +2105,16 @@
case Token.t_short:
case Token.t_unsigned:
case Token.t_long:
+ case Token.t_const:
end = consume();
break;
+ case Token.tAMPER:
+ case Token.tSTAR:
+ case Token.tIDENTIFIER:
+ if( end == null )
+ throw backtrack;
+ end = consume();
+ break;
case Token.t_int:
case Token.t_char:
case Token.t_bool:
Index: parser/org/eclipse/cdt/internal/core/parser/Token.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Token.java,v
retrieving revision 1.11
diff -u -r1.11 Token.java
--- parser/org/eclipse/cdt/internal/core/parser/Token.java 21 Apr 2003 18:04:51 -0000 1.11
+++ parser/org/eclipse/cdt/internal/core/parser/Token.java 24 Apr 2003 18:21:47 -0000
@@ -76,6 +76,11 @@
return false;
}
+ public boolean isPointer()
+ {
+ return (getType() == tAMPER || getType() == tSTAR);
+ }
+
public boolean isOperator()
{
switch( getType() )
Index: ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui.tests/ChangeLog,v
retrieving revision 1.37.2.1
diff -u -r1.37.2.1 ChangeLog
--- ChangeLog 24 Apr 2003 17:36:57 -0000 1.37.2.1
+++ ChangeLog 24 Apr 2003 18:28:33 -0000
@@ -1,4 +1,8 @@
2003-04-24 John Camelon
+ Moved fixed tests from FailedTests to DOMTests.
+ Added LokiFailures.java to failed tests directory.
+
+2003-04-24 John Camelon
Fixed Java 1.3 compliance issue w/AutomatedTest.java
Fixed False failure in HelloWorld.java.
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
diff -u -r1.3 DOMFailedTest.java
--- failures/org/eclipse/cdt/core/parser/failedTests/DOMFailedTest.java 22 Apr 2003 15:22:26 -0000 1.3
+++ failures/org/eclipse/cdt/core/parser/failedTests/DOMFailedTest.java 24 Apr 2003 18:28:33 -0000
@@ -33,8 +33,6 @@
TestSuite suite = new TestSuite();
suite.addTest(new DOMFailedTest("testBug36691"));
- suite.addTest(new DOMFailedTest("testBug36693"));
- suite.addTest(new DOMFailedTest("testBug36696"));
suite.addTest(new DOMFailedTest("testBug36699"));
suite.addTest(new DOMFailedTest("testBug36704"));
suite.addTest(new DOMFailedTest("testBug36707"));
@@ -66,42 +64,6 @@
}
}
- public void testBug36693() {
- boolean testPassed = false;
- try {
- TranslationUnit tu =
- parse("FixedAllocator::Chunk* FixedAllocator::VicinityFind(void* p){}");
- 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 testBug36696() {
- boolean testPassed = false;
- try {
- Writer code = new StringWriter();
- code.write(
- "template <typename P1> RefCounted(const RefCounted<P1>& rhs)\n");
- code.write(
- ": pCount_(reinterpret_cast<const RefCounted&>(rhs).pCount_) {}\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 {
@@ -173,23 +135,6 @@
}
}
- public void testBug36713(){
- boolean testPassed = false;
- try{
- 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());
- 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(){
boolean testPassed = false;
try{
Index: failures/org/eclipse/cdt/core/parser/failedTests/LokiFailures.java
===================================================================
RCS file: failures/org/eclipse/cdt/core/parser/failedTests/LokiFailures.java
diff -N failures/org/eclipse/cdt/core/parser/failedTests/LokiFailures.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ failures/org/eclipse/cdt/core/parser/failedTests/LokiFailures.java 24 Apr 2003 18:28:34 -0000
@@ -0,0 +1,78 @@
+/**********************************************************************
+ * Copyright (c) 2002,2003 Rational Software 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 Rational Software - Initial API and implementation
+***********************************************************************/
+package org.eclipse.cdt.core.parser.failedTests;
+
+import java.io.IOException;
+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;
+
+/**
+ * @author jcamelon
+ */
+public class LokiFailures extends DOMTests {
+
+ 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_;" );
+ }
+
+ public void testBugFunctor758() {
+ failTest( "template <typename Fun> Functor(Fun fun) : spImpl_(new FunctorHandler<Functor, Fun>(fun)){}" );
+ }
+
+ public void testBugTypeManip151()
+ {
+ Writer code = new StringWriter();
+ try
+ {
+ code.write( "template <class T, class U> struct SuperSubclass {\n" );
+ code.write( "enum { value = (::Loki::Conversion<const volatile U*, const volatile T*>::exists && \n" );
+ code.write( "!::Loki::Conversion<const volatile T*, const volatile void*>::sameType) }; };" );
+ } 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: 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
diff -u -r1.25 DOMTests.java
--- parser/org/eclipse/cdt/core/parser/tests/DOMTests.java 22 Apr 2003 15:22:26 -0000 1.25
+++ parser/org/eclipse/cdt/core/parser/tests/DOMTests.java 24 Apr 2003 18:28:34 -0000
@@ -3,6 +3,7 @@
import java.io.IOException;
import java.io.StringWriter;
import java.io.Writer;
+import java.util.Iterator;
import java.util.List;
import junit.framework.TestCase;
@@ -1615,5 +1616,49 @@
public void testBug36717() throws Exception {
TranslationUnit tu = parse("enum { eA = A::b };");
}
+
+ public void testBug36693() throws Exception {
+ TranslationUnit tu =
+ parse("FixedAllocator::Chunk* FixedAllocator::VicinityFind(void* p){}");
+ }
+
+ public void testBug36696() throws Exception {
+ Writer code = new StringWriter();
+ code.write(
+ "template <typename P1> RefCounted(const RefCounted<P1>& rhs)\n");
+ code.write(
+ ": pCount_(reinterpret_cast<const RefCounted&>(rhs).pCount_) {}\n");
+ TranslationUnit tu = parse(code.toString());
+ }
+
+ public void testBug36713() throws Exception {
+ 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());
+ }
+
+ public void testBug36794() throws Exception
+ {
+ TranslationUnit tu = parse( "template<> class allocator<void> {};");
+ Iterator i = tu.iterateOffsetableElements();
+ while( i.hasNext() )
+ assertNotNull( i.next() );
+ }
+
+ public void testBug36811() throws Exception
+ {
+ Writer code = new StringWriter();
+ code.write( "using namespace std;\n" );
+ code.write( "class Test {};" );
+ TranslationUnit tu = parse( code.toString() );
+ assertEquals( tu.getDeclarations().size(), 2 );
+ Iterator i = tu.iterateOffsetableElements();
+ while( i.hasNext() )
+ assertNotNull( i.next() );
+ }
+
+
}