From f635f6c7d84808738b9b5e8abca2b6515cce09a4 Mon Sep 17 00:00:00 2001 From: Andrew Gvozdev Date: Tue, 11 Aug 2015 10:08:37 -0400 Subject: [PATCH] Bug 470538 - Build selected File(s) should create error/warning marker Change-Id: I0f37e3733299ab0e0db262a0194c9734b39eea94 Signed-off-by: Andrew Gvozdev --- .../core/GeneratedMakefileBuilder.java | 1 + .../eclipse/cdt/core/resources/ACBuilder.java | 36 +++++++++++++++---- 2 files changed, 31 insertions(+), 6 deletions(-) diff --git a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/GeneratedMakefileBuilder.java b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/GeneratedMakefileBuilder.java index d36a1d8f5f6..7b3a0ebe102 100644 --- a/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/GeneratedMakefileBuilder.java +++ b/build/org.eclipse.cdt.managedbuilder.core/src/org/eclipse/cdt/managedbuilder/internal/core/GeneratedMakefileBuilder.java @@ -1407,6 +1407,7 @@ public class GeneratedMakefileBuilder extends ACBuilder { for (List filesInProject : projectMap.values()) { IProject project = filesInProject.get(0).getProject(); + setCurrentProject(project); monitor.subTask(ManagedMakeMessages.getFormattedString("GeneratedMakefileBuilder.buildingProject", project.getName())); //$NON-NLS-1$ invokeInternalBuilderForOneProject(filesInProject, new SubProgressMonitor(monitor, 1 * PROGRESS_MONITOR_SCALE, SubProgressMonitor.PREPEND_MAIN_LABEL_TO_SUBTASK)); } diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/resources/ACBuilder.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/resources/ACBuilder.java index aa56c6a94f5..8cb31bbec2e 100644 --- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/resources/ACBuilder.java +++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/resources/ACBuilder.java @@ -43,6 +43,8 @@ public abstract class ACBuilder extends IncrementalProjectBuilder implements IMa /** @since 5.2 */ // set to true to print build events on the console in debug mode protected static final boolean DEBUG_EVENTS = false; + private IProject currentProject; + /** * Constructor for ACBuilder */ @@ -50,19 +52,41 @@ public abstract class ACBuilder extends IncrementalProjectBuilder implements IMa super(); } + /** + * Set the current project that this builder is running. + * + * @since 5.11 + */ + protected void setCurrentProject(IProject project) { + this.currentProject = project; + } + + /** + * Returns the current project that this builder is running. + * + * @return the project + * @since 5.11 + */ + protected IProject getCurrentProject() { + if (currentProject != null) { + return currentProject; + } + return super.getProject(); + } + @Override public void addMarker(IResource file, int lineNumber, String errorDesc, int severity, String errorVar) { ProblemMarkerInfo problemMarkerInfo = new ProblemMarkerInfo(file, lineNumber, errorDesc, severity, errorVar, null); addMarker(problemMarkerInfo); } - /* - * callback from Output Parser + /** + * Callback from Output Parser */ @Override public void addMarker(ProblemMarkerInfo problemMarkerInfo) { try { - IProject project = getProject(); + IProject project = getCurrentProject(); IResource markerResource = problemMarkerInfo.file; if (markerResource == null) { markerResource = project; @@ -136,7 +160,7 @@ public abstract class ACBuilder extends IncrementalProjectBuilder implements IMa } - int mapMarkerSeverity(int severity) { + private int mapMarkerSeverity(int severity) { switch (severity) { case SEVERITY_ERROR_BUILD : case SEVERITY_ERROR_RESOURCE : @@ -190,7 +214,7 @@ public abstract class ACBuilder extends IncrementalProjectBuilder implements IMa @SuppressWarnings("nls") private String cfgIdToNames(String strIds) { - IProject project = getProject(); + IProject project = getCurrentProject(); ICProjectDescription prjDesc = CoreModel.getDefault().getProjectDescription(project, false); if (prjDesc == null) { return strIds; @@ -233,7 +257,7 @@ public abstract class ACBuilder extends IncrementalProjectBuilder implements IMa String ids = args!=null ? args.get(CONTENTS_CONFIGURATION_IDS) : null; System.out.println("t"+Thread.currentThread().getId()+": " + kindToString(kind) - + ", " + getProject() + + ", " + getCurrentProject() + "[" + cfgIdToNames(ids) +"]" + ", " + this.getClass().getSimpleName() );