|
Ben Konrath |
3f0aaa6 |
Index: batch/org/eclipse/jdt/internal/compiler/batch/Main.java
|
|
Ben Konrath |
3f0aaa6 |
===================================================================
|
|
Ben Konrath |
3f0aaa6 |
RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/batch/org/eclipse/jdt/internal/compiler/batch/Main.java,v
|
|
Ben Konrath |
e9c9d5e |
retrieving revision 1.254.4.2
|
|
Ben Konrath |
e9c9d5e |
diff -u -r1.254.4.2 Main.java
|
|
Ben Konrath |
e9c9d5e |
--- batch/org/eclipse/jdt/internal/compiler/batch/Main.java 20 Oct 2006 14:11:48 -0000 1.254.4.2
|
|
Ben Konrath |
e9c9d5e |
+++ batch/org/eclipse/jdt/internal/compiler/batch/Main.java 16 Feb 2007 18:40:23 -0000
|
|
Ben Konrath |
e9c9d5e |
@@ -2723,6 +2723,10 @@
|
|
Ben Konrath |
3f0aaa6 |
ArrayList currentRuleSpecs = new ArrayList(defaultSize);
|
|
Ben Konrath |
3f0aaa6 |
StringTokenizer tokenizer = new StringTokenizer(currentPath,
|
|
Ben Konrath |
3f0aaa6 |
File.pathSeparator + "[]", true); //$NON-NLS-1$
|
|
Ben Konrath |
4d13045 |
+ ArrayList tokens = new ArrayList();
|
|
Ben Konrath |
4d13045 |
+ while (tokenizer.hasMoreTokens()) {
|
|
Ben Konrath |
4d13045 |
+ tokens.add(tokenizer.nextToken());
|
|
Ben Konrath |
4d13045 |
+ }
|
|
Ben Konrath |
3f0aaa6 |
// state machine
|
|
Ben Konrath |
4d13045 |
final int start = 0;
|
|
Ben Konrath |
4d13045 |
final int readyToClose = 1;
|
|
Ben Konrath |
e9c9d5e |
@@ -2737,14 +2741,20 @@
|
|
Ben Konrath |
4d13045 |
// 'path[' 'path1;path2['
|
|
Ben Konrath |
4d13045 |
final int rulesReadyToClose = 6;
|
|
Ben Konrath |
4d13045 |
// 'path[rule' 'path[rule1;rule2'
|
|
Ben Konrath |
4d13045 |
+ final int bracketOpened = 7;
|
|
Ben Konrath |
4d13045 |
+ // '.*[.*'
|
|
Ben Konrath |
4d13045 |
+ final int bracketClosed = 8;
|
|
Ben Konrath |
4d13045 |
+ // '.*([.*])+'
|
|
Ben Konrath |
3f0aaa6 |
final int error = 99;
|
|
Ben Konrath |
3f0aaa6 |
int state = start;
|
|
Ben Konrath |
3f0aaa6 |
String token = null;
|
|
Ben Konrath |
e9c9d5e |
- while (tokenizer.hasMoreTokens() && state != error) {
|
|
Ben Konrath |
3f0aaa6 |
- token = tokenizer.nextToken();
|
|
Ben Konrath |
e9c9d5e |
+ int cursor = 0, tokensNb = tokens.size(), bracket = -1;
|
|
Ben Konrath |
e9c9d5e |
+ while (cursor < tokensNb && state != error) {
|
|
Ben Konrath |
e9c9d5e |
+ token = (String) tokens.get(cursor++);
|
|
Ben Konrath |
3f0aaa6 |
if (token.equals(File.pathSeparator)) {
|
|
Ben Konrath |
3f0aaa6 |
switch (state) {
|
|
Ben Konrath |
3f0aaa6 |
case start:
|
|
Ben Konrath |
e9c9d5e |
+ case bracketOpened:
|
|
Ben Konrath |
3f0aaa6 |
break;
|
|
Ben Konrath |
4d13045 |
case readyToClose:
|
|
Ben Konrath |
4d13045 |
case readyToCloseEndingWithRules:
|
|
Ben Konrath |
e9c9d5e |
@@ -2757,14 +2767,21 @@
|
|
Ben Konrath |
4d13045 |
case rulesReadyToClose:
|
|
Ben Konrath |
3f0aaa6 |
state = rulesNeedAnotherRule;
|
|
Ben Konrath |
3f0aaa6 |
break;
|
|
Ben Konrath |
4d13045 |
+ case bracketClosed:
|
|
Ben Konrath |
4d13045 |
+ cursor = bracket + 1;
|
|
Ben Konrath |
4d13045 |
+ state = rulesStart;
|
|
Ben Konrath |
3f0aaa6 |
+ break;
|
|
Ben Konrath |
3f0aaa6 |
default:
|
|
Ben Konrath |
3f0aaa6 |
state = error;
|
|
Ben Konrath |
3f0aaa6 |
}
|
|
Ben Konrath |
3f0aaa6 |
} else if (token.equals("[")) { //$NON-NLS-1$
|
|
Ben Konrath |
3f0aaa6 |
switch (state) {
|
|
Ben Konrath |
4d13045 |
case readyToClose:
|
|
Ben Konrath |
3f0aaa6 |
- state = rulesStart;
|
|
Ben Konrath |
4d13045 |
+ bracket = cursor - 1;
|
|
Ben Konrath |
4d13045 |
+ case bracketClosed:
|
|
Ben Konrath |
4d13045 |
+ state = bracketOpened;
|
|
Ben Konrath |
3f0aaa6 |
break;
|
|
Ben Konrath |
4d13045 |
+ case bracketOpened:
|
|
Ben Konrath |
4d13045 |
default:
|
|
Ben Konrath |
3f0aaa6 |
state = error;
|
|
Ben Konrath |
3f0aaa6 |
}
|
|
Ben Konrath |
e9c9d5e |
@@ -2773,6 +2790,10 @@
|
|
Ben Konrath |
4d13045 |
case rulesReadyToClose:
|
|
Ben Konrath |
4d13045 |
state = readyToCloseEndingWithRules;
|
|
Ben Konrath |
3f0aaa6 |
break;
|
|
Ben Konrath |
4d13045 |
+ case bracketOpened:
|
|
Ben Konrath |
4d13045 |
+ state = bracketClosed;
|
|
Ben Konrath |
3f0aaa6 |
+ break;
|
|
Ben Konrath |
4d13045 |
+ case bracketClosed:
|
|
Ben Konrath |
4d13045 |
default:
|
|
Ben Konrath |
3f0aaa6 |
state = error;
|
|
Ben Konrath |
3f0aaa6 |
}
|
|
Ben Konrath |
e9c9d5e |
@@ -2789,10 +2810,22 @@
|
|
Ben Konrath |
4d13045 |
state = rulesReadyToClose;
|
|
Ben Konrath |
3f0aaa6 |
currentRuleSpecs.add(token);
|
|
Ben Konrath |
3f0aaa6 |
break;
|
|
Ben Konrath |
e9c9d5e |
+ case bracketClosed:
|
|
Ben Konrath |
e9c9d5e |
+ for (int i = bracket; i < cursor ; i++) {
|
|
Ben Konrath |
e9c9d5e |
+ currentClasspathName += (String) tokens.get(i);
|
|
Ben Konrath |
e9c9d5e |
+ }
|
|
Ben Konrath |
e9c9d5e |
+ state = readyToClose;
|
|
Ben Konrath |
e9c9d5e |
+ break;
|
|
Ben Konrath |
4d13045 |
+ case bracketOpened:
|
|
Ben Konrath |
e9c9d5e |
+ break;
|
|
Ben Konrath |
3f0aaa6 |
default:
|
|
Ben Konrath |
3f0aaa6 |
state = error;
|
|
Ben Konrath |
3f0aaa6 |
}
|
|
Ben Konrath |
3f0aaa6 |
}
|
|
Ben Konrath |
4d13045 |
+ if (state == bracketClosed && cursor == tokensNb) {
|
|
Ben Konrath |
4d13045 |
+ cursor = bracket + 1;
|
|
Ben Konrath |
4d13045 |
+ state = rulesStart;
|
|
Ben Konrath |
4d13045 |
+ }
|
|
Ben Konrath |
3f0aaa6 |
}
|
|
Ben Konrath |
3f0aaa6 |
switch(state) {
|
|
Ben Konrath |
e9c9d5e |
case readyToClose:
|
|
Ben Konrath |
e9c9d5e |
@@ -2801,6 +2834,8 @@
|
|
Ben Konrath |
e9c9d5e |
addNewEntry(paths, currentClasspathName, currentRuleSpecs,
|
|
Ben Konrath |
e9c9d5e |
customEncoding, isSourceOnly);
|
|
Ben Konrath |
3f0aaa6 |
break;
|
|
Ben Konrath |
e9c9d5e |
+ case bracketOpened:
|
|
Ben Konrath |
e9c9d5e |
+ case bracketClosed:
|
|
Ben Konrath |
3f0aaa6 |
default :
|
|
Ben Konrath |
4d13045 |
// we go on anyway
|
|
Ben Konrath |
3f0aaa6 |
this.logger.logIncorrectClasspath(currentPath);
|