Lines 76-90
Link Here
|
76 |
private Stack<FileObject> relativesTo = new Stack<FileObject>(); |
76 |
private Stack<FileObject> relativesTo = new Stack<FileObject>(); |
77 |
private Stack<Integer> relativesLevel = new Stack<Integer>(); |
77 |
private Stack<Integer> relativesLevel = new Stack<Integer>(); |
78 |
private ArrayList<StackIncludeItem> errorInludes = new ArrayList<StackIncludeItem>(); |
78 |
private ArrayList<StackIncludeItem> errorInludes = new ArrayList<StackIncludeItem>(); |
79 |
private boolean isEntered; |
|
|
80 |
private OutputListenerRegistry listenerRegistry; |
79 |
private OutputListenerRegistry listenerRegistry; |
81 |
|
80 |
|
82 |
public GCCErrorParser(Project project, CompilerFlavor flavor, ExecutionEnvironment execEnv, FileObject relativeTo) { |
81 |
public GCCErrorParser(Project project, CompilerFlavor flavor, ExecutionEnvironment execEnv, FileObject relativeTo) { |
83 |
super(project, execEnv, relativeTo); |
82 |
super(project, execEnv, relativeTo); |
84 |
this.relativesTo.push(relativeTo); |
83 |
this.relativesTo.push(relativeTo); |
85 |
this.relativesLevel.push(0); |
84 |
this.relativesLevel.push(0); |
86 |
this.isEntered = false; |
85 |
init(flavor); |
87 |
init(flavor); |
|
|
88 |
} |
86 |
} |
89 |
|
87 |
|
90 |
private void init(CompilerFlavor flavor) { |
88 |
private void init(CompilerFlavor flavor) { |
Lines 201-206
Link Here
|
201 |
|
199 |
|
202 |
private Result handleLine(String line, Matcher m) { |
200 |
private Result handleLine(String line, Matcher m) { |
203 |
if (m.pattern() == GCC_DIRECTORY_ENTER || m.pattern() == GCC_DIRECTORY_LEAVE) { |
201 |
if (m.pattern() == GCC_DIRECTORY_ENTER || m.pattern() == GCC_DIRECTORY_LEAVE) { |
|
|
202 |
boolean isEntered = m.pattern() == GCC_DIRECTORY_ENTER; |
204 |
String levelString = m.group(1); |
203 |
String levelString = m.group(1); |
205 |
int level = levelString == null ? 0 : Integer.parseInt(levelString); |
204 |
int level = levelString == null ? 0 : Integer.parseInt(levelString); |
206 |
int baseLavel = relativesLevel.peek(); |
205 |
int baseLavel = relativesLevel.peek(); |
Lines 210-219
Link Here
|
210 |
relativesLevel.push(level); |
209 |
relativesLevel.push(level); |
211 |
isEntered = true; |
210 |
isEntered = true; |
212 |
} else if (level == baseLavel) { |
211 |
} else if (level == baseLavel) { |
213 |
isEntered = !this.isEntered; |
212 |
// |
214 |
} else { |
213 |
} else { |
215 |
isEntered = false; |
214 |
isEntered = false; |
216 |
popLevel(); |
|
|
217 |
} |
215 |
} |
218 |
if (isEntered) { |
216 |
if (isEntered) { |
219 |
if (!CndPathUtilities.isAbsolute(directory)) { |
217 |
if (!CndPathUtilities.isAbsolute(directory)) { |
Lines 225-235
Link Here
|
225 |
} |
223 |
} |
226 |
FileObject relativeDir = resolveFile(directory); |
224 |
FileObject relativeDir = resolveFile(directory); |
227 |
if (relativeDir != null && relativeDir.isValid()) { |
225 |
if (relativeDir != null && relativeDir.isValid()) { |
228 |
relativesTo.push(relativeDir); |
226 |
if (relativesTo.size() == relativesLevel.size()) { |
|
|
227 |
popPath(); |
228 |
relativesTo.push(relativeDir); |
229 |
} else { |
230 |
relativesTo.push(relativeDir); |
231 |
} |
229 |
} |
232 |
} |
230 |
return ErrorParserProvider.NO_RESULT; |
233 |
return ErrorParserProvider.NO_RESULT; |
231 |
} else { |
234 |
} else { |
232 |
popPath(); |
235 |
popPath(); |
|
|
236 |
popLevel(); |
233 |
return ErrorParserProvider.NO_RESULT; |
237 |
return ErrorParserProvider.NO_RESULT; |
234 |
} |
238 |
} |
235 |
} |
239 |
} |