Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Kucera2008-05-06 19:43:14 +0000
committerMike Kucera2008-05-06 19:43:14 +0000
commit3f5cccb36da628db63b7f64d0fbe66497730937e (patch)
treeea00a3bbf3c81d8c2e24c06eabd5a1c6489b98f1 /lrparser
parent72312ab02a508feb53d016c9c518c17c03cabeeb (diff)
downloadorg.eclipse.cdt-3f5cccb36da628db63b7f64d0fbe66497730937e.tar.gz
org.eclipse.cdt-3f5cccb36da628db63b7f64d0fbe66497730937e.tar.xz
org.eclipse.cdt-3f5cccb36da628db63b7f64d0fbe66497730937e.zip
fixed problems with DOM parser running in LR parser suite
Diffstat (limited to 'lrparser')
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCPPSpecFailingTest.java7
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCPPSpecTest.java6
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCSpecFailingTest.java6
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCSpecTests.java6
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRNodeSelectorTest.java10
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRSelectionParseTest.java2
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRTaskParserTest.java4
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRTests.java4
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/ParseHelper.java76
9 files changed, 94 insertions, 27 deletions
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCPPSpecFailingTest.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCPPSpecFailingTest.java
index b9a17971b2a..2ca06bdf816 100644
--- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCPPSpecFailingTest.java
+++ b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCPPSpecFailingTest.java
@@ -44,6 +44,13 @@ public class LRCPPSpecFailingTest extends AST2CPPSpecFailingTest {
return ParseHelper.parse(code, language, true, checkBindings, expectedProblemBindings );
}
+ @Override
+ protected IASTTranslationUnit parse(String code, ParserLanguage lang, String[] problems) throws ParserException {
+ ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
+ return ParseHelper.parse(code, language, problems);
+ }
+
+
protected BaseExtensibleLanguage getCLanguage() {
return C99Language.getDefault();
}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCPPSpecTest.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCPPSpecTest.java
index 7aebd9bf17c..bc2477fecd8 100644
--- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCPPSpecTest.java
+++ b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCPPSpecTest.java
@@ -44,6 +44,12 @@ public class LRCPPSpecTest extends AST2CPPSpecTest {
return ParseHelper.parse(code, language, true, checkBindings, expectedProblemBindings );
}
+ @Override
+ protected IASTTranslationUnit parse(String code, ParserLanguage lang, String[] problems) throws ParserException {
+ ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
+ return ParseHelper.parse(code, language, problems);
+ }
+
protected BaseExtensibleLanguage getCLanguage() {
return C99Language.getDefault();
}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCSpecFailingTest.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCSpecFailingTest.java
index 316f66a0cae..8d942aa60ed 100644
--- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCSpecFailingTest.java
+++ b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCSpecFailingTest.java
@@ -44,6 +44,12 @@ public class LRCSpecFailingTest extends AST2CSpecFailingTest {
return ParseHelper.parse(code, language, true, checkBindings, expectedProblemBindings );
}
+ @Override
+ protected IASTTranslationUnit parse(String code, ParserLanguage lang, String[] problems) throws ParserException {
+ ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
+ return ParseHelper.parse(code, language, problems);
+ }
+
protected BaseExtensibleLanguage getCLanguage() {
return C99Language.getDefault();
}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCSpecTests.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCSpecTests.java
index 5788342de39..6c3833ff6f5 100644
--- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCSpecTests.java
+++ b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRCSpecTests.java
@@ -43,6 +43,12 @@ public class LRCSpecTests extends AST2CSpecTest {
ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
return ParseHelper.parse(code, language, true, checkBindings, expectedProblemBindings );
}
+
+ @Override
+ protected IASTTranslationUnit parse(String code, ParserLanguage lang, String[] problems) throws ParserException {
+ ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
+ return ParseHelper.parse(code, language, problems);
+ }
protected ILanguage getCLanguage() {
return C99Language.getDefault();
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRNodeSelectorTest.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRNodeSelectorTest.java
index 001c04f6faf..9e47a0dc9f7 100644
--- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRNodeSelectorTest.java
+++ b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRNodeSelectorTest.java
@@ -10,6 +10,8 @@
*******************************************************************************/
package org.eclipse.cdt.core.lrparser.tests;
+import java.io.IOException;
+
import junit.framework.TestSuite;
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
@@ -37,6 +39,14 @@ public class LRNodeSelectorTest extends ASTNodeSelectorTest {
return ParseHelper.parse(code, language, expectNoProblems);
}
+ @Override
+ protected void createTranslationUnit() throws IOException {
+ fCode= getContents(1)[0].toString();
+ fTu = ParseHelper.parse(fCode, getCPPLanguage(), false);
+ fSelector= fTu.getNodeSelector(null);
+ }
+
+
protected ILanguage getC99Language() {
return C99Language.getDefault();
}
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRSelectionParseTest.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRSelectionParseTest.java
index efe349389a7..49f82cd7613 100644
--- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRSelectionParseTest.java
+++ b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRSelectionParseTest.java
@@ -74,7 +74,7 @@ public class LRSelectionParseTest extends AST2SelectionParseTest {
String fileName = file.getLocation().toOSString();
ICodeReaderFactory fileCreator = SavedCodeReaderFactory.getInstance();
CodeReader reader = fileCreator.createCodeReaderForTranslationUnit(fileName);
- return ParseHelper.parse(reader, language, scanInfo, fileCreator, expectNoProblems, true, 0);
+ return ParseHelper.parse(reader, language, scanInfo, fileCreator, expectNoProblems, true, 0, null);
}
@Override
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRTaskParserTest.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRTaskParserTest.java
index ced82ae72d6..1882fc7a1ed 100644
--- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRTaskParserTest.java
+++ b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRTaskParserTest.java
@@ -35,6 +35,10 @@ public class LRTaskParserTest extends TaskParserTest {
return ParseHelper.parse(code, language, expectNoProblems);
}
+ @Override
+ protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems, @SuppressWarnings("unused") boolean parseComments) throws ParserException {
+ return parse(code,lang, useGNUExtensions, expectNoProblems );
+ }
protected ILanguage getC99Language() {
return C99Language.getDefault();
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRTests.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRTests.java
index 302632d0f98..72442aa4891 100644
--- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRTests.java
+++ b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/LRTests.java
@@ -47,6 +47,10 @@ public class LRTests extends AST2Tests {
return ParseHelper.parse(code, language, expectNoProblems);
}
+ @Override
+ protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems, @SuppressWarnings("unused") boolean parseComments) throws ParserException {
+ return parse(code,lang, useGNUExtensions, expectNoProblems );
+ }
protected ILanguage getC99Language() {
return C99Language.getDefault();
diff --git a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/ParseHelper.java b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/ParseHelper.java
index f3c18ea5f84..68a8c2b628b 100644
--- a/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/ParseHelper.java
+++ b/lrparser/org.eclipse.cdt.core.lrparser.tests/src/org/eclipse/cdt/core/lrparser/tests/ParseHelper.java
@@ -10,6 +10,9 @@
*******************************************************************************/
package org.eclipse.cdt.core.lrparser.tests;
+import java.util.ArrayList;
+import java.util.List;
+
import junit.framework.AssertionFailedError;
import org.eclipse.cdt.core.dom.ICodeReaderFactory;
@@ -32,54 +35,69 @@ import org.eclipse.core.runtime.CoreException;
*
* @author Mike Kucera
*/
-@SuppressWarnings("restriction")
+@SuppressWarnings({"restriction", "nls"})
public class ParseHelper {
static int testsRun = 0;
- private static class NameResolver extends ASTVisitor {
+
+
+ static protected class NameResolver extends ASTVisitor {
{
shouldVisitNames = true;
}
- public int numProblemBindings = 0;
+
+ public List<IASTName> nameList = new ArrayList<IASTName>();
+ public List<String> problemBindings = new ArrayList<String>();
public int numNullBindings = 0;
+
@Override
- public int visit( IASTName name ){
- //System.out.println("Visit Name: '" + name.toString() + "'");
+ public int visit(IASTName name) {
+ nameList.add(name);
IBinding binding = name.resolveBinding();
- if (binding instanceof IProblemBinding) {
- numProblemBindings++;
- //System.out.println("Problem Binding: " + name);
- }
- if (binding == null) {
+ if (binding instanceof IProblemBinding)
+ problemBindings.add(name.toString());
+ if (binding == null)
numNullBindings++;
- //System.out.println("Null Binding: " + name);
- }
return PROCESS_CONTINUE;
}
+
+ public IASTName getName(int idx) {
+ if(idx < 0 || idx >= nameList.size())
+ return null;
+ return nameList.get(idx);
+ }
+
+ public int size() {
+ return nameList.size();
+ }
}
public static IASTTranslationUnit parse(char[] code, ILanguage lang, boolean expectNoProblems, boolean checkBindings, int expectedProblemBindings) {
CodeReader codeReader = new CodeReader(code);
- return parse(codeReader, lang, new ScannerInfo(), null, expectNoProblems, checkBindings, expectedProblemBindings);
+ return parse(codeReader, lang, new ScannerInfo(), null, expectNoProblems, checkBindings, expectedProblemBindings, null);
}
public static IASTTranslationUnit parse(String code, ILanguage lang, boolean expectNoProblems, boolean checkBindings, int expectedProblemBindings) {
return parse(code.toCharArray(), lang, expectNoProblems, checkBindings, expectedProblemBindings);
}
-
public static IASTTranslationUnit parse(String code, ILanguage lang, boolean expectNoProblems) {
return parse(code, lang, expectNoProblems, false, 0);
}
+ public static IASTTranslationUnit parse(String code, ILanguage lang, String[] problems) {
+ CodeReader codeReader = new CodeReader(code.toCharArray());
+ return parse(codeReader, lang, new ScannerInfo(), null, true, true, problems.length, problems);
+ }
-
+
public static IASTTranslationUnit parse(CodeReader codeReader, ILanguage language, IScannerInfo scanInfo,
- ICodeReaderFactory fileCreator, boolean expectNoProblems, boolean checkBindings, int expectedProblemBindings) {
+ ICodeReaderFactory fileCreator, boolean expectNoProblems,
+ boolean checkBindings, int expectedProblemBindings, String[] problems) {
testsRun++;
IASTTranslationUnit tu;
@@ -90,26 +108,32 @@ public class ParseHelper {
}
// should parse correctly first before we look at the bindings
- if(expectNoProblems )
- {
- if (CVisitor.getProblems(tu).length != 0) {
- throw new AssertionFailedError(" CVisitor has AST Problems " ); //$NON-NLS-1$
+ if(expectNoProblems) {
+
+ // this should work for C++ also, CVisitor.getProblems() and CPPVisitor.getProblems() are exactly the same code!
+ if (CVisitor.getProblems(tu).length != 0) {
+ throw new AssertionFailedError(" CVisitor has AST Problems " );
}
-
- // TODO: actually collect preprocessor problems
if (tu.getPreprocessorProblems().length != 0) {
- throw new AssertionFailedError(" C TranslationUnit has Preprocessor Problems " ); //$NON-NLS-1$
+ throw new AssertionFailedError(" C TranslationUnit has Preprocessor Problems " );
}
}
// resolve all bindings
if (checkBindings) {
-
NameResolver res = new NameResolver();
tu.accept( res );
- if (res.numProblemBindings != expectedProblemBindings )
- throw new AssertionFailedError("Expected " + expectedProblemBindings + " problem(s), encountered " + res.numProblemBindings ); //$NON-NLS-1$ //$NON-NLS-2$
+ if(res.problemBindings.size() != expectedProblemBindings)
+ throw new AssertionFailedError("Expected " + expectedProblemBindings + " problem(s), encountered " + res.problemBindings.size());
+ if(problems != null) {
+ for(int i = 0; i < problems.length; i++) {
+ String expected = problems[i];
+ String actual = res.problemBindings.get(i);
+ if(!expected.equals(actual))
+ throw new AssertionFailedError(String.format("Problem binding not equal, expected: %s, got: %s", expected, actual));
+ }
+ }
}
return tu;

Back to the top