1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-06-09 02:36:01 +02:00

improve diagnostics

This commit is contained in:
Andrew Ferguson 2008-04-03 14:07:31 +00:00
parent 307bcca6a5
commit 45d5fd9bc9
3 changed files with 34 additions and 10 deletions

View file

@ -298,6 +298,14 @@ public class AST2BaseTest extends BaseTestCase {
return nameList.get(idx); return nameList.get(idx);
} }
public int size() { return nameList.size(); } public int size() { return nameList.size(); }
public void dump() {
for(int i=0; i<size(); i++) {
IASTName name= getName(i);
String parent= name.getParent() != null ? name.getParent().getRawSignature() : "";
System.out.println(i+": #"+name.getRawSignature()+"# "+parent);
}
}
} }
protected void assertInstances( CPPNameCollector collector, IBinding binding, int num ) throws Exception { protected void assertInstances( CPPNameCollector collector, IBinding binding, int num ) throws Exception {

View file

@ -18,6 +18,7 @@ import org.eclipse.cdt.internal.core.index.CIndex;
import org.eclipse.cdt.internal.core.index.IIndexFragment; import org.eclipse.cdt.internal.core.index.IIndexFragment;
import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.PDOM;
import org.eclipse.cdt.internal.core.pdom.db.IBTreeVisitor; import org.eclipse.cdt.internal.core.pdom.db.IBTreeVisitor;
import org.eclipse.cdt.internal.core.pdom.dom.PDOMBinding;
import org.eclipse.cdt.internal.core.pdom.dom.PDOMNode; import org.eclipse.cdt.internal.core.pdom.dom.PDOMNode;
import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.CoreException;
@ -36,7 +37,15 @@ public class PDOMPrettyPrinter implements IPDOMVisitor {
public boolean visit(IPDOMNode node) throws CoreException { public boolean visit(IPDOMNode node) throws CoreException {
indent.append(step); indent.append(step);
System.out.println(indent+""+node); StringBuilder sb= new StringBuilder();
sb.append(indent);
sb.append(node);
if(node instanceof PDOMBinding) {
sb.append(" ");
PDOMBinding binding= (PDOMBinding) node;
sb.append(" "+binding.getRecord());
}
System.out.println(sb);
return true; return true;
} }

View file

@ -17,7 +17,6 @@ import java.lang.reflect.Modifier;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.HashSet; import java.util.HashSet;
import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
@ -37,6 +36,7 @@ import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.ILogListener; import org.eclipse.core.runtime.ILogListener;
import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.MultiStatus;
import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.NullProgressMonitor;
public class BaseTestCase extends TestCase { public class BaseTestCase extends TestCase {
@ -117,7 +117,7 @@ public class BaseTestCase extends TestCase {
@Override @Override
public void runBare() throws Throwable { public void runBare() throws Throwable {
final List statusLog= Collections.synchronizedList(new ArrayList()); final List<IStatus> statusLog= Collections.synchronizedList(new ArrayList());
ILogListener logListener= new ILogListener() { ILogListener logListener= new ILogListener() {
public void logging(IStatus status, String plugin) { public void logging(IStatus status, String plugin) {
if(!status.isOK() && status.getSeverity() != IStatus.INFO) { if(!status.isOK() && status.getSeverity() != IStatus.INFO) {
@ -143,13 +143,20 @@ public class BaseTestCase extends TestCase {
msg.append("non-OK status objects differs from actual ("+statusLog.size()+").\n"); msg.append("non-OK status objects differs from actual ("+statusLog.size()+").\n");
Throwable cause= null; Throwable cause= null;
if(!statusLog.isEmpty()) { if(!statusLog.isEmpty()) {
for(Iterator i= statusLog.iterator(); i.hasNext(); ) { for(IStatus status : statusLog) {
IStatus status= (IStatus) i.next(); IStatus[] ss= {status};
if(cause==null) { ss= status instanceof MultiStatus ? ((MultiStatus)status).getChildren() : ss;
cause= status.getException(); for(IStatus s : ss) {
msg.append("\t"+s.getMessage()+" ");
Throwable t= s.getException();
cause= (cause==null) ? t : cause;
if(t != null) {
msg.append(t.getMessage()!=null ? t.getMessage() : t.getClass().getCanonicalName());
}
msg.append("\n");
} }
Throwable t= status.getException();
msg.append("\t"+status.getMessage()+" "+(t!=null?t.getMessage():"")+"\n");
} }
} }
AssertionFailedError afe= new AssertionFailedError(msg.toString()); AssertionFailedError afe= new AssertionFailedError(msg.toString());