From 930b697e19373d2ff057e64ad69ad9db01ea786f Mon Sep 17 00:00:00 2001 From: Alain Magloire Date: Tue, 30 Aug 2005 19:49:11 +0000 Subject: 2005-08-30 Alain Magloire New test in PR 107150 (written by Devin Steffler) * parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java * parser/org/eclipse/cdt/core/parser/tests/ast2/AST2Tests.java * parser/org/eclipse/cdt/core/parser/tests/scanner2/Scanner2Test.java --- core/org.eclipse.cdt.core.tests/ChangeLog | 6 +++ .../cdt/core/parser/tests/ast2/AST2CPPTests.java | 27 ++++++++++ .../cdt/core/parser/tests/ast2/AST2Tests.java | 57 ++++++++++++++++++++++ .../core/parser/tests/scanner2/Scanner2Test.java | 42 ++++++++++++++++ 4 files changed, 132 insertions(+) diff --git a/core/org.eclipse.cdt.core.tests/ChangeLog b/core/org.eclipse.cdt.core.tests/ChangeLog index ca3a435ecf8..0ce25cd5161 100644 --- a/core/org.eclipse.cdt.core.tests/ChangeLog +++ b/core/org.eclipse.cdt.core.tests/ChangeLog @@ -1,3 +1,9 @@ +2005-08-30 Alain Magloire + New test in PR 107150 (written by Devin Steffler) + * parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java + * parser/org/eclipse/cdt/core/parser/tests/ast2/AST2Tests.java + * parser/org/eclipse/cdt/core/parser/tests/scanner2/Scanner2Test.java + 2005-06-26 Alain Magloire * model/org/eclipse/cdt/core/model/tests/StructuralTemplateTests.java diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java index 588efc8aaad..ba91a62cce2 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2CPPTests.java @@ -36,6 +36,7 @@ import org.eclipse.cdt.core.dom.ast.IASTLabelStatement; import org.eclipse.cdt.core.dom.ast.IASTLiteralExpression; import org.eclipse.cdt.core.dom.ast.IASTName; import org.eclipse.cdt.core.dom.ast.IASTNamedTypeSpecifier; +import org.eclipse.cdt.core.dom.ast.IASTProblemDeclaration; import org.eclipse.cdt.core.dom.ast.IASTReturnStatement; import org.eclipse.cdt.core.dom.ast.IASTSimpleDeclSpecifier; import org.eclipse.cdt.core.dom.ast.IASTSimpleDeclaration; @@ -5099,4 +5100,30 @@ public class AST2CPPTests extends AST2BaseTest { IASTCompoundStatement body = (IASTCompoundStatement) f.getBody(); assertEquals( body.getStatements().length, 3 ); } + + public void testBug107150() throws Exception { + StringBuffer buffer = new StringBuffer(); + buffer.append("#define FUNC_PROTOTYPE_PARAMS(list) list\r\n"); //$NON-NLS-1$ + buffer.append("int func1 FUNC_PROTOTYPE_PARAMS((int arg1)){\r\n"); //$NON-NLS-1$ + buffer.append("return 0;\r\n"); //$NON-NLS-1$ + buffer.append("}\r\n"); //$NON-NLS-1$ + buffer.append("int func2 FUNC_PROTOTYPE_PARAMS\r\n"); //$NON-NLS-1$ + buffer.append("((int arg1)){\r\n"); //$NON-NLS-1$ + buffer.append("return 0;\r\n"); //$NON-NLS-1$ + buffer.append("}\r\n"); //$NON-NLS-1$ + IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.CPP); + assertFalse( tu.getDeclarations()[1] instanceof IASTProblemDeclaration ); + + buffer = new StringBuffer(); + buffer.append("#define FUNC_PROTOTYPE_PARAMS(list) list\n"); //$NON-NLS-1$ + buffer.append("int func1 FUNC_PROTOTYPE_PARAMS((int arg1)){\n"); //$NON-NLS-1$ + buffer.append("return 0;\n"); //$NON-NLS-1$ + buffer.append("}\n"); //$NON-NLS-1$ + buffer.append("int func2 FUNC_PROTOTYPE_PARAMS\n"); //$NON-NLS-1$ + buffer.append("((int arg1)){\n"); //$NON-NLS-1$ + buffer.append("return 0;\n"); //$NON-NLS-1$ + buffer.append("}\n"); //$NON-NLS-1$ + tu = parse(buffer.toString(), ParserLanguage.CPP); + assertFalse( tu.getDeclarations()[1] instanceof IASTProblemDeclaration ); + } } diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2Tests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2Tests.java index eab89b845ea..270ac2c493e 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2Tests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2Tests.java @@ -41,6 +41,7 @@ import org.eclipse.cdt.core.dom.ast.IASTNamedTypeSpecifier; import org.eclipse.cdt.core.dom.ast.IASTNullStatement; import org.eclipse.cdt.core.dom.ast.IASTParameterDeclaration; import org.eclipse.cdt.core.dom.ast.IASTProblem; +import org.eclipse.cdt.core.dom.ast.IASTProblemDeclaration; import org.eclipse.cdt.core.dom.ast.IASTReturnStatement; import org.eclipse.cdt.core.dom.ast.IASTSimpleDeclSpecifier; import org.eclipse.cdt.core.dom.ast.IASTSimpleDeclaration; @@ -3367,4 +3368,60 @@ public class AST2Tests extends AST2BaseTest { IASTCompoundStatement body = (IASTCompoundStatement) f.getBody(); assertEquals( body.getStatements().length, 3 ); } + + public void testBug107150() throws Exception { + StringBuffer buffer = new StringBuffer(); + buffer.append("#define FUNC_PROTOTYPE_PARAMS(list) list\r\n"); //$NON-NLS-1$ + buffer.append("int func1 FUNC_PROTOTYPE_PARAMS((int arg1)){\r\n"); //$NON-NLS-1$ + buffer.append("return 0;\r\n"); //$NON-NLS-1$ + buffer.append("}\r\n"); //$NON-NLS-1$ + buffer.append("int func2 FUNC_PROTOTYPE_PARAMS\r\n"); //$NON-NLS-1$ + buffer.append("((int arg1)){\r\n"); //$NON-NLS-1$ + buffer.append("return 0;\r\n"); //$NON-NLS-1$ + buffer.append("}\r\n"); //$NON-NLS-1$ + parse(buffer.toString(), ParserLanguage.C); + IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.CPP); + assertFalse( tu.getDeclarations()[1] instanceof IASTProblemDeclaration ); + + buffer = new StringBuffer(); + buffer.append("#define FUNC_PROTOTYPE_PARAMS(list) list\n"); //$NON-NLS-1$ + buffer.append("int func1 FUNC_PROTOTYPE_PARAMS((int arg1)){\n"); //$NON-NLS-1$ + buffer.append("return 0;\n"); //$NON-NLS-1$ + buffer.append("}\n"); //$NON-NLS-1$ + buffer.append("int func2 FUNC_PROTOTYPE_PARAMS\n"); //$NON-NLS-1$ + buffer.append("((int arg1)){\n"); //$NON-NLS-1$ + buffer.append("return 0;\n"); //$NON-NLS-1$ + buffer.append("}\n"); //$NON-NLS-1$ + parse(buffer.toString(), ParserLanguage.C); + tu = parse(buffer.toString(), ParserLanguage.CPP); + assertFalse( tu.getDeclarations()[1] instanceof IASTProblemDeclaration ); + } + + public void testBug107150b() throws Exception { + StringBuffer buffer = new StringBuffer(); + buffer.append("#define FUNC_PROTOTYPE_PARAMS(list) list\r\n"); //$NON-NLS-1$ + buffer.append("int func1 FUNC_PROTOTYPE_PARAMS((int arg1)){\r\n"); //$NON-NLS-1$ + buffer.append("return 0;\r\n"); //$NON-NLS-1$ + buffer.append("}\r\n"); //$NON-NLS-1$ + buffer.append("int func2 FUNC_PROTOTYPE_PARAMS\r\n \r\n \t \r\n \r\n "); //$NON-NLS-1$ + buffer.append("((int arg1)){\r\n"); //$NON-NLS-1$ + buffer.append("return 0;\r\n"); //$NON-NLS-1$ + buffer.append("}\r\n"); //$NON-NLS-1$ + parse(buffer.toString(), ParserLanguage.C); + IASTTranslationUnit tu = parse(buffer.toString(), ParserLanguage.CPP); + assertFalse( tu.getDeclarations()[1] instanceof IASTProblemDeclaration ); + + buffer = new StringBuffer(); + buffer.append("#define FUNC_PROTOTYPE_PARAMS(list) list\n"); //$NON-NLS-1$ + buffer.append("int func1 FUNC_PROTOTYPE_PARAMS((int arg1)){\n"); //$NON-NLS-1$ + buffer.append("return 0;\n"); //$NON-NLS-1$ + buffer.append("}\n"); //$NON-NLS-1$ + buffer.append("int func2 FUNC_PROTOTYPE_PARAMS\n"); //$NON-NLS-1$ + buffer.append("((int arg1)){\n"); //$NON-NLS-1$ + buffer.append("return 0;\n"); //$NON-NLS-1$ + buffer.append("}\n"); //$NON-NLS-1$ + parse(buffer.toString(), ParserLanguage.C); + tu = parse(buffer.toString(), ParserLanguage.CPP); + assertFalse( tu.getDeclarations()[1] instanceof IASTProblemDeclaration ); + } } \ No newline at end of file diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/scanner2/Scanner2Test.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/scanner2/Scanner2Test.java index 7f01a23b491..09e7e7825c0 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/scanner2/Scanner2Test.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/scanner2/Scanner2Test.java @@ -2364,4 +2364,46 @@ public class Scanner2Test extends BaseScanner2Test fullyTokenize(); } + public void testBug107150() throws Exception { + Writer writer = new StringWriter(); + writer.write("#define FUNC_PROTOTYPE_PARAMS(list) list\r\n"); //$NON-NLS-1$ + writer.write("int func2 FUNC_PROTOTYPE_PARAMS\r\n"); //$NON-NLS-1$ + writer.write("((int arg1)){\r\n"); //$NON-NLS-1$ + writer.write(" return 0;\r\n"); //$NON-NLS-1$ + writer.write("}\r\n"); //$NON-NLS-1$ + initializeScanner( writer.toString() ); + validateToken( IToken.t_int ); + validateIdentifier( "func2" ); //$NON-NLS-1$ + validateToken( IToken.tLPAREN ); + validateToken( IToken.t_int ); + validateIdentifier( "arg1" ); //$NON-NLS-1$ + validateToken( IToken.tRPAREN ); + validateToken( IToken.tLBRACE ); + validateToken( IToken.t_return ); + validateInteger( "0" ); + validateToken( IToken.tSEMI ); + validateToken( IToken.tRBRACE ); + validateEOF(); + + writer = new StringWriter(); + writer.write("#define FUNC_PROTOTYPE_PARAMS(list) list\n"); //$NON-NLS-1$ + writer.write("int func2 FUNC_PROTOTYPE_PARAMS\n"); //$NON-NLS-1$ + writer.write("((int arg1)){\n"); //$NON-NLS-1$ + writer.write(" return 0;\n"); //$NON-NLS-1$ + writer.write("}\n"); //$NON-NLS-1$ + initializeScanner( writer.toString() ); + validateToken( IToken.t_int ); + validateIdentifier( "func2" ); //$NON-NLS-1$ + validateToken( IToken.tLPAREN ); + validateToken( IToken.t_int ); + validateIdentifier( "arg1" ); //$NON-NLS-1$ + validateToken( IToken.tRPAREN ); + validateToken( IToken.tLBRACE ); + validateToken( IToken.t_return ); + validateInteger( "0" ); + validateToken( IToken.tSEMI ); + validateToken( IToken.tRBRACE ); + validateEOF(); + } + } -- cgit v1.2.3