1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-23 14:42:11 +02:00

builder fixes

This commit is contained in:
David Inglis 2002-10-28 14:05:29 +00:00
parent 113211c2e4
commit d6eb399569
3 changed files with 50 additions and 15 deletions

View file

@ -1,3 +1,10 @@
2002-10-28 David Inglis
* src/.../core/resources/ACBuilder.java
Added check for duplicate markers.
* src/.../internal/core/CBuilder.java
Added check for canceled build and throws OperationCanceledException exception
2002-10-25 Alain Magloire
The debugger needs to know the endian of a binary. For example

View file

@ -5,7 +5,6 @@ package org.eclipse.cdt.core.resources;
* All Rights Reserved.
*/
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.IMarkerGenerator;
import org.eclipse.cdt.core.model.ICModelMarker;
@ -29,7 +28,22 @@ public abstract class ACBuilder extends IncrementalProjectBuilder implements IMa
*/
//public void addMarker(IFile file, int lineNumber, String errorDesc, int severity) {
public void addMarker(IResource file, int lineNumber, String errorDesc, int severity, String errorVar) {
try {
IMarker[] cur = file.findMarkers(ICModelMarker.C_MODEL_PROBLEM_MARKER, false, IResource.DEPTH_ONE);
/*
* Try to find matching markers and don't put in duplicates
*/
if ((cur != null) && (cur.length > 0)) {
for (int i = 0; i < cur.length; i++) {
if ((((Integer) cur[i].getAttribute(IMarker.LOCATION)).intValue() == lineNumber)
&& (((Integer) cur[i].getAttribute(IMarker.SEVERITY)).intValue() == severity)
&& (((String) cur[i].getAttribute(IMarker.MESSAGE)).equals(errorDesc))) {
return;
}
}
}
IMarker marker = file.createMarker(ICModelMarker.C_MODEL_PROBLEM_MARKER);
marker.setAttribute(IMarker.LOCATION, lineNumber);
marker.setAttribute(IMarker.MESSAGE, errorDesc);
@ -40,7 +54,8 @@ public abstract class ACBuilder extends IncrementalProjectBuilder implements IMa
if (errorVar != null) {
marker.setAttribute(ICModelMarker.C_MODEL_MARKER_VARIABLE, errorVar);
}
} catch (CoreException e) {
}
catch (CoreException e) {
CCorePlugin.log(e.getStatus());
}
@ -61,4 +76,3 @@ public abstract class ACBuilder extends IncrementalProjectBuilder implements IMa
public abstract IPath getWorkingDirectory();
}

View file

@ -29,6 +29,7 @@ import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.OperationCanceledException;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.SubProgressMonitor;
@ -57,6 +58,7 @@ public class CBuilder extends ACBuilder {
if ( isClean ) {
forgetLastBuiltState();
}
checkCancel(monitor);
return getProject().getReferencedProjects();
}
@ -64,6 +66,7 @@ public class CBuilder extends ACBuilder {
private boolean invokeMake(boolean fullBuild, IProgressMonitor monitor) {
boolean isClean = false;
boolean fatalBuild = false;
boolean isCanceled = false;
IProject currProject= getProject();
SubProgressMonitor subMonitor = null;
@ -117,6 +120,8 @@ public class CBuilder extends ACBuilder {
launcher.execute(makepath, userArgs, env, workingDirectory);
if (launcher.waitAndRead(epm.getOutputStream(), epm.getOutputStream(), subMonitor) != CommandLauncher.OK)
errMsg = launcher.getErrorMessage();
isCanceled = monitor.isCanceled();
monitor.setCanceled(false);
subMonitor = new SubProgressMonitor(monitor, IProgressMonitor.UNKNOWN);
subMonitor.subTask("Refresh From Local");
@ -141,6 +146,7 @@ public class CBuilder extends ACBuilder {
fatalBuild = epm.reportProblems();
}
subMonitor.done();
monitor.setCanceled(isCanceled);
}
} catch (Exception e) {
CCorePlugin.log(e);
@ -149,6 +155,14 @@ public class CBuilder extends ACBuilder {
return (isClean || fatalBuild);
}
/**
* Check whether the build has been canceled.
*/
public void checkCancel(IProgressMonitor monitor) {
if (monitor != null && monitor.isCanceled())
throw new OperationCanceledException();
}
private String[] parseArguments(boolean fullBuild, String override_args) {
ArrayList list= new ArrayList();
IProject currProject = getProject();