- Update ecj [] patch to upstream version from 3.3.

This commit is contained in:
Ben Konrath 2007-02-01 21:13:34 +00:00
parent ac6938fdb7
commit d519d4f94e
2 changed files with 63 additions and 143 deletions

View File

@ -4,186 +4,105 @@ RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/batch/org/eclipse/jdt/internal/c
retrieving revision 1.254.4.1 retrieving revision 1.254.4.1
diff -u -r1.254.4.1 Main.java diff -u -r1.254.4.1 Main.java
--- batch/org/eclipse/jdt/internal/compiler/batch/Main.java 2 Jul 2006 10:11:58 -0000 1.254.4.1 --- batch/org/eclipse/jdt/internal/compiler/batch/Main.java 2 Jul 2006 10:11:58 -0000 1.254.4.1
+++ batch/org/eclipse/jdt/internal/compiler/batch/Main.java 19 Jan 2007 19:22:57 -0000 +++ batch/org/eclipse/jdt/internal/compiler/batch/Main.java 1 Feb 2007 21:04:52 -0000
@@ -28,9 +28,11 @@ @@ -2989,6 +2989,10 @@
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
+import java.util.LinkedList;
import java.util.Locale;
import java.util.Map;
import java.util.MissingResourceException;
@@ -40,8 +42,8 @@
import org.eclipse.jdt.core.compiler.CategorizedProblem;
import org.eclipse.jdt.core.compiler.CharOperation;
-import org.eclipse.jdt.core.compiler.InvalidInputException;
import org.eclipse.jdt.core.compiler.IProblem;
+import org.eclipse.jdt.core.compiler.InvalidInputException;
import org.eclipse.jdt.internal.compiler.ClassFile;
import org.eclipse.jdt.internal.compiler.CompilationResult;
import org.eclipse.jdt.internal.compiler.Compiler;
@@ -59,9 +61,9 @@
import org.eclipse.jdt.internal.compiler.problem.DefaultProblem;
import org.eclipse.jdt.internal.compiler.problem.DefaultProblemFactory;
import org.eclipse.jdt.internal.compiler.problem.ProblemSeverities;
+import org.eclipse.jdt.internal.compiler.util.HashtableOfObject;
import org.eclipse.jdt.internal.compiler.util.Messages;
import org.eclipse.jdt.internal.compiler.util.SuffixConstants;
-import org.eclipse.jdt.internal.compiler.util.HashtableOfObject;
import org.eclipse.jdt.internal.compiler.util.Util;
public class Main implements ProblemSeverities, SuffixConstants {
@@ -2989,56 +2991,74 @@
ArrayList currentRuleSpecs = new ArrayList(defaultSize); ArrayList currentRuleSpecs = new ArrayList(defaultSize);
StringTokenizer tokenizer = new StringTokenizer(currentPath, StringTokenizer tokenizer = new StringTokenizer(currentPath,
File.pathSeparator + "[]", true); //$NON-NLS-1$ File.pathSeparator + "[]", true); //$NON-NLS-1$
+ LinkedList list = new LinkedList(Collections.list(tokenizer)); + ArrayList tokens = new ArrayList();
+ + while (tokenizer.hasMoreTokens()) {
+ tokens.add(tokenizer.nextToken());
+ }
// state machine // state machine
- final int start = 0; final int start = 0;
- final int readyToClose = 1; final int readyToClose = 1;
- // 'path' 'path1[rule];path2' @@ -3003,14 +3007,21 @@
- final int readyToCloseEndingWithRules = 2; // 'path[' 'path1;path2['
- // 'path[rule]' 'path1;path2[rule]' final int rulesReadyToClose = 6;
- final int readyToCloseOrOtherEntry = 3; // 'path[rule' 'path[rule1;rule2'
- // 'path[rule];' 'path;' 'path1;path2;' + final int bracketOpened = 7;
- final int rulesNeedAnotherRule = 4; + // '.*[.*'
- // 'path[rule1;' + final int bracketClosed = 8;
- final int rulesStart = 5; + // '.*([.*])+'
- // 'path[' 'path1;path2[' +
- final int rulesReadyToClose = 6;
- // 'path[rule' 'path[rule1;rule2'
+ // process list in reverse order, start refers to end of list
+ final int start = 0;
+ final int rulesStart = 1;
+ // ']' '];path'
+ final int rulesReadyToCloseOrOtherRule = 2;
+ // 'rule]' 'rule1;rule2]'
+ final int rulesNeedAnotherRule = 3;
+ // ';rule2]' ';rule2;rule3];path'
+ final int readyForPath = 4;
+ // '[rule]' '[rule1;rule2]'
+ final int readyToCloseOrOtherEntry = 5;
+ // 'path[rule]' 'path' 'path1;path2'
+ final int readyForPathOrRules = 6;
+ // ';path[rule]' ';path'
final int error = 99; final int error = 99;
int state = start; int state = start;
+
String token = null; String token = null;
- while (tokenizer.hasMoreTokens()) { - while (tokenizer.hasMoreTokens()) {
- token = tokenizer.nextToken(); - token = tokenizer.nextToken();
+ while (!list.isEmpty()) { + int cursor = 0, tokensNb = tokens.size(), bracket = -1;
+ token = (String)list.removeLast(); + while (cursor < tokensNb && state != error) {
+ token = (String) tokens.get(cursor++);
if (token.equals(File.pathSeparator)) { if (token.equals(File.pathSeparator)) {
switch (state) { switch (state) {
case start: case start:
+ case bracketOpened:
break; break;
- case readyToClose: case readyToClose:
- case readyToCloseEndingWithRules: case readyToCloseEndingWithRules:
case readyToCloseOrOtherEntry: @@ -3022,14 +3033,21 @@
- state = readyToCloseOrOtherEntry; case rulesReadyToClose:
+ Collections.reverse(currentRuleSpecs);
addNewEntry(paths, currentClasspathName, currentRuleSpecs, customEncoding, isSourceOnly);
currentRuleSpecs.clear();
+ state = readyForPathOrRules;
break;
- case rulesReadyToClose:
+ case rulesReadyToCloseOrOtherRule:
state = rulesNeedAnotherRule; state = rulesNeedAnotherRule;
break; break;
+ case rulesNeedAnotherRule: + case bracketClosed:
+ break; + cursor = bracket + 1;
+ case readyForPathOrRules: + state = rulesStart;
+ break; + break;
default: default:
state = error; state = error;
} }
} else if (token.equals("[")) { //$NON-NLS-1$ } else if (token.equals("[")) { //$NON-NLS-1$
switch (state) { switch (state) {
- case readyToClose: case readyToClose:
- state = rulesStart; - state = rulesStart;
+ case start: + bracket = cursor - 1;
+ case readyForPath: + case bracketClosed:
+ case readyForPathOrRules: + state = bracketOpened;
+ currentClasspathName = getPath(list, token);
+ state = readyToCloseOrOtherEntry;
break; break;
- default: + case bracketOpened:
+ case rulesReadyToCloseOrOtherRule: default:
+ state = readyForPath;
+ break;
+ default:
state = error; state = error;
} }
} else if (token.equals("]")) { //$NON-NLS-1$ @@ -3038,6 +3056,10 @@
switch (state) { case rulesReadyToClose:
- case rulesReadyToClose: state = readyToCloseEndingWithRules;
- state = readyToCloseEndingWithRules;
+ case start:
+ case readyForPathOrRules:
+ state = rulesStart;
break; break;
- default: + case bracketOpened:
+ case readyForPath: + state = bracketClosed;
+ currentClasspathName = getPath(list, token);
+ state = readyToCloseOrOtherEntry;
+ break; + break;
+ default: + case bracketClosed:
default:
state = error; state = error;
} }
@@ -3055,10 +3077,22 @@
@@ -3046,24 +3066,26 @@ state = rulesReadyToClose;
// regular word
switch (state) {
case start:
- case readyToCloseOrOtherEntry:
- state = readyToClose;
- currentClasspathName = token;
+ case readyForPath:
+ case readyForPathOrRules:
+ currentClasspathName = getPath(list, token);
+ state = readyToCloseOrOtherEntry;
break;
- case rulesNeedAnotherRule:
case rulesStart:
- state = rulesReadyToClose;
+ case rulesNeedAnotherRule:
currentRuleSpecs.add(token); currentRuleSpecs.add(token);
+ state = rulesReadyToCloseOrOtherRule;
break; break;
+ case bracketClosed:
+ for (int i = bracket; i < cursor ; i++) {
+ currentClasspathName += (String) tokens.get(i);
+ }
+ state = readyToClose;
+ break;
+ case bracketOpened:
+ break;
default: default:
state = error; state = error;
} }
} }
+ if (state == bracketClosed && cursor == tokensNb) {
+ cursor = bracket + 1;
+ state = rulesStart;
+ }
} }
+
switch(state) { switch(state) {
- case readyToClose : case readyToClose :
- case readyToCloseEndingWithRules : @@ -3066,6 +3100,8 @@
- case readyToCloseOrOtherEntry : case readyToCloseOrOtherEntry :
+ case readyForPathOrRules:
+ case readyToCloseOrOtherEntry:
+ Collections.reverse(currentRuleSpecs);
addNewEntry(paths, currentClasspathName, currentRuleSpecs, customEncoding, isSourceOnly); addNewEntry(paths, currentClasspathName, currentRuleSpecs, customEncoding, isSourceOnly);
break; break;
+ case bracketOpened:
+ case bracketClosed:
default : default :
@@ -3071,4 +3093,13 @@ // we go on anyway
this.logger.logIncorrectClasspath(currentPath); this.logger.logIncorrectClasspath(currentPath);
}
}
+
+private String getPath(LinkedList list, String path) {
+ while (!list.isEmpty()) {
+ if (File.pathSeparator.equalsIgnoreCase((String)list.getLast()))
+ break;
+ path = (String)list.removeLast() + path;
+ }
+ return path;
+}
}

View File

@ -1738,9 +1738,10 @@ fi
%{_libdir}/%{name}/plugins/org.eclipse.sdk_* %{_libdir}/%{name}/plugins/org.eclipse.sdk_*
%changelog %changelog
* Wed Jan 31 2007 Ben Konrath <bkonrath@redhat.com> 3.2.1-35 * Thu Fed 01 2007 Ben Konrath <bkonrath@redhat.com> 3.2.1-35
- Use original name for the SWT symlinks. - Use original name for the SWT symlinks.
- Rework ppc64, s390{x} and sparc{64} hack to fix multilib problem. - Rework ppc64, s390{x} and sparc{64} hack to fix multilib problem.
- Update ecj [] patch to upstream version from 3.3.
* Tue Jan 30 2007 Ben Konrath <bkonrath@redhat.com> 3.2.1-34 * Tue Jan 30 2007 Ben Konrath <bkonrath@redhat.com> 3.2.1-34
- Create symlinks to the SWT JNI libs in %%{_libdir}/eclipse with sane - Create symlinks to the SWT JNI libs in %%{_libdir}/eclipse with sane