[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[cdt-patch] MakeErrorParser.java Fixes.
|
Index: ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/ChangeLog,v
retrieving revision 1.52
diff -u -r1.52 ChangeLog
--- ChangeLog 19 Dec 2002 20:50:25 -0000 1.52
+++ ChangeLog 20 Dec 2002 21:10:19 -0000
@@ -1,3 +1,19 @@
+2002-12-20 Alain Magloire
+
+ Bug fix, We use a feature of GNU make to help track the directories
+ Entering Directory '...'
+ Leaving Directory '...'
+ It looks like sometimes we loose track, or GNU make does not show
+ a "Leaving Directory" this may actually depend on how it was spawn,
+ you can suppress the message. If you loose track we popDirectories()
+ and try to recover.
+
+ * src/org/eclipse/cdt/core/ErrorParserManager.java (popDirectory):
+ Is throwing NoSuchElement, check the size of the stack first.
+
+ * src/org/eclipse/cdt/internal/errorparsers/MakeErrorParser.java (processLine):
+ Recover when loosing track.
+
2002-12-19 Alain Magloire
* model/org/eclipse/cdt/internal/core/model/parser/BinaryContainerAdapter.java (getFile):
Index: src/org/eclipse/cdt/core/ErrorParserManager.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/src/org/eclipse/cdt/core/ErrorParserManager.java,v
retrieving revision 1.8
diff -u -r1.8 ErrorParserManager.java
--- src/org/eclipse/cdt/core/ErrorParserManager.java 19 Dec 2002 19:20:18 -0000 1.8
+++ src/org/eclipse/cdt/core/ErrorParserManager.java 20 Dec 2002 21:10:19 -0000
@@ -90,7 +90,7 @@
}
// Fallback to the Project Location
// FIXME: if the build did not start in the Project ?
- return fProject.getLocation();
+ return fBaseDirectory;
}
public void pushDirectory(IPath dir) {
@@ -99,8 +99,7 @@
if (fBaseDirectory.isPrefixOf(dir)) {
int segments = fBaseDirectory.matchingFirstSegments(dir);
pwd = dir.removeFirstSegments(segments);
- }
- else {
+ } else {
pwd = dir;
}
fDirectoryStack.addElement(pwd);
@@ -109,11 +108,12 @@
public IPath popDirectory() {
int i = fDirectoryStack.size();
- IPath dir = (IPath) fDirectoryStack.lastElement();
- if (i != 0) {
+ if (i != 0) {
+ IPath dir = (IPath) fDirectoryStack.lastElement();
fDirectoryStack.removeElementAt(i - 1);
+ return dir;
}
- return dir;
+ return new Path("");
}
public int getDirectoryLevel() {
Index: src/org/eclipse/cdt/internal/errorparsers/MakeErrorParser.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/errorparsers/MakeErrorParser.java,v
retrieving revision 1.4
diff -u -r1.4 MakeErrorParser.java
--- src/org/eclipse/cdt/internal/errorparsers/MakeErrorParser.java 7 Nov 2002 03:20:00 -0000 1.4
+++ src/org/eclipse/cdt/internal/errorparsers/MakeErrorParser.java 20 Dec 2002 21:10:19 -0000
@@ -45,11 +45,9 @@
*/
int level = getDirectoryLevel(line);
int parseLevel = eoParser.getDirectoryLevel();
- if (level <= parseLevel) {
- for ( ; level <= parseLevel; level++) {
- eoParser.popDirectory();
- }
- }
+ for (; level < parseLevel; level++) {
+ eoParser.popDirectory();
+ }
eoParser.pushDirectory(new Path(dir));
} else {
eoParser.popDirectory();