mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
Fixed compiler warnings.
This commit is contained in:
parent
813cfa454b
commit
c667cb6ab9
7 changed files with 1990 additions and 2241 deletions
|
@ -73,31 +73,20 @@ public class AST2SelectionParseBaseTest extends FileBasePluginTest {
|
|||
return tu.getNodeSelector(null).findNode(offset, length);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string
|
||||
* @param c
|
||||
* @return
|
||||
* @throws ParserException
|
||||
*/
|
||||
protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems ) throws ParserException {
|
||||
protected IASTTranslationUnit parse(String code, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems) throws ParserException {
|
||||
FileContent codeReader = FileContent.create("<test-code>", code.toCharArray());
|
||||
ScannerInfo scannerInfo = new ScannerInfo();
|
||||
IScanner scanner= AST2BaseTest.createScanner(codeReader, lang, ParserMode.COMPLETE_PARSE, scannerInfo);
|
||||
|
||||
ISourceCodeParser parser2 = null;
|
||||
if( lang == ParserLanguage.CPP )
|
||||
{
|
||||
if (lang == ParserLanguage.CPP) {
|
||||
ICPPParserExtensionConfiguration config = null;
|
||||
if (useGNUExtensions)
|
||||
config = new GPPParserExtensionConfiguration();
|
||||
else
|
||||
config = new ANSICPPParserExtensionConfiguration();
|
||||
parser2 = new GNUCPPSourceParser(scanner, ParserMode.COMPLETE_PARSE,
|
||||
NULL_LOG,
|
||||
config );
|
||||
}
|
||||
else
|
||||
{
|
||||
parser2 = new GNUCPPSourceParser(scanner, ParserMode.COMPLETE_PARSE, NULL_LOG, config);
|
||||
} else {
|
||||
ICParserExtensionConfiguration config = null;
|
||||
|
||||
if (useGNUExtensions)
|
||||
|
@ -105,56 +94,45 @@ public class AST2SelectionParseBaseTest extends FileBasePluginTest {
|
|||
else
|
||||
config = new ANSICParserExtensionConfiguration();
|
||||
|
||||
parser2 = new GNUCSourceParser( scanner, ParserMode.COMPLETE_PARSE,
|
||||
NULL_LOG, config );
|
||||
parser2 = new GNUCSourceParser(scanner, ParserMode.COMPLETE_PARSE, NULL_LOG, config);
|
||||
}
|
||||
|
||||
IASTTranslationUnit tu = parser2.parse();
|
||||
|
||||
if( parser2.encounteredError() && expectNoProblems )
|
||||
throw new ParserException( "FAILURE"); //$NON-NLS-1$
|
||||
if (parser2.encounteredError() && expectNoProblems)
|
||||
throw new ParserException("FAILURE"); //$NON-NLS-1$
|
||||
|
||||
if( lang == ParserLanguage.C && expectNoProblems )
|
||||
{
|
||||
assertEquals( CVisitor.getProblems(tu).length, 0 );
|
||||
assertEquals( tu.getPreprocessorProblems().length, 0 );
|
||||
if (lang == ParserLanguage.C && expectNoProblems) {
|
||||
assertEquals(CVisitor.getProblems(tu).length, 0);
|
||||
assertEquals(tu.getPreprocessorProblems().length, 0);
|
||||
} else if (lang == ParserLanguage.CPP && expectNoProblems) {
|
||||
assertEquals(CPPVisitor.getProblems(tu).length, 0);
|
||||
assertEquals(tu.getPreprocessorProblems().length, 0);
|
||||
}
|
||||
else if ( lang == ParserLanguage.CPP && expectNoProblems )
|
||||
{
|
||||
assertEquals( CPPVisitor.getProblems(tu).length, 0 );
|
||||
assertEquals( tu.getPreprocessorProblems().length, 0 );
|
||||
}
|
||||
if( expectNoProblems )
|
||||
assertEquals( 0, tu.getPreprocessorProblems().length );
|
||||
|
||||
if (expectNoProblems)
|
||||
assertEquals(0, tu.getPreprocessorProblems().length);
|
||||
|
||||
return tu;
|
||||
}
|
||||
|
||||
protected IASTTranslationUnit parse( IFile file, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems ) throws ParserException {
|
||||
|
||||
IASTTranslationUnit tu=null;
|
||||
protected IASTTranslationUnit parse(IFile file, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems) throws ParserException {
|
||||
IASTTranslationUnit tu= null;
|
||||
try {
|
||||
tu = CDOM.getInstance().getASTService().getTranslationUnit(file);
|
||||
} catch (UnsupportedDialectException e) {
|
||||
assertFalse(true); // shouldn't happen
|
||||
}
|
||||
|
||||
if( lang == ParserLanguage.C && expectNoProblems )
|
||||
{
|
||||
assertEquals( CVisitor.getProblems(tu).length, 0 );
|
||||
assertEquals( tu.getPreprocessorProblems().length, 0 );
|
||||
if (lang == ParserLanguage.C && expectNoProblems) {
|
||||
assertEquals(CVisitor.getProblems(tu).length, 0);
|
||||
assertEquals(tu.getPreprocessorProblems().length, 0);
|
||||
} else if (lang == ParserLanguage.CPP && expectNoProblems) {
|
||||
assertEquals(CPPVisitor.getProblems(tu).length, 0);
|
||||
assertEquals(tu.getPreprocessorProblems().length, 0);
|
||||
}
|
||||
else if ( lang == ParserLanguage.CPP && expectNoProblems )
|
||||
{
|
||||
assertEquals( CPPVisitor.getProblems(tu).length, 0 );
|
||||
assertEquals( tu.getPreprocessorProblems().length, 0 );
|
||||
}
|
||||
if( expectNoProblems )
|
||||
assertEquals( 0, tu.getPreprocessorProblems().length );
|
||||
|
||||
if (expectNoProblems)
|
||||
assertEquals(0, tu.getPreprocessorProblems().length);
|
||||
|
||||
return tu;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -6327,11 +6327,6 @@ public class AST2Tests extends AST2BaseTest {
|
|||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param declarations
|
||||
* @param index
|
||||
* @return
|
||||
*/
|
||||
private IBasicType getTypeForDeclaration(IASTDeclaration[] declarations, int index) {
|
||||
IASTInitializer init = ((IASTSimpleDeclaration) declarations[index]).getDeclarators()[0].getInitializer();
|
||||
return (IBasicType)((IASTExpression)((IASTEqualsInitializer) init).getInitializerClause()).getExpressionType();
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -6,8 +6,8 @@
|
|||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* IBM - Initial API and implementation
|
||||
* Markus Schorn (Wind River Systems)
|
||||
* IBM - Initial API and implementation
|
||||
* Markus Schorn (Wind River Systems)
|
||||
*******************************************************************************/
|
||||
package org.eclipse.cdt.core.parser.tests.ast2;
|
||||
|
||||
|
@ -151,15 +151,10 @@ public class DOMLocationInclusionTests extends AST2FileBasePluginTest {
|
|||
public String getParserDialect() {
|
||||
return dialect;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private static final String[] EMPTY_STRING_ARRAY = new String[0];
|
||||
|
||||
/**
|
||||
* @param name
|
||||
* @param className
|
||||
*/
|
||||
public DOMLocationInclusionTests(String name) {
|
||||
super(name, DOMLocationInclusionTests.class);
|
||||
}
|
||||
|
@ -178,13 +173,6 @@ public class DOMLocationInclusionTests extends AST2FileBasePluginTest {
|
|||
new ParserConfiguration(s, code));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param pathEndsWith
|
||||
* TODO
|
||||
* @param offset
|
||||
* @param length
|
||||
* @param declarator
|
||||
*/
|
||||
protected void assertSoleFileLocation(IASTNode n, String pathEndsWith, int offset, int length) {
|
||||
IASTNodeLocation[] locations = n.getNodeLocations();
|
||||
assertEquals(locations.length, 1);
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* IBM - Initial API and implementation
|
||||
* Markus Schorn (Wind River Systems)
|
||||
* IBM - Initial API and implementation
|
||||
* Markus Schorn (Wind River Systems)
|
||||
*******************************************************************************/
|
||||
package org.eclipse.cdt.core.parser.tests.ast2;
|
||||
|
||||
|
@ -178,11 +178,6 @@ public class DOMLocationTests extends AST2BaseTest {
|
|||
|
||||
}
|
||||
|
||||
/**
|
||||
* @param declarator
|
||||
* @param offset
|
||||
* @param length
|
||||
*/
|
||||
private void assertSoleLocation(IASTNode n, int offset, int length) {
|
||||
assertEquals(length, ((ASTNode)n).getLength());
|
||||
IASTNodeLocation[] locations = n.getNodeLocations();
|
||||
|
|
|
@ -35,8 +35,8 @@ import org.eclipse.core.runtime.IPath;
|
|||
import org.eclipse.core.runtime.content.IContentType;
|
||||
|
||||
/**
|
||||
* Utility class to have commonly used algorithms in one place for searching with the DOM.
|
||||
*
|
||||
* Utility class to have commonly used algorithms in one place for searching with the DOM.
|
||||
*
|
||||
* @author dsteffle
|
||||
*/
|
||||
public class DOMSearchUtil {
|
||||
|
@ -48,28 +48,26 @@ public class DOMSearchUtil {
|
|||
public static final int DECLARATIONS_DEFINITIONS = 3;
|
||||
public static final int REFERENCES = 4;
|
||||
public static final int ALL_OCCURRENCES = 5;
|
||||
|
||||
/**
|
||||
* This retrieves the ParserLanguage from an IFile.
|
||||
*
|
||||
* @param file
|
||||
* @return
|
||||
*/
|
||||
* Retrieves the ParserLanguage from an file.
|
||||
*/
|
||||
public static ParserLanguage getLanguageFromFile(IFile file) {
|
||||
IProject project = file.getProject();
|
||||
IContentType contentType = CCorePlugin.getContentType(project, file.getFullPath().lastSegment());
|
||||
if (contentType != null) {
|
||||
String lid = contentType.getId();
|
||||
if (CCorePlugin.CONTENT_TYPE_CXXSOURCE.equals(lid) ||
|
||||
if (CCorePlugin.CONTENT_TYPE_CXXSOURCE.equals(lid) ||
|
||||
CCorePlugin.CONTENT_TYPE_CXXHEADER.equals(lid)) {
|
||||
return ParserLanguage.CPP;
|
||||
}
|
||||
}
|
||||
}
|
||||
return ParserLanguage.C;
|
||||
}
|
||||
|
||||
/**
|
||||
* The CPPNameCollector used to get IASTNames from an IASTNode.
|
||||
*
|
||||
*
|
||||
* @author dsteffle
|
||||
*/
|
||||
static public class CPPNameCollector extends ASTVisitor {
|
||||
|
@ -78,21 +76,21 @@ public class DOMSearchUtil {
|
|||
}
|
||||
public List nameList = new ArrayList();
|
||||
@Override
|
||||
public int visit( IASTName name ){
|
||||
nameList.add( name );
|
||||
public int visit(IASTName name) {
|
||||
nameList.add(name);
|
||||
return PROCESS_CONTINUE;
|
||||
}
|
||||
public IASTName getName( int idx ){
|
||||
if( idx < 0 || idx >= nameList.size() )
|
||||
public IASTName getName(int idx) {
|
||||
if (idx < 0 || idx >= nameList.size())
|
||||
return null;
|
||||
return (IASTName) nameList.get( idx );
|
||||
return (IASTName) nameList.get(idx);
|
||||
}
|
||||
public int size() { return nameList.size(); }
|
||||
public int size() { return nameList.size(); }
|
||||
}
|
||||
|
||||
/**
|
||||
* The CNameCollector used to get IASTNames from an IASTNode.
|
||||
*
|
||||
*
|
||||
* @author dsteffle
|
||||
*/
|
||||
static public class CNameCollector extends ASTVisitor {
|
||||
|
@ -101,27 +99,22 @@ public class DOMSearchUtil {
|
|||
}
|
||||
public List nameList = new ArrayList();
|
||||
@Override
|
||||
public int visit( IASTName name ){
|
||||
nameList.add( name );
|
||||
public int visit(IASTName name) {
|
||||
nameList.add(name);
|
||||
return PROCESS_CONTINUE;
|
||||
}
|
||||
public IASTName getName( int idx ){
|
||||
if( idx < 0 || idx >= nameList.size() )
|
||||
public IASTName getName(int idx) {
|
||||
if (idx < 0 || idx >= nameList.size())
|
||||
return null;
|
||||
return (IASTName) nameList.get( idx );
|
||||
return (IASTName) nameList.get(idx);
|
||||
}
|
||||
public int size() { return nameList.size(); }
|
||||
public int size() { return nameList.size(); }
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns the ParserLanguage corresponding to the IPath and IProject. Returns ParserLanguage.CPP if the file type is a header.
|
||||
*
|
||||
* @param path
|
||||
* @param project
|
||||
* @return
|
||||
*/
|
||||
public static ParserLanguage getLanguage( IPath path, IProject project )
|
||||
{
|
||||
public static ParserLanguage getLanguage(IPath path, IProject project) {
|
||||
//FIXME: ALAIN, for headers should we assume CPP ??
|
||||
// The problem is that it really depends on how the header was included.
|
||||
String id = null;
|
||||
|
@ -135,7 +128,7 @@ public class DOMSearchUtil {
|
|||
} else if (CCorePlugin.CONTENT_TYPE_CXXSOURCE.equals(id)) {
|
||||
return ParserLanguage.CPP;
|
||||
} else if (CCorePlugin.CONTENT_TYPE_CHEADER.equals(id)) {
|
||||
return ParserLanguage.C;
|
||||
return ParserLanguage.C;
|
||||
} else if (CCorePlugin.CONTENT_TYPE_CSOURCE.equals(id)) {
|
||||
return ParserLanguage.C;
|
||||
} else if (CCorePlugin.CONTENT_TYPE_ASMSOURCE.equals(id)) {
|
||||
|
@ -148,24 +141,24 @@ public class DOMSearchUtil {
|
|||
|
||||
/**
|
||||
* This is used to get the names from the TU that the IASTName searchName belongs to.
|
||||
*
|
||||
* @param searchName the IASTName whose references/delcarations are to be retrieved
|
||||
* @param limitTo used to specify whether to get declarations, references, or both, one of:
|
||||
* ( CSearchPattern.DECLARATION | CSearchPattern.REFERENCES | CSearchPattern.ALL_OCCURRENCES )
|
||||
*
|
||||
* @param searchName the IASTName whose references/declarations are to be retrieved
|
||||
* @param limitTo used to specify whether to get declarations, references, or both, one of:
|
||||
* (CSearchPattern.DECLARATION | CSearchPattern.REFERENCES | CSearchPattern.ALL_OCCURRENCES)
|
||||
* @return IASTName[] declarations, references, or both depending on limitTo that correspond to the IASTName searchName searched for
|
||||
*/
|
||||
public static IName[] getNamesFromDOM(IASTName searchName, int limitTo) {
|
||||
IName[] names = null;
|
||||
IASTTranslationUnit tu = searchName.getTranslationUnit();
|
||||
|
||||
|
||||
if (tu == null) {
|
||||
return BLANK_NAME_ARRAY;
|
||||
}
|
||||
|
||||
|
||||
IBinding binding = searchName.resolveBinding();
|
||||
if (binding instanceof IIndexBinding) {
|
||||
Assert.fail("Not implemented");
|
||||
// try {
|
||||
// try {
|
||||
// ArrayList pdomNames = new ArrayList();
|
||||
// IPDOMResolver pdom= ((PDOMBinding) binding).getPDOM();
|
||||
// // First decls
|
||||
|
@ -180,22 +173,23 @@ public class DOMSearchUtil {
|
|||
// }
|
||||
} else {
|
||||
names = getNames(tu, binding, limitTo);
|
||||
|
||||
if (names == null || names.length == 0) { // try alternate strategies
|
||||
|
||||
if (names == null || names.length == 0) { // try alternate strategies
|
||||
try {
|
||||
// fix for 86829, 95224
|
||||
if ((binding instanceof ICPPConstructor || (binding instanceof ICPPMethod && ((ICPPMethod)binding).isDestructor()))
|
||||
if ((binding instanceof ICPPConstructor || (binding instanceof ICPPMethod && ((ICPPMethod)binding).isDestructor()))
|
||||
&& binding.getScope() instanceof ICPPClassScope) {
|
||||
binding = ((ICPPClassScope)binding.getScope()).getClassType();
|
||||
names = getNames(tu, binding, limitTo);
|
||||
}
|
||||
} catch (DOMException e) {}
|
||||
} catch (DOMException e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return names;
|
||||
}
|
||||
|
||||
|
||||
private static IASTName[] getNames(IASTTranslationUnit tu, IBinding binding, int limitTo) {
|
||||
IASTName[] names = null;
|
||||
if (limitTo == DECLARATIONS ||
|
||||
|
@ -205,15 +199,14 @@ public class DOMSearchUtil {
|
|||
names = tu.getReferences(binding);
|
||||
} else if (limitTo == DEFINITIONS) {
|
||||
names = tu.getDefinitionsInAST(binding);
|
||||
} else if (limitTo == ALL_OCCURRENCES){
|
||||
} else if (limitTo == ALL_OCCURRENCES) {
|
||||
names = tu.getDeclarationsInAST(binding);
|
||||
names = ArrayUtil.addAll(IASTName.class, names, tu.getReferences(binding));
|
||||
} else { // assume ALL
|
||||
names = tu.getDeclarationsInAST(binding);
|
||||
names = ArrayUtil.addAll(IASTName.class, names, tu.getReferences(binding));
|
||||
}
|
||||
|
||||
|
||||
return names;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -6,8 +6,8 @@
|
|||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
*
|
||||
* Contributors:
|
||||
* IBM Rational Software - Initial API and implementation
|
||||
* Markus Schorn (Wind River Systems)
|
||||
* IBM Rational Software - Initial API and implementation
|
||||
* Markus Schorn (Wind River Systems)
|
||||
*******************************************************************************/
|
||||
package org.eclipse.cdt.core.parser.tests.ast2;
|
||||
|
||||
|
@ -44,23 +44,15 @@ import org.eclipse.cdt.internal.core.parser.ParserException;
|
|||
* @author jcamelon
|
||||
*/
|
||||
public class QuickParser2Tests extends TestCase {
|
||||
|
||||
private static final NullLogService NULL_LOG = new NullLogService();
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public QuickParser2Tests() {
|
||||
super();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param name
|
||||
*/
|
||||
public QuickParser2Tests(String name) {
|
||||
super(name);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void setUp() throws Exception {
|
||||
|
@ -69,7 +61,7 @@ public class QuickParser2Tests extends TestCase {
|
|||
}
|
||||
|
||||
/**
|
||||
* Test code: int x = 5; Purpose: to test the simple decaration in it's
|
||||
* Test code: int x = 5; Purpose: to test the simple declaration in it's
|
||||
* simplest form.
|
||||
*/
|
||||
public void testIntGlobal() throws Exception {
|
||||
|
@ -160,30 +152,29 @@ public class QuickParser2Tests extends TestCase {
|
|||
public void testSimpleClassMembers() throws Exception {
|
||||
// Parse and get the translaton unit
|
||||
Writer code = new StringWriter();
|
||||
code
|
||||
.write("class A : public B, private C, virtual protected D { public: int x, y; float a,b,c; };");
|
||||
code.write("class A : public B, private C, virtual protected D { public: int x, y; float a,b,c; };");
|
||||
parse(code.toString());
|
||||
}
|
||||
|
||||
/**
|
||||
* Test code: int myFunction( void );
|
||||
* Test code: int myFunction(void);
|
||||
*/
|
||||
public void testSimpleFunctionDeclaration() throws Exception {
|
||||
// Parse and get the translaton unit
|
||||
Writer code = new StringWriter();
|
||||
code.write("void myFunction( void );");
|
||||
code.write("void myFunction(void);");
|
||||
parse(code.toString());
|
||||
}
|
||||
|
||||
/**
|
||||
* Test code: bool myFunction( int parm1 = 3 * 4, double parm2 );
|
||||
* Test code: bool myFunction(int parm1 = 3 * 4, double parm2);
|
||||
*
|
||||
* @throws Exception
|
||||
*/
|
||||
public void testFunctionDeclarationWithParameters() throws Exception {
|
||||
// Parse and get the translaton unit
|
||||
Writer code = new StringWriter();
|
||||
code.write("bool myFunction( int parm1 = 3 * 4, double parm2 );");
|
||||
code.write("bool myFunction(int parm1 = 3 * 4, double parm2);");
|
||||
parse(code.toString());
|
||||
}
|
||||
|
||||
|
@ -208,8 +199,8 @@ public class QuickParser2Tests extends TestCase {
|
|||
}
|
||||
|
||||
public void testBug36290() throws Exception {
|
||||
parse("typedef void ( A:: * pMethod ) ( void ); ");
|
||||
parse("typedef void (boo) ( void ); ");
|
||||
parse("typedef void (A:: * pMethod) (void); ");
|
||||
parse("typedef void (boo) (void); ");
|
||||
parse("typedef void boo (void); ");
|
||||
}
|
||||
|
||||
|
@ -245,113 +236,113 @@ public class QuickParser2Tests extends TestCase {
|
|||
|
||||
// failing, see https://bugs.eclipse.org/bugs/show_bug.cgi?id=236856
|
||||
public void _testBug36932C() throws Exception {
|
||||
parse("X::X( ) : var( new int ) {}");
|
||||
parse("X::X( ) : var( new int(5) ) {}");
|
||||
parse("X::X( ) : var( new int(B) ) {}");
|
||||
parse("X::X( ) : var( new int(B,C) ) {}");
|
||||
parse("X::X( ) : var( new int[5] ) {}");
|
||||
parse("X::X( ) : var( new int[5][10] ) {}");
|
||||
parse("X::X( ) : var( new int[B] ) {}");
|
||||
parse("X::X( ) : var( new int[B][C][D] ) {}");
|
||||
parse("X::X() : var(new int) {}");
|
||||
parse("X::X() : var(new int(5)) {}");
|
||||
parse("X::X() : var(new int(B)) {}");
|
||||
parse("X::X() : var(new int(B,C)) {}");
|
||||
parse("X::X() : var(new int[5]) {}");
|
||||
parse("X::X() : var(new int[5][10]) {}");
|
||||
parse("X::X() : var(new int[B]) {}");
|
||||
parse("X::X() : var(new int[B][C][D]) {}");
|
||||
|
||||
parse("X::X( ) : var( new A ) {}");
|
||||
parse("X::X( ) : var( new A(5) ) {}");
|
||||
parse("X::X( ) : var( new A(B) ) {}");
|
||||
parse("X::X( ) : var( new A(B,C) ) {}");
|
||||
parse("X::X( ) : var( new A[5] ) {}");
|
||||
parse("X::X( ) : var( new A[5][10] ) {}");
|
||||
parse("X::X( ) : var( new A[B] ) {}");
|
||||
parse("X::X( ) : var( new A[B][C][D] ) {}");
|
||||
parse("X::X() : var(new A) {}");
|
||||
parse("X::X() : var(new A(5)) {}");
|
||||
parse("X::X() : var(new A(B)) {}");
|
||||
parse("X::X() : var(new A(B,C)) {}");
|
||||
parse("X::X() : var(new A[5]) {}");
|
||||
parse("X::X() : var(new A[5][10]) {}");
|
||||
parse("X::X() : var(new A[B]) {}");
|
||||
parse("X::X() : var(new A[B][C][D]) {}");
|
||||
|
||||
parse("X::X( ) : var( new (int) ) {}");
|
||||
parse("X::X( ) : var( new (int)(5) ) {}");
|
||||
parse("X::X( ) : var( new (int)(B) ) {}");
|
||||
parse("X::X( ) : var( new (int)(B,C) ) {}");
|
||||
parse("X::X( ) : var( new (int[5]) ) {}");
|
||||
parse("X::X( ) : var( new (int[5][10]) ) {}");
|
||||
parse("X::X( ) : var( new (int[B]) ) {}");
|
||||
parse("X::X( ) : var( new (int[B][C][D]) ) {}");
|
||||
parse("X::X() : var(new (int)) {}");
|
||||
parse("X::X() : var(new (int)(5)) {}");
|
||||
parse("X::X() : var(new (int)(B)) {}");
|
||||
parse("X::X() : var(new (int)(B,C)) {}");
|
||||
parse("X::X() : var(new (int[5])) {}");
|
||||
parse("X::X() : var(new (int[5][10])) {}");
|
||||
parse("X::X() : var(new (int[B])) {}");
|
||||
parse("X::X() : var(new (int[B][C][D])) {}");
|
||||
|
||||
parse("X::X( ) : var( new (A) ) {}");
|
||||
parse("X::X( ) : var( new (A)(5) ) {}");
|
||||
parse("X::X( ) : var( new (A)(B) ) {}");
|
||||
parse("X::X( ) : var( new (A)(B,C) ) {}");
|
||||
parse("X::X( ) : var( new (A[5]) ) {}");
|
||||
parse("X::X( ) : var( new (A[5][10]) ) {}");
|
||||
parse("X::X( ) : var( new (A[B]) ) {}");
|
||||
parse("X::X( ) : var( new (A[B][C][D]) ) {}");
|
||||
parse("X::X() : var(new (A)) {}");
|
||||
parse("X::X() : var(new (A)(5)) {}");
|
||||
parse("X::X() : var(new (A)(B)) {}");
|
||||
parse("X::X() : var(new (A)(B,C)) {}");
|
||||
parse("X::X() : var(new (A[5])) {}");
|
||||
parse("X::X() : var(new (A[5][10])) {}");
|
||||
parse("X::X() : var(new (A[B])) {}");
|
||||
parse("X::X() : var(new (A[B][C][D])) {}");
|
||||
|
||||
parse("X::X( ) : var( new (0) int ) {}");
|
||||
parse("X::X( ) : var( new (0) int(5) ) {}");
|
||||
parse("X::X( ) : var( new (0) int(B) ) {}");
|
||||
parse("X::X( ) : var( new (0) int(B,C) ) {}");
|
||||
parse("X::X( ) : var( new (0) int[5] ) {}");
|
||||
parse("X::X( ) : var( new (0) int[5][10] ) {}");
|
||||
parse("X::X( ) : var( new (0) int[B] ) {}");
|
||||
parse("X::X( ) : var( new (0) int[B][C][D] ) {}");
|
||||
parse("X::X() : var(new (0) int) {}");
|
||||
parse("X::X() : var(new (0) int(5)) {}");
|
||||
parse("X::X() : var(new (0) int(B)) {}");
|
||||
parse("X::X() : var(new (0) int(B,C)) {}");
|
||||
parse("X::X() : var(new (0) int[5]) {}");
|
||||
parse("X::X() : var(new (0) int[5][10]) {}");
|
||||
parse("X::X() : var(new (0) int[B]) {}");
|
||||
parse("X::X() : var(new (0) int[B][C][D]) {}");
|
||||
|
||||
parse("X::X( ) : var( new (0) A ) {}");
|
||||
parse("X::X( ) : var( new (0) A(5) ) {}");
|
||||
parse("X::X( ) : var( new (0) A(B) ) {}");
|
||||
parse("X::X( ) : var( new (0) A(B,C) ) {}");
|
||||
parse("X::X( ) : var( new (0) A[5] ) {}");
|
||||
parse("X::X( ) : var( new (0) A[5][10] ) {}");
|
||||
parse("X::X( ) : var( new (0) A[B] ) {}");
|
||||
parse("X::X( ) : var( new (0) A[B][C][D] ) {}");
|
||||
parse("X::X() : var(new (0) A) {}");
|
||||
parse("X::X() : var(new (0) A(5)) {}");
|
||||
parse("X::X() : var(new (0) A(B)) {}");
|
||||
parse("X::X() : var(new (0) A(B,C)) {}");
|
||||
parse("X::X() : var(new (0) A[5]) {}");
|
||||
parse("X::X() : var(new (0) A[5][10]) {}");
|
||||
parse("X::X() : var(new (0) A[B]) {}");
|
||||
parse("X::X() : var(new (0) A[B][C][D]) {}");
|
||||
|
||||
parse("X::X( ) : var( new (0) (int) ) {}");
|
||||
parse("X::X( ) : var( new (0) (int)(5) ) {}");
|
||||
parse("X::X( ) : var( new (0) (int)(B) ) {}");
|
||||
parse("X::X( ) : var( new (0) (int)(B,C) ) {}");
|
||||
parse("X::X( ) : var( new (0) (int[5]) ) {}");
|
||||
parse("X::X( ) : var( new (0) (int[5][10]) ) {}");
|
||||
parse("X::X( ) : var( new (0) (int[B]) ) {}");
|
||||
parse("X::X( ) : var( new (0) (int[B][C][D]) ) {}");
|
||||
parse("X::X() : var(new (0) (int)) {}");
|
||||
parse("X::X() : var(new (0) (int)(5)) {}");
|
||||
parse("X::X() : var(new (0) (int)(B)) {}");
|
||||
parse("X::X() : var(new (0) (int)(B,C)) {}");
|
||||
parse("X::X() : var(new (0) (int[5])) {}");
|
||||
parse("X::X() : var(new (0) (int[5][10])) {}");
|
||||
parse("X::X() : var(new (0) (int[B])) {}");
|
||||
parse("X::X() : var(new (0) (int[B][C][D])) {}");
|
||||
|
||||
parse("X::X( ) : var( new (0) (A) ) {}");
|
||||
parse("X::X( ) : var( new (0) (A)(5) ) {}");
|
||||
parse("X::X( ) : var( new (0) (A)(B) ) {}");
|
||||
parse("X::X( ) : var( new (0) (A)(B,C) ) {}");
|
||||
parse("X::X( ) : var( new (0) (A[5]) ) {}");
|
||||
parse("X::X( ) : var( new (0) (A[5][10]) ) {}");
|
||||
parse("X::X( ) : var( new (0) (A[B]) ) {}");
|
||||
parse("X::X( ) : var( new (0) (A[B][C][D]) ) {}");
|
||||
parse("X::X() : var(new (0) (A)) {}");
|
||||
parse("X::X() : var(new (0) (A)(5)) {}");
|
||||
parse("X::X() : var(new (0) (A)(B)) {}");
|
||||
parse("X::X() : var(new (0) (A)(B,C)) {}");
|
||||
parse("X::X() : var(new (0) (A[5])) {}");
|
||||
parse("X::X() : var(new (0) (A[5][10])) {}");
|
||||
parse("X::X() : var(new (0) (A[B])) {}");
|
||||
parse("X::X() : var(new (0) (A[B][C][D])) {}");
|
||||
|
||||
parse("X::X( ) : var( new (P) int ) {}");
|
||||
parse("X::X( ) : var( new (P) int(5) ) {}");
|
||||
parse("X::X( ) : var( new (P) int(B) ) {}");
|
||||
parse("X::X( ) : var( new (P) int(B,C) ) {}");
|
||||
parse("X::X( ) : var( new (P) int[5] ) {}");
|
||||
parse("X::X( ) : var( new (P) int[5][10] ) {}");
|
||||
parse("X::X( ) : var( new (P) int[B] ) {}");
|
||||
parse("X::X( ) : var( new (P) int[B][C][D] ) {}");
|
||||
parse("X::X() : var(new (P) int) {}");
|
||||
parse("X::X() : var(new (P) int(5)) {}");
|
||||
parse("X::X() : var(new (P) int(B)) {}");
|
||||
parse("X::X() : var(new (P) int(B,C)) {}");
|
||||
parse("X::X() : var(new (P) int[5]) {}");
|
||||
parse("X::X() : var(new (P) int[5][10]) {}");
|
||||
parse("X::X() : var(new (P) int[B]) {}");
|
||||
parse("X::X() : var(new (P) int[B][C][D]) {}");
|
||||
|
||||
parse("X::X( ) : var( new (P) A ) {}");
|
||||
parse("X::X( ) : var( new (P) A(5) ) {}");
|
||||
parse("X::X( ) : var( new (P) A(B) ) {}");
|
||||
parse("X::X( ) : var( new (P) A(B,C) ) {}");
|
||||
parse("X::X( ) : var( new (P) A[5] ) {}");
|
||||
parse("X::X( ) : var( new (P) A[5][10] ) {}");
|
||||
parse("X::X( ) : var( new (P) A[B] ) {}");
|
||||
parse("X::X( ) : var( new (P) A[B][C][D] ) {}");
|
||||
parse("X::X() : var(new (P) A) {}");
|
||||
parse("X::X() : var(new (P) A(5)) {}");
|
||||
parse("X::X() : var(new (P) A(B)) {}");
|
||||
parse("X::X() : var(new (P) A(B,C)) {}");
|
||||
parse("X::X() : var(new (P) A[5]) {}");
|
||||
parse("X::X() : var(new (P) A[5][10]) {}");
|
||||
parse("X::X() : var(new (P) A[B]) {}");
|
||||
parse("X::X() : var(new (P) A[B][C][D]) {}");
|
||||
|
||||
parse("X::X( ) : var( new (P) (int) ) {}");
|
||||
parse("X::X( ) : var( new (P) (int)(5) ) {}");
|
||||
parse("X::X( ) : var( new (P) (int)(B) ) {}");
|
||||
parse("X::X( ) : var( new (P) (int)(B,C) ) {}");
|
||||
parse("X::X( ) : var( new (P) (int[5]) ) {}");
|
||||
parse("X::X( ) : var( new (P) (int[5][10]) ) {}");
|
||||
parse("X::X( ) : var( new (P) (int[B]) ) {}");
|
||||
parse("X::X( ) : var( new (P) (int[B][C][D]) ) {}");
|
||||
parse("X::X() : var(new (P) (int)) {}");
|
||||
parse("X::X() : var(new (P) (int)(5)) {}");
|
||||
parse("X::X() : var(new (P) (int)(B)) {}");
|
||||
parse("X::X() : var(new (P) (int)(B,C)) {}");
|
||||
parse("X::X() : var(new (P) (int[5])) {}");
|
||||
parse("X::X() : var(new (P) (int[5][10])) {}");
|
||||
parse("X::X() : var(new (P) (int[B])) {}");
|
||||
parse("X::X() : var(new (P) (int[B][C][D])) {}");
|
||||
|
||||
parse("X::X( ) : var( new (P) (A) ) {}");
|
||||
parse("X::X( ) : var( new (P) (A)(5) ) {}");
|
||||
parse("X::X( ) : var( new (P) (A)(B) ) {}");
|
||||
parse("X::X( ) : var( new (P) (A)(B,C) ) {}");
|
||||
parse("X::X( ) : var( new (P) (A[5]) ) {}");
|
||||
parse("X::X( ) : var( new (P) (A[5][10]) ) {}");
|
||||
parse("X::X( ) : var( new (P) (A[B]) ) {}");
|
||||
parse("X::X( ) : var( new (P) (A[B][C][D]) ) {}");
|
||||
parse("X::X() : var(new (P) (A)) {}");
|
||||
parse("X::X() : var(new (P) (A)(5)) {}");
|
||||
parse("X::X() : var(new (P) (A)(B)) {}");
|
||||
parse("X::X() : var(new (P) (A)(B,C)) {}");
|
||||
parse("X::X() : var(new (P) (A[5])) {}");
|
||||
parse("X::X() : var(new (P) (A[5][10])) {}");
|
||||
parse("X::X() : var(new (P) (A[B])) {}");
|
||||
parse("X::X() : var(new (P) (A[B][C][D])) {}");
|
||||
}
|
||||
|
||||
public void testBugSingleton192() throws Exception {
|
||||
|
@ -372,7 +363,7 @@ public class QuickParser2Tests extends TestCase {
|
|||
}
|
||||
|
||||
public void testBug37019() throws Exception {
|
||||
parse("static const A a( 1, 0 );");
|
||||
parse("static const A a(1, 0);");
|
||||
}
|
||||
|
||||
public void testBug36766and36769A() throws Exception {
|
||||
|
@ -414,7 +405,7 @@ public class QuickParser2Tests extends TestCase {
|
|||
}
|
||||
|
||||
public void testBug36932A() throws Exception {
|
||||
parse("A::A( ) : var( new char [ (unsigned)bufSize ] ) {}");
|
||||
parse("A::A() : var(new char[ (unsigned)bufSize ]) {}");
|
||||
}
|
||||
|
||||
// failing, see https://bugs.eclipse.org/bugs/show_bug.cgi?id=236856
|
||||
|
@ -529,7 +520,6 @@ public class QuickParser2Tests extends TestCase {
|
|||
}
|
||||
|
||||
public void testBug36769A() throws Exception {
|
||||
|
||||
parse("template <class A, B> cls<A, C>::operator otherType() const {}\n");
|
||||
parse("template <class A, B> cls<A, C>::cls() {}\n");
|
||||
parse("template <class A, B> cls<A, C>::~cls() {}\n");
|
||||
|
@ -539,7 +529,6 @@ public class QuickParser2Tests extends TestCase {
|
|||
Writer code = new StringWriter();
|
||||
code.write("unsigned long a = 0UL;\n");
|
||||
code.write("unsigned long a2 = 0L; \n");
|
||||
|
||||
parse(code.toString());
|
||||
}
|
||||
|
||||
|
@ -548,11 +537,11 @@ public class QuickParser2Tests extends TestCase {
|
|||
"class Functor {"+
|
||||
"template <typename Fun> Functor(Fun fun) : spImpl_(new FunctorHandler<Functor, Fun>(fun)){}" +
|
||||
"};"
|
||||
);
|
||||
);
|
||||
}
|
||||
|
||||
public void testBug36932() throws Exception {
|
||||
parse("A::A(): b( new int( 5 ) ), b( new B ), c( new int ) {}");
|
||||
parse("A::A(): b(new int(5)), b(new B), c(new int) {}");
|
||||
}
|
||||
|
||||
public void testBug36704() throws Exception {
|
||||
|
@ -590,8 +579,7 @@ public class QuickParser2Tests extends TestCase {
|
|||
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 *, 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");
|
||||
|
@ -605,16 +593,13 @@ public class QuickParser2Tests extends TestCase {
|
|||
code.write(");\n");
|
||||
|
||||
parse(code.toString());
|
||||
|
||||
}
|
||||
|
||||
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");
|
||||
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");
|
||||
parse(code.toString());
|
||||
}
|
||||
|
||||
|
@ -623,14 +608,12 @@ public class QuickParser2Tests extends TestCase {
|
|||
code.write("template\n");
|
||||
code.write("<\n");
|
||||
code.write("class AbstractFact,\n");
|
||||
code
|
||||
.write("template <class, class> class Creator = OpNewFactoryUnit,\n");
|
||||
code.write("template <class, class> class Creator = OpNewFactoryUnit,\n");
|
||||
code.write("class TList = typename AbstractFact::ProductList\n");
|
||||
code.write(">\n");
|
||||
code.write("class ConcreteFactory\n");
|
||||
code.write(": public GenLinearHierarchy<\n");
|
||||
code
|
||||
.write("typename TL::Reverse<TList>::Result, Creator, AbstractFact>\n");
|
||||
code.write("typename TL::Reverse<TList>::Result, Creator, AbstractFact>\n");
|
||||
code.write("{\n");
|
||||
code.write("public:\n");
|
||||
code.write("typedef typename AbstractFact::ProductList ProductList;\n");
|
||||
|
@ -688,23 +671,23 @@ public class QuickParser2Tests extends TestCase {
|
|||
}
|
||||
|
||||
/**
|
||||
* Test code: "class A { int floor( double input ), someInt; };"
|
||||
* Test code: "class A { int floor(double input), someInt; };"
|
||||
*/
|
||||
public void testMultipleDeclarators() throws Exception {
|
||||
// Parse and get the translaton unit
|
||||
parse("class A { int floor( double input ), someInt; };");
|
||||
// Parse and get the translation unit
|
||||
parse("class A { int floor(double input), someInt; };");
|
||||
}
|
||||
|
||||
public void testFunctionModifiers() throws Exception {
|
||||
parse("class A {virtual void foo( void ) const throw ( yay, nay, we::dont::care ) = 0;};");
|
||||
parse("class A {virtual void foo(void) const throw (yay, nay, we::dont::care) = 0;};");
|
||||
}
|
||||
|
||||
public void testArrays() throws Exception {
|
||||
parse("int x [5][];");
|
||||
parse("int x[5][];");
|
||||
}
|
||||
|
||||
public void testElaboratedParms() throws Exception {
|
||||
parse("int x( struct A myA ) { /* junk */ }");
|
||||
parse("int x(struct A myA) { /* junk */ }");
|
||||
}
|
||||
|
||||
public void testMemberDeclarations() throws Exception {
|
||||
|
@ -733,16 +716,16 @@ public class QuickParser2Tests extends TestCase {
|
|||
}
|
||||
|
||||
public void testASMDefinition() throws Exception {
|
||||
parse("asm( \"mov ep1 ds2\");");
|
||||
parse("asm(\"mov ep1 ds2\");");
|
||||
}
|
||||
|
||||
public void testConstructorChain() throws Exception {
|
||||
//TODO - requires CPPVisitor in order to reduce ambiguities
|
||||
parse("TrafficLight_Actor::TrafficLight_Actor( RTController * rtg_rts, RTActorRef * rtg_ref ) : RTActor( rtg_rts, rtg_ref ), myId( 0 ) {}");
|
||||
parse("TrafficLight_Actor::TrafficLight_Actor(RTController * rtg_rts, RTActorRef * rtg_ref) : RTActor(rtg_rts, rtg_ref), myId(0) {}");
|
||||
}
|
||||
|
||||
public void testBug36237() throws Exception {
|
||||
parse("A::A():B( (char *)0 ){}");
|
||||
parse("A::A():B((char *)0){}");
|
||||
}
|
||||
|
||||
public void testBug36532() throws Exception {
|
||||
|
@ -760,7 +743,7 @@ public class QuickParser2Tests extends TestCase {
|
|||
}
|
||||
|
||||
public void testTemplateDeclarationOfFunction() throws Exception {
|
||||
parse("template<class A, typename B=C> A aTemplatedFunction( B bInstance );");
|
||||
parse("template<class A, typename B=C> A aTemplatedFunction(B bInstance);");
|
||||
}
|
||||
|
||||
public void testTemplateDeclarationOfClass() throws Exception {
|
||||
|
@ -779,15 +762,15 @@ public class QuickParser2Tests extends TestCase {
|
|||
}
|
||||
|
||||
public void testBug36250() throws Exception {
|
||||
parse("int f( int = 0 );");
|
||||
parse("int f(int = 0);");
|
||||
}
|
||||
|
||||
public void testBug36240() throws Exception {
|
||||
parse("A & A::operator=( A ){}");
|
||||
parse("A & A::operator=(A){}");
|
||||
}
|
||||
|
||||
public void testBug36254() throws Exception {
|
||||
parse("unsigned i;\nvoid f( unsigned p1 = 0 );");
|
||||
parse("unsigned i;\nvoid f(unsigned p1 = 0);");
|
||||
}
|
||||
|
||||
public void testBug36432() throws Exception {
|
||||
|
@ -868,8 +851,7 @@ public class QuickParser2Tests extends TestCase {
|
|||
public void testBug36692() throws Exception {
|
||||
Writer code = new StringWriter();
|
||||
code.write("template <typename T, typename Destroyer>\n");
|
||||
code
|
||||
.write("void SetLongevity(T* pDynObject, unsigned int longevity,\n");
|
||||
code.write("void SetLongevity(T* pDynObject, unsigned int longevity,\n");
|
||||
code.write("Destroyer d = Private::Deleter<T>::Delete){}\n");
|
||||
parse(code.toString());
|
||||
}
|
||||
|
@ -888,7 +870,7 @@ public class QuickParser2Tests extends TestCase {
|
|||
// code.write("INLINE_DEF int f ();\n");
|
||||
// code.write("INLINE_DEF A g ();");
|
||||
// code.write("INLINE_DEF A * h ();");
|
||||
// code.write("INLINE_DEF A & unlock( void );");
|
||||
// code.write("INLINE_DEF A & unlock(void);");
|
||||
// code.write("};");
|
||||
// parse(code.toString());
|
||||
// }
|
||||
|
@ -911,7 +893,7 @@ public class QuickParser2Tests extends TestCase {
|
|||
|
||||
public void testPointersToFunctions() throws Exception {
|
||||
Writer code = new StringWriter();
|
||||
code.write("void (*name)( void );\n");
|
||||
code.write("void (*name)(void);\n");
|
||||
code
|
||||
.write("static void * (* const orig_malloc_hook)(const char *file, int line, size_t size);\n");
|
||||
|
||||
|
@ -924,8 +906,8 @@ public class QuickParser2Tests extends TestCase {
|
|||
|
||||
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 fPtr) (void *); \n");
|
||||
code.write("A (* const fPtr2) (A *); \n");
|
||||
parse(code.toString());
|
||||
}
|
||||
|
||||
|
@ -935,7 +917,7 @@ public class QuickParser2Tests extends TestCase {
|
|||
// {
|
||||
// // Parse and get the translaton unit
|
||||
// Writer code = new StringWriter();
|
||||
// code.write("bool myFunction( parm1, parm2, parm3 )\n");
|
||||
// code.write("bool myFunction(parm1, parm2, parm3)\n");
|
||||
// code.write("const char* parm1;\n");
|
||||
// code.write("int (*parm2)(float);\n");
|
||||
// code.write("{}");
|
||||
|
@ -946,82 +928,82 @@ public class QuickParser2Tests extends TestCase {
|
|||
// assertEquals(1, declarations.size());
|
||||
// SimpleDeclaration simpleDeclaration =
|
||||
// (SimpleDeclaration)declarations.get(0);
|
||||
// assertEquals( simpleDeclaration.getDeclSpecifier().getType(),
|
||||
// DeclSpecifier.t_bool );
|
||||
// assertEquals(simpleDeclaration.getDeclSpecifier().getType(),
|
||||
// DeclSpecifier.t_bool);
|
||||
// List declarators = simpleDeclaration.getDeclarators();
|
||||
// assertEquals( 1, declarators.size() );
|
||||
// Declarator functionDeclarator = (Declarator)declarators.get( 0 );
|
||||
// assertEquals( functionDeclarator.getName().toString(), "myFunction" );
|
||||
// assertEquals(1, declarators.size());
|
||||
// Declarator functionDeclarator = (Declarator)declarators.get(0);
|
||||
// assertEquals(functionDeclarator.getName().toString(), "myFunction");
|
||||
//
|
||||
// ParameterDeclarationClause pdc = functionDeclarator.getParms();
|
||||
// assertNotNull( pdc );
|
||||
// assertNotNull(pdc);
|
||||
// List parameterDecls = pdc.getDeclarations();
|
||||
// assertEquals( 3, parameterDecls.size() );
|
||||
// ParameterDeclaration parm1 = (ParameterDeclaration)parameterDecls.get( 0
|
||||
// );
|
||||
// assertNotNull( parm1.getDeclSpecifier().getName() );
|
||||
// assertEquals( "parm1", parm1.getDeclSpecifier().getName().toString() );
|
||||
// assertEquals(3, parameterDecls.size());
|
||||
// ParameterDeclaration parm1 = (ParameterDeclaration)parameterDecls.get(0
|
||||
//);
|
||||
// assertNotNull(parm1.getDeclSpecifier().getName());
|
||||
// assertEquals("parm1", parm1.getDeclSpecifier().getName().toString());
|
||||
// List parm1Decls = parm1.getDeclarators();
|
||||
// assertEquals( 1, parm1Decls.size() );
|
||||
// assertEquals(1, parm1Decls.size());
|
||||
//
|
||||
// ParameterDeclaration parm2 = (ParameterDeclaration)parameterDecls.get( 1
|
||||
// );
|
||||
// assertNotNull( parm2.getDeclSpecifier().getName() );
|
||||
// assertEquals( "parm2", parm2.getDeclSpecifier().getName().toString() );
|
||||
// ParameterDeclaration parm2 = (ParameterDeclaration)parameterDecls.get(1
|
||||
//);
|
||||
// assertNotNull(parm2.getDeclSpecifier().getName());
|
||||
// assertEquals("parm2", parm2.getDeclSpecifier().getName().toString());
|
||||
// List parm2Decls = parm2.getDeclarators();
|
||||
// assertEquals( 1, parm2Decls.size() );
|
||||
// assertEquals(1, parm2Decls.size());
|
||||
//
|
||||
// ParameterDeclaration parm3 = (ParameterDeclaration)parameterDecls.get( 2
|
||||
// );
|
||||
// assertNotNull( parm3.getDeclSpecifier().getName() );
|
||||
// assertEquals( "parm3", parm3.getDeclSpecifier().getName().toString() );
|
||||
// ParameterDeclaration parm3 = (ParameterDeclaration)parameterDecls.get(2
|
||||
//);
|
||||
// assertNotNull(parm3.getDeclSpecifier().getName());
|
||||
// assertEquals("parm3", parm3.getDeclSpecifier().getName().toString());
|
||||
// List parm3Decls = parm3.getDeclarators();
|
||||
// assertEquals( 1, parm3Decls.size() );
|
||||
// assertEquals(1, parm3Decls.size());
|
||||
//
|
||||
// OldKRParameterDeclarationClause clause = pdc.getOldKRParms();
|
||||
// assertNotNull( clause );
|
||||
// assertEquals( clause.getDeclarations().size(), 2 );
|
||||
// assertNotNull(clause);
|
||||
// assertEquals(clause.getDeclarations().size(), 2);
|
||||
// SimpleDeclaration decl1 =
|
||||
// (SimpleDeclaration)clause.getDeclarations().get(0);
|
||||
// assertEquals( decl1.getDeclarators().size(), 1 );
|
||||
// assertEquals(decl1.getDeclarators().size(), 1);
|
||||
// assertTrue(decl1.getDeclSpecifier().isConst());
|
||||
// assertFalse(decl1.getDeclSpecifier().isVolatile());
|
||||
// assertEquals( decl1.getDeclSpecifier().getType(), DeclSpecifier.t_char);
|
||||
// Declarator declarator1 = (Declarator)decl1.getDeclarators().get( 0 );
|
||||
// assertEquals( declarator1.getName().toString(), "parm1" );
|
||||
// assertEquals(decl1.getDeclSpecifier().getType(), DeclSpecifier.t_char);
|
||||
// Declarator declarator1 = (Declarator)decl1.getDeclarators().get(0);
|
||||
// assertEquals(declarator1.getName().toString(), "parm1");
|
||||
// List ptrOps1 = declarator1.getPointerOperators();
|
||||
// assertNotNull( ptrOps1 );
|
||||
// assertEquals( 1, ptrOps1.size() );
|
||||
// assertNotNull(ptrOps1);
|
||||
// assertEquals(1, ptrOps1.size());
|
||||
// PointerOperator po1 = (PointerOperator)ptrOps1.get(0);
|
||||
// assertNotNull( po1 );
|
||||
// assertFalse( po1.isConst() );
|
||||
// assertFalse( po1.isVolatile() );
|
||||
// assertEquals( po1.getType(), PointerOperator.t_pointer );
|
||||
// assertNotNull(po1);
|
||||
// assertFalse(po1.isConst());
|
||||
// assertFalse(po1.isVolatile());
|
||||
// assertEquals(po1.getType(), PointerOperator.t_pointer);
|
||||
//
|
||||
// SimpleDeclaration declaration =
|
||||
// (SimpleDeclaration)clause.getDeclarations().get(1);
|
||||
// assertEquals( declaration.getDeclSpecifier().getType(),
|
||||
// DeclSpecifier.t_int );
|
||||
// assertEquals( declaration.getDeclarators().size(), 1);
|
||||
// assertNull( ((Declarator)declaration.getDeclarators().get(0)).getName()
|
||||
// );
|
||||
// assertEquals(declaration.getDeclSpecifier().getType(),
|
||||
// DeclSpecifier.t_int);
|
||||
// assertEquals(declaration.getDeclarators().size(), 1);
|
||||
// assertNull(((Declarator)declaration.getDeclarators().get(0)).getName()
|
||||
//);
|
||||
// assertNotNull(
|
||||
// ((Declarator)declaration.getDeclarators().get(0)).getDeclarator() );
|
||||
// ((Declarator)declaration.getDeclarators().get(0)).getDeclarator());
|
||||
// assertEquals(
|
||||
// ((Declarator)declaration.getDeclarators().get(0)).getDeclarator().getName().toString(),
|
||||
// "parm2" );
|
||||
// "parm2");
|
||||
// ParameterDeclarationClause clause2 =
|
||||
// ((Declarator)declaration.getDeclarators().get(0)).getParms();
|
||||
// assertEquals( clause2.getDeclarations().size(), 1 );
|
||||
// assertEquals(clause2.getDeclarations().size(), 1);
|
||||
// assertEquals(
|
||||
// ((ParameterDeclaration)clause2.getDeclarations().get(0)).getDeclarators().size(),
|
||||
// 1 );
|
||||
// 1);
|
||||
// assertNull(
|
||||
// ((Declarator)((ParameterDeclaration)clause2.getDeclarations().get(0)).getDeclarators().get(0)).getName()
|
||||
// );
|
||||
//);
|
||||
// assertEquals(
|
||||
// ((ParameterDeclaration)clause2.getDeclarations().get(0)).getDeclSpecifier().getType(),
|
||||
// DeclSpecifier.t_float );
|
||||
// DeclSpecifier.t_float);
|
||||
// }
|
||||
|
||||
public void testPointersToMemberFunctions() throws Exception {
|
||||
|
@ -1038,10 +1020,8 @@ public class QuickParser2Tests extends TestCase {
|
|||
code.write("%:define glue(x, y) x %:%: y /* #define glue(x, y) x ## y. */\n");
|
||||
code.write("#ifndef glue\n");
|
||||
code.write("#error glue not defined!\n");
|
||||
code.write("#endif\n");
|
||||
|
||||
code.write("#endif\n");
|
||||
code.write("%:define str(x) %:x /* #define str(x) #x */\n");
|
||||
|
||||
code.write("int main (int argc, char *argv<::>) /* argv[] */\n");
|
||||
code.write("glue (<, %) /* { */\n");
|
||||
code.write(" /* di_str[] = */\n");
|
||||
|
@ -1063,17 +1043,14 @@ public class QuickParser2Tests extends TestCase {
|
|||
code.write("??=include <stdio.h>\n");
|
||||
code.write("??=define TWELVE 1??/\n");
|
||||
code.write("2\n");
|
||||
|
||||
code.write("static const char str??(??) = \"0123456789??/n\";\n");
|
||||
|
||||
code.write("int\n");
|
||||
code.write("main(void)\n");
|
||||
code.write("??<\n");
|
||||
code.write(" unsigned char x = 5;\n");
|
||||
code.write(" if (sizeof str != TWELVE)\n");
|
||||
code.write(" abort ();\n");
|
||||
code
|
||||
.write(" /* Test ^=, the only multi-character token to come from trigraphs. */\n");
|
||||
code.write(" /* Test ^=, the only multi-character token to come from trigraphs. */\n");
|
||||
code.write(" x ??'= 3;\n");
|
||||
code.write(" if (x != 6)\n");
|
||||
code.write(" abort ();\n");
|
||||
|
@ -1098,7 +1075,7 @@ public class QuickParser2Tests extends TestCase {
|
|||
}
|
||||
|
||||
public void testIndirectDeclarators() throws Exception {
|
||||
parse("void (*x)( int );");
|
||||
parse("void (*x)(int);");
|
||||
}
|
||||
|
||||
public void testBug39532() throws Exception {
|
||||
|
@ -1143,7 +1120,7 @@ public class QuickParser2Tests extends TestCase {
|
|||
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) {
|
||||
} catch (IOException e) {
|
||||
}
|
||||
parse(code.toString());
|
||||
}
|
||||
|
@ -1210,7 +1187,7 @@ public class QuickParser2Tests extends TestCase {
|
|||
code.write(" catch (...)\n");
|
||||
code.write(" { if (c != 3) r |= 1; }\n");
|
||||
code.write("};\n");
|
||||
} catch (IOException ioe) {
|
||||
} catch (IOException e) {
|
||||
}
|
||||
parse(code.toString());
|
||||
}
|
||||
|
@ -1266,64 +1243,64 @@ public class QuickParser2Tests extends TestCase {
|
|||
}
|
||||
|
||||
public void testBug43110() throws Exception {
|
||||
parse("void x( int y, ... );");
|
||||
parse("void x(int y, ...);");
|
||||
}
|
||||
|
||||
// public void testBug44370() throws Exception
|
||||
// {
|
||||
// parse( "#define SWAP(x,y) {x|=y;y|=x;x|=y;}\n");
|
||||
// parse("#define SWAP(x,y) {x|=y;y|=x;x|=y;}\n");
|
||||
// Iterator macros = quickParseCallback.getMacros();
|
||||
// assertNotNull(macros);
|
||||
// assertTrue( macros.hasNext());
|
||||
// assertTrue(macros.hasNext());
|
||||
// IASTMacro swap = (IASTMacro) macros.next();
|
||||
// assertFalse( macros.hasNext() );
|
||||
// assertEquals( swap.getName(), "SWAP");
|
||||
// assertEquals( swap.getMacroType(),
|
||||
// IMacroDescriptor.MacroType.FUNCTION_LIKE );
|
||||
// String [] params = swap.getParameters();
|
||||
// assertEquals( params.length, 2 );
|
||||
// assertEquals( params[0], "x");
|
||||
// assertEquals( params[1], "y");
|
||||
// assertFalse(macros.hasNext());
|
||||
// assertEquals(swap.getName(), "SWAP");
|
||||
// assertEquals(swap.getMacroType(),
|
||||
// IMacroDescriptor.MacroType.FUNCTION_LIKE);
|
||||
// String[] params = swap.getParameters();
|
||||
// assertEquals(params.length, 2);
|
||||
// assertEquals(params[0], "x");
|
||||
// assertEquals(params[1], "y");
|
||||
// String completeSignature = swap.getCompleteSignature().trim();
|
||||
// assertEquals( completeSignature, "#define SWAP(x,y) {x|=y;y|=x;x|=y;}");
|
||||
// assertEquals(completeSignature, "#define SWAP(x,y) {x|=y;y|=x;x|=y;}");
|
||||
//
|
||||
// assertEquals( swap.getExpansionSignature().trim(),"{x|=y;y|=x;x|=y;}");
|
||||
// assertEquals(swap.getExpansionSignature().trim(),"{x|=y;y|=x;x|=y;}");
|
||||
//
|
||||
// IToken [] tokens = swap.getTokenizedExpansion();
|
||||
// validateToken( tokens[0], IToken.tLBRACE);
|
||||
// validateIdentifier( tokens[1], "x");
|
||||
// validateToken( tokens[2], IToken.tBITORASSIGN );
|
||||
// validateIdentifier( tokens[3], "y");
|
||||
// validateToken( tokens[4], IToken.tSEMI );
|
||||
// validateIdentifier( tokens[5], "y");
|
||||
// validateToken( tokens[6], IToken.tBITORASSIGN );
|
||||
// validateIdentifier( tokens[7], "x");
|
||||
// validateToken( tokens[8], IToken.tSEMI );
|
||||
// validateIdentifier( tokens[9], "x");
|
||||
// validateToken( tokens[10], IToken.tBITORASSIGN );
|
||||
// validateIdentifier( tokens[11], "y");
|
||||
// validateToken( tokens[12], IToken.tSEMI );
|
||||
// validateToken( tokens[13], IToken.tRBRACE );
|
||||
// IToken[] tokens = swap.getTokenizedExpansion();
|
||||
// validateToken(tokens[0], IToken.tLBRACE);
|
||||
// validateIdentifier(tokens[1], "x");
|
||||
// validateToken(tokens[2], IToken.tBITORASSIGN);
|
||||
// validateIdentifier(tokens[3], "y");
|
||||
// validateToken(tokens[4], IToken.tSEMI);
|
||||
// validateIdentifier(tokens[5], "y");
|
||||
// validateToken(tokens[6], IToken.tBITORASSIGN);
|
||||
// validateIdentifier(tokens[7], "x");
|
||||
// validateToken(tokens[8], IToken.tSEMI);
|
||||
// validateIdentifier(tokens[9], "x");
|
||||
// validateToken(tokens[10], IToken.tBITORASSIGN);
|
||||
// validateIdentifier(tokens[11], "y");
|
||||
// validateToken(tokens[12], IToken.tSEMI);
|
||||
// validateToken(tokens[13], IToken.tRBRACE);
|
||||
// }
|
||||
// /**
|
||||
// * @param token
|
||||
// * @param string
|
||||
// */
|
||||
// private void validateIdentifier(IToken token, String identifierName ) {
|
||||
// validateToken( token, IToken.tIDENTIFIER);
|
||||
// assertEquals( token.getImage(), identifierName );
|
||||
// private void validateIdentifier(IToken token, String identifierName) {
|
||||
// validateToken(token, IToken.tIDENTIFIER);
|
||||
// assertEquals(token.getImage(), identifierName);
|
||||
// }
|
||||
// /**
|
||||
// * @param token
|
||||
// * @param i
|
||||
// */
|
||||
// private void validateToken(IToken token, int signal) {
|
||||
// assertEquals( token.getType(), signal );
|
||||
// assertEquals(token.getType(), signal);
|
||||
// }
|
||||
|
||||
public void testBug47752() throws Exception {
|
||||
//TODO requires CPPVisitor
|
||||
parse("void func( cFoo bar ) try { } catch ( const char * error ){ }");
|
||||
parse("void func(cFoo bar) try { } catch (const char * error){ }");
|
||||
}
|
||||
|
||||
public void testBug47628() throws Exception {
|
||||
|
@ -1354,15 +1331,8 @@ public class QuickParser2Tests extends TestCase {
|
|||
parse("struct file_operations driver_fops = { open: device_open, release: device_release };", true, ParserLanguage.C, true);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string
|
||||
* @param b
|
||||
* @param c
|
||||
* @param d
|
||||
*/
|
||||
protected void parse(String code, boolean expectedToPass,
|
||||
ParserLanguage lang, boolean gcc) throws Exception {
|
||||
|
||||
FileContent codeReader = FileContent.create("<test-code>", code.toCharArray());
|
||||
IScannerInfo scannerInfo = new ScannerInfo();
|
||||
IScanner scanner= AST2BaseTest.createScanner(codeReader, lang, ParserMode.COMPLETE_PARSE, scannerInfo);
|
||||
|
@ -1373,8 +1343,7 @@ public class QuickParser2Tests extends TestCase {
|
|||
config = new GPPParserExtensionConfiguration();
|
||||
else
|
||||
config = new ANSICPPParserExtensionConfiguration();
|
||||
parser2 = new GNUCPPSourceParser(scanner, ParserMode.QUICK_PARSE,
|
||||
NULL_LOG, config);
|
||||
parser2 = new GNUCPPSourceParser(scanner, ParserMode.QUICK_PARSE, NULL_LOG, config);
|
||||
} else {
|
||||
ICParserExtensionConfiguration config = null;
|
||||
if (gcc)
|
||||
|
@ -1382,23 +1351,18 @@ public class QuickParser2Tests extends TestCase {
|
|||
else
|
||||
config = new ANSICParserExtensionConfiguration();
|
||||
|
||||
parser2 = new GNUCSourceParser(scanner, ParserMode.QUICK_PARSE,
|
||||
NULL_LOG, config);
|
||||
parser2 = new GNUCSourceParser(scanner, ParserMode.QUICK_PARSE, NULL_LOG, config);
|
||||
}
|
||||
IASTTranslationUnit tu = parser2.parse();
|
||||
if (parser2.encounteredError() && expectedToPass)
|
||||
throw new ParserException("FAILURE");
|
||||
if (expectedToPass)
|
||||
{
|
||||
if( lang == ParserLanguage.C )
|
||||
{
|
||||
IASTProblem [] problems = CVisitor.getProblems(tu);
|
||||
assertEquals( problems.length, 0 );
|
||||
}
|
||||
else if ( lang == ParserLanguage.CPP )
|
||||
{
|
||||
IASTProblem [] problems = CPPVisitor.getProblems(tu);
|
||||
assertEquals( problems.length, 0 );
|
||||
if (expectedToPass) {
|
||||
if (lang == ParserLanguage.C) {
|
||||
IASTProblem[] problems = CVisitor.getProblems(tu);
|
||||
assertEquals(problems.length, 0);
|
||||
} else if (lang == ParserLanguage.CPP) {
|
||||
IASTProblem[] problems = CPPVisitor.getProblems(tu);
|
||||
assertEquals(problems.length, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1409,8 +1373,7 @@ public class QuickParser2Tests extends TestCase {
|
|||
|
||||
public void testBug61431() throws Exception {
|
||||
for (int i = 0; i < 2; ++i) {
|
||||
ParserLanguage language = (i == 0) ? ParserLanguage.C
|
||||
: ParserLanguage.CPP;
|
||||
ParserLanguage language = (i == 0) ? ParserLanguage.C : ParserLanguage.CPP;
|
||||
parse("int k[][] = { {0, {1}, {2,3}};", false, language);
|
||||
}
|
||||
}
|
||||
|
@ -1458,14 +1421,14 @@ public class QuickParser2Tests extends TestCase {
|
|||
StringWriter writer = new StringWriter();
|
||||
writer.write("#define __declspec(x) __attribute__((x))");
|
||||
writer.write("__declspec (dllimport) int foo;");
|
||||
parse( writer.toString() );
|
||||
parse(writer.toString());
|
||||
}
|
||||
|
||||
public void testBug39704D() throws Exception {
|
||||
StringWriter writer = new StringWriter();
|
||||
writer.write("#define __declspec(x) __attribute__((x))");
|
||||
writer.write("__declspec(dllexport) int func1 (int a) {}");
|
||||
parse( writer.toString() );
|
||||
parse(writer.toString());
|
||||
}
|
||||
|
||||
public void testBug39695() throws Exception {
|
||||
|
@ -1510,8 +1473,7 @@ public class QuickParser2Tests extends TestCase {
|
|||
Writer code = new StringWriter();
|
||||
code.write("__complex__ double x; // complex double\n");
|
||||
code.write("__complex__ short int a; // complex short int\n");
|
||||
code
|
||||
.write("__complex__ float y = 2.5fi; // 2.5 imaginary float literal\n");
|
||||
code.write("__complex__ float y = 2.5fi; // 2.5 imaginary float literal\n");
|
||||
code.write("__complex__ int a = 3i; // imaginary intege r literal\n");
|
||||
code.write("double v = __real__ x; // real part of expression\n");
|
||||
code.write("double w = __imag__ x; // imaginary part of expression\n");
|
||||
|
@ -1532,7 +1494,7 @@ public class QuickParser2Tests extends TestCase {
|
|||
public void testBug39677() throws Exception {
|
||||
parse("B::B() : a(({ 1; })) {}", true, ParserLanguage.CPP, true);
|
||||
Writer writer = new StringWriter();
|
||||
writer.write("B::B() : a(( { int y = foo (); int z;\n");
|
||||
writer.write("B::B() : a(({ int y = foo (); int z;\n");
|
||||
writer.write("if (y > 0) z = y;\n");
|
||||
writer.write("else z = - y;\n");
|
||||
writer.write("z; })) {}\n");
|
||||
|
@ -1562,5 +1524,4 @@ public class QuickParser2Tests extends TestCase {
|
|||
public void testBug39701C() throws Exception {
|
||||
parse("static template class Foo<int>;", true, ParserLanguage.CPP, true);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue