Update jdt.core to b55af0d251839febd524bd542ba1eea20d1a7dc4 (13-04-02)
+ some repair / refresh from jdt-orig
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AbstractRegressionTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AbstractRegressionTest.java
index dfccffd..1f29759 100644
--- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AbstractRegressionTest.java
+++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AbstractRegressionTest.java
@@ -15,6 +15,8 @@
* Stephan Herrmann - Contribution for
* bug 335093 - [compiler][null] minimal hook for future null annotation support
* bug 388800 - [1.8] adjust tests to 1.8 JRE
+ * bug 402237 - [1.8][compiler] investigate differences between compilers re MethodVerifyTest
+ * bug 391376 - [1.8] check interaction of default methods with bridge methods and generics
*******************************************************************************/
package org.eclipse.jdt.core.tests.compiler.regression;
@@ -79,6 +81,8 @@
static final String COLLECTION_IMPL_JRE8;
static final String COLLECTION_RAW_IMPL_JRE8;
static final String LIST_IMPL_JRE8;
+ static final String COLLECTION_AND_LIST_IMPL_JRE8;
+ static final String COLLECTION_AND_LIST_RAW_IMPL_JRE8;
static final String LIST_RAW_IMPL_JRE8;
static final String ITERABLE_IMPL_JRE8;
static final String ITERABLE_RAW_IMPL_JRE8;
@@ -91,47 +95,69 @@
String javaVersion = System.getProperty("java.specification.version");
IS_JRE_8 = "1.8".equals(javaVersion);
if (IS_JRE_8) { // TODO(stephan) accommodate future versions ...
- COMPARATOR_IMPL_JRE8 = // replace '*' with T, '%' with U
+ COMPARATOR_IMPL_JRE8 = // replace '*' with T, '%' with U, $ with S
" public java.util.Comparator<*> reverseOrder() { return null;}\n" +
- " public java.util.Comparator<*> thenComparing(java.util.Comparator<? super *> other) { return null;}\n" +
- " public <% extends java.lang.Comparable<? super %>> java.util.Comparator<*> thenComparing(java.util.function.Function<? super *, ? extends %> keyExtractor) { return null;}\n" +
- " public java.util.Comparator<*> thenComparing(java.util.function.IntFunction<? super *> keyExtractor) { return null;}\n" +
- " public java.util.Comparator<*> thenComparing(java.util.function.LongFunction<? super *> keyExtractor) { return null;}\n" +
- " public java.util.Comparator<*> thenComparing(java.util.function.DoubleFunction<? super *> keyExtractor) { return null;}\n";
+ " public <% extends *> java.util.Comparator<%> thenComparing(java.util.Comparator<? super *> other) { return null;}\n" +
+ " public <$ extends *, % extends java.lang.Comparable<? super %>> java.util.Comparator<$> thenComparing(java.util.function.Function<? super *, ? extends %> keyExtractor) { return null;}\n" +
+ " public <$ extends *, %> java.util.Comparator<$> thenComparing(java.util.function.Function<? super *, ? extends %> keyExtractor, java.util.Comparator<? super %> cmp) { return null; }\n" +
+ " public <% extends *> java.util.Comparator<%> thenComparing(java.util.function.ToIntFunction<? super *> keyExtractor) { return null;}\n" +
+ " public <% extends *> java.util.Comparator<%> thenComparing(java.util.function.ToLongFunction<? super *> keyExtractor) { return null;}\n" +
+ " public <% extends *> java.util.Comparator<%> thenComparing(java.util.function.ToDoubleFunction<? super *> keyExtractor) { return null;}\n";
COMPARATOR_RAW_IMPL_JRE8 =
" public java.util.Comparator reverseOrder() { return null;}\n" +
" public java.util.Comparator thenComparing(java.util.Comparator other) { return null;}\n" +
" public java.util.Comparator thenComparing(java.util.function.Function keyExtractor) { return null;}\n" +
- " public java.util.Comparator thenComparing(java.util.function.IntFunction keyExtractor) { return null;}\n" +
- " public java.util.Comparator thenComparing(java.util.function.LongFunction keyExtractor) { return null;}\n" +
- " public java.util.Comparator thenComparing(java.util.function.DoubleFunction keyExtractor) { return null;}\n";
+ " public java.util.Comparator thenComparing(java.util.function.Function keyExtractor, java.util.Comparator comparator) { return null;}\n" +
+ " public java.util.Comparator thenComparing(java.util.function.ToIntFunction keyExtractor) { return null;}\n" +
+ " public java.util.Comparator thenComparing(java.util.function.ToLongFunction keyExtractor) { return null;}\n" +
+ " public java.util.Comparator thenComparing(java.util.function.ToDoubleFunction keyExtractor) { return null;}\n";
COLLECTION_IMPL_JRE8 =
" public boolean removeAll(java.util.function.Predicate<? super *> filter) { return false;}\n" +
" public java.util.stream.Stream<*> stream() { return null;}\n" +
- " public java.util.stream.Stream<*> parallelStream() { return null;}\n";
+ " public java.util.stream.Stream<*> parallelStream() { return null;}\n" +
+ " public java.util.Spliterator<*> spliterator() { return null; }\n";
+ COLLECTION_AND_LIST_IMPL_JRE8 =
+ " public boolean removeAll(java.util.function.Predicate<? super *> filter) { return false;}\n" +
+ " public java.util.stream.Stream<*> stream() { return null;}\n" +
+ " public java.util.stream.Stream<*> parallelStream() { return null;}\n" +
+ " public java.util.Spliterator<*> spliterator() { return null; }\n" +
+ " public void sort(java.util.Comparator<? super *> comparator) {}\n" +
+ " public void parallelSort(java.util.Comparator<? super *> comparator) {}\n" +
+ " public void replaceAll(java.util.function.UnaryOperator<*> operator) {}\n";
COLLECTION_RAW_IMPL_JRE8 =
" public @SuppressWarnings(\"rawtypes\") boolean removeAll(java.util.function.Predicate filter) { return false;}\n" +
" public @SuppressWarnings(\"rawtypes\") java.util.stream.Stream stream() { return null;}\n" +
- " public @SuppressWarnings(\"rawtypes\") java.util.stream.Stream parallelStream() { return null;}\n";
+ " public @SuppressWarnings(\"rawtypes\") java.util.stream.Stream parallelStream() { return null;}\n" +
+ " public @SuppressWarnings(\"rawtypes\") java.util.Spliterator spliterator() { return null; }\n";
LIST_IMPL_JRE8 =// replace '*' with your concrete type argument
" public void sort(java.util.Comparator<? super *> comparator) {}\n" +
" public void parallelSort(java.util.Comparator<? super *> comparator) {}\n" +
- " public void replaceAll(java.util.function.UnaryOperator<*> operator) {}\n";
+ " public void replaceAll(java.util.function.UnaryOperator<*> operator) {}\n" +
+ " public java.util.Spliterator<*> spliterator() { return null; }\n";
LIST_RAW_IMPL_JRE8 =
" public @SuppressWarnings(\"rawtypes\") void sort(java.util.Comparator comparator) {}\n" +
" public @SuppressWarnings(\"rawtypes\") void parallelSort(java.util.Comparator comparator) {}\n" +
+ " public @SuppressWarnings(\"rawtypes\") void replaceAll(java.util.function.UnaryOperator operator) {}\n" +
+ " public @SuppressWarnings(\"rawtypes\") java.util.Spliterator spliterator() { return null; }\n";
+ COLLECTION_AND_LIST_RAW_IMPL_JRE8 =
+ " public @SuppressWarnings(\"rawtypes\") boolean removeAll(java.util.function.Predicate filter) { return false;}\n" +
+ " public @SuppressWarnings(\"rawtypes\") java.util.stream.Stream stream() { return null;}\n" +
+ " public @SuppressWarnings(\"rawtypes\") java.util.stream.Stream parallelStream() { return null;}\n" +
+ " public @SuppressWarnings(\"rawtypes\") java.util.Spliterator spliterator() { return null; }\n" +
+ " public @SuppressWarnings(\"rawtypes\") void sort(java.util.Comparator comparator) {}\n" +
+ " public @SuppressWarnings(\"rawtypes\") void parallelSort(java.util.Comparator comparator) {}\n" +
" public @SuppressWarnings(\"rawtypes\") void replaceAll(java.util.function.UnaryOperator operator) {}\n";
ITERABLE_IMPL_JRE8 = // replace '*' with your concrete type argument
- " public void forEach(java.util.function.Block<? super *> block){}\n";
+ " public void forEach(java.util.function.Consumer<? super *> block){}\n";
ITERABLE_RAW_IMPL_JRE8 =
- " public @SuppressWarnings(\"rawtypes\") void forEach(java.util.function.Block block) {}\n";
+ " public @SuppressWarnings(\"rawtypes\") void forEach(java.util.function.Consumer action) {}\n";
ITERATOR_IMPL_JRE8 = // replace '*' with your concrete type argument
- " public void forEach(java.util.function.Block<? super *> block){}\n";
+ "public void forEach(java.util.function.Consumer<? super *> action) {}\n";
ITERATOR_RAW_IMPL_JRE8 =
- " public void forEach(java.util.function.Block block){}\n";
+ " public void forEach(java.util.function.Consumer block){}\n";
MAP_IMPL_JRE8 = // '*' for 'K', '%' for 'V'
" public boolean remove(Object key, Object value) { return false;}\n" +
- " public void forEach(java.util.function.BiBlock<? super *, ? super %> block) {}\n" +
+ " public void forEach(java.util.function.BiConsumer<? super *, ? super %> block) {}\n" +
" public void replaceAll(java.util.function.BiFunction<*, %, %> function) {}\n" +
" public % putIfAbsent(* key, % value) { return null;}\n" +
" public boolean replace(* key, % oldValue, % newValue) { return false;}\n" +
@@ -142,7 +168,7 @@
" public % merge(* key, % value, java.util.function.BiFunction<? super %, ? super %, ? extends %> remappingFunction) { return null;}\n";
MAP_RAW_IMPL_JRE8 =
" public boolean remove(Object key, Object value) { return false;}\n" +
- " public @SuppressWarnings(\"rawtypes\") void forEach(java.util.function.BiBlock block) {}\n" +
+ " public @SuppressWarnings(\"rawtypes\") void forEach(java.util.function.BiConsumer block) {}\n" +
" public @SuppressWarnings(\"rawtypes\") void replaceAll(java.util.function.BiFunction function) {}\n" +
" public Object putIfAbsent(Object key, Object value) { return null;}\n" +
" public boolean replace(Object key, Object oldValue, Object newValue) { return false;}\n" +
@@ -157,6 +183,8 @@
COLLECTION_IMPL_JRE8 = "";
COLLECTION_RAW_IMPL_JRE8 = "";
LIST_IMPL_JRE8 = "";
+ COLLECTION_AND_LIST_IMPL_JRE8 = "";
+ COLLECTION_AND_LIST_RAW_IMPL_JRE8 = "";
LIST_RAW_IMPL_JRE8 = "";
ITERABLE_IMPL_JRE8 = "";
ITERABLE_RAW_IMPL_JRE8 = "";
@@ -166,6 +194,11 @@
MAP_RAW_IMPL_JRE8 = "";
}
}
+ String getCollectionAndListRawImplJRE8() {
+ if (this.complianceLevel < ClassFileConstants.JDK1_5)
+ return COLLECTION_AND_LIST_RAW_IMPL_JRE8.replaceAll("@SuppressWarnings\\(\"rawtypes\"\\)", "");
+ return COLLECTION_AND_LIST_RAW_IMPL_JRE8;
+ }
String getListRawImplJRE8() {
if (this.complianceLevel < ClassFileConstants.JDK1_5)
return LIST_RAW_IMPL_JRE8.replaceAll("@SuppressWarnings\\(\"rawtypes\"\\)", "");
@@ -244,6 +277,8 @@
this.version = JavaCore.VERSION_1_6;
} else if (rawVersion.indexOf("1.7") != -1) {
this.version = JavaCore.VERSION_1_7;
+ } else if (rawVersion.indexOf("1.8") != -1) {
+ this.version = JavaCore.VERSION_1_8;
} else {
throw new RuntimeException("unknown javac version: " + rawVersion);
}
@@ -283,6 +318,14 @@
if ("1.7.0-ea".equals(rawVersion)) {
return 0000;
}
+ if ("1.7.0_10".equals(rawVersion)) {
+ return 1000;
+ }
+ }
+ if (version == JavaCore.VERSION_1_8) {
+ if ("1.8.0-ea".equals(rawVersion)) {
+ return 0000;
+ }
}
throw new RuntimeException("unknown raw javac version: " + rawVersion);
}
@@ -720,7 +763,15 @@
return compiler.compliance != ClassFileConstants.JDK1_5 ||
compiler.minor != 1600 ? null : this;
}
- }: null;
+ }: null,
+ Javac8AcceptsDefaultMethodInAnnotationType = RUN_JAVAC ?
+ new JavacHasABug(
+ MismatchType.EclipseErrorsJavacNone,
+ ClassFileConstants.JDK1_8, 23 /* TODO: insert minor when fixed */) : null,
+ Javac8ProducesIllegalAccessError = RUN_JAVAC ?
+ new JavacHasABug(
+ MismatchType.StandardOutputMismatch,
+ ClassFileConstants.JDK1_8, 23 /* TODO: insert minor when fixed */) : null;
}
}
@@ -1150,6 +1201,9 @@
public boolean proceedOnErrors() {
return true;
}
+ public boolean ignoreAllErrors() {
+ return false;
+ }
};
}
/*
@@ -2690,7 +2744,8 @@
false /* do not perform statements recovery */,
null /* no custom requestor */,
// compiler results
- true /* expecting compiler errors */,
+ expectedCompilerLog == null || /* expecting compiler errors */
+ expectedCompilerLog.indexOf("ERROR") != -1,
expectedCompilerLog /* expected compiler log */,
// runtime options
false /* do not force execution */,