From 7ad8448c33af882c9004dfff505160b9b5c8b333 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=8A?= =?UTF-8?q?=D1=80=20=D0=9A=D1=83=D1=80=D1=82=D0=B0=D0=BA=D0=BE=D0=B2?= Date: Tue, 26 Nov 2024 16:20:59 +0200 Subject: [PATCH 01/26] Remove nolonger support converterJclMin (#3332) Versions older than 1.8 are not supported and thus shouldn't be needed anymore. --- JCL/converterJclMin/.classpath | 6 -- JCL/converterJclMin/.project | 17 ---- .../org.eclipse.core.resources.prefs | 2 - .../.settings/org.eclipse.jdt.core.prefs | 12 --- JCL/converterJclMin/src/java/awt/List.java | 15 ---- JCL/converterJclMin/src/java/awt/Point.java | 7 -- .../src/java/io/BufferedInputStream.java | 17 ---- .../src/java/io/BufferedOutputStream.java | 17 ---- .../src/java/io/BufferedWriter.java | 22 ----- .../src/java/io/ByteArrayInputStream.java | 17 ---- .../src/java/io/ByteArrayOutputStream.java | 16 ---- JCL/converterJclMin/src/java/io/File.java | 46 ----------- .../src/java/io/FileInputStream.java | 18 ---- .../src/java/io/FileOutputStream.java | 19 ----- .../src/java/io/FileWriter.java | 24 ------ .../src/java/io/IOException.java | 20 ----- .../src/java/io/InputStream.java | 22 ----- .../src/java/io/InputStreamReader.java | 22 ----- .../src/java/io/InterruptedIOException.java | 15 ---- .../src/java/io/OutputStream.java | 22 ----- .../src/java/io/PrintStream.java | 35 -------- .../src/java/io/PrintWriter.java | 28 ------- JCL/converterJclMin/src/java/io/Reader.java | 16 ---- .../src/java/io/Serializable.java | 15 ---- .../src/java/io/StringWriter.java | 23 ------ .../java/io/UnsupportedEncodingException.java | 19 ----- JCL/converterJclMin/src/java/io/Writer.java | 19 ----- .../src/java/lang/ArithmeticException.java | 16 ---- .../lang/ArrayIndexOutOfBoundsException.java | 16 ---- .../src/java/lang/AssertionError.java | 29 ------- .../src/java/lang/Boolean.java | 19 ----- JCL/converterJclMin/src/java/lang/Byte.java | 41 ---------- .../src/java/lang/Character.java | 39 --------- JCL/converterJclMin/src/java/lang/Class.java | 22 ----- .../src/java/lang/ClassCastException.java | 16 ---- .../src/java/lang/ClassNotFoundException.java | 20 ----- .../java/lang/CloneNotSupportedException.java | 14 ---- .../src/java/lang/Cloneable.java | 15 ---- .../src/java/lang/Comparable.java | 16 ---- JCL/converterJclMin/src/java/lang/Double.java | 56 ------------- JCL/converterJclMin/src/java/lang/Error.java | 21 ----- .../src/java/lang/Exception.java | 19 ----- .../lang/ExceptionInInitializerError.java | 17 ---- JCL/converterJclMin/src/java/lang/Float.java | 53 ------------ .../lang/IllegalMonitorStateException.java | 18 ---- .../java/lang/IndexOutOfBoundsException.java | 16 ---- .../src/java/lang/Integer.java | 54 ------------ .../src/java/lang/InterruptedException.java | 14 ---- JCL/converterJclMin/src/java/lang/Long.java | 42 ---------- JCL/converterJclMin/src/java/lang/Math.java | 24 ------ .../src/java/lang/NoSuchFieldError.java | 15 ---- .../src/java/lang/NullPointerException.java | 29 ------- JCL/converterJclMin/src/java/lang/Number.java | 25 ------ .../src/java/lang/NumberFormatException.java | 16 ---- JCL/converterJclMin/src/java/lang/Object.java | 47 ----------- .../lang/ReflectiveOperationException.java | 26 ------ .../src/java/lang/Runnable.java | 16 ---- .../src/java/lang/RuntimeException.java | 19 ----- JCL/converterJclMin/src/java/lang/Short.java | 41 ---------- JCL/converterJclMin/src/java/lang/String.java | 75 ----------------- .../src/java/lang/StringBuffer.java | 59 -------------- JCL/converterJclMin/src/java/lang/System.java | 24 ------ .../src/java/lang/Throwable.java | 33 -------- JCL/converterJclMin/src/java/lang/Void.java | 13 --- .../src/java/lang/ref/Reference.java | 17 ---- .../src/java/lang/ref/ReferenceQueue.java | 17 ---- .../src/java/lang/ref/WeakReference.java | 17 ---- .../src/java/net/MalformedURLException.java | 15 ---- .../src/java/text/NumberFormat.java | 22 ----- .../src/java/util/ArrayList.java | 48 ----------- JCL/converterJclMin/src/java/util/Arrays.java | 17 ---- .../src/java/util/Collection.java | 19 ----- .../src/java/util/Collections.java | 17 ---- .../src/java/util/Enumeration.java | 18 ---- .../src/java/util/HashMap.java | 33 -------- .../src/java/util/Hashtable.java | 33 -------- .../src/java/util/Iterator.java | 17 ---- JCL/converterJclMin/src/java/util/List.java | 16 ---- JCL/converterJclMin/src/java/util/Locale.java | 17 ---- JCL/converterJclMin/src/java/util/Map.java | 18 ---- .../java/util/MissingResourceException.java | 16 ---- .../src/java/util/NoSuchElementException.java | 16 ---- .../src/java/util/ResourceBundle.java | 23 ------ JCL/converterJclMin/src/java/util/Set.java | 18 ---- .../src/java/util/StringTokenizer.java | 29 ------- JCL/converterJclMin/src/java/util/Vector.java | 28 ------- .../src/java/util/zip/ZipEntry.java | 18 ---- .../src/java/util/zip/ZipFile.java | 23 ------ JCL/converterJclMin1.5/.classpath | 6 -- JCL/converterJclMin1.5/.project | 17 ---- .../org.eclipse.core.resources.prefs | 2 - .../.settings/org.eclipse.jdt.core.prefs | 12 --- JCL/converterJclMin1.5/src/java/awt/List.java | 15 ---- .../src/java/io/BufferedInputStream.java | 17 ---- .../src/java/io/BufferedOutputStream.java | 17 ---- .../src/java/io/BufferedWriter.java | 22 ----- .../src/java/io/ByteArrayInputStream.java | 17 ---- .../src/java/io/ByteArrayOutputStream.java | 16 ---- JCL/converterJclMin1.5/src/java/io/File.java | 46 ----------- .../src/java/io/FileInputStream.java | 18 ---- .../src/java/io/FileOutputStream.java | 19 ----- .../src/java/io/FileWriter.java | 24 ------ .../src/java/io/IOException.java | 20 ----- .../src/java/io/InputStream.java | 22 ----- .../src/java/io/InputStreamReader.java | 22 ----- .../src/java/io/InterruptedIOException.java | 15 ---- .../src/java/io/OutputStream.java | 22 ----- .../src/java/io/PrintStream.java | 35 -------- .../src/java/io/PrintWriter.java | 28 ------- .../src/java/io/Reader.java | 16 ---- .../src/java/io/Serializable.java | 15 ---- .../src/java/io/StringWriter.java | 23 ------ .../java/io/UnsupportedEncodingException.java | 19 ----- .../src/java/io/Writer.java | 19 ----- .../src/java/lang/ArithmeticException.java | 16 ---- .../lang/ArrayIndexOutOfBoundsException.java | 16 ---- .../src/java/lang/AssertionError.java | 29 ------- .../src/java/lang/Boolean.java | 19 ----- .../src/java/lang/Byte.java | 45 ---------- .../src/java/lang/Character.java | 39 --------- .../src/java/lang/Class.java | 32 -------- .../src/java/lang/ClassCastException.java | 16 ---- .../src/java/lang/ClassNotFoundException.java | 15 ---- .../java/lang/CloneNotSupportedException.java | 14 ---- .../src/java/lang/Cloneable.java | 15 ---- .../src/java/lang/Comparable.java | 15 ---- .../src/java/lang/Deprecated.java | 17 ---- .../src/java/lang/Double.java | 61 -------------- .../src/java/lang/Enum.java | 36 -------- .../src/java/lang/Error.java | 21 ----- .../src/java/lang/Exception.java | 19 ----- .../lang/ExceptionInInitializerError.java | 17 ---- .../src/java/lang/Float.java | 57 ------------- .../src/java/lang/IllegalAccessException.java | 15 ---- .../lang/IllegalMonitorStateException.java | 18 ---- .../java/lang/IndexOutOfBoundsException.java | 16 ---- .../src/java/lang/InstantiationException.java | 15 ---- .../src/java/lang/Integer.java | 59 -------------- .../src/java/lang/InterruptedException.java | 14 ---- .../src/java/lang/Iterable.java | 17 ---- .../src/java/lang/Long.java | 46 ----------- .../src/java/lang/Math.java | 24 ------ .../src/java/lang/NoSuchFieldError.java | 15 ---- .../src/java/lang/NullPointerException.java | 29 ------- .../src/java/lang/Number.java | 26 ------ .../src/java/lang/NumberFormatException.java | 16 ---- .../src/java/lang/Object.java | 45 ---------- .../src/java/lang/Override.java | 20 ----- .../src/java/lang/Runnable.java | 16 ---- .../src/java/lang/RuntimeException.java | 19 ----- .../src/java/lang/Short.java | 45 ---------- .../src/java/lang/String.java | 77 ------------------ .../src/java/lang/StringBuffer.java | 59 -------------- .../src/java/lang/SuppressWarnings.java | 11 --- .../src/java/lang/System.java | 24 ------ .../src/java/lang/Throwable.java | 33 -------- .../src/java/lang/Void.java | 13 --- .../src/java/lang/annotation/Annotation.java | 21 ----- .../src/java/lang/annotation/ElementType.java | 15 ---- .../src/java/lang/annotation/Retention.java | 17 ---- .../java/lang/annotation/RetentionPolicy.java | 15 ---- .../src/java/lang/annotation/Target.java | 17 ---- .../src/java/lang/ref/Reference.java | 17 ---- .../src/java/lang/ref/ReferenceQueue.java | 17 ---- .../src/java/lang/ref/WeakReference.java | 17 ---- .../src/java/net/MalformedURLException.java | 15 ---- .../src/java/text/NumberFormat.java | 22 ----- .../src/java/util/AbstractCollection.java | 4 - .../src/java/util/AbstractList.java | 4 - .../src/java/util/AbstractSet.java | 4 - .../src/java/util/ArrayList.java | 50 ------------ .../src/java/util/Arrays.java | 20 ----- .../src/java/util/Collection.java | 19 ----- .../src/java/util/Collections.java | 23 ------ .../src/java/util/Enumeration.java | 18 ---- .../src/java/util/HashMap.java | 33 -------- .../src/java/util/HashSet.java | 22 ----- .../src/java/util/Hashtable.java | 33 -------- .../src/java/util/Iterator.java | 17 ---- .../src/java/util/List.java | 16 ---- .../src/java/util/Locale.java | 17 ---- JCL/converterJclMin1.5/src/java/util/Map.java | 18 ---- .../java/util/MissingResourceException.java | 16 ---- .../src/java/util/NoSuchElementException.java | 16 ---- .../src/java/util/RandomAccess.java | 3 - .../src/java/util/ResourceBundle.java | 23 ------ JCL/converterJclMin1.5/src/java/util/Set.java | 16 ---- .../src/java/util/StringTokenizer.java | 29 ------- .../src/java/util/Vector.java | 32 -------- .../src/java/util/zip/ZipEntry.java | 18 ---- .../src/java/util/zip/ZipFile.java | 23 ------ JCL/converterJclMin1.5/src/p1/p2/Annot.java | 8 -- JCL/converterJclMin1.5/src/p1/p2/MyEnum.java | 17 ---- JCL/converterJclMin1.5/src/p1/p2/MyEnum2.java | 7 -- JCL/converterJclMin1.7/.classpath | 6 -- JCL/converterJclMin1.7/.project | 17 ---- .../org.eclipse.core.resources.prefs | 2 - .../.settings/org.eclipse.jdt.core.prefs | 12 --- JCL/converterJclMin1.7/src/java/awt/List.java | 15 ---- .../src/java/io/BufferedInputStream.java | 17 ---- .../src/java/io/BufferedOutputStream.java | 17 ---- .../src/java/io/BufferedWriter.java | 22 ----- .../src/java/io/ByteArrayInputStream.java | 17 ---- .../src/java/io/ByteArrayOutputStream.java | 16 ---- JCL/converterJclMin1.7/src/java/io/File.java | 46 ----------- .../src/java/io/FileInputStream.java | 18 ---- .../src/java/io/FileOutputStream.java | 19 ----- .../src/java/io/FileWriter.java | 24 ------ .../src/java/io/IOException.java | 20 ----- .../src/java/io/InputStream.java | 22 ----- .../src/java/io/InputStreamReader.java | 22 ----- .../src/java/io/InterruptedIOException.java | 15 ---- .../src/java/io/OutputStream.java | 22 ----- .../src/java/io/PrintStream.java | 35 -------- .../src/java/io/PrintWriter.java | 28 ------- .../src/java/io/Reader.java | 16 ---- .../src/java/io/Serializable.java | 15 ---- .../src/java/io/StringWriter.java | 23 ------ .../java/io/UnsupportedEncodingException.java | 20 ----- .../src/java/io/Writer.java | 19 ----- .../src/java/lang/ArithmeticException.java | 16 ---- .../lang/ArrayIndexOutOfBoundsException.java | 16 ---- .../src/java/lang/AssertionError.java | 29 ------- .../src/java/lang/Boolean.java | 19 ----- .../src/java/lang/Byte.java | 45 ---------- .../src/java/lang/Character.java | 39 --------- .../src/java/lang/Class.java | 32 -------- .../src/java/lang/ClassCastException.java | 16 ---- .../src/java/lang/ClassNotFoundException.java | 15 ---- .../java/lang/CloneNotSupportedException.java | 15 ---- .../src/java/lang/Cloneable.java | 15 ---- .../src/java/lang/Comparable.java | 15 ---- .../src/java/lang/Deprecated.java | 17 ---- .../src/java/lang/Double.java | 61 -------------- .../src/java/lang/Enum.java | 40 --------- .../src/java/lang/Error.java | 22 ----- .../src/java/lang/Exception.java | 20 ----- .../lang/ExceptionInInitializerError.java | 19 ----- .../src/java/lang/Float.java | 57 ------------- .../src/java/lang/IllegalAccessException.java | 16 ---- .../lang/IllegalMonitorStateException.java | 19 ----- .../java/lang/IndexOutOfBoundsException.java | 16 ---- .../src/java/lang/InstantiationException.java | 15 ---- .../src/java/lang/Integer.java | 59 -------------- .../src/java/lang/InterruptedException.java | 15 ---- .../src/java/lang/Iterable.java | 17 ---- .../src/java/lang/Long.java | 46 ----------- .../src/java/lang/Math.java | 24 ------ .../src/java/lang/NoSuchMethodException.java | 28 ------- .../src/java/lang/NullPointerException.java | 30 ------- .../src/java/lang/Number.java | 26 ------ .../src/java/lang/NumberFormatException.java | 16 ---- .../src/java/lang/Object.java | 45 ---------- .../src/java/lang/Override.java | 20 ----- .../lang/ReflectiveOperationException.java | 13 --- .../src/java/lang/Runnable.java | 16 ---- .../src/java/lang/RuntimeException.java | 20 ----- .../src/java/lang/SafeVarargs.java | 12 --- .../src/java/lang/Short.java | 45 ---------- .../src/java/lang/String.java | 77 ------------------ .../src/java/lang/StringBuffer.java | 59 -------------- .../src/java/lang/SuppressWarnings.java | 11 --- .../src/java/lang/System.java | 24 ------ .../src/java/lang/Throwable.java | 35 -------- .../src/java/lang/Void.java | 13 --- .../src/java/lang/annotation/Annotation.java | 21 ----- .../src/java/lang/annotation/Documented.java | 10 --- .../src/java/lang/annotation/ElementType.java | 15 ---- .../src/java/lang/annotation/Retention.java | 17 ---- .../java/lang/annotation/RetentionPolicy.java | 15 ---- .../src/java/lang/annotation/Target.java | 17 ---- .../src/java/lang/invoke/MethodHandle.java | 37 --------- .../src/java/lang/invoke/MethodHandles.java | 21 ----- .../src/java/lang/invoke/MethodType.java | 16 ---- .../src/java/lang/ref/Reference.java | 17 ---- .../src/java/lang/ref/ReferenceQueue.java | 17 ---- .../src/java/lang/ref/WeakReference.java | 17 ---- .../src/java/net/MalformedURLException.java | 15 ---- .../src/java/text/NumberFormat.java | 22 ----- .../src/java/util/AbstractCollection.java | 4 - .../src/java/util/AbstractList.java | 4 - .../src/java/util/AbstractSet.java | 4 - .../src/java/util/ArrayList.java | 50 ------------ .../src/java/util/Arrays.java | 21 ----- .../src/java/util/Collection.java | 19 ----- .../src/java/util/Collections.java | 23 ------ .../src/java/util/Enumeration.java | 18 ---- .../src/java/util/HashMap.java | 33 -------- .../src/java/util/HashSet.java | 22 ----- .../src/java/util/Hashtable.java | 33 -------- .../src/java/util/Iterator.java | 17 ---- .../src/java/util/List.java | 16 ---- .../src/java/util/Locale.java | 17 ---- JCL/converterJclMin1.7/src/java/util/Map.java | 18 ---- .../java/util/MissingResourceException.java | 16 ---- .../src/java/util/NoSuchElementException.java | 16 ---- .../src/java/util/RandomAccess.java | 3 - .../src/java/util/ResourceBundle.java | 23 ------ JCL/converterJclMin1.7/src/java/util/Set.java | 16 ---- .../src/java/util/StringTokenizer.java | 29 ------- .../src/java/util/Vector.java | 32 -------- .../src/java/util/zip/ZipEntry.java | 18 ---- .../src/java/util/zip/ZipFile.java | 23 ------ .../JCL/build.xml | 12 --- .../JCL/converterJclMin.jar | Bin 36444 -> 0 bytes .../JCL/converterJclMin1.5.jar | Bin 47803 -> 0 bytes .../JCL/converterJclMin1.5src.zip | Bin 51306 -> 0 bytes .../JCL/converterJclMin1.7.jar | Bin 41039 -> 0 bytes .../JCL/converterJclMin1.7src.zip | Bin 54262 -> 0 bytes .../core/tests/dom/ASTConverterBugsTest.java | 2 +- .../tests/dom/ASTConverterBugsTestJLS8.java | 4 +- .../jdt/core/tests/dom/ASTConverterTest2.java | 2 +- .../core/tests/dom/ConverterTestSetup.java | 7 -- .../workspace/Converter/.classpath | 2 +- 314 files changed, 5 insertions(+), 6898 deletions(-) delete mode 100644 JCL/converterJclMin/.classpath delete mode 100644 JCL/converterJclMin/.project delete mode 100644 JCL/converterJclMin/.settings/org.eclipse.core.resources.prefs delete mode 100644 JCL/converterJclMin/.settings/org.eclipse.jdt.core.prefs delete mode 100644 JCL/converterJclMin/src/java/awt/List.java delete mode 100644 JCL/converterJclMin/src/java/awt/Point.java delete mode 100644 JCL/converterJclMin/src/java/io/BufferedInputStream.java delete mode 100644 JCL/converterJclMin/src/java/io/BufferedOutputStream.java delete mode 100644 JCL/converterJclMin/src/java/io/BufferedWriter.java delete mode 100644 JCL/converterJclMin/src/java/io/ByteArrayInputStream.java delete mode 100644 JCL/converterJclMin/src/java/io/ByteArrayOutputStream.java delete mode 100644 JCL/converterJclMin/src/java/io/File.java delete mode 100644 JCL/converterJclMin/src/java/io/FileInputStream.java delete mode 100644 JCL/converterJclMin/src/java/io/FileOutputStream.java delete mode 100644 JCL/converterJclMin/src/java/io/FileWriter.java delete mode 100644 JCL/converterJclMin/src/java/io/IOException.java delete mode 100644 JCL/converterJclMin/src/java/io/InputStream.java delete mode 100644 JCL/converterJclMin/src/java/io/InputStreamReader.java delete mode 100644 JCL/converterJclMin/src/java/io/InterruptedIOException.java delete mode 100644 JCL/converterJclMin/src/java/io/OutputStream.java delete mode 100644 JCL/converterJclMin/src/java/io/PrintStream.java delete mode 100644 JCL/converterJclMin/src/java/io/PrintWriter.java delete mode 100644 JCL/converterJclMin/src/java/io/Reader.java delete mode 100644 JCL/converterJclMin/src/java/io/Serializable.java delete mode 100644 JCL/converterJclMin/src/java/io/StringWriter.java delete mode 100644 JCL/converterJclMin/src/java/io/UnsupportedEncodingException.java delete mode 100644 JCL/converterJclMin/src/java/io/Writer.java delete mode 100644 JCL/converterJclMin/src/java/lang/ArithmeticException.java delete mode 100644 JCL/converterJclMin/src/java/lang/ArrayIndexOutOfBoundsException.java delete mode 100644 JCL/converterJclMin/src/java/lang/AssertionError.java delete mode 100644 JCL/converterJclMin/src/java/lang/Boolean.java delete mode 100644 JCL/converterJclMin/src/java/lang/Byte.java delete mode 100644 JCL/converterJclMin/src/java/lang/Character.java delete mode 100644 JCL/converterJclMin/src/java/lang/Class.java delete mode 100644 JCL/converterJclMin/src/java/lang/ClassCastException.java delete mode 100644 JCL/converterJclMin/src/java/lang/ClassNotFoundException.java delete mode 100644 JCL/converterJclMin/src/java/lang/CloneNotSupportedException.java delete mode 100644 JCL/converterJclMin/src/java/lang/Cloneable.java delete mode 100644 JCL/converterJclMin/src/java/lang/Comparable.java delete mode 100644 JCL/converterJclMin/src/java/lang/Double.java delete mode 100644 JCL/converterJclMin/src/java/lang/Error.java delete mode 100644 JCL/converterJclMin/src/java/lang/Exception.java delete mode 100644 JCL/converterJclMin/src/java/lang/ExceptionInInitializerError.java delete mode 100644 JCL/converterJclMin/src/java/lang/Float.java delete mode 100644 JCL/converterJclMin/src/java/lang/IllegalMonitorStateException.java delete mode 100644 JCL/converterJclMin/src/java/lang/IndexOutOfBoundsException.java delete mode 100644 JCL/converterJclMin/src/java/lang/Integer.java delete mode 100644 JCL/converterJclMin/src/java/lang/InterruptedException.java delete mode 100644 JCL/converterJclMin/src/java/lang/Long.java delete mode 100644 JCL/converterJclMin/src/java/lang/Math.java delete mode 100644 JCL/converterJclMin/src/java/lang/NoSuchFieldError.java delete mode 100644 JCL/converterJclMin/src/java/lang/NullPointerException.java delete mode 100644 JCL/converterJclMin/src/java/lang/Number.java delete mode 100644 JCL/converterJclMin/src/java/lang/NumberFormatException.java delete mode 100644 JCL/converterJclMin/src/java/lang/Object.java delete mode 100644 JCL/converterJclMin/src/java/lang/ReflectiveOperationException.java delete mode 100644 JCL/converterJclMin/src/java/lang/Runnable.java delete mode 100644 JCL/converterJclMin/src/java/lang/RuntimeException.java delete mode 100644 JCL/converterJclMin/src/java/lang/Short.java delete mode 100644 JCL/converterJclMin/src/java/lang/String.java delete mode 100644 JCL/converterJclMin/src/java/lang/StringBuffer.java delete mode 100644 JCL/converterJclMin/src/java/lang/System.java delete mode 100644 JCL/converterJclMin/src/java/lang/Throwable.java delete mode 100644 JCL/converterJclMin/src/java/lang/Void.java delete mode 100644 JCL/converterJclMin/src/java/lang/ref/Reference.java delete mode 100644 JCL/converterJclMin/src/java/lang/ref/ReferenceQueue.java delete mode 100644 JCL/converterJclMin/src/java/lang/ref/WeakReference.java delete mode 100644 JCL/converterJclMin/src/java/net/MalformedURLException.java delete mode 100644 JCL/converterJclMin/src/java/text/NumberFormat.java delete mode 100644 JCL/converterJclMin/src/java/util/ArrayList.java delete mode 100644 JCL/converterJclMin/src/java/util/Arrays.java delete mode 100644 JCL/converterJclMin/src/java/util/Collection.java delete mode 100644 JCL/converterJclMin/src/java/util/Collections.java delete mode 100644 JCL/converterJclMin/src/java/util/Enumeration.java delete mode 100644 JCL/converterJclMin/src/java/util/HashMap.java delete mode 100644 JCL/converterJclMin/src/java/util/Hashtable.java delete mode 100644 JCL/converterJclMin/src/java/util/Iterator.java delete mode 100644 JCL/converterJclMin/src/java/util/List.java delete mode 100644 JCL/converterJclMin/src/java/util/Locale.java delete mode 100644 JCL/converterJclMin/src/java/util/Map.java delete mode 100644 JCL/converterJclMin/src/java/util/MissingResourceException.java delete mode 100644 JCL/converterJclMin/src/java/util/NoSuchElementException.java delete mode 100644 JCL/converterJclMin/src/java/util/ResourceBundle.java delete mode 100644 JCL/converterJclMin/src/java/util/Set.java delete mode 100644 JCL/converterJclMin/src/java/util/StringTokenizer.java delete mode 100644 JCL/converterJclMin/src/java/util/Vector.java delete mode 100644 JCL/converterJclMin/src/java/util/zip/ZipEntry.java delete mode 100644 JCL/converterJclMin/src/java/util/zip/ZipFile.java delete mode 100644 JCL/converterJclMin1.5/.classpath delete mode 100644 JCL/converterJclMin1.5/.project delete mode 100644 JCL/converterJclMin1.5/.settings/org.eclipse.core.resources.prefs delete mode 100644 JCL/converterJclMin1.5/.settings/org.eclipse.jdt.core.prefs delete mode 100644 JCL/converterJclMin1.5/src/java/awt/List.java delete mode 100644 JCL/converterJclMin1.5/src/java/io/BufferedInputStream.java delete mode 100644 JCL/converterJclMin1.5/src/java/io/BufferedOutputStream.java delete mode 100644 JCL/converterJclMin1.5/src/java/io/BufferedWriter.java delete mode 100644 JCL/converterJclMin1.5/src/java/io/ByteArrayInputStream.java delete mode 100644 JCL/converterJclMin1.5/src/java/io/ByteArrayOutputStream.java delete mode 100644 JCL/converterJclMin1.5/src/java/io/File.java delete mode 100644 JCL/converterJclMin1.5/src/java/io/FileInputStream.java delete mode 100644 JCL/converterJclMin1.5/src/java/io/FileOutputStream.java delete mode 100644 JCL/converterJclMin1.5/src/java/io/FileWriter.java delete mode 100644 JCL/converterJclMin1.5/src/java/io/IOException.java delete mode 100644 JCL/converterJclMin1.5/src/java/io/InputStream.java delete mode 100644 JCL/converterJclMin1.5/src/java/io/InputStreamReader.java delete mode 100644 JCL/converterJclMin1.5/src/java/io/InterruptedIOException.java delete mode 100644 JCL/converterJclMin1.5/src/java/io/OutputStream.java delete mode 100644 JCL/converterJclMin1.5/src/java/io/PrintStream.java delete mode 100644 JCL/converterJclMin1.5/src/java/io/PrintWriter.java delete mode 100644 JCL/converterJclMin1.5/src/java/io/Reader.java delete mode 100644 JCL/converterJclMin1.5/src/java/io/Serializable.java delete mode 100644 JCL/converterJclMin1.5/src/java/io/StringWriter.java delete mode 100644 JCL/converterJclMin1.5/src/java/io/UnsupportedEncodingException.java delete mode 100644 JCL/converterJclMin1.5/src/java/io/Writer.java delete mode 100644 JCL/converterJclMin1.5/src/java/lang/ArithmeticException.java delete mode 100644 JCL/converterJclMin1.5/src/java/lang/ArrayIndexOutOfBoundsException.java delete mode 100644 JCL/converterJclMin1.5/src/java/lang/AssertionError.java delete mode 100644 JCL/converterJclMin1.5/src/java/lang/Boolean.java delete mode 100644 JCL/converterJclMin1.5/src/java/lang/Byte.java delete mode 100644 JCL/converterJclMin1.5/src/java/lang/Character.java delete mode 100644 JCL/converterJclMin1.5/src/java/lang/Class.java delete mode 100644 JCL/converterJclMin1.5/src/java/lang/ClassCastException.java delete mode 100644 JCL/converterJclMin1.5/src/java/lang/ClassNotFoundException.java delete mode 100644 JCL/converterJclMin1.5/src/java/lang/CloneNotSupportedException.java delete mode 100644 JCL/converterJclMin1.5/src/java/lang/Cloneable.java delete mode 100644 JCL/converterJclMin1.5/src/java/lang/Comparable.java delete mode 100644 JCL/converterJclMin1.5/src/java/lang/Deprecated.java delete mode 100644 JCL/converterJclMin1.5/src/java/lang/Double.java delete mode 100644 JCL/converterJclMin1.5/src/java/lang/Enum.java delete mode 100644 JCL/converterJclMin1.5/src/java/lang/Error.java delete mode 100644 JCL/converterJclMin1.5/src/java/lang/Exception.java delete mode 100644 JCL/converterJclMin1.5/src/java/lang/ExceptionInInitializerError.java delete mode 100644 JCL/converterJclMin1.5/src/java/lang/Float.java delete mode 100644 JCL/converterJclMin1.5/src/java/lang/IllegalAccessException.java delete mode 100644 JCL/converterJclMin1.5/src/java/lang/IllegalMonitorStateException.java delete mode 100644 JCL/converterJclMin1.5/src/java/lang/IndexOutOfBoundsException.java delete mode 100644 JCL/converterJclMin1.5/src/java/lang/InstantiationException.java delete mode 100644 JCL/converterJclMin1.5/src/java/lang/Integer.java delete mode 100644 JCL/converterJclMin1.5/src/java/lang/InterruptedException.java delete mode 100644 JCL/converterJclMin1.5/src/java/lang/Iterable.java delete mode 100644 JCL/converterJclMin1.5/src/java/lang/Long.java delete mode 100644 JCL/converterJclMin1.5/src/java/lang/Math.java delete mode 100644 JCL/converterJclMin1.5/src/java/lang/NoSuchFieldError.java delete mode 100644 JCL/converterJclMin1.5/src/java/lang/NullPointerException.java delete mode 100644 JCL/converterJclMin1.5/src/java/lang/Number.java delete mode 100644 JCL/converterJclMin1.5/src/java/lang/NumberFormatException.java delete mode 100644 JCL/converterJclMin1.5/src/java/lang/Object.java delete mode 100644 JCL/converterJclMin1.5/src/java/lang/Override.java delete mode 100644 JCL/converterJclMin1.5/src/java/lang/Runnable.java delete mode 100644 JCL/converterJclMin1.5/src/java/lang/RuntimeException.java delete mode 100644 JCL/converterJclMin1.5/src/java/lang/Short.java delete mode 100644 JCL/converterJclMin1.5/src/java/lang/String.java delete mode 100644 JCL/converterJclMin1.5/src/java/lang/StringBuffer.java delete mode 100644 JCL/converterJclMin1.5/src/java/lang/SuppressWarnings.java delete mode 100644 JCL/converterJclMin1.5/src/java/lang/System.java delete mode 100644 JCL/converterJclMin1.5/src/java/lang/Throwable.java delete mode 100644 JCL/converterJclMin1.5/src/java/lang/Void.java delete mode 100644 JCL/converterJclMin1.5/src/java/lang/annotation/Annotation.java delete mode 100644 JCL/converterJclMin1.5/src/java/lang/annotation/ElementType.java delete mode 100644 JCL/converterJclMin1.5/src/java/lang/annotation/Retention.java delete mode 100644 JCL/converterJclMin1.5/src/java/lang/annotation/RetentionPolicy.java delete mode 100644 JCL/converterJclMin1.5/src/java/lang/annotation/Target.java delete mode 100644 JCL/converterJclMin1.5/src/java/lang/ref/Reference.java delete mode 100644 JCL/converterJclMin1.5/src/java/lang/ref/ReferenceQueue.java delete mode 100644 JCL/converterJclMin1.5/src/java/lang/ref/WeakReference.java delete mode 100644 JCL/converterJclMin1.5/src/java/net/MalformedURLException.java delete mode 100644 JCL/converterJclMin1.5/src/java/text/NumberFormat.java delete mode 100644 JCL/converterJclMin1.5/src/java/util/AbstractCollection.java delete mode 100644 JCL/converterJclMin1.5/src/java/util/AbstractList.java delete mode 100644 JCL/converterJclMin1.5/src/java/util/AbstractSet.java delete mode 100644 JCL/converterJclMin1.5/src/java/util/ArrayList.java delete mode 100644 JCL/converterJclMin1.5/src/java/util/Arrays.java delete mode 100644 JCL/converterJclMin1.5/src/java/util/Collection.java delete mode 100644 JCL/converterJclMin1.5/src/java/util/Collections.java delete mode 100644 JCL/converterJclMin1.5/src/java/util/Enumeration.java delete mode 100644 JCL/converterJclMin1.5/src/java/util/HashMap.java delete mode 100644 JCL/converterJclMin1.5/src/java/util/HashSet.java delete mode 100644 JCL/converterJclMin1.5/src/java/util/Hashtable.java delete mode 100644 JCL/converterJclMin1.5/src/java/util/Iterator.java delete mode 100644 JCL/converterJclMin1.5/src/java/util/List.java delete mode 100644 JCL/converterJclMin1.5/src/java/util/Locale.java delete mode 100644 JCL/converterJclMin1.5/src/java/util/Map.java delete mode 100644 JCL/converterJclMin1.5/src/java/util/MissingResourceException.java delete mode 100644 JCL/converterJclMin1.5/src/java/util/NoSuchElementException.java delete mode 100644 JCL/converterJclMin1.5/src/java/util/RandomAccess.java delete mode 100644 JCL/converterJclMin1.5/src/java/util/ResourceBundle.java delete mode 100644 JCL/converterJclMin1.5/src/java/util/Set.java delete mode 100644 JCL/converterJclMin1.5/src/java/util/StringTokenizer.java delete mode 100644 JCL/converterJclMin1.5/src/java/util/Vector.java delete mode 100644 JCL/converterJclMin1.5/src/java/util/zip/ZipEntry.java delete mode 100644 JCL/converterJclMin1.5/src/java/util/zip/ZipFile.java delete mode 100644 JCL/converterJclMin1.5/src/p1/p2/Annot.java delete mode 100644 JCL/converterJclMin1.5/src/p1/p2/MyEnum.java delete mode 100644 JCL/converterJclMin1.5/src/p1/p2/MyEnum2.java delete mode 100644 JCL/converterJclMin1.7/.classpath delete mode 100644 JCL/converterJclMin1.7/.project delete mode 100644 JCL/converterJclMin1.7/.settings/org.eclipse.core.resources.prefs delete mode 100644 JCL/converterJclMin1.7/.settings/org.eclipse.jdt.core.prefs delete mode 100644 JCL/converterJclMin1.7/src/java/awt/List.java delete mode 100644 JCL/converterJclMin1.7/src/java/io/BufferedInputStream.java delete mode 100644 JCL/converterJclMin1.7/src/java/io/BufferedOutputStream.java delete mode 100644 JCL/converterJclMin1.7/src/java/io/BufferedWriter.java delete mode 100644 JCL/converterJclMin1.7/src/java/io/ByteArrayInputStream.java delete mode 100644 JCL/converterJclMin1.7/src/java/io/ByteArrayOutputStream.java delete mode 100644 JCL/converterJclMin1.7/src/java/io/File.java delete mode 100644 JCL/converterJclMin1.7/src/java/io/FileInputStream.java delete mode 100644 JCL/converterJclMin1.7/src/java/io/FileOutputStream.java delete mode 100644 JCL/converterJclMin1.7/src/java/io/FileWriter.java delete mode 100644 JCL/converterJclMin1.7/src/java/io/IOException.java delete mode 100644 JCL/converterJclMin1.7/src/java/io/InputStream.java delete mode 100644 JCL/converterJclMin1.7/src/java/io/InputStreamReader.java delete mode 100644 JCL/converterJclMin1.7/src/java/io/InterruptedIOException.java delete mode 100644 JCL/converterJclMin1.7/src/java/io/OutputStream.java delete mode 100644 JCL/converterJclMin1.7/src/java/io/PrintStream.java delete mode 100644 JCL/converterJclMin1.7/src/java/io/PrintWriter.java delete mode 100644 JCL/converterJclMin1.7/src/java/io/Reader.java delete mode 100644 JCL/converterJclMin1.7/src/java/io/Serializable.java delete mode 100644 JCL/converterJclMin1.7/src/java/io/StringWriter.java delete mode 100644 JCL/converterJclMin1.7/src/java/io/UnsupportedEncodingException.java delete mode 100644 JCL/converterJclMin1.7/src/java/io/Writer.java delete mode 100644 JCL/converterJclMin1.7/src/java/lang/ArithmeticException.java delete mode 100644 JCL/converterJclMin1.7/src/java/lang/ArrayIndexOutOfBoundsException.java delete mode 100644 JCL/converterJclMin1.7/src/java/lang/AssertionError.java delete mode 100644 JCL/converterJclMin1.7/src/java/lang/Boolean.java delete mode 100644 JCL/converterJclMin1.7/src/java/lang/Byte.java delete mode 100644 JCL/converterJclMin1.7/src/java/lang/Character.java delete mode 100644 JCL/converterJclMin1.7/src/java/lang/Class.java delete mode 100644 JCL/converterJclMin1.7/src/java/lang/ClassCastException.java delete mode 100644 JCL/converterJclMin1.7/src/java/lang/ClassNotFoundException.java delete mode 100644 JCL/converterJclMin1.7/src/java/lang/CloneNotSupportedException.java delete mode 100644 JCL/converterJclMin1.7/src/java/lang/Cloneable.java delete mode 100644 JCL/converterJclMin1.7/src/java/lang/Comparable.java delete mode 100644 JCL/converterJclMin1.7/src/java/lang/Deprecated.java delete mode 100644 JCL/converterJclMin1.7/src/java/lang/Double.java delete mode 100644 JCL/converterJclMin1.7/src/java/lang/Enum.java delete mode 100644 JCL/converterJclMin1.7/src/java/lang/Error.java delete mode 100644 JCL/converterJclMin1.7/src/java/lang/Exception.java delete mode 100644 JCL/converterJclMin1.7/src/java/lang/ExceptionInInitializerError.java delete mode 100644 JCL/converterJclMin1.7/src/java/lang/Float.java delete mode 100644 JCL/converterJclMin1.7/src/java/lang/IllegalAccessException.java delete mode 100644 JCL/converterJclMin1.7/src/java/lang/IllegalMonitorStateException.java delete mode 100644 JCL/converterJclMin1.7/src/java/lang/IndexOutOfBoundsException.java delete mode 100644 JCL/converterJclMin1.7/src/java/lang/InstantiationException.java delete mode 100644 JCL/converterJclMin1.7/src/java/lang/Integer.java delete mode 100644 JCL/converterJclMin1.7/src/java/lang/InterruptedException.java delete mode 100644 JCL/converterJclMin1.7/src/java/lang/Iterable.java delete mode 100644 JCL/converterJclMin1.7/src/java/lang/Long.java delete mode 100644 JCL/converterJclMin1.7/src/java/lang/Math.java delete mode 100644 JCL/converterJclMin1.7/src/java/lang/NoSuchMethodException.java delete mode 100644 JCL/converterJclMin1.7/src/java/lang/NullPointerException.java delete mode 100644 JCL/converterJclMin1.7/src/java/lang/Number.java delete mode 100644 JCL/converterJclMin1.7/src/java/lang/NumberFormatException.java delete mode 100644 JCL/converterJclMin1.7/src/java/lang/Object.java delete mode 100644 JCL/converterJclMin1.7/src/java/lang/Override.java delete mode 100644 JCL/converterJclMin1.7/src/java/lang/ReflectiveOperationException.java delete mode 100644 JCL/converterJclMin1.7/src/java/lang/Runnable.java delete mode 100644 JCL/converterJclMin1.7/src/java/lang/RuntimeException.java delete mode 100644 JCL/converterJclMin1.7/src/java/lang/SafeVarargs.java delete mode 100644 JCL/converterJclMin1.7/src/java/lang/Short.java delete mode 100644 JCL/converterJclMin1.7/src/java/lang/String.java delete mode 100644 JCL/converterJclMin1.7/src/java/lang/StringBuffer.java delete mode 100644 JCL/converterJclMin1.7/src/java/lang/SuppressWarnings.java delete mode 100644 JCL/converterJclMin1.7/src/java/lang/System.java delete mode 100644 JCL/converterJclMin1.7/src/java/lang/Throwable.java delete mode 100644 JCL/converterJclMin1.7/src/java/lang/Void.java delete mode 100644 JCL/converterJclMin1.7/src/java/lang/annotation/Annotation.java delete mode 100644 JCL/converterJclMin1.7/src/java/lang/annotation/Documented.java delete mode 100644 JCL/converterJclMin1.7/src/java/lang/annotation/ElementType.java delete mode 100644 JCL/converterJclMin1.7/src/java/lang/annotation/Retention.java delete mode 100644 JCL/converterJclMin1.7/src/java/lang/annotation/RetentionPolicy.java delete mode 100644 JCL/converterJclMin1.7/src/java/lang/annotation/Target.java delete mode 100644 JCL/converterJclMin1.7/src/java/lang/invoke/MethodHandle.java delete mode 100644 JCL/converterJclMin1.7/src/java/lang/invoke/MethodHandles.java delete mode 100644 JCL/converterJclMin1.7/src/java/lang/invoke/MethodType.java delete mode 100644 JCL/converterJclMin1.7/src/java/lang/ref/Reference.java delete mode 100644 JCL/converterJclMin1.7/src/java/lang/ref/ReferenceQueue.java delete mode 100644 JCL/converterJclMin1.7/src/java/lang/ref/WeakReference.java delete mode 100644 JCL/converterJclMin1.7/src/java/net/MalformedURLException.java delete mode 100644 JCL/converterJclMin1.7/src/java/text/NumberFormat.java delete mode 100644 JCL/converterJclMin1.7/src/java/util/AbstractCollection.java delete mode 100644 JCL/converterJclMin1.7/src/java/util/AbstractList.java delete mode 100644 JCL/converterJclMin1.7/src/java/util/AbstractSet.java delete mode 100644 JCL/converterJclMin1.7/src/java/util/ArrayList.java delete mode 100644 JCL/converterJclMin1.7/src/java/util/Arrays.java delete mode 100644 JCL/converterJclMin1.7/src/java/util/Collection.java delete mode 100644 JCL/converterJclMin1.7/src/java/util/Collections.java delete mode 100644 JCL/converterJclMin1.7/src/java/util/Enumeration.java delete mode 100644 JCL/converterJclMin1.7/src/java/util/HashMap.java delete mode 100644 JCL/converterJclMin1.7/src/java/util/HashSet.java delete mode 100644 JCL/converterJclMin1.7/src/java/util/Hashtable.java delete mode 100644 JCL/converterJclMin1.7/src/java/util/Iterator.java delete mode 100644 JCL/converterJclMin1.7/src/java/util/List.java delete mode 100644 JCL/converterJclMin1.7/src/java/util/Locale.java delete mode 100644 JCL/converterJclMin1.7/src/java/util/Map.java delete mode 100644 JCL/converterJclMin1.7/src/java/util/MissingResourceException.java delete mode 100644 JCL/converterJclMin1.7/src/java/util/NoSuchElementException.java delete mode 100644 JCL/converterJclMin1.7/src/java/util/RandomAccess.java delete mode 100644 JCL/converterJclMin1.7/src/java/util/ResourceBundle.java delete mode 100644 JCL/converterJclMin1.7/src/java/util/Set.java delete mode 100644 JCL/converterJclMin1.7/src/java/util/StringTokenizer.java delete mode 100644 JCL/converterJclMin1.7/src/java/util/Vector.java delete mode 100644 JCL/converterJclMin1.7/src/java/util/zip/ZipEntry.java delete mode 100644 JCL/converterJclMin1.7/src/java/util/zip/ZipFile.java delete mode 100644 org.eclipse.jdt.core.tests.model/JCL/converterJclMin.jar delete mode 100644 org.eclipse.jdt.core.tests.model/JCL/converterJclMin1.5.jar delete mode 100644 org.eclipse.jdt.core.tests.model/JCL/converterJclMin1.5src.zip delete mode 100644 org.eclipse.jdt.core.tests.model/JCL/converterJclMin1.7.jar delete mode 100644 org.eclipse.jdt.core.tests.model/JCL/converterJclMin1.7src.zip diff --git a/JCL/converterJclMin/.classpath b/JCL/converterJclMin/.classpath deleted file mode 100644 index 6ab8f66c5b6..00000000000 --- a/JCL/converterJclMin/.classpath +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/JCL/converterJclMin/.project b/JCL/converterJclMin/.project deleted file mode 100644 index df6b4719b6f..00000000000 --- a/JCL/converterJclMin/.project +++ /dev/null @@ -1,17 +0,0 @@ - - - converterJclMin - - - - - - org.eclipse.jdt.core.javabuilder - - - - - - org.eclipse.jdt.core.javanature - - diff --git a/JCL/converterJclMin/.settings/org.eclipse.core.resources.prefs b/JCL/converterJclMin/.settings/org.eclipse.core.resources.prefs deleted file mode 100644 index 99f26c0203a..00000000000 --- a/JCL/converterJclMin/.settings/org.eclipse.core.resources.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -encoding/=UTF-8 diff --git a/JCL/converterJclMin/.settings/org.eclipse.jdt.core.prefs b/JCL/converterJclMin/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index cd734f41675..00000000000 --- a/JCL/converterJclMin/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,12 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.4 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning -org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning -org.eclipse.jdt.core.compiler.release=disabled -org.eclipse.jdt.core.compiler.source=1.3 diff --git a/JCL/converterJclMin/src/java/awt/List.java b/JCL/converterJclMin/src/java/awt/List.java deleted file mode 100644 index b2fd6f7c24a..00000000000 --- a/JCL/converterJclMin/src/java/awt/List.java +++ /dev/null @@ -1,15 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.awt; - -public class List { - -} diff --git a/JCL/converterJclMin/src/java/awt/Point.java b/JCL/converterJclMin/src/java/awt/Point.java deleted file mode 100644 index 132f09602b8..00000000000 --- a/JCL/converterJclMin/src/java/awt/Point.java +++ /dev/null @@ -1,7 +0,0 @@ -package java.awt; - -public class Point { - - public int x; - public int y; -} diff --git a/JCL/converterJclMin/src/java/io/BufferedInputStream.java b/JCL/converterJclMin/src/java/io/BufferedInputStream.java deleted file mode 100644 index aa574a1930e..00000000000 --- a/JCL/converterJclMin/src/java/io/BufferedInputStream.java +++ /dev/null @@ -1,17 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - - -public class BufferedInputStream extends InputStream { - public BufferedInputStream(InputStream inputStream) { - } -} diff --git a/JCL/converterJclMin/src/java/io/BufferedOutputStream.java b/JCL/converterJclMin/src/java/io/BufferedOutputStream.java deleted file mode 100644 index 3ab0e26fc52..00000000000 --- a/JCL/converterJclMin/src/java/io/BufferedOutputStream.java +++ /dev/null @@ -1,17 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - - -public class BufferedOutputStream extends OutputStream { - public BufferedOutputStream(FileOutputStream outputStream) { - } -} diff --git a/JCL/converterJclMin/src/java/io/BufferedWriter.java b/JCL/converterJclMin/src/java/io/BufferedWriter.java deleted file mode 100644 index 61122c1b2f4..00000000000 --- a/JCL/converterJclMin/src/java/io/BufferedWriter.java +++ /dev/null @@ -1,22 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - - -public class BufferedWriter extends Writer { - - public BufferedWriter(Writer writer) { - } - public void flush() throws IOException { - } - public void close() throws IOException { - } -} diff --git a/JCL/converterJclMin/src/java/io/ByteArrayInputStream.java b/JCL/converterJclMin/src/java/io/ByteArrayInputStream.java deleted file mode 100644 index 7f095dcbcb4..00000000000 --- a/JCL/converterJclMin/src/java/io/ByteArrayInputStream.java +++ /dev/null @@ -1,17 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - - -public class ByteArrayInputStream extends InputStream { - public ByteArrayInputStream(byte[] b) { - } -} diff --git a/JCL/converterJclMin/src/java/io/ByteArrayOutputStream.java b/JCL/converterJclMin/src/java/io/ByteArrayOutputStream.java deleted file mode 100644 index 8af40644cc3..00000000000 --- a/JCL/converterJclMin/src/java/io/ByteArrayOutputStream.java +++ /dev/null @@ -1,16 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - - -public class ByteArrayOutputStream extends OutputStream { - -} diff --git a/JCL/converterJclMin/src/java/io/File.java b/JCL/converterJclMin/src/java/io/File.java deleted file mode 100644 index e0465e47fa9..00000000000 --- a/JCL/converterJclMin/src/java/io/File.java +++ /dev/null @@ -1,46 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - -public class File { - public static final char separatorChar = '\\'; - public static final String separator = "\\"; //$NON-NLS-1$ - - public File(String s) { - } - - public boolean exists() { - return false; - } - - public boolean isDirectory() { - return false; - } - - public String getAbsolutePath() { - return null; - } - - public boolean mkdirs() { - return false; - } - - public boolean mkdir() { - return false; - } - - public String getName() { - return null; - } - public long length() { - return 0; - } -} diff --git a/JCL/converterJclMin/src/java/io/FileInputStream.java b/JCL/converterJclMin/src/java/io/FileInputStream.java deleted file mode 100644 index c51d1be33c8..00000000000 --- a/JCL/converterJclMin/src/java/io/FileInputStream.java +++ /dev/null @@ -1,18 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - - -public class FileInputStream extends InputStream { - - public FileInputStream(File f) { - } -} diff --git a/JCL/converterJclMin/src/java/io/FileOutputStream.java b/JCL/converterJclMin/src/java/io/FileOutputStream.java deleted file mode 100644 index c643bf9c415..00000000000 --- a/JCL/converterJclMin/src/java/io/FileOutputStream.java +++ /dev/null @@ -1,19 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - - -public class FileOutputStream extends OutputStream { - public FileOutputStream(File f) { - } - public FileOutputStream(String s) { - } -} diff --git a/JCL/converterJclMin/src/java/io/FileWriter.java b/JCL/converterJclMin/src/java/io/FileWriter.java deleted file mode 100644 index 667a1888694..00000000000 --- a/JCL/converterJclMin/src/java/io/FileWriter.java +++ /dev/null @@ -1,24 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - - -public class FileWriter extends Writer { - - public FileWriter(String s) { - } - public void flush() throws IOException { - } - - public void close() throws IOException { - } - -} diff --git a/JCL/converterJclMin/src/java/io/IOException.java b/JCL/converterJclMin/src/java/io/IOException.java deleted file mode 100644 index a73f64275e4..00000000000 --- a/JCL/converterJclMin/src/java/io/IOException.java +++ /dev/null @@ -1,20 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - -public class IOException extends Exception { - - public IOException(String s) { - super(s); - } - public IOException() { - } -} diff --git a/JCL/converterJclMin/src/java/io/InputStream.java b/JCL/converterJclMin/src/java/io/InputStream.java deleted file mode 100644 index 8aa222e9020..00000000000 --- a/JCL/converterJclMin/src/java/io/InputStream.java +++ /dev/null @@ -1,22 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - -public class InputStream { - public void close() throws IOException { - } - public int available() throws IOException { - return 0; - } - public int read(byte b[], int off, int len) throws IOException { - return 0; - } -} diff --git a/JCL/converterJclMin/src/java/io/InputStreamReader.java b/JCL/converterJclMin/src/java/io/InputStreamReader.java deleted file mode 100644 index a9012a34b8a..00000000000 --- a/JCL/converterJclMin/src/java/io/InputStreamReader.java +++ /dev/null @@ -1,22 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - - -public class InputStreamReader extends Reader { - public InputStreamReader(InputStream inputStream) { - } - public InputStreamReader(InputStream stream, String s) throws UnsupportedEncodingException { - } - public int read(char cbuf[], int offset, int length) throws IOException { - return 0; - } -} diff --git a/JCL/converterJclMin/src/java/io/InterruptedIOException.java b/JCL/converterJclMin/src/java/io/InterruptedIOException.java deleted file mode 100644 index c95111adfcc..00000000000 --- a/JCL/converterJclMin/src/java/io/InterruptedIOException.java +++ /dev/null @@ -1,15 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - -public class InterruptedIOException extends Exception { - -} diff --git a/JCL/converterJclMin/src/java/io/OutputStream.java b/JCL/converterJclMin/src/java/io/OutputStream.java deleted file mode 100644 index 8d9756265ba..00000000000 --- a/JCL/converterJclMin/src/java/io/OutputStream.java +++ /dev/null @@ -1,22 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - - -public class OutputStream { - - public void write(byte b[]) throws IOException { - } - public void flush() throws IOException { - } - public void close() throws IOException { - } -} diff --git a/JCL/converterJclMin/src/java/io/PrintStream.java b/JCL/converterJclMin/src/java/io/PrintStream.java deleted file mode 100644 index 503f080425d..00000000000 --- a/JCL/converterJclMin/src/java/io/PrintStream.java +++ /dev/null @@ -1,35 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - -public class PrintStream { - - public void println() { - } - - public void println(String s) { - } - - public void println(int i) { - } - - public void println(Object o) { - } - - public void print(String s) { - } - - public void print(Object o) { - } - - public void print(int i) { - } -} diff --git a/JCL/converterJclMin/src/java/io/PrintWriter.java b/JCL/converterJclMin/src/java/io/PrintWriter.java deleted file mode 100644 index ec7e885e07e..00000000000 --- a/JCL/converterJclMin/src/java/io/PrintWriter.java +++ /dev/null @@ -1,28 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - -public class PrintWriter extends Writer { - public PrintWriter(ByteArrayOutputStream stream) { - } - public PrintWriter(Writer w) { - } - public void print(String s) { - } - public void print(char[] tab) { - } - public void flush() { - } - public void close() { - } - public void println(String s) { - } -} diff --git a/JCL/converterJclMin/src/java/io/Reader.java b/JCL/converterJclMin/src/java/io/Reader.java deleted file mode 100644 index bb74ec22fa7..00000000000 --- a/JCL/converterJclMin/src/java/io/Reader.java +++ /dev/null @@ -1,16 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - - -public class Reader { - -} diff --git a/JCL/converterJclMin/src/java/io/Serializable.java b/JCL/converterJclMin/src/java/io/Serializable.java deleted file mode 100644 index e33731bec8f..00000000000 --- a/JCL/converterJclMin/src/java/io/Serializable.java +++ /dev/null @@ -1,15 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - -public interface Serializable { - -} diff --git a/JCL/converterJclMin/src/java/io/StringWriter.java b/JCL/converterJclMin/src/java/io/StringWriter.java deleted file mode 100644 index 84631fdee0d..00000000000 --- a/JCL/converterJclMin/src/java/io/StringWriter.java +++ /dev/null @@ -1,23 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - - -public class StringWriter extends Writer { - - public StringBuffer getBuffer() { - return null; - } - public void flush() { - } - public void close() { - } -} diff --git a/JCL/converterJclMin/src/java/io/UnsupportedEncodingException.java b/JCL/converterJclMin/src/java/io/UnsupportedEncodingException.java deleted file mode 100644 index 916b5ccdcd2..00000000000 --- a/JCL/converterJclMin/src/java/io/UnsupportedEncodingException.java +++ /dev/null @@ -1,19 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - -public class UnsupportedEncodingException extends IOException { - public UnsupportedEncodingException(String s) { - super(s); - } - public UnsupportedEncodingException() { - } -} diff --git a/JCL/converterJclMin/src/java/io/Writer.java b/JCL/converterJclMin/src/java/io/Writer.java deleted file mode 100644 index 8a198ae50ca..00000000000 --- a/JCL/converterJclMin/src/java/io/Writer.java +++ /dev/null @@ -1,19 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - - -public abstract class Writer { - public abstract void flush() throws IOException; - public abstract void close() throws IOException; - public void write(String str) throws IOException { - } -} diff --git a/JCL/converterJclMin/src/java/lang/ArithmeticException.java b/JCL/converterJclMin/src/java/lang/ArithmeticException.java deleted file mode 100644 index 063baae8d82..00000000000 --- a/JCL/converterJclMin/src/java/lang/ArithmeticException.java +++ /dev/null @@ -1,16 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - - -public class ArithmeticException extends RuntimeException { - -} diff --git a/JCL/converterJclMin/src/java/lang/ArrayIndexOutOfBoundsException.java b/JCL/converterJclMin/src/java/lang/ArrayIndexOutOfBoundsException.java deleted file mode 100644 index af436866fea..00000000000 --- a/JCL/converterJclMin/src/java/lang/ArrayIndexOutOfBoundsException.java +++ /dev/null @@ -1,16 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - - -public class ArrayIndexOutOfBoundsException extends IndexOutOfBoundsException { - -} diff --git a/JCL/converterJclMin/src/java/lang/AssertionError.java b/JCL/converterJclMin/src/java/lang/AssertionError.java deleted file mode 100644 index 3acb2e6ec3a..00000000000 --- a/JCL/converterJclMin/src/java/lang/AssertionError.java +++ /dev/null @@ -1,29 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public class AssertionError extends Error { - - /** - * Constructor for AssertionError. - */ - public AssertionError(String s) { - super(s); - } - - /** - * Constructor for AssertionError. - */ - public AssertionError() { - super(); - } - -} diff --git a/JCL/converterJclMin/src/java/lang/Boolean.java b/JCL/converterJclMin/src/java/lang/Boolean.java deleted file mode 100644 index 198c9287b17..00000000000 --- a/JCL/converterJclMin/src/java/lang/Boolean.java +++ /dev/null @@ -1,19 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - - -public class Boolean { - public static final Boolean TRUE = new Boolean(true); - public static final Boolean FALSE = new Boolean(false); - public Boolean(boolean b) { - } -} diff --git a/JCL/converterJclMin/src/java/lang/Byte.java b/JCL/converterJclMin/src/java/lang/Byte.java deleted file mode 100644 index 57fe180246d..00000000000 --- a/JCL/converterJclMin/src/java/lang/Byte.java +++ /dev/null @@ -1,41 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - - -public class Byte extends Number { - public Byte(byte b) { - } - /* (non-Javadoc) - * @see java.lang.Number#doubleValue() - */ - public double doubleValue() { - return 0; - } - /* (non-Javadoc) - * @see java.lang.Number#floatValue() - */ - public float floatValue() { - return 0; - } - /* (non-Javadoc) - * @see java.lang.Number#intValue() - */ - public int intValue() { - return 0; - } - /* (non-Javadoc) - * @see java.lang.Number#longValue() - */ - public long longValue() { - return 0; - } -} diff --git a/JCL/converterJclMin/src/java/lang/Character.java b/JCL/converterJclMin/src/java/lang/Character.java deleted file mode 100644 index 337c148689e..00000000000 --- a/JCL/converterJclMin/src/java/lang/Character.java +++ /dev/null @@ -1,39 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public class Character { - public Character(char c) { - } - public static char toLowerCase(char c) { - return ' '; - } - - public static int getNumericValue(char c) { - return 0; - } - - public static int digit(char ch, int radix) { - return 0; - } - public static boolean isWhitespace(char c) { - return false; - } - public static boolean isJavaIdentifierStart(char c) { - return false; - } - public static boolean isJavaIdentifierPart(char c) { - return false; - } - public static boolean isDigit(char c) { - return false; - } -} diff --git a/JCL/converterJclMin/src/java/lang/Class.java b/JCL/converterJclMin/src/java/lang/Class.java deleted file mode 100644 index bfa8272d7de..00000000000 --- a/JCL/converterJclMin/src/java/lang/Class.java +++ /dev/null @@ -1,22 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -import java.io.InputStream; - -public class Class { - public String getName() { - return null; - } - public InputStream getResourceAsStream(String s) { - return null; - } -} diff --git a/JCL/converterJclMin/src/java/lang/ClassCastException.java b/JCL/converterJclMin/src/java/lang/ClassCastException.java deleted file mode 100644 index 51bbbd21252..00000000000 --- a/JCL/converterJclMin/src/java/lang/ClassCastException.java +++ /dev/null @@ -1,16 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - - -public class ClassCastException extends RuntimeException { - -} diff --git a/JCL/converterJclMin/src/java/lang/ClassNotFoundException.java b/JCL/converterJclMin/src/java/lang/ClassNotFoundException.java deleted file mode 100644 index 79875fa4a98..00000000000 --- a/JCL/converterJclMin/src/java/lang/ClassNotFoundException.java +++ /dev/null @@ -1,20 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2020 GK Software SE and others. - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; -public class ClassNotFoundException extends ReflectiveOperationException { - public ClassNotFoundException() { super(); } - public ClassNotFoundException(String s) { super(s); } - public ClassNotFoundException(String s, Throwable t) { super(s, t);} - public Throwable getException() { return null; } -} diff --git a/JCL/converterJclMin/src/java/lang/CloneNotSupportedException.java b/JCL/converterJclMin/src/java/lang/CloneNotSupportedException.java deleted file mode 100644 index 2074efbf9e5..00000000000 --- a/JCL/converterJclMin/src/java/lang/CloneNotSupportedException.java +++ /dev/null @@ -1,14 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public class CloneNotSupportedException extends Exception { -} diff --git a/JCL/converterJclMin/src/java/lang/Cloneable.java b/JCL/converterJclMin/src/java/lang/Cloneable.java deleted file mode 100644 index bc1cb76200b..00000000000 --- a/JCL/converterJclMin/src/java/lang/Cloneable.java +++ /dev/null @@ -1,15 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public interface Cloneable { - -} diff --git a/JCL/converterJclMin/src/java/lang/Comparable.java b/JCL/converterJclMin/src/java/lang/Comparable.java deleted file mode 100644 index 09be762d0fe..00000000000 --- a/JCL/converterJclMin/src/java/lang/Comparable.java +++ /dev/null @@ -1,16 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - - -public interface Comparable { - public int compareTo(Object o); -} diff --git a/JCL/converterJclMin/src/java/lang/Double.java b/JCL/converterJclMin/src/java/lang/Double.java deleted file mode 100644 index fee7129f89c..00000000000 --- a/JCL/converterJclMin/src/java/lang/Double.java +++ /dev/null @@ -1,56 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public class Double extends Number { - public Double(double d) { - } - public static String toString(double d) { - return null; - } - public static Double valueOf(String s) throws NumberFormatException { - return null; - } - public static final double POSITIVE_INFINITY = 1.0 / 0.0; - public static boolean isNaN(double v) { - return false; - } - public double doubleValue() { - return 0.0; - } - public static final double MAX_VALUE = 1.7976931348623157e+308; - public static final double MIN_VALUE = 4.9e-324; - public static final double NaN = 0.0d / 0.0; - - public static native double longBitsToDouble(long bits); - public static native long doubleToLongBits(double value); - /* (non-Javadoc) - * @see java.lang.Number#floatValue() - */ - public float floatValue() { - return 0; - } - /* (non-Javadoc) - * @see java.lang.Number#intValue() - */ - public int intValue() { - return 0; - } - /* (non-Javadoc) - * @see java.lang.Number#longValue() - */ - public long longValue() { - return 0; - } - public static double parseDouble(String s) { - return 0.0; - } -} diff --git a/JCL/converterJclMin/src/java/lang/Error.java b/JCL/converterJclMin/src/java/lang/Error.java deleted file mode 100644 index fc4766d7318..00000000000 --- a/JCL/converterJclMin/src/java/lang/Error.java +++ /dev/null @@ -1,21 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public class Error extends Throwable { - - public Error(String s) { - super(s); - } - - public Error() { - } -} diff --git a/JCL/converterJclMin/src/java/lang/Exception.java b/JCL/converterJclMin/src/java/lang/Exception.java deleted file mode 100644 index f7969390d95..00000000000 --- a/JCL/converterJclMin/src/java/lang/Exception.java +++ /dev/null @@ -1,19 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public class Exception extends Throwable { - public Exception() { - } - public Exception(String s) { - super(s); - } -} diff --git a/JCL/converterJclMin/src/java/lang/ExceptionInInitializerError.java b/JCL/converterJclMin/src/java/lang/ExceptionInInitializerError.java deleted file mode 100644 index 907abda50dc..00000000000 --- a/JCL/converterJclMin/src/java/lang/ExceptionInInitializerError.java +++ /dev/null @@ -1,17 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - - -public class ExceptionInInitializerError extends Error { - public ExceptionInInitializerError(String s) { - } -} diff --git a/JCL/converterJclMin/src/java/lang/Float.java b/JCL/converterJclMin/src/java/lang/Float.java deleted file mode 100644 index ff66ee6f1f0..00000000000 --- a/JCL/converterJclMin/src/java/lang/Float.java +++ /dev/null @@ -1,53 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - - -public class Float extends Number { - public static final float NaN = 0.0f / 0.0f; - public Float(float f) { - } - public static native float intBitsToFloat(int bits); - public static Float valueOf(String s) throws NumberFormatException { - return null; - } - public static final float POSITIVE_INFINITY = 1.0f / 0.0f; - public static boolean isNaN(float v) { - return false; - } - public float floatValue() { - return 0.0f; - } - public static final float MAX_VALUE = 3.4028235e+38f; - public static final float MIN_VALUE = 1.4e-45f; - public static native int floatToIntBits(float value); - public static String toString(float f) { - return null; - } - /* (non-Javadoc) - * @see java.lang.Number#doubleValue() - */ - public double doubleValue() { - return 0; - } - /* (non-Javadoc) - * @see java.lang.Number#intValue() - */ - public int intValue() { - return 0; - } - /* (non-Javadoc) - * @see java.lang.Number#longValue() - */ - public long longValue() { - return 0; - } -} diff --git a/JCL/converterJclMin/src/java/lang/IllegalMonitorStateException.java b/JCL/converterJclMin/src/java/lang/IllegalMonitorStateException.java deleted file mode 100644 index 0e7fb8025ff..00000000000 --- a/JCL/converterJclMin/src/java/lang/IllegalMonitorStateException.java +++ /dev/null @@ -1,18 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public class IllegalMonitorStateException extends RuntimeException { - public IllegalMonitorStateException(String s) { - } - public IllegalMonitorStateException() { - } -} diff --git a/JCL/converterJclMin/src/java/lang/IndexOutOfBoundsException.java b/JCL/converterJclMin/src/java/lang/IndexOutOfBoundsException.java deleted file mode 100644 index 7230956f644..00000000000 --- a/JCL/converterJclMin/src/java/lang/IndexOutOfBoundsException.java +++ /dev/null @@ -1,16 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - - -public class IndexOutOfBoundsException extends RuntimeException { - -} diff --git a/JCL/converterJclMin/src/java/lang/Integer.java b/JCL/converterJclMin/src/java/lang/Integer.java deleted file mode 100644 index 8d2027efa8b..00000000000 --- a/JCL/converterJclMin/src/java/lang/Integer.java +++ /dev/null @@ -1,54 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public class Integer extends Number { - public Integer(int i) { - } - public Integer(String s) { - } - public static final int MAX_VALUE= 2147483647; - public static final int MIN_VALUE= -2147483647; - - public static int parseInt(String s) throws NumberFormatException { - return 0; - } - public static String toHexString(int i) { - return null; - } - public static String toString(int i) { - return null; - } - /* (non-Javadoc) - * @see java.lang.Number#doubleValue() - */ - public double doubleValue() { - return 0; - } - /* (non-Javadoc) - * @see java.lang.Number#floatValue() - */ - public float floatValue() { - return 0; - } - /* (non-Javadoc) - * @see java.lang.Number#intValue() - */ - public int intValue() { - return 0; - } - /* (non-Javadoc) - * @see java.lang.Number#longValue() - */ - public long longValue() { - return 0; - } -} diff --git a/JCL/converterJclMin/src/java/lang/InterruptedException.java b/JCL/converterJclMin/src/java/lang/InterruptedException.java deleted file mode 100644 index 8bbd866439f..00000000000 --- a/JCL/converterJclMin/src/java/lang/InterruptedException.java +++ /dev/null @@ -1,14 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public class InterruptedException extends Exception { -} diff --git a/JCL/converterJclMin/src/java/lang/Long.java b/JCL/converterJclMin/src/java/lang/Long.java deleted file mode 100644 index 094fde461c7..00000000000 --- a/JCL/converterJclMin/src/java/lang/Long.java +++ /dev/null @@ -1,42 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public class Long extends Number { - public static final long MIN_VALUE = 0x8000000000000000L; - public static final long MAX_VALUE = 0x7fffffffffffffffL; - public Long(long l) { - } - /* (non-Javadoc) - * @see java.lang.Number#doubleValue() - */ - public double doubleValue() { - return 0; - } - /* (non-Javadoc) - * @see java.lang.Number#floatValue() - */ - public float floatValue() { - return 0; - } - /* (non-Javadoc) - * @see java.lang.Number#intValue() - */ - public int intValue() { - return 0; - } - /* (non-Javadoc) - * @see java.lang.Number#longValue() - */ - public long longValue() { - return 0; - } -} diff --git a/JCL/converterJclMin/src/java/lang/Math.java b/JCL/converterJclMin/src/java/lang/Math.java deleted file mode 100644 index 51837194632..00000000000 --- a/JCL/converterJclMin/src/java/lang/Math.java +++ /dev/null @@ -1,24 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public class Math { - - public static int min(int a, int b) { - return 0; - } - public static int max(int a, int b) { - return 0; - } - public static int abs(int a) { - return 0; - } -} diff --git a/JCL/converterJclMin/src/java/lang/NoSuchFieldError.java b/JCL/converterJclMin/src/java/lang/NoSuchFieldError.java deleted file mode 100644 index b6eefdc89eb..00000000000 --- a/JCL/converterJclMin/src/java/lang/NoSuchFieldError.java +++ /dev/null @@ -1,15 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2020 GK Software SE and others. - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - */ -package java.lang; -public class NoSuchFieldError extends IncompatibleClassChangeError { - public NoSuchFieldError() { super(); } - public NoSuchFieldError(String s) {super(s);} -} diff --git a/JCL/converterJclMin/src/java/lang/NullPointerException.java b/JCL/converterJclMin/src/java/lang/NullPointerException.java deleted file mode 100644 index 8e18fa47836..00000000000 --- a/JCL/converterJclMin/src/java/lang/NullPointerException.java +++ /dev/null @@ -1,29 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public class NullPointerException extends RuntimeException { - - /** - * Constructor for NullPointerException. - */ - public NullPointerException(String s) { - super(s); - } - - /** - * Constructor for NullPointerException. - */ - public NullPointerException() { - super(); - } - -} diff --git a/JCL/converterJclMin/src/java/lang/Number.java b/JCL/converterJclMin/src/java/lang/Number.java deleted file mode 100644 index 602872f4585..00000000000 --- a/JCL/converterJclMin/src/java/lang/Number.java +++ /dev/null @@ -1,25 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - - -public abstract class Number { - public abstract int intValue(); - public abstract long longValue(); - public abstract float floatValue(); - public abstract double doubleValue(); - public byte byteValue() { - return (byte) intValue(); - } - public short shortValue() { - return (short) intValue(); - } -} diff --git a/JCL/converterJclMin/src/java/lang/NumberFormatException.java b/JCL/converterJclMin/src/java/lang/NumberFormatException.java deleted file mode 100644 index db1be617e05..00000000000 --- a/JCL/converterJclMin/src/java/lang/NumberFormatException.java +++ /dev/null @@ -1,16 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - - -public class NumberFormatException extends RuntimeException { - -} diff --git a/JCL/converterJclMin/src/java/lang/Object.java b/JCL/converterJclMin/src/java/lang/Object.java deleted file mode 100644 index 7a501924c7d..00000000000 --- a/JCL/converterJclMin/src/java/lang/Object.java +++ /dev/null @@ -1,47 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public class Object { - - public Object() { - } - protected Object clone() throws CloneNotSupportedException { - return null; - } - public boolean equals(Object obj) { - return false; - } - protected void finalize() throws Throwable { - } - public final Class getClass() { - return null; - } - public int hashCode() { - return -1; - } - public final void notify() throws IllegalMonitorStateException { - } - public final void notifyAll() throws IllegalMonitorStateException { - } - public String toString() { - return null; - } - public final void wait() throws IllegalMonitorStateException, - InterruptedException { - } - public final void wait(long millis) throws IllegalMonitorStateException, - InterruptedException { - } - public final void wait(long millis, int nanos) - throws IllegalMonitorStateException, InterruptedException { - } -} diff --git a/JCL/converterJclMin/src/java/lang/ReflectiveOperationException.java b/JCL/converterJclMin/src/java/lang/ReflectiveOperationException.java deleted file mode 100644 index cdbe130edd3..00000000000 --- a/JCL/converterJclMin/src/java/lang/ReflectiveOperationException.java +++ /dev/null @@ -1,26 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2020 GK Software SE and others. - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public class ReflectiveOperationException extends Exception { - public ReflectiveOperationException() { - super(); - } - public ReflectiveOperationException(String s, Throwable t) { - this(s); - } - public ReflectiveOperationException(java.lang.String s) { - super(s); - } -} diff --git a/JCL/converterJclMin/src/java/lang/Runnable.java b/JCL/converterJclMin/src/java/lang/Runnable.java deleted file mode 100644 index d37f3130d10..00000000000 --- a/JCL/converterJclMin/src/java/lang/Runnable.java +++ /dev/null @@ -1,16 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public interface Runnable { - - void run(); -} diff --git a/JCL/converterJclMin/src/java/lang/RuntimeException.java b/JCL/converterJclMin/src/java/lang/RuntimeException.java deleted file mode 100644 index be85127b2ec..00000000000 --- a/JCL/converterJclMin/src/java/lang/RuntimeException.java +++ /dev/null @@ -1,19 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public class RuntimeException extends Exception { - public RuntimeException(String s) { - super(s); - } - public RuntimeException() { - } -} diff --git a/JCL/converterJclMin/src/java/lang/Short.java b/JCL/converterJclMin/src/java/lang/Short.java deleted file mode 100644 index e61f1368adf..00000000000 --- a/JCL/converterJclMin/src/java/lang/Short.java +++ /dev/null @@ -1,41 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - - -public class Short extends Number { - public Short(short s) { - } - /* (non-Javadoc) - * @see java.lang.Number#doubleValue() - */ - public double doubleValue() { - return 0; - } - /* (non-Javadoc) - * @see java.lang.Number#floatValue() - */ - public float floatValue() { - return 0; - } - /* (non-Javadoc) - * @see java.lang.Number#intValue() - */ - public int intValue() { - return 0; - } - /* (non-Javadoc) - * @see java.lang.Number#longValue() - */ - public long longValue() { - return 0; - } -} diff --git a/JCL/converterJclMin/src/java/lang/String.java b/JCL/converterJclMin/src/java/lang/String.java deleted file mode 100644 index 219e3a0c5a4..00000000000 --- a/JCL/converterJclMin/src/java/lang/String.java +++ /dev/null @@ -1,75 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public class String { - public String() { - } - public String(char[] source) { - } - public String(String s) { - } - public String(char[] source, int i , int j) { - } - public int length() { - return 0; - } - public String replace(char oldChar, char newChar) { - return null; - } - - public int lastIndexOf(char c) { - return 0; - } - - public String substring(int i, int j) { - return null; - } - public String substring(int i) { - return null; - } - public char[] toCharArray() { - return null; - } - public int indexOf(String s) { - return 0; - } - public int indexOf(String s, int i) { - return 0; - } - public boolean endsWith(String s) { - return false; - } - public static String valueOf(int i) { - return null; - } - public static String valueOf(Object o) { - return null; - } - public static String valueOf(char[] tab) { - return null; - } - public static String valueOf(char[] tab, int i, int j) { - return null; - } - public int compareTo(String s) { - return 0; - } - public int indexOf(int ch, int fromIndex) { - return 0; - } - public char charAt(int i) { - return ' '; - } - public String trim() { - return null; - } -} diff --git a/JCL/converterJclMin/src/java/lang/StringBuffer.java b/JCL/converterJclMin/src/java/lang/StringBuffer.java deleted file mode 100644 index f77dd695b04..00000000000 --- a/JCL/converterJclMin/src/java/lang/StringBuffer.java +++ /dev/null @@ -1,59 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public class StringBuffer { - public StringBuffer() { - } - public StringBuffer(String s) { - } - public StringBuffer(int i) { - } - public synchronized StringBuffer insert(int offset, String str) { - return this; - } - public synchronized StringBuffer append(String s) { - return this; - } - public synchronized StringBuffer append(StringBuffer buffer) { - return this; - } - public synchronized StringBuffer append(boolean b) { - return this; - } - public synchronized StringBuffer append(int i) { - return this; - } - public synchronized StringBuffer append(long l) { - return this; - } - public synchronized StringBuffer append(float f) { - return this; - } - public synchronized StringBuffer append(double d) { - return this; - } - public synchronized StringBuffer append(char[] o) { - return this; - } - public synchronized StringBuffer append(char[] o, int i, int j) { - return this; - } - public synchronized StringBuffer append(Object o) { - return this; - } - public int length() { - return 0; - } - public char[] getChars(int i, int j, char[] tab, int k) { - return null; - } -} diff --git a/JCL/converterJclMin/src/java/lang/System.java b/JCL/converterJclMin/src/java/lang/System.java deleted file mode 100644 index a13acd2404d..00000000000 --- a/JCL/converterJclMin/src/java/lang/System.java +++ /dev/null @@ -1,24 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -import java.io.PrintStream; - -public class System { - - public static PrintStream err; - public static PrintStream out; - - public static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int length); - public static String getProperty(String s) { - return null; - } -} diff --git a/JCL/converterJclMin/src/java/lang/Throwable.java b/JCL/converterJclMin/src/java/lang/Throwable.java deleted file mode 100644 index 42ebfd75a12..00000000000 --- a/JCL/converterJclMin/src/java/lang/Throwable.java +++ /dev/null @@ -1,33 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -import java.io.PrintStream; -import java.io.Writer; - -public class Throwable { - public Throwable(String s) { - } - public Throwable() { - } - - public void printStackTrace() { - } - - public void printStackTrace(Writer w) { - } - - public void printStackTrace(PrintStream w) { - } - public String getMessage() { - return null; - } -} diff --git a/JCL/converterJclMin/src/java/lang/Void.java b/JCL/converterJclMin/src/java/lang/Void.java deleted file mode 100644 index 72e9ca2becd..00000000000 --- a/JCL/converterJclMin/src/java/lang/Void.java +++ /dev/null @@ -1,13 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public class Void {} \ No newline at end of file diff --git a/JCL/converterJclMin/src/java/lang/ref/Reference.java b/JCL/converterJclMin/src/java/lang/ref/Reference.java deleted file mode 100644 index 4d163a8bd12..00000000000 --- a/JCL/converterJclMin/src/java/lang/ref/Reference.java +++ /dev/null @@ -1,17 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang.ref; - -public class Reference { - public Object get() { - return null; - } -} diff --git a/JCL/converterJclMin/src/java/lang/ref/ReferenceQueue.java b/JCL/converterJclMin/src/java/lang/ref/ReferenceQueue.java deleted file mode 100644 index 9fe70bdafe3..00000000000 --- a/JCL/converterJclMin/src/java/lang/ref/ReferenceQueue.java +++ /dev/null @@ -1,17 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang.ref; - -public class ReferenceQueue { - public Reference poll() { - return null; - } -} diff --git a/JCL/converterJclMin/src/java/lang/ref/WeakReference.java b/JCL/converterJclMin/src/java/lang/ref/WeakReference.java deleted file mode 100644 index a45438ab53e..00000000000 --- a/JCL/converterJclMin/src/java/lang/ref/WeakReference.java +++ /dev/null @@ -1,17 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang.ref; - - -public class WeakReference extends Reference { - public WeakReference(Object o, ReferenceQueue queue) { - } -} diff --git a/JCL/converterJclMin/src/java/net/MalformedURLException.java b/JCL/converterJclMin/src/java/net/MalformedURLException.java deleted file mode 100644 index 887f4a7c4be..00000000000 --- a/JCL/converterJclMin/src/java/net/MalformedURLException.java +++ /dev/null @@ -1,15 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.net; - -public class MalformedURLException extends Exception { - -} diff --git a/JCL/converterJclMin/src/java/text/NumberFormat.java b/JCL/converterJclMin/src/java/text/NumberFormat.java deleted file mode 100644 index 93a29b63cf3..00000000000 --- a/JCL/converterJclMin/src/java/text/NumberFormat.java +++ /dev/null @@ -1,22 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.text; - -public class NumberFormat { - - public final static NumberFormat getInstance() { - return null; - } - - public final String format (double d) { - return null; - } -} diff --git a/JCL/converterJclMin/src/java/util/ArrayList.java b/JCL/converterJclMin/src/java/util/ArrayList.java deleted file mode 100644 index 7e5e8b271fb..00000000000 --- a/JCL/converterJclMin/src/java/util/ArrayList.java +++ /dev/null @@ -1,48 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.util; - -public class ArrayList implements List { - - public ArrayList(int i) { - } - public ArrayList() { - } - public Object[] toArray(Object[] o) { - return null; - } - public int size() { - return 0; - } - public boolean add(Object o) { - return false; - } - public int indexOf(Object o) { - return 0; - } - public Object remove(int index) { - return null; - } - public Object get(int index) { - return null; - } - public boolean contains(Object o) { - return false; - } - public Iterator iterator() { - return null; - } - public boolean addAll(Collection c) { - return false; - } - public void set(int i, Object o) { - } -} diff --git a/JCL/converterJclMin/src/java/util/Arrays.java b/JCL/converterJclMin/src/java/util/Arrays.java deleted file mode 100644 index a28dfe05b0e..00000000000 --- a/JCL/converterJclMin/src/java/util/Arrays.java +++ /dev/null @@ -1,17 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.util; - - -public class Arrays { - public static void sort(Object[] tab) { - } -} diff --git a/JCL/converterJclMin/src/java/util/Collection.java b/JCL/converterJclMin/src/java/util/Collection.java deleted file mode 100644 index e9e15fa0856..00000000000 --- a/JCL/converterJclMin/src/java/util/Collection.java +++ /dev/null @@ -1,19 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.util; - -public interface Collection { - public Iterator iterator(); - public int size(); - public Object get(int index); - public boolean addAll(Collection c); - public Object[] toArray(Object[] o); -} diff --git a/JCL/converterJclMin/src/java/util/Collections.java b/JCL/converterJclMin/src/java/util/Collections.java deleted file mode 100644 index cb82830e3c6..00000000000 --- a/JCL/converterJclMin/src/java/util/Collections.java +++ /dev/null @@ -1,17 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.util; - - -public class Collections { - public static void sort(List l) { - } -} diff --git a/JCL/converterJclMin/src/java/util/Enumeration.java b/JCL/converterJclMin/src/java/util/Enumeration.java deleted file mode 100644 index 71ce4fb5864..00000000000 --- a/JCL/converterJclMin/src/java/util/Enumeration.java +++ /dev/null @@ -1,18 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.util; - -public interface Enumeration { - - public boolean hasMoreElements(); - - public Object nextElement(); -} diff --git a/JCL/converterJclMin/src/java/util/HashMap.java b/JCL/converterJclMin/src/java/util/HashMap.java deleted file mode 100644 index 543d56694d4..00000000000 --- a/JCL/converterJclMin/src/java/util/HashMap.java +++ /dev/null @@ -1,33 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.util; - -public class HashMap implements Map { - public HashMap(int i) { - } - public Object get(Object o) { - return null; - } - public boolean containsKey(Object o) { - return false; - } - public void put(Object o, Object v) { - } - public int size() { - return 0; - } - public Set keySet() { - return null; - } - public Collection values() { - return null; - } -} diff --git a/JCL/converterJclMin/src/java/util/Hashtable.java b/JCL/converterJclMin/src/java/util/Hashtable.java deleted file mode 100644 index ca5ad6c4d94..00000000000 --- a/JCL/converterJclMin/src/java/util/Hashtable.java +++ /dev/null @@ -1,33 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.util; - -public class Hashtable implements Map { - public Hashtable(int i) { - } - public Object get(Object o) { - return null; - } - public boolean containsKey(Object o) { - return false; - } - public void put(Object o, Object v) { - } - public synchronized Enumeration elements() { - return null; - } - public int size() { - return 0; - } - public synchronized Enumeration keys() { - return null; - } -} diff --git a/JCL/converterJclMin/src/java/util/Iterator.java b/JCL/converterJclMin/src/java/util/Iterator.java deleted file mode 100644 index 7d06d850475..00000000000 --- a/JCL/converterJclMin/src/java/util/Iterator.java +++ /dev/null @@ -1,17 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.util; - - -public interface Iterator { - public boolean hasNext(); - public Object next(); -} diff --git a/JCL/converterJclMin/src/java/util/List.java b/JCL/converterJclMin/src/java/util/List.java deleted file mode 100644 index 467cb7badb7..00000000000 --- a/JCL/converterJclMin/src/java/util/List.java +++ /dev/null @@ -1,16 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.util; - -public interface List extends Collection { - public boolean add(Object o); - public void set(int i, Object o); -} diff --git a/JCL/converterJclMin/src/java/util/Locale.java b/JCL/converterJclMin/src/java/util/Locale.java deleted file mode 100644 index d591b3946ac..00000000000 --- a/JCL/converterJclMin/src/java/util/Locale.java +++ /dev/null @@ -1,17 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.util; - -public class Locale { - public static Locale getDefault() { - return null; - } -} diff --git a/JCL/converterJclMin/src/java/util/Map.java b/JCL/converterJclMin/src/java/util/Map.java deleted file mode 100644 index c0ba203e8f5..00000000000 --- a/JCL/converterJclMin/src/java/util/Map.java +++ /dev/null @@ -1,18 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.util; - -public interface Map { - - public Object get(Object o); - public boolean containsKey(Object o); - public void put(Object o, Object v); -} diff --git a/JCL/converterJclMin/src/java/util/MissingResourceException.java b/JCL/converterJclMin/src/java/util/MissingResourceException.java deleted file mode 100644 index f5f7c87e82a..00000000000 --- a/JCL/converterJclMin/src/java/util/MissingResourceException.java +++ /dev/null @@ -1,16 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.util; - - -public class MissingResourceException extends RuntimeException { - -} diff --git a/JCL/converterJclMin/src/java/util/NoSuchElementException.java b/JCL/converterJclMin/src/java/util/NoSuchElementException.java deleted file mode 100644 index a049d80d09e..00000000000 --- a/JCL/converterJclMin/src/java/util/NoSuchElementException.java +++ /dev/null @@ -1,16 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.util; - - -public class NoSuchElementException extends RuntimeException { - -} diff --git a/JCL/converterJclMin/src/java/util/ResourceBundle.java b/JCL/converterJclMin/src/java/util/ResourceBundle.java deleted file mode 100644 index 027b99f365d..00000000000 --- a/JCL/converterJclMin/src/java/util/ResourceBundle.java +++ /dev/null @@ -1,23 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.util; - -public abstract class ResourceBundle { - - public static final ResourceBundle getBundle(String baseName, Locale locale) { - return null; - } - - public final String getString(String key) { - return null; - } - public abstract Enumeration getKeys(); -} diff --git a/JCL/converterJclMin/src/java/util/Set.java b/JCL/converterJclMin/src/java/util/Set.java deleted file mode 100644 index ad017a2da26..00000000000 --- a/JCL/converterJclMin/src/java/util/Set.java +++ /dev/null @@ -1,18 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.util; - - -public class Set { - public Iterator iterator() { - return null; - } -} diff --git a/JCL/converterJclMin/src/java/util/StringTokenizer.java b/JCL/converterJclMin/src/java/util/StringTokenizer.java deleted file mode 100644 index 86214d85969..00000000000 --- a/JCL/converterJclMin/src/java/util/StringTokenizer.java +++ /dev/null @@ -1,29 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.util; - -public class StringTokenizer { - - public StringTokenizer(String toBeParsed, String delimiters) { - } - - public int countTokens() { - return 0; - } - - public String nextToken() { - return null; - } - - public boolean hasMoreTokens() { - return false; - } -} diff --git a/JCL/converterJclMin/src/java/util/Vector.java b/JCL/converterJclMin/src/java/util/Vector.java deleted file mode 100644 index e26e51f7812..00000000000 --- a/JCL/converterJclMin/src/java/util/Vector.java +++ /dev/null @@ -1,28 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.util; - -public class Vector { - - public Vector() { - } - - public Vector(int i) { - } - - public int size() { - return 0; - } - - public Object get(int i) { - return null; - } -} diff --git a/JCL/converterJclMin/src/java/util/zip/ZipEntry.java b/JCL/converterJclMin/src/java/util/zip/ZipEntry.java deleted file mode 100644 index 7c82b06d8cc..00000000000 --- a/JCL/converterJclMin/src/java/util/zip/ZipEntry.java +++ /dev/null @@ -1,18 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.util.zip; - - -public class ZipEntry { - public long getSize() { - return 0; - } -} diff --git a/JCL/converterJclMin/src/java/util/zip/ZipFile.java b/JCL/converterJclMin/src/java/util/zip/ZipFile.java deleted file mode 100644 index 56c853a2bce..00000000000 --- a/JCL/converterJclMin/src/java/util/zip/ZipFile.java +++ /dev/null @@ -1,23 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.util.zip; - -import java.io.InputStream; - - -public class ZipFile { - public ZipEntry getEntry(String s) { - return null; - } - public InputStream getInputStream(ZipEntry zipEntry) { - return null; - } -} diff --git a/JCL/converterJclMin1.5/.classpath b/JCL/converterJclMin1.5/.classpath deleted file mode 100644 index fb8a2f01029..00000000000 --- a/JCL/converterJclMin1.5/.classpath +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/JCL/converterJclMin1.5/.project b/JCL/converterJclMin1.5/.project deleted file mode 100644 index 058d2e0ee33..00000000000 --- a/JCL/converterJclMin1.5/.project +++ /dev/null @@ -1,17 +0,0 @@ - - - converterJclMin1.5 - - - - - - org.eclipse.jdt.core.javabuilder - - - - - - org.eclipse.jdt.core.javanature - - diff --git a/JCL/converterJclMin1.5/.settings/org.eclipse.core.resources.prefs b/JCL/converterJclMin1.5/.settings/org.eclipse.core.resources.prefs deleted file mode 100644 index 99f26c0203a..00000000000 --- a/JCL/converterJclMin1.5/.settings/org.eclipse.core.resources.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -encoding/=UTF-8 diff --git a/JCL/converterJclMin1.5/.settings/org.eclipse.jdt.core.prefs b/JCL/converterJclMin1.5/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index 272e3b91d2d..00000000000 --- a/JCL/converterJclMin1.5/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,12 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.5 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.release=disabled -org.eclipse.jdt.core.compiler.source=1.5 diff --git a/JCL/converterJclMin1.5/src/java/awt/List.java b/JCL/converterJclMin1.5/src/java/awt/List.java deleted file mode 100644 index b2fd6f7c24a..00000000000 --- a/JCL/converterJclMin1.5/src/java/awt/List.java +++ /dev/null @@ -1,15 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.awt; - -public class List { - -} diff --git a/JCL/converterJclMin1.5/src/java/io/BufferedInputStream.java b/JCL/converterJclMin1.5/src/java/io/BufferedInputStream.java deleted file mode 100644 index aa574a1930e..00000000000 --- a/JCL/converterJclMin1.5/src/java/io/BufferedInputStream.java +++ /dev/null @@ -1,17 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - - -public class BufferedInputStream extends InputStream { - public BufferedInputStream(InputStream inputStream) { - } -} diff --git a/JCL/converterJclMin1.5/src/java/io/BufferedOutputStream.java b/JCL/converterJclMin1.5/src/java/io/BufferedOutputStream.java deleted file mode 100644 index 3ab0e26fc52..00000000000 --- a/JCL/converterJclMin1.5/src/java/io/BufferedOutputStream.java +++ /dev/null @@ -1,17 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - - -public class BufferedOutputStream extends OutputStream { - public BufferedOutputStream(FileOutputStream outputStream) { - } -} diff --git a/JCL/converterJclMin1.5/src/java/io/BufferedWriter.java b/JCL/converterJclMin1.5/src/java/io/BufferedWriter.java deleted file mode 100644 index 61122c1b2f4..00000000000 --- a/JCL/converterJclMin1.5/src/java/io/BufferedWriter.java +++ /dev/null @@ -1,22 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - - -public class BufferedWriter extends Writer { - - public BufferedWriter(Writer writer) { - } - public void flush() throws IOException { - } - public void close() throws IOException { - } -} diff --git a/JCL/converterJclMin1.5/src/java/io/ByteArrayInputStream.java b/JCL/converterJclMin1.5/src/java/io/ByteArrayInputStream.java deleted file mode 100644 index 7f095dcbcb4..00000000000 --- a/JCL/converterJclMin1.5/src/java/io/ByteArrayInputStream.java +++ /dev/null @@ -1,17 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - - -public class ByteArrayInputStream extends InputStream { - public ByteArrayInputStream(byte[] b) { - } -} diff --git a/JCL/converterJclMin1.5/src/java/io/ByteArrayOutputStream.java b/JCL/converterJclMin1.5/src/java/io/ByteArrayOutputStream.java deleted file mode 100644 index 8af40644cc3..00000000000 --- a/JCL/converterJclMin1.5/src/java/io/ByteArrayOutputStream.java +++ /dev/null @@ -1,16 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - - -public class ByteArrayOutputStream extends OutputStream { - -} diff --git a/JCL/converterJclMin1.5/src/java/io/File.java b/JCL/converterJclMin1.5/src/java/io/File.java deleted file mode 100644 index e0465e47fa9..00000000000 --- a/JCL/converterJclMin1.5/src/java/io/File.java +++ /dev/null @@ -1,46 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - -public class File { - public static final char separatorChar = '\\'; - public static final String separator = "\\"; //$NON-NLS-1$ - - public File(String s) { - } - - public boolean exists() { - return false; - } - - public boolean isDirectory() { - return false; - } - - public String getAbsolutePath() { - return null; - } - - public boolean mkdirs() { - return false; - } - - public boolean mkdir() { - return false; - } - - public String getName() { - return null; - } - public long length() { - return 0; - } -} diff --git a/JCL/converterJclMin1.5/src/java/io/FileInputStream.java b/JCL/converterJclMin1.5/src/java/io/FileInputStream.java deleted file mode 100644 index c51d1be33c8..00000000000 --- a/JCL/converterJclMin1.5/src/java/io/FileInputStream.java +++ /dev/null @@ -1,18 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - - -public class FileInputStream extends InputStream { - - public FileInputStream(File f) { - } -} diff --git a/JCL/converterJclMin1.5/src/java/io/FileOutputStream.java b/JCL/converterJclMin1.5/src/java/io/FileOutputStream.java deleted file mode 100644 index c643bf9c415..00000000000 --- a/JCL/converterJclMin1.5/src/java/io/FileOutputStream.java +++ /dev/null @@ -1,19 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - - -public class FileOutputStream extends OutputStream { - public FileOutputStream(File f) { - } - public FileOutputStream(String s) { - } -} diff --git a/JCL/converterJclMin1.5/src/java/io/FileWriter.java b/JCL/converterJclMin1.5/src/java/io/FileWriter.java deleted file mode 100644 index 667a1888694..00000000000 --- a/JCL/converterJclMin1.5/src/java/io/FileWriter.java +++ /dev/null @@ -1,24 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - - -public class FileWriter extends Writer { - - public FileWriter(String s) { - } - public void flush() throws IOException { - } - - public void close() throws IOException { - } - -} diff --git a/JCL/converterJclMin1.5/src/java/io/IOException.java b/JCL/converterJclMin1.5/src/java/io/IOException.java deleted file mode 100644 index a73f64275e4..00000000000 --- a/JCL/converterJclMin1.5/src/java/io/IOException.java +++ /dev/null @@ -1,20 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - -public class IOException extends Exception { - - public IOException(String s) { - super(s); - } - public IOException() { - } -} diff --git a/JCL/converterJclMin1.5/src/java/io/InputStream.java b/JCL/converterJclMin1.5/src/java/io/InputStream.java deleted file mode 100644 index 8aa222e9020..00000000000 --- a/JCL/converterJclMin1.5/src/java/io/InputStream.java +++ /dev/null @@ -1,22 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - -public class InputStream { - public void close() throws IOException { - } - public int available() throws IOException { - return 0; - } - public int read(byte b[], int off, int len) throws IOException { - return 0; - } -} diff --git a/JCL/converterJclMin1.5/src/java/io/InputStreamReader.java b/JCL/converterJclMin1.5/src/java/io/InputStreamReader.java deleted file mode 100644 index a9012a34b8a..00000000000 --- a/JCL/converterJclMin1.5/src/java/io/InputStreamReader.java +++ /dev/null @@ -1,22 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - - -public class InputStreamReader extends Reader { - public InputStreamReader(InputStream inputStream) { - } - public InputStreamReader(InputStream stream, String s) throws UnsupportedEncodingException { - } - public int read(char cbuf[], int offset, int length) throws IOException { - return 0; - } -} diff --git a/JCL/converterJclMin1.5/src/java/io/InterruptedIOException.java b/JCL/converterJclMin1.5/src/java/io/InterruptedIOException.java deleted file mode 100644 index c95111adfcc..00000000000 --- a/JCL/converterJclMin1.5/src/java/io/InterruptedIOException.java +++ /dev/null @@ -1,15 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - -public class InterruptedIOException extends Exception { - -} diff --git a/JCL/converterJclMin1.5/src/java/io/OutputStream.java b/JCL/converterJclMin1.5/src/java/io/OutputStream.java deleted file mode 100644 index 8d9756265ba..00000000000 --- a/JCL/converterJclMin1.5/src/java/io/OutputStream.java +++ /dev/null @@ -1,22 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - - -public class OutputStream { - - public void write(byte b[]) throws IOException { - } - public void flush() throws IOException { - } - public void close() throws IOException { - } -} diff --git a/JCL/converterJclMin1.5/src/java/io/PrintStream.java b/JCL/converterJclMin1.5/src/java/io/PrintStream.java deleted file mode 100644 index 503f080425d..00000000000 --- a/JCL/converterJclMin1.5/src/java/io/PrintStream.java +++ /dev/null @@ -1,35 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - -public class PrintStream { - - public void println() { - } - - public void println(String s) { - } - - public void println(int i) { - } - - public void println(Object o) { - } - - public void print(String s) { - } - - public void print(Object o) { - } - - public void print(int i) { - } -} diff --git a/JCL/converterJclMin1.5/src/java/io/PrintWriter.java b/JCL/converterJclMin1.5/src/java/io/PrintWriter.java deleted file mode 100644 index ec7e885e07e..00000000000 --- a/JCL/converterJclMin1.5/src/java/io/PrintWriter.java +++ /dev/null @@ -1,28 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - -public class PrintWriter extends Writer { - public PrintWriter(ByteArrayOutputStream stream) { - } - public PrintWriter(Writer w) { - } - public void print(String s) { - } - public void print(char[] tab) { - } - public void flush() { - } - public void close() { - } - public void println(String s) { - } -} diff --git a/JCL/converterJclMin1.5/src/java/io/Reader.java b/JCL/converterJclMin1.5/src/java/io/Reader.java deleted file mode 100644 index bb74ec22fa7..00000000000 --- a/JCL/converterJclMin1.5/src/java/io/Reader.java +++ /dev/null @@ -1,16 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - - -public class Reader { - -} diff --git a/JCL/converterJclMin1.5/src/java/io/Serializable.java b/JCL/converterJclMin1.5/src/java/io/Serializable.java deleted file mode 100644 index e33731bec8f..00000000000 --- a/JCL/converterJclMin1.5/src/java/io/Serializable.java +++ /dev/null @@ -1,15 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - -public interface Serializable { - -} diff --git a/JCL/converterJclMin1.5/src/java/io/StringWriter.java b/JCL/converterJclMin1.5/src/java/io/StringWriter.java deleted file mode 100644 index 84631fdee0d..00000000000 --- a/JCL/converterJclMin1.5/src/java/io/StringWriter.java +++ /dev/null @@ -1,23 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - - -public class StringWriter extends Writer { - - public StringBuffer getBuffer() { - return null; - } - public void flush() { - } - public void close() { - } -} diff --git a/JCL/converterJclMin1.5/src/java/io/UnsupportedEncodingException.java b/JCL/converterJclMin1.5/src/java/io/UnsupportedEncodingException.java deleted file mode 100644 index 916b5ccdcd2..00000000000 --- a/JCL/converterJclMin1.5/src/java/io/UnsupportedEncodingException.java +++ /dev/null @@ -1,19 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - -public class UnsupportedEncodingException extends IOException { - public UnsupportedEncodingException(String s) { - super(s); - } - public UnsupportedEncodingException() { - } -} diff --git a/JCL/converterJclMin1.5/src/java/io/Writer.java b/JCL/converterJclMin1.5/src/java/io/Writer.java deleted file mode 100644 index 8a198ae50ca..00000000000 --- a/JCL/converterJclMin1.5/src/java/io/Writer.java +++ /dev/null @@ -1,19 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - - -public abstract class Writer { - public abstract void flush() throws IOException; - public abstract void close() throws IOException; - public void write(String str) throws IOException { - } -} diff --git a/JCL/converterJclMin1.5/src/java/lang/ArithmeticException.java b/JCL/converterJclMin1.5/src/java/lang/ArithmeticException.java deleted file mode 100644 index 063baae8d82..00000000000 --- a/JCL/converterJclMin1.5/src/java/lang/ArithmeticException.java +++ /dev/null @@ -1,16 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - - -public class ArithmeticException extends RuntimeException { - -} diff --git a/JCL/converterJclMin1.5/src/java/lang/ArrayIndexOutOfBoundsException.java b/JCL/converterJclMin1.5/src/java/lang/ArrayIndexOutOfBoundsException.java deleted file mode 100644 index af436866fea..00000000000 --- a/JCL/converterJclMin1.5/src/java/lang/ArrayIndexOutOfBoundsException.java +++ /dev/null @@ -1,16 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - - -public class ArrayIndexOutOfBoundsException extends IndexOutOfBoundsException { - -} diff --git a/JCL/converterJclMin1.5/src/java/lang/AssertionError.java b/JCL/converterJclMin1.5/src/java/lang/AssertionError.java deleted file mode 100644 index 3acb2e6ec3a..00000000000 --- a/JCL/converterJclMin1.5/src/java/lang/AssertionError.java +++ /dev/null @@ -1,29 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public class AssertionError extends Error { - - /** - * Constructor for AssertionError. - */ - public AssertionError(String s) { - super(s); - } - - /** - * Constructor for AssertionError. - */ - public AssertionError() { - super(); - } - -} diff --git a/JCL/converterJclMin1.5/src/java/lang/Boolean.java b/JCL/converterJclMin1.5/src/java/lang/Boolean.java deleted file mode 100644 index 198c9287b17..00000000000 --- a/JCL/converterJclMin1.5/src/java/lang/Boolean.java +++ /dev/null @@ -1,19 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - - -public class Boolean { - public static final Boolean TRUE = new Boolean(true); - public static final Boolean FALSE = new Boolean(false); - public Boolean(boolean b) { - } -} diff --git a/JCL/converterJclMin1.5/src/java/lang/Byte.java b/JCL/converterJclMin1.5/src/java/lang/Byte.java deleted file mode 100644 index 75c71a1c00a..00000000000 --- a/JCL/converterJclMin1.5/src/java/lang/Byte.java +++ /dev/null @@ -1,45 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - - -public class Byte extends Number implements Comparable { - private static final long serialVersionUID = 8750891329089001085L; - public Byte(byte b) { - } - /* (non-Javadoc) - * @see java.lang.Number#doubleValue() - */ - public double doubleValue() { - return 0; - } - /* (non-Javadoc) - * @see java.lang.Number#floatValue() - */ - public float floatValue() { - return 0; - } - /* (non-Javadoc) - * @see java.lang.Number#intValue() - */ - public int intValue() { - return 0; - } - /* (non-Javadoc) - * @see java.lang.Number#longValue() - */ - public long longValue() { - return 0; - } - public int compareTo(Byte b) { - return 0; - } -} diff --git a/JCL/converterJclMin1.5/src/java/lang/Character.java b/JCL/converterJclMin1.5/src/java/lang/Character.java deleted file mode 100644 index 337c148689e..00000000000 --- a/JCL/converterJclMin1.5/src/java/lang/Character.java +++ /dev/null @@ -1,39 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public class Character { - public Character(char c) { - } - public static char toLowerCase(char c) { - return ' '; - } - - public static int getNumericValue(char c) { - return 0; - } - - public static int digit(char ch, int radix) { - return 0; - } - public static boolean isWhitespace(char c) { - return false; - } - public static boolean isJavaIdentifierStart(char c) { - return false; - } - public static boolean isJavaIdentifierPart(char c) { - return false; - } - public static boolean isDigit(char c) { - return false; - } -} diff --git a/JCL/converterJclMin1.5/src/java/lang/Class.java b/JCL/converterJclMin1.5/src/java/lang/Class.java deleted file mode 100644 index 7e82f809c85..00000000000 --- a/JCL/converterJclMin1.5/src/java/lang/Class.java +++ /dev/null @@ -1,32 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -import java.io.InputStream; - -public class Class { - public String getName() { - return null; - } - public InputStream getResourceAsStream(String s) { - return null; - } - - public native Class getSuperclass(); - - public T newInstance() throws InstantiationException, IllegalAccessException { - return null; - } - - public static Class forName(String className) throws ClassNotFoundException { - return null; - } -} diff --git a/JCL/converterJclMin1.5/src/java/lang/ClassCastException.java b/JCL/converterJclMin1.5/src/java/lang/ClassCastException.java deleted file mode 100644 index 51bbbd21252..00000000000 --- a/JCL/converterJclMin1.5/src/java/lang/ClassCastException.java +++ /dev/null @@ -1,16 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - - -public class ClassCastException extends RuntimeException { - -} diff --git a/JCL/converterJclMin1.5/src/java/lang/ClassNotFoundException.java b/JCL/converterJclMin1.5/src/java/lang/ClassNotFoundException.java deleted file mode 100644 index 838399474eb..00000000000 --- a/JCL/converterJclMin1.5/src/java/lang/ClassNotFoundException.java +++ /dev/null @@ -1,15 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2005 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public class ClassNotFoundException extends Exception { - -} diff --git a/JCL/converterJclMin1.5/src/java/lang/CloneNotSupportedException.java b/JCL/converterJclMin1.5/src/java/lang/CloneNotSupportedException.java deleted file mode 100644 index 2074efbf9e5..00000000000 --- a/JCL/converterJclMin1.5/src/java/lang/CloneNotSupportedException.java +++ /dev/null @@ -1,14 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public class CloneNotSupportedException extends Exception { -} diff --git a/JCL/converterJclMin1.5/src/java/lang/Cloneable.java b/JCL/converterJclMin1.5/src/java/lang/Cloneable.java deleted file mode 100644 index bc1cb76200b..00000000000 --- a/JCL/converterJclMin1.5/src/java/lang/Cloneable.java +++ /dev/null @@ -1,15 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public interface Cloneable { - -} diff --git a/JCL/converterJclMin1.5/src/java/lang/Comparable.java b/JCL/converterJclMin1.5/src/java/lang/Comparable.java deleted file mode 100644 index fae6b35eb20..00000000000 --- a/JCL/converterJclMin1.5/src/java/lang/Comparable.java +++ /dev/null @@ -1,15 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public interface Comparable { - public int compareTo(T o); -} diff --git a/JCL/converterJclMin1.5/src/java/lang/Deprecated.java b/JCL/converterJclMin1.5/src/java/lang/Deprecated.java deleted file mode 100644 index b0650934723..00000000000 --- a/JCL/converterJclMin1.5/src/java/lang/Deprecated.java +++ /dev/null @@ -1,17 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -import java.lang.annotation.Retention; -import static java.lang.annotation.RetentionPolicy.*; - -@Retention(RUNTIME) -public @interface Deprecated {} diff --git a/JCL/converterJclMin1.5/src/java/lang/Double.java b/JCL/converterJclMin1.5/src/java/lang/Double.java deleted file mode 100644 index 18312efacb7..00000000000 --- a/JCL/converterJclMin1.5/src/java/lang/Double.java +++ /dev/null @@ -1,61 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public class Double extends Number implements Comparable { - private static final long serialVersionUID = -5839202747810229696L; - public Double(double d) { - } - public static String toString(double d) { - return null; - } - public static Double valueOf(String s) throws NumberFormatException { - return null; - } - public static final double POSITIVE_INFINITY = 1.0 / 0.0; - public static boolean isNaN(double v) { - return false; - } - public double doubleValue() { - return 0.0; - } - public static final double MAX_VALUE = 1.7976931348623157e+308; - public static final double MIN_VALUE = 4.9e-324; - public static final double NaN = 0.0d / 0.0; - - public static native double longBitsToDouble(long bits); - public static native long doubleToLongBits(double value); - /* (non-Javadoc) - * @see java.lang.Number#floatValue() - */ - public float floatValue() { - return 0; - } - /* (non-Javadoc) - * @see java.lang.Number#intValue() - */ - public int intValue() { - return 0; - } - /* (non-Javadoc) - * @see java.lang.Number#longValue() - */ - public long longValue() { - return 0; - } - - public static double parseDouble(String s) { - return 0.0; - } - public int compareTo(Double d) { - return 0; - } -} diff --git a/JCL/converterJclMin1.5/src/java/lang/Enum.java b/JCL/converterJclMin1.5/src/java/lang/Enum.java deleted file mode 100644 index 13aba400553..00000000000 --- a/JCL/converterJclMin1.5/src/java/lang/Enum.java +++ /dev/null @@ -1,36 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public abstract class Enum> implements Comparable, - java.io.Serializable { - - private static final long serialVersionUID = 2L; - - protected Enum(String name, int ordinal) { - } - - public final String name() { - return null; - } - - public final int ordinal() { - return 0; - } - - public final int compareTo(T o) { - return 0; - } - - public final Class getDeclaringClass() { - return null; - } -} \ No newline at end of file diff --git a/JCL/converterJclMin1.5/src/java/lang/Error.java b/JCL/converterJclMin1.5/src/java/lang/Error.java deleted file mode 100644 index fc4766d7318..00000000000 --- a/JCL/converterJclMin1.5/src/java/lang/Error.java +++ /dev/null @@ -1,21 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public class Error extends Throwable { - - public Error(String s) { - super(s); - } - - public Error() { - } -} diff --git a/JCL/converterJclMin1.5/src/java/lang/Exception.java b/JCL/converterJclMin1.5/src/java/lang/Exception.java deleted file mode 100644 index f7969390d95..00000000000 --- a/JCL/converterJclMin1.5/src/java/lang/Exception.java +++ /dev/null @@ -1,19 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public class Exception extends Throwable { - public Exception() { - } - public Exception(String s) { - super(s); - } -} diff --git a/JCL/converterJclMin1.5/src/java/lang/ExceptionInInitializerError.java b/JCL/converterJclMin1.5/src/java/lang/ExceptionInInitializerError.java deleted file mode 100644 index 907abda50dc..00000000000 --- a/JCL/converterJclMin1.5/src/java/lang/ExceptionInInitializerError.java +++ /dev/null @@ -1,17 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - - -public class ExceptionInInitializerError extends Error { - public ExceptionInInitializerError(String s) { - } -} diff --git a/JCL/converterJclMin1.5/src/java/lang/Float.java b/JCL/converterJclMin1.5/src/java/lang/Float.java deleted file mode 100644 index fd5313bde3c..00000000000 --- a/JCL/converterJclMin1.5/src/java/lang/Float.java +++ /dev/null @@ -1,57 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - - -public class Float extends Number implements Comparable { - private static final long serialVersionUID = -872370025937303716L; - public static final float NaN = 0.0f / 0.0f; - public Float(float f) { - } - public static native float intBitsToFloat(int bits); - public static Float valueOf(String s) throws NumberFormatException { - return null; - } - public static final float POSITIVE_INFINITY = 1.0f / 0.0f; - public static boolean isNaN(float v) { - return false; - } - public float floatValue() { - return 0.0f; - } - public static final float MAX_VALUE = 3.4028235e+38f; - public static final float MIN_VALUE = 1.4e-45f; - public static native int floatToIntBits(float value); - public static String toString(float f) { - return null; - } - /* (non-Javadoc) - * @see java.lang.Number#doubleValue() - */ - public double doubleValue() { - return 0; - } - /* (non-Javadoc) - * @see java.lang.Number#intValue() - */ - public int intValue() { - return 0; - } - /* (non-Javadoc) - * @see java.lang.Number#longValue() - */ - public long longValue() { - return 0; - } - public int compareTo(Float f) { - return 0; - } -} diff --git a/JCL/converterJclMin1.5/src/java/lang/IllegalAccessException.java b/JCL/converterJclMin1.5/src/java/lang/IllegalAccessException.java deleted file mode 100644 index 4b3861fa0aa..00000000000 --- a/JCL/converterJclMin1.5/src/java/lang/IllegalAccessException.java +++ /dev/null @@ -1,15 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2005 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public class IllegalAccessException extends Exception { - -} diff --git a/JCL/converterJclMin1.5/src/java/lang/IllegalMonitorStateException.java b/JCL/converterJclMin1.5/src/java/lang/IllegalMonitorStateException.java deleted file mode 100644 index 0e7fb8025ff..00000000000 --- a/JCL/converterJclMin1.5/src/java/lang/IllegalMonitorStateException.java +++ /dev/null @@ -1,18 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public class IllegalMonitorStateException extends RuntimeException { - public IllegalMonitorStateException(String s) { - } - public IllegalMonitorStateException() { - } -} diff --git a/JCL/converterJclMin1.5/src/java/lang/IndexOutOfBoundsException.java b/JCL/converterJclMin1.5/src/java/lang/IndexOutOfBoundsException.java deleted file mode 100644 index 7230956f644..00000000000 --- a/JCL/converterJclMin1.5/src/java/lang/IndexOutOfBoundsException.java +++ /dev/null @@ -1,16 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - - -public class IndexOutOfBoundsException extends RuntimeException { - -} diff --git a/JCL/converterJclMin1.5/src/java/lang/InstantiationException.java b/JCL/converterJclMin1.5/src/java/lang/InstantiationException.java deleted file mode 100644 index c6b5283aa90..00000000000 --- a/JCL/converterJclMin1.5/src/java/lang/InstantiationException.java +++ /dev/null @@ -1,15 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2005 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public class InstantiationException extends Exception { - -} diff --git a/JCL/converterJclMin1.5/src/java/lang/Integer.java b/JCL/converterJclMin1.5/src/java/lang/Integer.java deleted file mode 100644 index 5cdeb3415d6..00000000000 --- a/JCL/converterJclMin1.5/src/java/lang/Integer.java +++ /dev/null @@ -1,59 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public class Integer extends Number implements Comparable { - private static final long serialVersionUID = 6462609062775655000L; - - public Integer(int i) { - } - public Integer(String s) { - } - public static final int MAX_VALUE= 2147483647; - public static final int MIN_VALUE= -2147483647; - - public static int parseInt(String s) throws NumberFormatException { - return 0; - } - public static String toHexString(int i) { - return null; - } - public static String toString(int i) { - return null; - } - /* (non-Javadoc) - * @see java.lang.Number#doubleValue() - */ - public double doubleValue() { - return 0; - } - /* (non-Javadoc) - * @see java.lang.Number#floatValue() - */ - public float floatValue() { - return 0; - } - /* (non-Javadoc) - * @see java.lang.Number#intValue() - */ - public int intValue() { - return 0; - } - /* (non-Javadoc) - * @see java.lang.Number#longValue() - */ - public long longValue() { - return 0; - } - public int compareTo(Integer i) { - return 0; - } -} diff --git a/JCL/converterJclMin1.5/src/java/lang/InterruptedException.java b/JCL/converterJclMin1.5/src/java/lang/InterruptedException.java deleted file mode 100644 index 8bbd866439f..00000000000 --- a/JCL/converterJclMin1.5/src/java/lang/InterruptedException.java +++ /dev/null @@ -1,14 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public class InterruptedException extends Exception { -} diff --git a/JCL/converterJclMin1.5/src/java/lang/Iterable.java b/JCL/converterJclMin1.5/src/java/lang/Iterable.java deleted file mode 100644 index 9e1be1a38c0..00000000000 --- a/JCL/converterJclMin1.5/src/java/lang/Iterable.java +++ /dev/null @@ -1,17 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -import java.util.Iterator; - -public interface Iterable { - Iterator iterator(); -} diff --git a/JCL/converterJclMin1.5/src/java/lang/Long.java b/JCL/converterJclMin1.5/src/java/lang/Long.java deleted file mode 100644 index f5f7357ac13..00000000000 --- a/JCL/converterJclMin1.5/src/java/lang/Long.java +++ /dev/null @@ -1,46 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public class Long extends Number implements Comparable { - private static final long serialVersionUID = 7046418566711138668L; - public static final long MIN_VALUE = 0x8000000000000000L; - public static final long MAX_VALUE = 0x7fffffffffffffffL; - public Long(long l) { - } - /* (non-Javadoc) - * @see java.lang.Number#doubleValue() - */ - public double doubleValue() { - return 0; - } - /* (non-Javadoc) - * @see java.lang.Number#floatValue() - */ - public float floatValue() { - return 0; - } - /* (non-Javadoc) - * @see java.lang.Number#intValue() - */ - public int intValue() { - return 0; - } - /* (non-Javadoc) - * @see java.lang.Number#longValue() - */ - public long longValue() { - return 0; - } - public int compareTo(Long l) { - return 0; - } -} diff --git a/JCL/converterJclMin1.5/src/java/lang/Math.java b/JCL/converterJclMin1.5/src/java/lang/Math.java deleted file mode 100644 index 51837194632..00000000000 --- a/JCL/converterJclMin1.5/src/java/lang/Math.java +++ /dev/null @@ -1,24 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public class Math { - - public static int min(int a, int b) { - return 0; - } - public static int max(int a, int b) { - return 0; - } - public static int abs(int a) { - return 0; - } -} diff --git a/JCL/converterJclMin1.5/src/java/lang/NoSuchFieldError.java b/JCL/converterJclMin1.5/src/java/lang/NoSuchFieldError.java deleted file mode 100644 index b6eefdc89eb..00000000000 --- a/JCL/converterJclMin1.5/src/java/lang/NoSuchFieldError.java +++ /dev/null @@ -1,15 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2020 GK Software SE and others. - * - * This program and the accompanying materials - * are made available under the terms of the Eclipse Public License 2.0 - * which accompanies this distribution, and is available at - * https://www.eclipse.org/legal/epl-2.0/ - * - * SPDX-License-Identifier: EPL-2.0 - */ -package java.lang; -public class NoSuchFieldError extends IncompatibleClassChangeError { - public NoSuchFieldError() { super(); } - public NoSuchFieldError(String s) {super(s);} -} diff --git a/JCL/converterJclMin1.5/src/java/lang/NullPointerException.java b/JCL/converterJclMin1.5/src/java/lang/NullPointerException.java deleted file mode 100644 index 8e18fa47836..00000000000 --- a/JCL/converterJclMin1.5/src/java/lang/NullPointerException.java +++ /dev/null @@ -1,29 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public class NullPointerException extends RuntimeException { - - /** - * Constructor for NullPointerException. - */ - public NullPointerException(String s) { - super(s); - } - - /** - * Constructor for NullPointerException. - */ - public NullPointerException() { - super(); - } - -} diff --git a/JCL/converterJclMin1.5/src/java/lang/Number.java b/JCL/converterJclMin1.5/src/java/lang/Number.java deleted file mode 100644 index c8ccd0833ad..00000000000 --- a/JCL/converterJclMin1.5/src/java/lang/Number.java +++ /dev/null @@ -1,26 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - - -public abstract class Number implements java.io.Serializable { - private static final long serialVersionUID = 3166984097235214156L; - public abstract int intValue(); - public abstract long longValue(); - public abstract float floatValue(); - public abstract double doubleValue(); - public byte byteValue() { - return (byte) intValue(); - } - public short shortValue() { - return (short) intValue(); - } -} diff --git a/JCL/converterJclMin1.5/src/java/lang/NumberFormatException.java b/JCL/converterJclMin1.5/src/java/lang/NumberFormatException.java deleted file mode 100644 index db1be617e05..00000000000 --- a/JCL/converterJclMin1.5/src/java/lang/NumberFormatException.java +++ /dev/null @@ -1,16 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - - -public class NumberFormatException extends RuntimeException { - -} diff --git a/JCL/converterJclMin1.5/src/java/lang/Object.java b/JCL/converterJclMin1.5/src/java/lang/Object.java deleted file mode 100644 index 9ed67c1b019..00000000000 --- a/JCL/converterJclMin1.5/src/java/lang/Object.java +++ /dev/null @@ -1,45 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public class Object { - - public Object() { - } - protected Object clone() throws CloneNotSupportedException { - return null; - } - public boolean equals(Object obj) { - return false; - } - protected void finalize() throws Throwable { - } - public final native Class getClass(); - public int hashCode() { - return -1; - } - public final void notify() throws IllegalMonitorStateException { - } - public final void notifyAll() throws IllegalMonitorStateException { - } - public String toString() { - return null; - } - public final void wait() throws IllegalMonitorStateException, - InterruptedException { - } - public final void wait(long millis) throws IllegalMonitorStateException, - InterruptedException { - } - public final void wait(long millis, int nanos) - throws IllegalMonitorStateException, InterruptedException { - } -} diff --git a/JCL/converterJclMin1.5/src/java/lang/Override.java b/JCL/converterJclMin1.5/src/java/lang/Override.java deleted file mode 100644 index e30eba7b6df..00000000000 --- a/JCL/converterJclMin1.5/src/java/lang/Override.java +++ /dev/null @@ -1,20 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -import java.lang.annotation.ElementType; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; -import java.lang.annotation.Retention; - -@Target(ElementType.METHOD) @Retention(RetentionPolicy.SOURCE) -public @interface Override { -} \ No newline at end of file diff --git a/JCL/converterJclMin1.5/src/java/lang/Runnable.java b/JCL/converterJclMin1.5/src/java/lang/Runnable.java deleted file mode 100644 index d37f3130d10..00000000000 --- a/JCL/converterJclMin1.5/src/java/lang/Runnable.java +++ /dev/null @@ -1,16 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public interface Runnable { - - void run(); -} diff --git a/JCL/converterJclMin1.5/src/java/lang/RuntimeException.java b/JCL/converterJclMin1.5/src/java/lang/RuntimeException.java deleted file mode 100644 index be85127b2ec..00000000000 --- a/JCL/converterJclMin1.5/src/java/lang/RuntimeException.java +++ /dev/null @@ -1,19 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public class RuntimeException extends Exception { - public RuntimeException(String s) { - super(s); - } - public RuntimeException() { - } -} diff --git a/JCL/converterJclMin1.5/src/java/lang/Short.java b/JCL/converterJclMin1.5/src/java/lang/Short.java deleted file mode 100644 index 7c36571d45b..00000000000 --- a/JCL/converterJclMin1.5/src/java/lang/Short.java +++ /dev/null @@ -1,45 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - - -public class Short extends Number implements Comparable { - private static final long serialVersionUID = -8044450932684282285L; - public Short(short s) { - } - /* (non-Javadoc) - * @see java.lang.Number#doubleValue() - */ - public double doubleValue() { - return 0; - } - /* (non-Javadoc) - * @see java.lang.Number#floatValue() - */ - public float floatValue() { - return 0; - } - /* (non-Javadoc) - * @see java.lang.Number#intValue() - */ - public int intValue() { - return 0; - } - /* (non-Javadoc) - * @see java.lang.Number#longValue() - */ - public long longValue() { - return 0; - } - public int compareTo(Short s) { - return 0; - } -} diff --git a/JCL/converterJclMin1.5/src/java/lang/String.java b/JCL/converterJclMin1.5/src/java/lang/String.java deleted file mode 100644 index 27cd154400a..00000000000 --- a/JCL/converterJclMin1.5/src/java/lang/String.java +++ /dev/null @@ -1,77 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public class String implements java.io.Serializable, Comparable { - private static final long serialVersionUID = 1705120029863330869L; - - public String() { - } - public String(char[] source) { - } - public String(String s) { - } - public String(char[] source, int i , int j) { - } - public int length() { - return 0; - } - public String replace(char oldChar, char newChar) { - return null; - } - - public int lastIndexOf(char c) { - return 0; - } - - public String substring(int i, int j) { - return null; - } - public String substring(int i) { - return null; - } - public char[] toCharArray() { - return null; - } - public int indexOf(String s) { - return 0; - } - public int indexOf(String s, int i) { - return 0; - } - public boolean endsWith(String s) { - return false; - } - public static String valueOf(int i) { - return null; - } - public static String valueOf(Object o) { - return null; - } - public static String valueOf(char[] tab) { - return null; - } - public static String valueOf(char[] tab, int i, int j) { - return null; - } - public int compareTo(String s) { - return 0; - } - public int indexOf(int ch, int fromIndex) { - return 0; - } - public char charAt(int i) { - return ' '; - } - public String trim() { - return null; - } -} diff --git a/JCL/converterJclMin1.5/src/java/lang/StringBuffer.java b/JCL/converterJclMin1.5/src/java/lang/StringBuffer.java deleted file mode 100644 index f77dd695b04..00000000000 --- a/JCL/converterJclMin1.5/src/java/lang/StringBuffer.java +++ /dev/null @@ -1,59 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public class StringBuffer { - public StringBuffer() { - } - public StringBuffer(String s) { - } - public StringBuffer(int i) { - } - public synchronized StringBuffer insert(int offset, String str) { - return this; - } - public synchronized StringBuffer append(String s) { - return this; - } - public synchronized StringBuffer append(StringBuffer buffer) { - return this; - } - public synchronized StringBuffer append(boolean b) { - return this; - } - public synchronized StringBuffer append(int i) { - return this; - } - public synchronized StringBuffer append(long l) { - return this; - } - public synchronized StringBuffer append(float f) { - return this; - } - public synchronized StringBuffer append(double d) { - return this; - } - public synchronized StringBuffer append(char[] o) { - return this; - } - public synchronized StringBuffer append(char[] o, int i, int j) { - return this; - } - public synchronized StringBuffer append(Object o) { - return this; - } - public int length() { - return 0; - } - public char[] getChars(int i, int j, char[] tab, int k) { - return null; - } -} diff --git a/JCL/converterJclMin1.5/src/java/lang/SuppressWarnings.java b/JCL/converterJclMin1.5/src/java/lang/SuppressWarnings.java deleted file mode 100644 index 7aa7548f57d..00000000000 --- a/JCL/converterJclMin1.5/src/java/lang/SuppressWarnings.java +++ /dev/null @@ -1,11 +0,0 @@ -package java.lang; - -import static java.lang.annotation.ElementType.*; - -import java.lang.annotation.*; - -@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE}) -@Retention(RetentionPolicy.SOURCE) -public @interface SuppressWarnings { - String[] value(); -} \ No newline at end of file diff --git a/JCL/converterJclMin1.5/src/java/lang/System.java b/JCL/converterJclMin1.5/src/java/lang/System.java deleted file mode 100644 index a13acd2404d..00000000000 --- a/JCL/converterJclMin1.5/src/java/lang/System.java +++ /dev/null @@ -1,24 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -import java.io.PrintStream; - -public class System { - - public static PrintStream err; - public static PrintStream out; - - public static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int length); - public static String getProperty(String s) { - return null; - } -} diff --git a/JCL/converterJclMin1.5/src/java/lang/Throwable.java b/JCL/converterJclMin1.5/src/java/lang/Throwable.java deleted file mode 100644 index 42ebfd75a12..00000000000 --- a/JCL/converterJclMin1.5/src/java/lang/Throwable.java +++ /dev/null @@ -1,33 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -import java.io.PrintStream; -import java.io.Writer; - -public class Throwable { - public Throwable(String s) { - } - public Throwable() { - } - - public void printStackTrace() { - } - - public void printStackTrace(Writer w) { - } - - public void printStackTrace(PrintStream w) { - } - public String getMessage() { - return null; - } -} diff --git a/JCL/converterJclMin1.5/src/java/lang/Void.java b/JCL/converterJclMin1.5/src/java/lang/Void.java deleted file mode 100644 index 72e9ca2becd..00000000000 --- a/JCL/converterJclMin1.5/src/java/lang/Void.java +++ /dev/null @@ -1,13 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public class Void {} \ No newline at end of file diff --git a/JCL/converterJclMin1.5/src/java/lang/annotation/Annotation.java b/JCL/converterJclMin1.5/src/java/lang/annotation/Annotation.java deleted file mode 100644 index f6dbed69176..00000000000 --- a/JCL/converterJclMin1.5/src/java/lang/annotation/Annotation.java +++ /dev/null @@ -1,21 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang.annotation; - -public interface Annotation { - boolean equals(Object obj); - - int hashCode(); - - String toString(); - - Class annotationType(); -} diff --git a/JCL/converterJclMin1.5/src/java/lang/annotation/ElementType.java b/JCL/converterJclMin1.5/src/java/lang/annotation/ElementType.java deleted file mode 100644 index 62caf2132c5..00000000000 --- a/JCL/converterJclMin1.5/src/java/lang/annotation/ElementType.java +++ /dev/null @@ -1,15 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang.annotation; - -public enum ElementType { - TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE, ANNOTATION_TYPE, PACKAGE -} diff --git a/JCL/converterJclMin1.5/src/java/lang/annotation/Retention.java b/JCL/converterJclMin1.5/src/java/lang/annotation/Retention.java deleted file mode 100644 index b51bfad6a70..00000000000 --- a/JCL/converterJclMin1.5/src/java/lang/annotation/Retention.java +++ /dev/null @@ -1,17 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang.annotation; - -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.ANNOTATION_TYPE) -public @interface Retention { - RetentionPolicy value(); -} diff --git a/JCL/converterJclMin1.5/src/java/lang/annotation/RetentionPolicy.java b/JCL/converterJclMin1.5/src/java/lang/annotation/RetentionPolicy.java deleted file mode 100644 index cbd3bfcc5cb..00000000000 --- a/JCL/converterJclMin1.5/src/java/lang/annotation/RetentionPolicy.java +++ /dev/null @@ -1,15 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang.annotation; - -public enum RetentionPolicy { - SOURCE, CLASS, RUNTIME -} diff --git a/JCL/converterJclMin1.5/src/java/lang/annotation/Target.java b/JCL/converterJclMin1.5/src/java/lang/annotation/Target.java deleted file mode 100644 index bdfbeebd396..00000000000 --- a/JCL/converterJclMin1.5/src/java/lang/annotation/Target.java +++ /dev/null @@ -1,17 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang.annotation; - -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.ANNOTATION_TYPE) -public @interface Target { - ElementType[] value(); -} diff --git a/JCL/converterJclMin1.5/src/java/lang/ref/Reference.java b/JCL/converterJclMin1.5/src/java/lang/ref/Reference.java deleted file mode 100644 index 4d163a8bd12..00000000000 --- a/JCL/converterJclMin1.5/src/java/lang/ref/Reference.java +++ /dev/null @@ -1,17 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang.ref; - -public class Reference { - public Object get() { - return null; - } -} diff --git a/JCL/converterJclMin1.5/src/java/lang/ref/ReferenceQueue.java b/JCL/converterJclMin1.5/src/java/lang/ref/ReferenceQueue.java deleted file mode 100644 index 9fe70bdafe3..00000000000 --- a/JCL/converterJclMin1.5/src/java/lang/ref/ReferenceQueue.java +++ /dev/null @@ -1,17 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang.ref; - -public class ReferenceQueue { - public Reference poll() { - return null; - } -} diff --git a/JCL/converterJclMin1.5/src/java/lang/ref/WeakReference.java b/JCL/converterJclMin1.5/src/java/lang/ref/WeakReference.java deleted file mode 100644 index a45438ab53e..00000000000 --- a/JCL/converterJclMin1.5/src/java/lang/ref/WeakReference.java +++ /dev/null @@ -1,17 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang.ref; - - -public class WeakReference extends Reference { - public WeakReference(Object o, ReferenceQueue queue) { - } -} diff --git a/JCL/converterJclMin1.5/src/java/net/MalformedURLException.java b/JCL/converterJclMin1.5/src/java/net/MalformedURLException.java deleted file mode 100644 index 887f4a7c4be..00000000000 --- a/JCL/converterJclMin1.5/src/java/net/MalformedURLException.java +++ /dev/null @@ -1,15 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.net; - -public class MalformedURLException extends Exception { - -} diff --git a/JCL/converterJclMin1.5/src/java/text/NumberFormat.java b/JCL/converterJclMin1.5/src/java/text/NumberFormat.java deleted file mode 100644 index 93a29b63cf3..00000000000 --- a/JCL/converterJclMin1.5/src/java/text/NumberFormat.java +++ /dev/null @@ -1,22 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.text; - -public class NumberFormat { - - public final static NumberFormat getInstance() { - return null; - } - - public final String format (double d) { - return null; - } -} diff --git a/JCL/converterJclMin1.5/src/java/util/AbstractCollection.java b/JCL/converterJclMin1.5/src/java/util/AbstractCollection.java deleted file mode 100644 index 89e6b86afe0..00000000000 --- a/JCL/converterJclMin1.5/src/java/util/AbstractCollection.java +++ /dev/null @@ -1,4 +0,0 @@ -package java.util; - -public abstract class AbstractCollection implements Collection { -} diff --git a/JCL/converterJclMin1.5/src/java/util/AbstractList.java b/JCL/converterJclMin1.5/src/java/util/AbstractList.java deleted file mode 100644 index ab84c73f8a6..00000000000 --- a/JCL/converterJclMin1.5/src/java/util/AbstractList.java +++ /dev/null @@ -1,4 +0,0 @@ -package java.util; - -public abstract class AbstractList extends AbstractCollection implements List { -} \ No newline at end of file diff --git a/JCL/converterJclMin1.5/src/java/util/AbstractSet.java b/JCL/converterJclMin1.5/src/java/util/AbstractSet.java deleted file mode 100644 index c93ad94dad9..00000000000 --- a/JCL/converterJclMin1.5/src/java/util/AbstractSet.java +++ /dev/null @@ -1,4 +0,0 @@ -package java.util; - -public abstract class AbstractSet extends AbstractCollection implements Set { -} \ No newline at end of file diff --git a/JCL/converterJclMin1.5/src/java/util/ArrayList.java b/JCL/converterJclMin1.5/src/java/util/ArrayList.java deleted file mode 100644 index 08693f0aa6b..00000000000 --- a/JCL/converterJclMin1.5/src/java/util/ArrayList.java +++ /dev/null @@ -1,50 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.util; - -import java.io.Serializable; - -public class ArrayList extends AbstractList implements List, RandomAccess, Cloneable, Serializable { - private static final long serialVersionUID = -2169998406647523911L; - public ArrayList(int i) { - } - public ArrayList() { - } - public T[] toArray(T[] o) { - return null; - } - public int size() { - return 0; - } - public boolean add(T o) { - return false; - } - public int indexOf(T o) { - return 0; - } - public T remove(int index) { - return null; - } - public T get(int index) { - return null; - } - public boolean contains(T o) { - return false; - } - public Iterator iterator() { - return null; - } - public boolean addAll(Collection c) { - return false; - } - public void set(int i, T o) { - } -} diff --git a/JCL/converterJclMin1.5/src/java/util/Arrays.java b/JCL/converterJclMin1.5/src/java/util/Arrays.java deleted file mode 100644 index 758e7004e9e..00000000000 --- a/JCL/converterJclMin1.5/src/java/util/Arrays.java +++ /dev/null @@ -1,20 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.util; - - -public class Arrays { - public static void sort(Object[] tab) { - } - public static List asList(T... a) { - return null; - } -} diff --git a/JCL/converterJclMin1.5/src/java/util/Collection.java b/JCL/converterJclMin1.5/src/java/util/Collection.java deleted file mode 100644 index 4415a6b5086..00000000000 --- a/JCL/converterJclMin1.5/src/java/util/Collection.java +++ /dev/null @@ -1,19 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.util; - -public interface Collection extends Iterable { - public Iterator iterator(); - public int size(); - public T get(int index); - public boolean addAll(Collection c); - public T[] toArray(T[] o); -} diff --git a/JCL/converterJclMin1.5/src/java/util/Collections.java b/JCL/converterJclMin1.5/src/java/util/Collections.java deleted file mode 100644 index fa2220d3ce3..00000000000 --- a/JCL/converterJclMin1.5/src/java/util/Collections.java +++ /dev/null @@ -1,23 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.util; - -public class Collections { - public static > void sort(List list) { - } - - public static final Map emptyMap() { - return null; - } - public static final List emptyList() { - return null; - } -} diff --git a/JCL/converterJclMin1.5/src/java/util/Enumeration.java b/JCL/converterJclMin1.5/src/java/util/Enumeration.java deleted file mode 100644 index 71ce4fb5864..00000000000 --- a/JCL/converterJclMin1.5/src/java/util/Enumeration.java +++ /dev/null @@ -1,18 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.util; - -public interface Enumeration { - - public boolean hasMoreElements(); - - public Object nextElement(); -} diff --git a/JCL/converterJclMin1.5/src/java/util/HashMap.java b/JCL/converterJclMin1.5/src/java/util/HashMap.java deleted file mode 100644 index d22a3176c53..00000000000 --- a/JCL/converterJclMin1.5/src/java/util/HashMap.java +++ /dev/null @@ -1,33 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2005 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.util; - -public class HashMap implements Map { - public HashMap(int i) { - } - public V get(K k) { - return null; - } - public boolean containsKey(K k) { - return false; - } - public void put(K k, V v) { - } - public int size() { - return 0; - } - public Set keySet() { - return null; - } - public Collection values() { - return null; - } -} diff --git a/JCL/converterJclMin1.5/src/java/util/HashSet.java b/JCL/converterJclMin1.5/src/java/util/HashSet.java deleted file mode 100644 index 6e3afcc8b31..00000000000 --- a/JCL/converterJclMin1.5/src/java/util/HashSet.java +++ /dev/null @@ -1,22 +0,0 @@ -package java.util; - -import java.io.Serializable; - -public class HashSet extends AbstractSet implements Set, Cloneable, Serializable { - private static final long serialVersionUID = 4886489800857586866L; - public Iterator iterator() { - return null; - } - public boolean addAll(Collection c) { - return false; - } - public E get(int index) { - return null; - } - public int size() { - return 0; - } - public E[] toArray(E[] o) { - return null; - } -} diff --git a/JCL/converterJclMin1.5/src/java/util/Hashtable.java b/JCL/converterJclMin1.5/src/java/util/Hashtable.java deleted file mode 100644 index fc2c5eb10f5..00000000000 --- a/JCL/converterJclMin1.5/src/java/util/Hashtable.java +++ /dev/null @@ -1,33 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.util; - -public class Hashtable implements Map { - public Hashtable(int i) { - } - public V get(U u) { - return null; - } - public boolean containsKey(U u) { - return false; - } - public void put(U u, V v) { - } - public synchronized Enumeration elements() { - return null; - } - public int size() { - return 0; - } - public synchronized Enumeration keys() { - return null; - } -} diff --git a/JCL/converterJclMin1.5/src/java/util/Iterator.java b/JCL/converterJclMin1.5/src/java/util/Iterator.java deleted file mode 100644 index 1356cd55a2e..00000000000 --- a/JCL/converterJclMin1.5/src/java/util/Iterator.java +++ /dev/null @@ -1,17 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.util; - -public interface Iterator { - boolean hasNext(); - E next(); - void remove(); -} diff --git a/JCL/converterJclMin1.5/src/java/util/List.java b/JCL/converterJclMin1.5/src/java/util/List.java deleted file mode 100644 index 8039b147431..00000000000 --- a/JCL/converterJclMin1.5/src/java/util/List.java +++ /dev/null @@ -1,16 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.util; - -public interface List extends Collection { - public boolean add(T o); - public void set(int i, T o); -} diff --git a/JCL/converterJclMin1.5/src/java/util/Locale.java b/JCL/converterJclMin1.5/src/java/util/Locale.java deleted file mode 100644 index d591b3946ac..00000000000 --- a/JCL/converterJclMin1.5/src/java/util/Locale.java +++ /dev/null @@ -1,17 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.util; - -public class Locale { - public static Locale getDefault() { - return null; - } -} diff --git a/JCL/converterJclMin1.5/src/java/util/Map.java b/JCL/converterJclMin1.5/src/java/util/Map.java deleted file mode 100644 index fc06d3ceceb..00000000000 --- a/JCL/converterJclMin1.5/src/java/util/Map.java +++ /dev/null @@ -1,18 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2005 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.util; - -public interface Map { - - public V get(K k); - public boolean containsKey(K k); - public void put(K k, V v); -} diff --git a/JCL/converterJclMin1.5/src/java/util/MissingResourceException.java b/JCL/converterJclMin1.5/src/java/util/MissingResourceException.java deleted file mode 100644 index f5f7c87e82a..00000000000 --- a/JCL/converterJclMin1.5/src/java/util/MissingResourceException.java +++ /dev/null @@ -1,16 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.util; - - -public class MissingResourceException extends RuntimeException { - -} diff --git a/JCL/converterJclMin1.5/src/java/util/NoSuchElementException.java b/JCL/converterJclMin1.5/src/java/util/NoSuchElementException.java deleted file mode 100644 index a049d80d09e..00000000000 --- a/JCL/converterJclMin1.5/src/java/util/NoSuchElementException.java +++ /dev/null @@ -1,16 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.util; - - -public class NoSuchElementException extends RuntimeException { - -} diff --git a/JCL/converterJclMin1.5/src/java/util/RandomAccess.java b/JCL/converterJclMin1.5/src/java/util/RandomAccess.java deleted file mode 100644 index 78870df3a5b..00000000000 --- a/JCL/converterJclMin1.5/src/java/util/RandomAccess.java +++ /dev/null @@ -1,3 +0,0 @@ -package java.util; - -public interface RandomAccess {} diff --git a/JCL/converterJclMin1.5/src/java/util/ResourceBundle.java b/JCL/converterJclMin1.5/src/java/util/ResourceBundle.java deleted file mode 100644 index 027b99f365d..00000000000 --- a/JCL/converterJclMin1.5/src/java/util/ResourceBundle.java +++ /dev/null @@ -1,23 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.util; - -public abstract class ResourceBundle { - - public static final ResourceBundle getBundle(String baseName, Locale locale) { - return null; - } - - public final String getString(String key) { - return null; - } - public abstract Enumeration getKeys(); -} diff --git a/JCL/converterJclMin1.5/src/java/util/Set.java b/JCL/converterJclMin1.5/src/java/util/Set.java deleted file mode 100644 index 64284b40a8d..00000000000 --- a/JCL/converterJclMin1.5/src/java/util/Set.java +++ /dev/null @@ -1,16 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.util; - - -public interface Set extends Collection { - public Iterator iterator(); -} diff --git a/JCL/converterJclMin1.5/src/java/util/StringTokenizer.java b/JCL/converterJclMin1.5/src/java/util/StringTokenizer.java deleted file mode 100644 index 86214d85969..00000000000 --- a/JCL/converterJclMin1.5/src/java/util/StringTokenizer.java +++ /dev/null @@ -1,29 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.util; - -public class StringTokenizer { - - public StringTokenizer(String toBeParsed, String delimiters) { - } - - public int countTokens() { - return 0; - } - - public String nextToken() { - return null; - } - - public boolean hasMoreTokens() { - return false; - } -} diff --git a/JCL/converterJclMin1.5/src/java/util/Vector.java b/JCL/converterJclMin1.5/src/java/util/Vector.java deleted file mode 100644 index 7f8630a58c4..00000000000 --- a/JCL/converterJclMin1.5/src/java/util/Vector.java +++ /dev/null @@ -1,32 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2005 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.util; - -public class Vector { - - public Vector() { - } - - public Vector(int i) { - } - - public int size() { - return 0; - } - - public E get(int i) { - return null; - } - - public boolean add(E o) { - return true; - } -} diff --git a/JCL/converterJclMin1.5/src/java/util/zip/ZipEntry.java b/JCL/converterJclMin1.5/src/java/util/zip/ZipEntry.java deleted file mode 100644 index 7c82b06d8cc..00000000000 --- a/JCL/converterJclMin1.5/src/java/util/zip/ZipEntry.java +++ /dev/null @@ -1,18 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.util.zip; - - -public class ZipEntry { - public long getSize() { - return 0; - } -} diff --git a/JCL/converterJclMin1.5/src/java/util/zip/ZipFile.java b/JCL/converterJclMin1.5/src/java/util/zip/ZipFile.java deleted file mode 100644 index 56c853a2bce..00000000000 --- a/JCL/converterJclMin1.5/src/java/util/zip/ZipFile.java +++ /dev/null @@ -1,23 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.util.zip; - -import java.io.InputStream; - - -public class ZipFile { - public ZipEntry getEntry(String s) { - return null; - } - public InputStream getInputStream(ZipEntry zipEntry) { - return null; - } -} diff --git a/JCL/converterJclMin1.5/src/p1/p2/Annot.java b/JCL/converterJclMin1.5/src/p1/p2/Annot.java deleted file mode 100644 index e7bea6f88c2..00000000000 --- a/JCL/converterJclMin1.5/src/p1/p2/Annot.java +++ /dev/null @@ -1,8 +0,0 @@ -package p1.p2; - -/** - * Test case for bug 147875 - */ -public @interface Annot { - MyEnum2 value(); -} diff --git a/JCL/converterJclMin1.5/src/p1/p2/MyEnum.java b/JCL/converterJclMin1.5/src/p1/p2/MyEnum.java deleted file mode 100644 index 664daea9a88..00000000000 --- a/JCL/converterJclMin1.5/src/p1/p2/MyEnum.java +++ /dev/null @@ -1,17 +0,0 @@ -package p1.p2; - -/** - * Test case for bug 147875 - */ -public enum MyEnum { - - @Annot(MyEnum2.B) - A, - @Annot(MyEnum2.C) - B, - @Annot(MyEnum2.A) - C, - @Annot(MyEnum2.D) - D; - -} diff --git a/JCL/converterJclMin1.5/src/p1/p2/MyEnum2.java b/JCL/converterJclMin1.5/src/p1/p2/MyEnum2.java deleted file mode 100644 index f07c0b66bc9..00000000000 --- a/JCL/converterJclMin1.5/src/p1/p2/MyEnum2.java +++ /dev/null @@ -1,7 +0,0 @@ -package p1.p2; - -public enum MyEnum2 { - - A, B, C, D; - -} diff --git a/JCL/converterJclMin1.7/.classpath b/JCL/converterJclMin1.7/.classpath deleted file mode 100644 index 51a8bbad896..00000000000 --- a/JCL/converterJclMin1.7/.classpath +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/JCL/converterJclMin1.7/.project b/JCL/converterJclMin1.7/.project deleted file mode 100644 index 74f00377023..00000000000 --- a/JCL/converterJclMin1.7/.project +++ /dev/null @@ -1,17 +0,0 @@ - - - converterJclMin1.7 - - - - - - org.eclipse.jdt.core.javabuilder - - - - - - org.eclipse.jdt.core.javanature - - diff --git a/JCL/converterJclMin1.7/.settings/org.eclipse.core.resources.prefs b/JCL/converterJclMin1.7/.settings/org.eclipse.core.resources.prefs deleted file mode 100644 index 99f26c0203a..00000000000 --- a/JCL/converterJclMin1.7/.settings/org.eclipse.core.resources.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -encoding/=UTF-8 diff --git a/JCL/converterJclMin1.7/.settings/org.eclipse.jdt.core.prefs b/JCL/converterJclMin1.7/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index ec1937b3f30..00000000000 --- a/JCL/converterJclMin1.7/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,12 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.8 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.release=disabled -org.eclipse.jdt.core.compiler.source=1.8 diff --git a/JCL/converterJclMin1.7/src/java/awt/List.java b/JCL/converterJclMin1.7/src/java/awt/List.java deleted file mode 100644 index b2fd6f7c24a..00000000000 --- a/JCL/converterJclMin1.7/src/java/awt/List.java +++ /dev/null @@ -1,15 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.awt; - -public class List { - -} diff --git a/JCL/converterJclMin1.7/src/java/io/BufferedInputStream.java b/JCL/converterJclMin1.7/src/java/io/BufferedInputStream.java deleted file mode 100644 index aa574a1930e..00000000000 --- a/JCL/converterJclMin1.7/src/java/io/BufferedInputStream.java +++ /dev/null @@ -1,17 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - - -public class BufferedInputStream extends InputStream { - public BufferedInputStream(InputStream inputStream) { - } -} diff --git a/JCL/converterJclMin1.7/src/java/io/BufferedOutputStream.java b/JCL/converterJclMin1.7/src/java/io/BufferedOutputStream.java deleted file mode 100644 index 3ab0e26fc52..00000000000 --- a/JCL/converterJclMin1.7/src/java/io/BufferedOutputStream.java +++ /dev/null @@ -1,17 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - - -public class BufferedOutputStream extends OutputStream { - public BufferedOutputStream(FileOutputStream outputStream) { - } -} diff --git a/JCL/converterJclMin1.7/src/java/io/BufferedWriter.java b/JCL/converterJclMin1.7/src/java/io/BufferedWriter.java deleted file mode 100644 index 61122c1b2f4..00000000000 --- a/JCL/converterJclMin1.7/src/java/io/BufferedWriter.java +++ /dev/null @@ -1,22 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - - -public class BufferedWriter extends Writer { - - public BufferedWriter(Writer writer) { - } - public void flush() throws IOException { - } - public void close() throws IOException { - } -} diff --git a/JCL/converterJclMin1.7/src/java/io/ByteArrayInputStream.java b/JCL/converterJclMin1.7/src/java/io/ByteArrayInputStream.java deleted file mode 100644 index 7f095dcbcb4..00000000000 --- a/JCL/converterJclMin1.7/src/java/io/ByteArrayInputStream.java +++ /dev/null @@ -1,17 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - - -public class ByteArrayInputStream extends InputStream { - public ByteArrayInputStream(byte[] b) { - } -} diff --git a/JCL/converterJclMin1.7/src/java/io/ByteArrayOutputStream.java b/JCL/converterJclMin1.7/src/java/io/ByteArrayOutputStream.java deleted file mode 100644 index 8af40644cc3..00000000000 --- a/JCL/converterJclMin1.7/src/java/io/ByteArrayOutputStream.java +++ /dev/null @@ -1,16 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - - -public class ByteArrayOutputStream extends OutputStream { - -} diff --git a/JCL/converterJclMin1.7/src/java/io/File.java b/JCL/converterJclMin1.7/src/java/io/File.java deleted file mode 100644 index e0465e47fa9..00000000000 --- a/JCL/converterJclMin1.7/src/java/io/File.java +++ /dev/null @@ -1,46 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - -public class File { - public static final char separatorChar = '\\'; - public static final String separator = "\\"; //$NON-NLS-1$ - - public File(String s) { - } - - public boolean exists() { - return false; - } - - public boolean isDirectory() { - return false; - } - - public String getAbsolutePath() { - return null; - } - - public boolean mkdirs() { - return false; - } - - public boolean mkdir() { - return false; - } - - public String getName() { - return null; - } - public long length() { - return 0; - } -} diff --git a/JCL/converterJclMin1.7/src/java/io/FileInputStream.java b/JCL/converterJclMin1.7/src/java/io/FileInputStream.java deleted file mode 100644 index c51d1be33c8..00000000000 --- a/JCL/converterJclMin1.7/src/java/io/FileInputStream.java +++ /dev/null @@ -1,18 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - - -public class FileInputStream extends InputStream { - - public FileInputStream(File f) { - } -} diff --git a/JCL/converterJclMin1.7/src/java/io/FileOutputStream.java b/JCL/converterJclMin1.7/src/java/io/FileOutputStream.java deleted file mode 100644 index c643bf9c415..00000000000 --- a/JCL/converterJclMin1.7/src/java/io/FileOutputStream.java +++ /dev/null @@ -1,19 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - - -public class FileOutputStream extends OutputStream { - public FileOutputStream(File f) { - } - public FileOutputStream(String s) { - } -} diff --git a/JCL/converterJclMin1.7/src/java/io/FileWriter.java b/JCL/converterJclMin1.7/src/java/io/FileWriter.java deleted file mode 100644 index 667a1888694..00000000000 --- a/JCL/converterJclMin1.7/src/java/io/FileWriter.java +++ /dev/null @@ -1,24 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - - -public class FileWriter extends Writer { - - public FileWriter(String s) { - } - public void flush() throws IOException { - } - - public void close() throws IOException { - } - -} diff --git a/JCL/converterJclMin1.7/src/java/io/IOException.java b/JCL/converterJclMin1.7/src/java/io/IOException.java deleted file mode 100644 index e9dabf8df2b..00000000000 --- a/JCL/converterJclMin1.7/src/java/io/IOException.java +++ /dev/null @@ -1,20 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - -public class IOException extends Exception { - private static final long serialVersionUID = 420068904675281479L; - public IOException(String s) { - super(s); - } - public IOException() { - } -} diff --git a/JCL/converterJclMin1.7/src/java/io/InputStream.java b/JCL/converterJclMin1.7/src/java/io/InputStream.java deleted file mode 100644 index 8aa222e9020..00000000000 --- a/JCL/converterJclMin1.7/src/java/io/InputStream.java +++ /dev/null @@ -1,22 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - -public class InputStream { - public void close() throws IOException { - } - public int available() throws IOException { - return 0; - } - public int read(byte b[], int off, int len) throws IOException { - return 0; - } -} diff --git a/JCL/converterJclMin1.7/src/java/io/InputStreamReader.java b/JCL/converterJclMin1.7/src/java/io/InputStreamReader.java deleted file mode 100644 index a9012a34b8a..00000000000 --- a/JCL/converterJclMin1.7/src/java/io/InputStreamReader.java +++ /dev/null @@ -1,22 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - - -public class InputStreamReader extends Reader { - public InputStreamReader(InputStream inputStream) { - } - public InputStreamReader(InputStream stream, String s) throws UnsupportedEncodingException { - } - public int read(char cbuf[], int offset, int length) throws IOException { - return 0; - } -} diff --git a/JCL/converterJclMin1.7/src/java/io/InterruptedIOException.java b/JCL/converterJclMin1.7/src/java/io/InterruptedIOException.java deleted file mode 100644 index c727ca292d2..00000000000 --- a/JCL/converterJclMin1.7/src/java/io/InterruptedIOException.java +++ /dev/null @@ -1,15 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - -public class InterruptedIOException extends Exception { - private static final long serialVersionUID = -2623465050370205911L; -} diff --git a/JCL/converterJclMin1.7/src/java/io/OutputStream.java b/JCL/converterJclMin1.7/src/java/io/OutputStream.java deleted file mode 100644 index 8d9756265ba..00000000000 --- a/JCL/converterJclMin1.7/src/java/io/OutputStream.java +++ /dev/null @@ -1,22 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - - -public class OutputStream { - - public void write(byte b[]) throws IOException { - } - public void flush() throws IOException { - } - public void close() throws IOException { - } -} diff --git a/JCL/converterJclMin1.7/src/java/io/PrintStream.java b/JCL/converterJclMin1.7/src/java/io/PrintStream.java deleted file mode 100644 index 503f080425d..00000000000 --- a/JCL/converterJclMin1.7/src/java/io/PrintStream.java +++ /dev/null @@ -1,35 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - -public class PrintStream { - - public void println() { - } - - public void println(String s) { - } - - public void println(int i) { - } - - public void println(Object o) { - } - - public void print(String s) { - } - - public void print(Object o) { - } - - public void print(int i) { - } -} diff --git a/JCL/converterJclMin1.7/src/java/io/PrintWriter.java b/JCL/converterJclMin1.7/src/java/io/PrintWriter.java deleted file mode 100644 index ec7e885e07e..00000000000 --- a/JCL/converterJclMin1.7/src/java/io/PrintWriter.java +++ /dev/null @@ -1,28 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - -public class PrintWriter extends Writer { - public PrintWriter(ByteArrayOutputStream stream) { - } - public PrintWriter(Writer w) { - } - public void print(String s) { - } - public void print(char[] tab) { - } - public void flush() { - } - public void close() { - } - public void println(String s) { - } -} diff --git a/JCL/converterJclMin1.7/src/java/io/Reader.java b/JCL/converterJclMin1.7/src/java/io/Reader.java deleted file mode 100644 index bb74ec22fa7..00000000000 --- a/JCL/converterJclMin1.7/src/java/io/Reader.java +++ /dev/null @@ -1,16 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - - -public class Reader { - -} diff --git a/JCL/converterJclMin1.7/src/java/io/Serializable.java b/JCL/converterJclMin1.7/src/java/io/Serializable.java deleted file mode 100644 index e33731bec8f..00000000000 --- a/JCL/converterJclMin1.7/src/java/io/Serializable.java +++ /dev/null @@ -1,15 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - -public interface Serializable { - -} diff --git a/JCL/converterJclMin1.7/src/java/io/StringWriter.java b/JCL/converterJclMin1.7/src/java/io/StringWriter.java deleted file mode 100644 index 84631fdee0d..00000000000 --- a/JCL/converterJclMin1.7/src/java/io/StringWriter.java +++ /dev/null @@ -1,23 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - - -public class StringWriter extends Writer { - - public StringBuffer getBuffer() { - return null; - } - public void flush() { - } - public void close() { - } -} diff --git a/JCL/converterJclMin1.7/src/java/io/UnsupportedEncodingException.java b/JCL/converterJclMin1.7/src/java/io/UnsupportedEncodingException.java deleted file mode 100644 index 6eb4f037848..00000000000 --- a/JCL/converterJclMin1.7/src/java/io/UnsupportedEncodingException.java +++ /dev/null @@ -1,20 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - -public class UnsupportedEncodingException extends IOException { - private static final long serialVersionUID = 1031403719398591519L; - public UnsupportedEncodingException(String s) { - super(s); - } - public UnsupportedEncodingException() { - } -} diff --git a/JCL/converterJclMin1.7/src/java/io/Writer.java b/JCL/converterJclMin1.7/src/java/io/Writer.java deleted file mode 100644 index 8a198ae50ca..00000000000 --- a/JCL/converterJclMin1.7/src/java/io/Writer.java +++ /dev/null @@ -1,19 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.io; - - -public abstract class Writer { - public abstract void flush() throws IOException; - public abstract void close() throws IOException; - public void write(String str) throws IOException { - } -} diff --git a/JCL/converterJclMin1.7/src/java/lang/ArithmeticException.java b/JCL/converterJclMin1.7/src/java/lang/ArithmeticException.java deleted file mode 100644 index afe937b4cd4..00000000000 --- a/JCL/converterJclMin1.7/src/java/lang/ArithmeticException.java +++ /dev/null @@ -1,16 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - - -public class ArithmeticException extends RuntimeException { - private static final long serialVersionUID = 7325899601264404083L; -} diff --git a/JCL/converterJclMin1.7/src/java/lang/ArrayIndexOutOfBoundsException.java b/JCL/converterJclMin1.7/src/java/lang/ArrayIndexOutOfBoundsException.java deleted file mode 100644 index 3838011898b..00000000000 --- a/JCL/converterJclMin1.7/src/java/lang/ArrayIndexOutOfBoundsException.java +++ /dev/null @@ -1,16 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - - -public class ArrayIndexOutOfBoundsException extends IndexOutOfBoundsException { - private static final long serialVersionUID = -7035391738132728176L; -} diff --git a/JCL/converterJclMin1.7/src/java/lang/AssertionError.java b/JCL/converterJclMin1.7/src/java/lang/AssertionError.java deleted file mode 100644 index cd8e8b1acca..00000000000 --- a/JCL/converterJclMin1.7/src/java/lang/AssertionError.java +++ /dev/null @@ -1,29 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public class AssertionError extends Error { - private static final long serialVersionUID = 3910378697039934416L; - /** - * Constructor for AssertionError. - */ - public AssertionError(String s) { - super(s); - } - - /** - * Constructor for AssertionError. - */ - public AssertionError() { - super(); - } - -} diff --git a/JCL/converterJclMin1.7/src/java/lang/Boolean.java b/JCL/converterJclMin1.7/src/java/lang/Boolean.java deleted file mode 100644 index 198c9287b17..00000000000 --- a/JCL/converterJclMin1.7/src/java/lang/Boolean.java +++ /dev/null @@ -1,19 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - - -public class Boolean { - public static final Boolean TRUE = new Boolean(true); - public static final Boolean FALSE = new Boolean(false); - public Boolean(boolean b) { - } -} diff --git a/JCL/converterJclMin1.7/src/java/lang/Byte.java b/JCL/converterJclMin1.7/src/java/lang/Byte.java deleted file mode 100644 index 75c71a1c00a..00000000000 --- a/JCL/converterJclMin1.7/src/java/lang/Byte.java +++ /dev/null @@ -1,45 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - - -public class Byte extends Number implements Comparable { - private static final long serialVersionUID = 8750891329089001085L; - public Byte(byte b) { - } - /* (non-Javadoc) - * @see java.lang.Number#doubleValue() - */ - public double doubleValue() { - return 0; - } - /* (non-Javadoc) - * @see java.lang.Number#floatValue() - */ - public float floatValue() { - return 0; - } - /* (non-Javadoc) - * @see java.lang.Number#intValue() - */ - public int intValue() { - return 0; - } - /* (non-Javadoc) - * @see java.lang.Number#longValue() - */ - public long longValue() { - return 0; - } - public int compareTo(Byte b) { - return 0; - } -} diff --git a/JCL/converterJclMin1.7/src/java/lang/Character.java b/JCL/converterJclMin1.7/src/java/lang/Character.java deleted file mode 100644 index 337c148689e..00000000000 --- a/JCL/converterJclMin1.7/src/java/lang/Character.java +++ /dev/null @@ -1,39 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public class Character { - public Character(char c) { - } - public static char toLowerCase(char c) { - return ' '; - } - - public static int getNumericValue(char c) { - return 0; - } - - public static int digit(char ch, int radix) { - return 0; - } - public static boolean isWhitespace(char c) { - return false; - } - public static boolean isJavaIdentifierStart(char c) { - return false; - } - public static boolean isJavaIdentifierPart(char c) { - return false; - } - public static boolean isDigit(char c) { - return false; - } -} diff --git a/JCL/converterJclMin1.7/src/java/lang/Class.java b/JCL/converterJclMin1.7/src/java/lang/Class.java deleted file mode 100644 index 7e82f809c85..00000000000 --- a/JCL/converterJclMin1.7/src/java/lang/Class.java +++ /dev/null @@ -1,32 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -import java.io.InputStream; - -public class Class { - public String getName() { - return null; - } - public InputStream getResourceAsStream(String s) { - return null; - } - - public native Class getSuperclass(); - - public T newInstance() throws InstantiationException, IllegalAccessException { - return null; - } - - public static Class forName(String className) throws ClassNotFoundException { - return null; - } -} diff --git a/JCL/converterJclMin1.7/src/java/lang/ClassCastException.java b/JCL/converterJclMin1.7/src/java/lang/ClassCastException.java deleted file mode 100644 index 72d68101399..00000000000 --- a/JCL/converterJclMin1.7/src/java/lang/ClassCastException.java +++ /dev/null @@ -1,16 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - - -public class ClassCastException extends RuntimeException { - private static final long serialVersionUID = -2824993730424549317L; -} diff --git a/JCL/converterJclMin1.7/src/java/lang/ClassNotFoundException.java b/JCL/converterJclMin1.7/src/java/lang/ClassNotFoundException.java deleted file mode 100644 index 46742b7d4a7..00000000000 --- a/JCL/converterJclMin1.7/src/java/lang/ClassNotFoundException.java +++ /dev/null @@ -1,15 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2005 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public class ClassNotFoundException extends Exception { - private static final long serialVersionUID = -7119744281167457228L; -} diff --git a/JCL/converterJclMin1.7/src/java/lang/CloneNotSupportedException.java b/JCL/converterJclMin1.7/src/java/lang/CloneNotSupportedException.java deleted file mode 100644 index 5fb63b9ea17..00000000000 --- a/JCL/converterJclMin1.7/src/java/lang/CloneNotSupportedException.java +++ /dev/null @@ -1,15 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public class CloneNotSupportedException extends Exception { - private static final long serialVersionUID = -3979306935580113776L; -} diff --git a/JCL/converterJclMin1.7/src/java/lang/Cloneable.java b/JCL/converterJclMin1.7/src/java/lang/Cloneable.java deleted file mode 100644 index bc1cb76200b..00000000000 --- a/JCL/converterJclMin1.7/src/java/lang/Cloneable.java +++ /dev/null @@ -1,15 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public interface Cloneable { - -} diff --git a/JCL/converterJclMin1.7/src/java/lang/Comparable.java b/JCL/converterJclMin1.7/src/java/lang/Comparable.java deleted file mode 100644 index fae6b35eb20..00000000000 --- a/JCL/converterJclMin1.7/src/java/lang/Comparable.java +++ /dev/null @@ -1,15 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public interface Comparable { - public int compareTo(T o); -} diff --git a/JCL/converterJclMin1.7/src/java/lang/Deprecated.java b/JCL/converterJclMin1.7/src/java/lang/Deprecated.java deleted file mode 100644 index b0650934723..00000000000 --- a/JCL/converterJclMin1.7/src/java/lang/Deprecated.java +++ /dev/null @@ -1,17 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2007 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -import java.lang.annotation.Retention; -import static java.lang.annotation.RetentionPolicy.*; - -@Retention(RUNTIME) -public @interface Deprecated {} diff --git a/JCL/converterJclMin1.7/src/java/lang/Double.java b/JCL/converterJclMin1.7/src/java/lang/Double.java deleted file mode 100644 index 18312efacb7..00000000000 --- a/JCL/converterJclMin1.7/src/java/lang/Double.java +++ /dev/null @@ -1,61 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public class Double extends Number implements Comparable { - private static final long serialVersionUID = -5839202747810229696L; - public Double(double d) { - } - public static String toString(double d) { - return null; - } - public static Double valueOf(String s) throws NumberFormatException { - return null; - } - public static final double POSITIVE_INFINITY = 1.0 / 0.0; - public static boolean isNaN(double v) { - return false; - } - public double doubleValue() { - return 0.0; - } - public static final double MAX_VALUE = 1.7976931348623157e+308; - public static final double MIN_VALUE = 4.9e-324; - public static final double NaN = 0.0d / 0.0; - - public static native double longBitsToDouble(long bits); - public static native long doubleToLongBits(double value); - /* (non-Javadoc) - * @see java.lang.Number#floatValue() - */ - public float floatValue() { - return 0; - } - /* (non-Javadoc) - * @see java.lang.Number#intValue() - */ - public int intValue() { - return 0; - } - /* (non-Javadoc) - * @see java.lang.Number#longValue() - */ - public long longValue() { - return 0; - } - - public static double parseDouble(String s) { - return 0.0; - } - public int compareTo(Double d) { - return 0; - } -} diff --git a/JCL/converterJclMin1.7/src/java/lang/Enum.java b/JCL/converterJclMin1.7/src/java/lang/Enum.java deleted file mode 100644 index 8e0a59b70e2..00000000000 --- a/JCL/converterJclMin1.7/src/java/lang/Enum.java +++ /dev/null @@ -1,40 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public abstract class Enum> implements Comparable, - java.io.Serializable { - - private static final long serialVersionUID = 2L; - - protected Enum(String name, int ordinal) { - } - - public final String name() { - return null; - } - - public final int ordinal() { - return 0; - } - - public final int compareTo(T o) { - return 0; - } - - public final Class getDeclaringClass() { - return null; - } - public static > T valueOf(Class enumClass, - String name) { - return null; - } -} \ No newline at end of file diff --git a/JCL/converterJclMin1.7/src/java/lang/Error.java b/JCL/converterJclMin1.7/src/java/lang/Error.java deleted file mode 100644 index 5b9b5435fd9..00000000000 --- a/JCL/converterJclMin1.7/src/java/lang/Error.java +++ /dev/null @@ -1,22 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public class Error extends Throwable { - private static final long serialVersionUID = 9179125830904709243L; - - public Error(String s) { - super(s); - } - - public Error() { - } -} diff --git a/JCL/converterJclMin1.7/src/java/lang/Exception.java b/JCL/converterJclMin1.7/src/java/lang/Exception.java deleted file mode 100644 index 9580b40d767..00000000000 --- a/JCL/converterJclMin1.7/src/java/lang/Exception.java +++ /dev/null @@ -1,20 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public class Exception extends Throwable { - private static final long serialVersionUID = -3387516993124229948L; - public Exception() { - } - public Exception(String s) { - super(s); - } -} diff --git a/JCL/converterJclMin1.7/src/java/lang/ExceptionInInitializerError.java b/JCL/converterJclMin1.7/src/java/lang/ExceptionInInitializerError.java deleted file mode 100644 index 2cf1e21702c..00000000000 --- a/JCL/converterJclMin1.7/src/java/lang/ExceptionInInitializerError.java +++ /dev/null @@ -1,19 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - - -public class ExceptionInInitializerError extends Error { - private static final long serialVersionUID = 2267505642151644179L; - - public ExceptionInInitializerError(String s) { - } -} diff --git a/JCL/converterJclMin1.7/src/java/lang/Float.java b/JCL/converterJclMin1.7/src/java/lang/Float.java deleted file mode 100644 index fd5313bde3c..00000000000 --- a/JCL/converterJclMin1.7/src/java/lang/Float.java +++ /dev/null @@ -1,57 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - - -public class Float extends Number implements Comparable { - private static final long serialVersionUID = -872370025937303716L; - public static final float NaN = 0.0f / 0.0f; - public Float(float f) { - } - public static native float intBitsToFloat(int bits); - public static Float valueOf(String s) throws NumberFormatException { - return null; - } - public static final float POSITIVE_INFINITY = 1.0f / 0.0f; - public static boolean isNaN(float v) { - return false; - } - public float floatValue() { - return 0.0f; - } - public static final float MAX_VALUE = 3.4028235e+38f; - public static final float MIN_VALUE = 1.4e-45f; - public static native int floatToIntBits(float value); - public static String toString(float f) { - return null; - } - /* (non-Javadoc) - * @see java.lang.Number#doubleValue() - */ - public double doubleValue() { - return 0; - } - /* (non-Javadoc) - * @see java.lang.Number#intValue() - */ - public int intValue() { - return 0; - } - /* (non-Javadoc) - * @see java.lang.Number#longValue() - */ - public long longValue() { - return 0; - } - public int compareTo(Float f) { - return 0; - } -} diff --git a/JCL/converterJclMin1.7/src/java/lang/IllegalAccessException.java b/JCL/converterJclMin1.7/src/java/lang/IllegalAccessException.java deleted file mode 100644 index d07dbcff056..00000000000 --- a/JCL/converterJclMin1.7/src/java/lang/IllegalAccessException.java +++ /dev/null @@ -1,16 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2005 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public class IllegalAccessException extends Exception { - private static final long serialVersionUID = 4022280013694488250L; - -} diff --git a/JCL/converterJclMin1.7/src/java/lang/IllegalMonitorStateException.java b/JCL/converterJclMin1.7/src/java/lang/IllegalMonitorStateException.java deleted file mode 100644 index 38ea0bfdc03..00000000000 --- a/JCL/converterJclMin1.7/src/java/lang/IllegalMonitorStateException.java +++ /dev/null @@ -1,19 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public class IllegalMonitorStateException extends RuntimeException { - private static final long serialVersionUID = 3460688064376288846L; - public IllegalMonitorStateException(String s) { - } - public IllegalMonitorStateException() { - } -} diff --git a/JCL/converterJclMin1.7/src/java/lang/IndexOutOfBoundsException.java b/JCL/converterJclMin1.7/src/java/lang/IndexOutOfBoundsException.java deleted file mode 100644 index 32bbeb87471..00000000000 --- a/JCL/converterJclMin1.7/src/java/lang/IndexOutOfBoundsException.java +++ /dev/null @@ -1,16 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - - -public class IndexOutOfBoundsException extends RuntimeException { - private static final long serialVersionUID = 2192343167556759436L; -} diff --git a/JCL/converterJclMin1.7/src/java/lang/InstantiationException.java b/JCL/converterJclMin1.7/src/java/lang/InstantiationException.java deleted file mode 100644 index cccda2332a0..00000000000 --- a/JCL/converterJclMin1.7/src/java/lang/InstantiationException.java +++ /dev/null @@ -1,15 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2005 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public class InstantiationException extends Exception { - private static final long serialVersionUID = 6944714408584296262L; -} diff --git a/JCL/converterJclMin1.7/src/java/lang/Integer.java b/JCL/converterJclMin1.7/src/java/lang/Integer.java deleted file mode 100644 index 5cdeb3415d6..00000000000 --- a/JCL/converterJclMin1.7/src/java/lang/Integer.java +++ /dev/null @@ -1,59 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public class Integer extends Number implements Comparable { - private static final long serialVersionUID = 6462609062775655000L; - - public Integer(int i) { - } - public Integer(String s) { - } - public static final int MAX_VALUE= 2147483647; - public static final int MIN_VALUE= -2147483647; - - public static int parseInt(String s) throws NumberFormatException { - return 0; - } - public static String toHexString(int i) { - return null; - } - public static String toString(int i) { - return null; - } - /* (non-Javadoc) - * @see java.lang.Number#doubleValue() - */ - public double doubleValue() { - return 0; - } - /* (non-Javadoc) - * @see java.lang.Number#floatValue() - */ - public float floatValue() { - return 0; - } - /* (non-Javadoc) - * @see java.lang.Number#intValue() - */ - public int intValue() { - return 0; - } - /* (non-Javadoc) - * @see java.lang.Number#longValue() - */ - public long longValue() { - return 0; - } - public int compareTo(Integer i) { - return 0; - } -} diff --git a/JCL/converterJclMin1.7/src/java/lang/InterruptedException.java b/JCL/converterJclMin1.7/src/java/lang/InterruptedException.java deleted file mode 100644 index 52b67124d91..00000000000 --- a/JCL/converterJclMin1.7/src/java/lang/InterruptedException.java +++ /dev/null @@ -1,15 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public class InterruptedException extends Exception { - private static final long serialVersionUID = 4024069220747256448L; -} diff --git a/JCL/converterJclMin1.7/src/java/lang/Iterable.java b/JCL/converterJclMin1.7/src/java/lang/Iterable.java deleted file mode 100644 index 9e1be1a38c0..00000000000 --- a/JCL/converterJclMin1.7/src/java/lang/Iterable.java +++ /dev/null @@ -1,17 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -import java.util.Iterator; - -public interface Iterable { - Iterator iterator(); -} diff --git a/JCL/converterJclMin1.7/src/java/lang/Long.java b/JCL/converterJclMin1.7/src/java/lang/Long.java deleted file mode 100644 index f5f7357ac13..00000000000 --- a/JCL/converterJclMin1.7/src/java/lang/Long.java +++ /dev/null @@ -1,46 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public class Long extends Number implements Comparable { - private static final long serialVersionUID = 7046418566711138668L; - public static final long MIN_VALUE = 0x8000000000000000L; - public static final long MAX_VALUE = 0x7fffffffffffffffL; - public Long(long l) { - } - /* (non-Javadoc) - * @see java.lang.Number#doubleValue() - */ - public double doubleValue() { - return 0; - } - /* (non-Javadoc) - * @see java.lang.Number#floatValue() - */ - public float floatValue() { - return 0; - } - /* (non-Javadoc) - * @see java.lang.Number#intValue() - */ - public int intValue() { - return 0; - } - /* (non-Javadoc) - * @see java.lang.Number#longValue() - */ - public long longValue() { - return 0; - } - public int compareTo(Long l) { - return 0; - } -} diff --git a/JCL/converterJclMin1.7/src/java/lang/Math.java b/JCL/converterJclMin1.7/src/java/lang/Math.java deleted file mode 100644 index 51837194632..00000000000 --- a/JCL/converterJclMin1.7/src/java/lang/Math.java +++ /dev/null @@ -1,24 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public class Math { - - public static int min(int a, int b) { - return 0; - } - public static int max(int a, int b) { - return 0; - } - public static int abs(int a) { - return 0; - } -} diff --git a/JCL/converterJclMin1.7/src/java/lang/NoSuchMethodException.java b/JCL/converterJclMin1.7/src/java/lang/NoSuchMethodException.java deleted file mode 100644 index a516033612d..00000000000 --- a/JCL/converterJclMin1.7/src/java/lang/NoSuchMethodException.java +++ /dev/null @@ -1,28 +0,0 @@ -package java.lang; - -/** - * Thrown when a particular method cannot be found. - * - * @author unascribed - * @since JDK1.0 - */ -public class NoSuchMethodException extends ReflectiveOperationException { - private static final long serialVersionUID = 5034388446362600923L; - - /** - * Constructs a NoSuchMethodException without a detail message. - */ - public NoSuchMethodException() { - super(); - } - - /** - * Constructs a NoSuchMethodException with a detail message. - * - * @param s - * the detail message. - */ - public NoSuchMethodException(String s) { - super(s); - } -} \ No newline at end of file diff --git a/JCL/converterJclMin1.7/src/java/lang/NullPointerException.java b/JCL/converterJclMin1.7/src/java/lang/NullPointerException.java deleted file mode 100644 index a9fbc06ec66..00000000000 --- a/JCL/converterJclMin1.7/src/java/lang/NullPointerException.java +++ /dev/null @@ -1,30 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public class NullPointerException extends RuntimeException { - private static final long serialVersionUID = -945245241303869636L; - - /** - * Constructor for NullPointerException. - */ - public NullPointerException(String s) { - super(s); - } - - /** - * Constructor for NullPointerException. - */ - public NullPointerException() { - super(); - } - -} diff --git a/JCL/converterJclMin1.7/src/java/lang/Number.java b/JCL/converterJclMin1.7/src/java/lang/Number.java deleted file mode 100644 index c8ccd0833ad..00000000000 --- a/JCL/converterJclMin1.7/src/java/lang/Number.java +++ /dev/null @@ -1,26 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - - -public abstract class Number implements java.io.Serializable { - private static final long serialVersionUID = 3166984097235214156L; - public abstract int intValue(); - public abstract long longValue(); - public abstract float floatValue(); - public abstract double doubleValue(); - public byte byteValue() { - return (byte) intValue(); - } - public short shortValue() { - return (short) intValue(); - } -} diff --git a/JCL/converterJclMin1.7/src/java/lang/NumberFormatException.java b/JCL/converterJclMin1.7/src/java/lang/NumberFormatException.java deleted file mode 100644 index eeb7eb737c3..00000000000 --- a/JCL/converterJclMin1.7/src/java/lang/NumberFormatException.java +++ /dev/null @@ -1,16 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - - -public class NumberFormatException extends RuntimeException { - private static final long serialVersionUID = 9070730590112500498L; -} diff --git a/JCL/converterJclMin1.7/src/java/lang/Object.java b/JCL/converterJclMin1.7/src/java/lang/Object.java deleted file mode 100644 index 9ed67c1b019..00000000000 --- a/JCL/converterJclMin1.7/src/java/lang/Object.java +++ /dev/null @@ -1,45 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public class Object { - - public Object() { - } - protected Object clone() throws CloneNotSupportedException { - return null; - } - public boolean equals(Object obj) { - return false; - } - protected void finalize() throws Throwable { - } - public final native Class getClass(); - public int hashCode() { - return -1; - } - public final void notify() throws IllegalMonitorStateException { - } - public final void notifyAll() throws IllegalMonitorStateException { - } - public String toString() { - return null; - } - public final void wait() throws IllegalMonitorStateException, - InterruptedException { - } - public final void wait(long millis) throws IllegalMonitorStateException, - InterruptedException { - } - public final void wait(long millis, int nanos) - throws IllegalMonitorStateException, InterruptedException { - } -} diff --git a/JCL/converterJclMin1.7/src/java/lang/Override.java b/JCL/converterJclMin1.7/src/java/lang/Override.java deleted file mode 100644 index e30eba7b6df..00000000000 --- a/JCL/converterJclMin1.7/src/java/lang/Override.java +++ /dev/null @@ -1,20 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -import java.lang.annotation.ElementType; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; -import java.lang.annotation.Retention; - -@Target(ElementType.METHOD) @Retention(RetentionPolicy.SOURCE) -public @interface Override { -} \ No newline at end of file diff --git a/JCL/converterJclMin1.7/src/java/lang/ReflectiveOperationException.java b/JCL/converterJclMin1.7/src/java/lang/ReflectiveOperationException.java deleted file mode 100644 index 46df5a4c814..00000000000 --- a/JCL/converterJclMin1.7/src/java/lang/ReflectiveOperationException.java +++ /dev/null @@ -1,13 +0,0 @@ -package java.lang; - -public class ReflectiveOperationException extends Exception { - static final long serialVersionUID = 123456789L; - - public ReflectiveOperationException() { - super(); - } - - public ReflectiveOperationException(String message) { - super(message); - } -} diff --git a/JCL/converterJclMin1.7/src/java/lang/Runnable.java b/JCL/converterJclMin1.7/src/java/lang/Runnable.java deleted file mode 100644 index d37f3130d10..00000000000 --- a/JCL/converterJclMin1.7/src/java/lang/Runnable.java +++ /dev/null @@ -1,16 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public interface Runnable { - - void run(); -} diff --git a/JCL/converterJclMin1.7/src/java/lang/RuntimeException.java b/JCL/converterJclMin1.7/src/java/lang/RuntimeException.java deleted file mode 100644 index 6018b826143..00000000000 --- a/JCL/converterJclMin1.7/src/java/lang/RuntimeException.java +++ /dev/null @@ -1,20 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public class RuntimeException extends Exception { - private static final long serialVersionUID = -8038704779788883814L; - public RuntimeException(String s) { - super(s); - } - public RuntimeException() { - } -} diff --git a/JCL/converterJclMin1.7/src/java/lang/SafeVarargs.java b/JCL/converterJclMin1.7/src/java/lang/SafeVarargs.java deleted file mode 100644 index 765dc3f57e7..00000000000 --- a/JCL/converterJclMin1.7/src/java/lang/SafeVarargs.java +++ /dev/null @@ -1,12 +0,0 @@ -package java.lang; - -import java.lang.annotation.Documented; -import static java.lang.annotation.ElementType.*; -import java.lang.annotation.Retention; -import static java.lang.annotation.RetentionPolicy.*; -import java.lang.annotation.Target; - -@Documented -@Retention(RUNTIME) -@Target({CONSTRUCTOR, METHOD}) -public @interface SafeVarargs {} \ No newline at end of file diff --git a/JCL/converterJclMin1.7/src/java/lang/Short.java b/JCL/converterJclMin1.7/src/java/lang/Short.java deleted file mode 100644 index 7c36571d45b..00000000000 --- a/JCL/converterJclMin1.7/src/java/lang/Short.java +++ /dev/null @@ -1,45 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - - -public class Short extends Number implements Comparable { - private static final long serialVersionUID = -8044450932684282285L; - public Short(short s) { - } - /* (non-Javadoc) - * @see java.lang.Number#doubleValue() - */ - public double doubleValue() { - return 0; - } - /* (non-Javadoc) - * @see java.lang.Number#floatValue() - */ - public float floatValue() { - return 0; - } - /* (non-Javadoc) - * @see java.lang.Number#intValue() - */ - public int intValue() { - return 0; - } - /* (non-Javadoc) - * @see java.lang.Number#longValue() - */ - public long longValue() { - return 0; - } - public int compareTo(Short s) { - return 0; - } -} diff --git a/JCL/converterJclMin1.7/src/java/lang/String.java b/JCL/converterJclMin1.7/src/java/lang/String.java deleted file mode 100644 index 27cd154400a..00000000000 --- a/JCL/converterJclMin1.7/src/java/lang/String.java +++ /dev/null @@ -1,77 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public class String implements java.io.Serializable, Comparable { - private static final long serialVersionUID = 1705120029863330869L; - - public String() { - } - public String(char[] source) { - } - public String(String s) { - } - public String(char[] source, int i , int j) { - } - public int length() { - return 0; - } - public String replace(char oldChar, char newChar) { - return null; - } - - public int lastIndexOf(char c) { - return 0; - } - - public String substring(int i, int j) { - return null; - } - public String substring(int i) { - return null; - } - public char[] toCharArray() { - return null; - } - public int indexOf(String s) { - return 0; - } - public int indexOf(String s, int i) { - return 0; - } - public boolean endsWith(String s) { - return false; - } - public static String valueOf(int i) { - return null; - } - public static String valueOf(Object o) { - return null; - } - public static String valueOf(char[] tab) { - return null; - } - public static String valueOf(char[] tab, int i, int j) { - return null; - } - public int compareTo(String s) { - return 0; - } - public int indexOf(int ch, int fromIndex) { - return 0; - } - public char charAt(int i) { - return ' '; - } - public String trim() { - return null; - } -} diff --git a/JCL/converterJclMin1.7/src/java/lang/StringBuffer.java b/JCL/converterJclMin1.7/src/java/lang/StringBuffer.java deleted file mode 100644 index f77dd695b04..00000000000 --- a/JCL/converterJclMin1.7/src/java/lang/StringBuffer.java +++ /dev/null @@ -1,59 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public class StringBuffer { - public StringBuffer() { - } - public StringBuffer(String s) { - } - public StringBuffer(int i) { - } - public synchronized StringBuffer insert(int offset, String str) { - return this; - } - public synchronized StringBuffer append(String s) { - return this; - } - public synchronized StringBuffer append(StringBuffer buffer) { - return this; - } - public synchronized StringBuffer append(boolean b) { - return this; - } - public synchronized StringBuffer append(int i) { - return this; - } - public synchronized StringBuffer append(long l) { - return this; - } - public synchronized StringBuffer append(float f) { - return this; - } - public synchronized StringBuffer append(double d) { - return this; - } - public synchronized StringBuffer append(char[] o) { - return this; - } - public synchronized StringBuffer append(char[] o, int i, int j) { - return this; - } - public synchronized StringBuffer append(Object o) { - return this; - } - public int length() { - return 0; - } - public char[] getChars(int i, int j, char[] tab, int k) { - return null; - } -} diff --git a/JCL/converterJclMin1.7/src/java/lang/SuppressWarnings.java b/JCL/converterJclMin1.7/src/java/lang/SuppressWarnings.java deleted file mode 100644 index 7aa7548f57d..00000000000 --- a/JCL/converterJclMin1.7/src/java/lang/SuppressWarnings.java +++ /dev/null @@ -1,11 +0,0 @@ -package java.lang; - -import static java.lang.annotation.ElementType.*; - -import java.lang.annotation.*; - -@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE}) -@Retention(RetentionPolicy.SOURCE) -public @interface SuppressWarnings { - String[] value(); -} \ No newline at end of file diff --git a/JCL/converterJclMin1.7/src/java/lang/System.java b/JCL/converterJclMin1.7/src/java/lang/System.java deleted file mode 100644 index a13acd2404d..00000000000 --- a/JCL/converterJclMin1.7/src/java/lang/System.java +++ /dev/null @@ -1,24 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -import java.io.PrintStream; - -public class System { - - public static PrintStream err; - public static PrintStream out; - - public static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int length); - public static String getProperty(String s) { - return null; - } -} diff --git a/JCL/converterJclMin1.7/src/java/lang/Throwable.java b/JCL/converterJclMin1.7/src/java/lang/Throwable.java deleted file mode 100644 index 55be032fdf5..00000000000 --- a/JCL/converterJclMin1.7/src/java/lang/Throwable.java +++ /dev/null @@ -1,35 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -import java.io.PrintStream; -import java.io.Serializable; -import java.io.Writer; - -public class Throwable implements Serializable { - private static final long serialVersionUID = -282116690407747101L; - public Throwable(String s) { - } - public Throwable() { - } - - public void printStackTrace() { - } - - public void printStackTrace(Writer w) { - } - - public void printStackTrace(PrintStream w) { - } - public String getMessage() { - return null; - } -} diff --git a/JCL/converterJclMin1.7/src/java/lang/Void.java b/JCL/converterJclMin1.7/src/java/lang/Void.java deleted file mode 100644 index 72e9ca2becd..00000000000 --- a/JCL/converterJclMin1.7/src/java/lang/Void.java +++ /dev/null @@ -1,13 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang; - -public class Void {} \ No newline at end of file diff --git a/JCL/converterJclMin1.7/src/java/lang/annotation/Annotation.java b/JCL/converterJclMin1.7/src/java/lang/annotation/Annotation.java deleted file mode 100644 index f6dbed69176..00000000000 --- a/JCL/converterJclMin1.7/src/java/lang/annotation/Annotation.java +++ /dev/null @@ -1,21 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang.annotation; - -public interface Annotation { - boolean equals(Object obj); - - int hashCode(); - - String toString(); - - Class annotationType(); -} diff --git a/JCL/converterJclMin1.7/src/java/lang/annotation/Documented.java b/JCL/converterJclMin1.7/src/java/lang/annotation/Documented.java deleted file mode 100644 index 1826f297a15..00000000000 --- a/JCL/converterJclMin1.7/src/java/lang/annotation/Documented.java +++ /dev/null @@ -1,10 +0,0 @@ -package java.lang.annotation; - -import static java.lang.annotation.ElementType.*; -import static java.lang.annotation.RetentionPolicy.*; - -@Documented -@Retention(RUNTIME) -@Target(ANNOTATION_TYPE) -public @interface Documented { -} \ No newline at end of file diff --git a/JCL/converterJclMin1.7/src/java/lang/annotation/ElementType.java b/JCL/converterJclMin1.7/src/java/lang/annotation/ElementType.java deleted file mode 100644 index 62caf2132c5..00000000000 --- a/JCL/converterJclMin1.7/src/java/lang/annotation/ElementType.java +++ /dev/null @@ -1,15 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang.annotation; - -public enum ElementType { - TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE, ANNOTATION_TYPE, PACKAGE -} diff --git a/JCL/converterJclMin1.7/src/java/lang/annotation/Retention.java b/JCL/converterJclMin1.7/src/java/lang/annotation/Retention.java deleted file mode 100644 index b51bfad6a70..00000000000 --- a/JCL/converterJclMin1.7/src/java/lang/annotation/Retention.java +++ /dev/null @@ -1,17 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang.annotation; - -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.ANNOTATION_TYPE) -public @interface Retention { - RetentionPolicy value(); -} diff --git a/JCL/converterJclMin1.7/src/java/lang/annotation/RetentionPolicy.java b/JCL/converterJclMin1.7/src/java/lang/annotation/RetentionPolicy.java deleted file mode 100644 index cbd3bfcc5cb..00000000000 --- a/JCL/converterJclMin1.7/src/java/lang/annotation/RetentionPolicy.java +++ /dev/null @@ -1,15 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang.annotation; - -public enum RetentionPolicy { - SOURCE, CLASS, RUNTIME -} diff --git a/JCL/converterJclMin1.7/src/java/lang/annotation/Target.java b/JCL/converterJclMin1.7/src/java/lang/annotation/Target.java deleted file mode 100644 index bdfbeebd396..00000000000 --- a/JCL/converterJclMin1.7/src/java/lang/annotation/Target.java +++ /dev/null @@ -1,17 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang.annotation; - -@Retention(RetentionPolicy.RUNTIME) -@Target(ElementType.ANNOTATION_TYPE) -public @interface Target { - ElementType[] value(); -} diff --git a/JCL/converterJclMin1.7/src/java/lang/invoke/MethodHandle.java b/JCL/converterJclMin1.7/src/java/lang/invoke/MethodHandle.java deleted file mode 100644 index b702132820d..00000000000 --- a/JCL/converterJclMin1.7/src/java/lang/invoke/MethodHandle.java +++ /dev/null @@ -1,37 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2011 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang.invoke; - -import static java.lang.annotation.ElementType.METHOD; -import static java.lang.annotation.RetentionPolicy.RUNTIME; - -import java.lang.annotation.Retention; -import java.lang.annotation.Target; - -public abstract class MethodHandle { - @Target(METHOD) - @Retention(RUNTIME) - @interface PolymorphicSignature { - } - - @PolymorphicSignature - public final native Object invoke(Object... args) throws Throwable; - - @PolymorphicSignature - public final native Object invokeExact(Object... args) throws Throwable; - - public native Object invokeWithArguments(Object... arguments) - throws Throwable; - - public native boolean isVarargsCollector(); - - public native MethodHandle asType(MethodType newType); -} \ No newline at end of file diff --git a/JCL/converterJclMin1.7/src/java/lang/invoke/MethodHandles.java b/JCL/converterJclMin1.7/src/java/lang/invoke/MethodHandles.java deleted file mode 100644 index f40dc8200bc..00000000000 --- a/JCL/converterJclMin1.7/src/java/lang/invoke/MethodHandles.java +++ /dev/null @@ -1,21 +0,0 @@ -package java.lang.invoke; - -public class MethodHandles { - public static final class Lookup { - public MethodHandle findVirtual(Class refc, String name, - MethodType type) throws NoSuchMethodException, - IllegalAccessException { - return null; - } - - public MethodHandle findStatic(Class refc, String name, - MethodType type) throws NoSuchMethodException, - IllegalAccessException { - return null; - } - } - - public static Lookup lookup() { - return null; - } -} diff --git a/JCL/converterJclMin1.7/src/java/lang/invoke/MethodType.java b/JCL/converterJclMin1.7/src/java/lang/invoke/MethodType.java deleted file mode 100644 index 067d5f9db0f..00000000000 --- a/JCL/converterJclMin1.7/src/java/lang/invoke/MethodType.java +++ /dev/null @@ -1,16 +0,0 @@ -package java.lang.invoke; - -public final class MethodType { - public static MethodType methodType(Class rtype, Class ptype0, - Class... ptypes) { - return null; - } - - public static MethodType methodType(Class rtype) { - return null; - } - - public static MethodType genericMethodType(int objectArgCount) { - return null; - } -} diff --git a/JCL/converterJclMin1.7/src/java/lang/ref/Reference.java b/JCL/converterJclMin1.7/src/java/lang/ref/Reference.java deleted file mode 100644 index 4d163a8bd12..00000000000 --- a/JCL/converterJclMin1.7/src/java/lang/ref/Reference.java +++ /dev/null @@ -1,17 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang.ref; - -public class Reference { - public Object get() { - return null; - } -} diff --git a/JCL/converterJclMin1.7/src/java/lang/ref/ReferenceQueue.java b/JCL/converterJclMin1.7/src/java/lang/ref/ReferenceQueue.java deleted file mode 100644 index 9fe70bdafe3..00000000000 --- a/JCL/converterJclMin1.7/src/java/lang/ref/ReferenceQueue.java +++ /dev/null @@ -1,17 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang.ref; - -public class ReferenceQueue { - public Reference poll() { - return null; - } -} diff --git a/JCL/converterJclMin1.7/src/java/lang/ref/WeakReference.java b/JCL/converterJclMin1.7/src/java/lang/ref/WeakReference.java deleted file mode 100644 index a45438ab53e..00000000000 --- a/JCL/converterJclMin1.7/src/java/lang/ref/WeakReference.java +++ /dev/null @@ -1,17 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.lang.ref; - - -public class WeakReference extends Reference { - public WeakReference(Object o, ReferenceQueue queue) { - } -} diff --git a/JCL/converterJclMin1.7/src/java/net/MalformedURLException.java b/JCL/converterJclMin1.7/src/java/net/MalformedURLException.java deleted file mode 100644 index 3c31ec74fea..00000000000 --- a/JCL/converterJclMin1.7/src/java/net/MalformedURLException.java +++ /dev/null @@ -1,15 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.net; - -public class MalformedURLException extends Exception { - private static final long serialVersionUID = -465098896288949281L; -} diff --git a/JCL/converterJclMin1.7/src/java/text/NumberFormat.java b/JCL/converterJclMin1.7/src/java/text/NumberFormat.java deleted file mode 100644 index 93a29b63cf3..00000000000 --- a/JCL/converterJclMin1.7/src/java/text/NumberFormat.java +++ /dev/null @@ -1,22 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.text; - -public class NumberFormat { - - public final static NumberFormat getInstance() { - return null; - } - - public final String format (double d) { - return null; - } -} diff --git a/JCL/converterJclMin1.7/src/java/util/AbstractCollection.java b/JCL/converterJclMin1.7/src/java/util/AbstractCollection.java deleted file mode 100644 index 89e6b86afe0..00000000000 --- a/JCL/converterJclMin1.7/src/java/util/AbstractCollection.java +++ /dev/null @@ -1,4 +0,0 @@ -package java.util; - -public abstract class AbstractCollection implements Collection { -} diff --git a/JCL/converterJclMin1.7/src/java/util/AbstractList.java b/JCL/converterJclMin1.7/src/java/util/AbstractList.java deleted file mode 100644 index ab84c73f8a6..00000000000 --- a/JCL/converterJclMin1.7/src/java/util/AbstractList.java +++ /dev/null @@ -1,4 +0,0 @@ -package java.util; - -public abstract class AbstractList extends AbstractCollection implements List { -} \ No newline at end of file diff --git a/JCL/converterJclMin1.7/src/java/util/AbstractSet.java b/JCL/converterJclMin1.7/src/java/util/AbstractSet.java deleted file mode 100644 index c93ad94dad9..00000000000 --- a/JCL/converterJclMin1.7/src/java/util/AbstractSet.java +++ /dev/null @@ -1,4 +0,0 @@ -package java.util; - -public abstract class AbstractSet extends AbstractCollection implements Set { -} \ No newline at end of file diff --git a/JCL/converterJclMin1.7/src/java/util/ArrayList.java b/JCL/converterJclMin1.7/src/java/util/ArrayList.java deleted file mode 100644 index 08693f0aa6b..00000000000 --- a/JCL/converterJclMin1.7/src/java/util/ArrayList.java +++ /dev/null @@ -1,50 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.util; - -import java.io.Serializable; - -public class ArrayList extends AbstractList implements List, RandomAccess, Cloneable, Serializable { - private static final long serialVersionUID = -2169998406647523911L; - public ArrayList(int i) { - } - public ArrayList() { - } - public T[] toArray(T[] o) { - return null; - } - public int size() { - return 0; - } - public boolean add(T o) { - return false; - } - public int indexOf(T o) { - return 0; - } - public T remove(int index) { - return null; - } - public T get(int index) { - return null; - } - public boolean contains(T o) { - return false; - } - public Iterator iterator() { - return null; - } - public boolean addAll(Collection c) { - return false; - } - public void set(int i, T o) { - } -} diff --git a/JCL/converterJclMin1.7/src/java/util/Arrays.java b/JCL/converterJclMin1.7/src/java/util/Arrays.java deleted file mode 100644 index 3fe9c6f924c..00000000000 --- a/JCL/converterJclMin1.7/src/java/util/Arrays.java +++ /dev/null @@ -1,21 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.util; - - -public class Arrays { - public static void sort(Object[] tab) { - } - @SafeVarargs - public static List asList(T... a) { - return null; - } -} diff --git a/JCL/converterJclMin1.7/src/java/util/Collection.java b/JCL/converterJclMin1.7/src/java/util/Collection.java deleted file mode 100644 index 4415a6b5086..00000000000 --- a/JCL/converterJclMin1.7/src/java/util/Collection.java +++ /dev/null @@ -1,19 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.util; - -public interface Collection extends Iterable { - public Iterator iterator(); - public int size(); - public T get(int index); - public boolean addAll(Collection c); - public T[] toArray(T[] o); -} diff --git a/JCL/converterJclMin1.7/src/java/util/Collections.java b/JCL/converterJclMin1.7/src/java/util/Collections.java deleted file mode 100644 index fa2220d3ce3..00000000000 --- a/JCL/converterJclMin1.7/src/java/util/Collections.java +++ /dev/null @@ -1,23 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.util; - -public class Collections { - public static > void sort(List list) { - } - - public static final Map emptyMap() { - return null; - } - public static final List emptyList() { - return null; - } -} diff --git a/JCL/converterJclMin1.7/src/java/util/Enumeration.java b/JCL/converterJclMin1.7/src/java/util/Enumeration.java deleted file mode 100644 index 71ce4fb5864..00000000000 --- a/JCL/converterJclMin1.7/src/java/util/Enumeration.java +++ /dev/null @@ -1,18 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.util; - -public interface Enumeration { - - public boolean hasMoreElements(); - - public Object nextElement(); -} diff --git a/JCL/converterJclMin1.7/src/java/util/HashMap.java b/JCL/converterJclMin1.7/src/java/util/HashMap.java deleted file mode 100644 index d22a3176c53..00000000000 --- a/JCL/converterJclMin1.7/src/java/util/HashMap.java +++ /dev/null @@ -1,33 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2005 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.util; - -public class HashMap implements Map { - public HashMap(int i) { - } - public V get(K k) { - return null; - } - public boolean containsKey(K k) { - return false; - } - public void put(K k, V v) { - } - public int size() { - return 0; - } - public Set keySet() { - return null; - } - public Collection values() { - return null; - } -} diff --git a/JCL/converterJclMin1.7/src/java/util/HashSet.java b/JCL/converterJclMin1.7/src/java/util/HashSet.java deleted file mode 100644 index 6e3afcc8b31..00000000000 --- a/JCL/converterJclMin1.7/src/java/util/HashSet.java +++ /dev/null @@ -1,22 +0,0 @@ -package java.util; - -import java.io.Serializable; - -public class HashSet extends AbstractSet implements Set, Cloneable, Serializable { - private static final long serialVersionUID = 4886489800857586866L; - public Iterator iterator() { - return null; - } - public boolean addAll(Collection c) { - return false; - } - public E get(int index) { - return null; - } - public int size() { - return 0; - } - public E[] toArray(E[] o) { - return null; - } -} diff --git a/JCL/converterJclMin1.7/src/java/util/Hashtable.java b/JCL/converterJclMin1.7/src/java/util/Hashtable.java deleted file mode 100644 index fc2c5eb10f5..00000000000 --- a/JCL/converterJclMin1.7/src/java/util/Hashtable.java +++ /dev/null @@ -1,33 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.util; - -public class Hashtable implements Map { - public Hashtable(int i) { - } - public V get(U u) { - return null; - } - public boolean containsKey(U u) { - return false; - } - public void put(U u, V v) { - } - public synchronized Enumeration elements() { - return null; - } - public int size() { - return 0; - } - public synchronized Enumeration keys() { - return null; - } -} diff --git a/JCL/converterJclMin1.7/src/java/util/Iterator.java b/JCL/converterJclMin1.7/src/java/util/Iterator.java deleted file mode 100644 index 1356cd55a2e..00000000000 --- a/JCL/converterJclMin1.7/src/java/util/Iterator.java +++ /dev/null @@ -1,17 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.util; - -public interface Iterator { - boolean hasNext(); - E next(); - void remove(); -} diff --git a/JCL/converterJclMin1.7/src/java/util/List.java b/JCL/converterJclMin1.7/src/java/util/List.java deleted file mode 100644 index 8039b147431..00000000000 --- a/JCL/converterJclMin1.7/src/java/util/List.java +++ /dev/null @@ -1,16 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.util; - -public interface List extends Collection { - public boolean add(T o); - public void set(int i, T o); -} diff --git a/JCL/converterJclMin1.7/src/java/util/Locale.java b/JCL/converterJclMin1.7/src/java/util/Locale.java deleted file mode 100644 index d591b3946ac..00000000000 --- a/JCL/converterJclMin1.7/src/java/util/Locale.java +++ /dev/null @@ -1,17 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.util; - -public class Locale { - public static Locale getDefault() { - return null; - } -} diff --git a/JCL/converterJclMin1.7/src/java/util/Map.java b/JCL/converterJclMin1.7/src/java/util/Map.java deleted file mode 100644 index fc06d3ceceb..00000000000 --- a/JCL/converterJclMin1.7/src/java/util/Map.java +++ /dev/null @@ -1,18 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2005 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.util; - -public interface Map { - - public V get(K k); - public boolean containsKey(K k); - public void put(K k, V v); -} diff --git a/JCL/converterJclMin1.7/src/java/util/MissingResourceException.java b/JCL/converterJclMin1.7/src/java/util/MissingResourceException.java deleted file mode 100644 index 3f512497f5c..00000000000 --- a/JCL/converterJclMin1.7/src/java/util/MissingResourceException.java +++ /dev/null @@ -1,16 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.util; - - -public class MissingResourceException extends RuntimeException { - private static final long serialVersionUID = -6463093713113089678L; -} diff --git a/JCL/converterJclMin1.7/src/java/util/NoSuchElementException.java b/JCL/converterJclMin1.7/src/java/util/NoSuchElementException.java deleted file mode 100644 index 855fa6ae99f..00000000000 --- a/JCL/converterJclMin1.7/src/java/util/NoSuchElementException.java +++ /dev/null @@ -1,16 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.util; - - -public class NoSuchElementException extends RuntimeException { - private static final long serialVersionUID = -3741760439480852710L; -} \ No newline at end of file diff --git a/JCL/converterJclMin1.7/src/java/util/RandomAccess.java b/JCL/converterJclMin1.7/src/java/util/RandomAccess.java deleted file mode 100644 index 78870df3a5b..00000000000 --- a/JCL/converterJclMin1.7/src/java/util/RandomAccess.java +++ /dev/null @@ -1,3 +0,0 @@ -package java.util; - -public interface RandomAccess {} diff --git a/JCL/converterJclMin1.7/src/java/util/ResourceBundle.java b/JCL/converterJclMin1.7/src/java/util/ResourceBundle.java deleted file mode 100644 index 027b99f365d..00000000000 --- a/JCL/converterJclMin1.7/src/java/util/ResourceBundle.java +++ /dev/null @@ -1,23 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.util; - -public abstract class ResourceBundle { - - public static final ResourceBundle getBundle(String baseName, Locale locale) { - return null; - } - - public final String getString(String key) { - return null; - } - public abstract Enumeration getKeys(); -} diff --git a/JCL/converterJclMin1.7/src/java/util/Set.java b/JCL/converterJclMin1.7/src/java/util/Set.java deleted file mode 100644 index 64284b40a8d..00000000000 --- a/JCL/converterJclMin1.7/src/java/util/Set.java +++ /dev/null @@ -1,16 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.util; - - -public interface Set extends Collection { - public Iterator iterator(); -} diff --git a/JCL/converterJclMin1.7/src/java/util/StringTokenizer.java b/JCL/converterJclMin1.7/src/java/util/StringTokenizer.java deleted file mode 100644 index 86214d85969..00000000000 --- a/JCL/converterJclMin1.7/src/java/util/StringTokenizer.java +++ /dev/null @@ -1,29 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2005 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.util; - -public class StringTokenizer { - - public StringTokenizer(String toBeParsed, String delimiters) { - } - - public int countTokens() { - return 0; - } - - public String nextToken() { - return null; - } - - public boolean hasMoreTokens() { - return false; - } -} diff --git a/JCL/converterJclMin1.7/src/java/util/Vector.java b/JCL/converterJclMin1.7/src/java/util/Vector.java deleted file mode 100644 index 7f8630a58c4..00000000000 --- a/JCL/converterJclMin1.7/src/java/util/Vector.java +++ /dev/null @@ -1,32 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2005 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.util; - -public class Vector { - - public Vector() { - } - - public Vector(int i) { - } - - public int size() { - return 0; - } - - public E get(int i) { - return null; - } - - public boolean add(E o) { - return true; - } -} diff --git a/JCL/converterJclMin1.7/src/java/util/zip/ZipEntry.java b/JCL/converterJclMin1.7/src/java/util/zip/ZipEntry.java deleted file mode 100644 index 7c82b06d8cc..00000000000 --- a/JCL/converterJclMin1.7/src/java/util/zip/ZipEntry.java +++ /dev/null @@ -1,18 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.util.zip; - - -public class ZipEntry { - public long getSize() { - return 0; - } -} diff --git a/JCL/converterJclMin1.7/src/java/util/zip/ZipFile.java b/JCL/converterJclMin1.7/src/java/util/zip/ZipFile.java deleted file mode 100644 index 56c853a2bce..00000000000 --- a/JCL/converterJclMin1.7/src/java/util/zip/ZipFile.java +++ /dev/null @@ -1,23 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2000, 2004 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package java.util.zip; - -import java.io.InputStream; - - -public class ZipFile { - public ZipEntry getEntry(String s) { - return null; - } - public InputStream getInputStream(ZipEntry zipEntry) { - return null; - } -} diff --git a/org.eclipse.jdt.core.tests.model/JCL/build.xml b/org.eclipse.jdt.core.tests.model/JCL/build.xml index b52785c29f5..03201a6b62f 100644 --- a/org.eclipse.jdt.core.tests.model/JCL/build.xml +++ b/org.eclipse.jdt.core.tests.model/JCL/build.xml @@ -20,18 +20,6 @@ diff --git a/org.eclipse.jdt.core.tests.model/JCL/converterJclMin.jar b/org.eclipse.jdt.core.tests.model/JCL/converterJclMin.jar deleted file mode 100644 index 3a45069526ca09cbb4e1808575fe92628d881b2f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36444 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 diff --git a/org.eclipse.jdt.core.tests.model/JCL/converterJclMin1.5src.zip b/org.eclipse.jdt.core.tests.model/JCL/converterJclMin1.5src.zip deleted file mode 100644 index 8fd67219ac56eba102d572ed9cdf5de952c97e89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51306 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

    x0?k#6g#K2-9>GEAqX^Vrbac4ip2u<; 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

    tDYSlq!EPi=Yo^ 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 VE7(8{2NA>7Q8F?aaF>kCe*u9N0wDkZ diff --git a/org.eclipse.jdt.core.tests.model/JCL/converterJclMin1.7.jar b/org.eclipse.jdt.core.tests.model/JCL/converterJclMin1.7.jar deleted file mode 100644 index 6a19bc2f2f81bf341eb3aa79be0fd8a25dc8fd47..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41039 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 diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterBugsTest.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterBugsTest.java index ebcef50186b..df440d9bd3c 100644 --- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterBugsTest.java +++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterBugsTest.java @@ -1317,7 +1317,7 @@ public void testBug277204e() throws JavaModelException { @SuppressWarnings("deprecation") public void testBug381503() throws CoreException, IOException { try { - IJavaProject javaProject = createJavaProject("P", new String[] { "src" }, new String[] { "CONVERTER_JCL_LIB" }, "bin"); + IJavaProject javaProject = createJavaProject("P", new String[] { "src" }, new String[] { "CONVERTER_JCL18_LIB" }, "bin"); IType type = javaProject.findType("java.lang.IllegalMonitorStateException"); IMethod javaElement = type.getMethod("IllegalMonitorStateException", new String[]{}); ASTParser parser = ASTParser.newParser(AST.JLS8); diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterBugsTestJLS8.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterBugsTestJLS8.java index 1c3e803d9fd..c87659dbcab 100644 --- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterBugsTestJLS8.java +++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterBugsTestJLS8.java @@ -1073,7 +1073,7 @@ public void testBug527351() throws JavaModelException { } public void testGH1376() throws CoreException, IOException { try { - IJavaProject project = createJavaProject("P", new String[] { "" }, new String[] { "CONVERTER_JCL_LIB" }, "", "1.8", true); + IJavaProject project = createJavaProject("P", new String[] { "" }, new String[] { "CONVERTER_JCL18_LIB" }, "", "1.8", true); createFolder("P/p"); createFile("P/p/A.java", "package p;\n" + @@ -1112,7 +1112,7 @@ public void testGH1376() throws CoreException, IOException { } public void testGH2275() throws CoreException { try { - createJavaProject("P", new String[] { "" }, new String[] { "CONVERTER_JCL_LIB" }, "", "1.8", true); + createJavaProject("P", new String[] { "" }, new String[] { "CONVERTER_JCL18_LIB" }, "", "1.8", true); createFolder("P/p"); createFile("P/p/A.java", """ diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterTest2.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterTest2.java index 9ea95018e29..a5ab326755c 100644 --- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterTest2.java +++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverterTest2.java @@ -5249,7 +5249,7 @@ public void _2551_test0570() throws CoreException { */ public void test0571() throws CoreException, IOException { try { - IJavaProject p = createJavaProject("P", new String[] {""}, new String[] {"CONVERTER_JCL_LIB"}, ""); + IJavaProject p = createJavaProject("P", new String[] {""}, new String[] {"CONVERTER_JCL18_LIB"}, ""); String source = "public class X {\n" + " public class Y {\n" + diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ConverterTestSetup.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ConverterTestSetup.java index 772b0037780..21570a14283 100644 --- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ConverterTestSetup.java +++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ConverterTestSetup.java @@ -248,13 +248,6 @@ public void setUpJCLClasspathVariables(String compliance, boolean useFullJCL) th null); } } - else if (JavaCore.getClasspathVariable("CONVERTER_JCL_LIB") == null) { - setupExternalJCL("converterJclMin"); - JavaCore.setClasspathVariables( - new String[] {"CONVERTER_JCL_LIB", "CONVERTER_JCL_SRC", "CONVERTER_JCL_SRCROOT"}, - new IPath[] {getConverterJCLPath(), getConverterJCLSourcePath(), getConverterJCLRootSourcePath()}, - null); - } } /** diff --git a/org.eclipse.jdt.core.tests.model/workspace/Converter/.classpath b/org.eclipse.jdt.core.tests.model/workspace/Converter/.classpath index 7e077ebefdb..03589478ae7 100644 --- a/org.eclipse.jdt.core.tests.model/workspace/Converter/.classpath +++ b/org.eclipse.jdt.core.tests.model/workspace/Converter/.classpath @@ -1,7 +1,7 @@ - + From b02115458b89b9220b91c9b82fddf9a747fe03e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=8A?= =?UTF-8?q?=D1=80=20=D0=9A=D1=83=D1=80=D1=82=D0=B0=D0=BA=D0=BE=D0=B2?= Date: Wed, 20 Nov 2024 15:33:49 +0200 Subject: [PATCH 02/26] Fix and enable Java50Tests#testMissingRequiredBinaries --- .../org/eclipse/jdt/core/tests/builder/Java50Tests.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/Java50Tests.java b/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/Java50Tests.java index 791b27710c2..1d8cba0d8e0 100644 --- a/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/Java50Tests.java +++ b/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/Java50Tests.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2000, 2010 IBM Corporation and others. + * Copyright (c) 2000, 2024 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -113,7 +113,7 @@ public void testHierarchyCycleInstanceof() throws JavaModelException { } // https://bugs.eclipse.org/bugs/show_bug.cgi?id=231293 - public void _2551_testMissingRequiredBinaries() throws JavaModelException { + public void testMissingRequiredBinaries() throws JavaModelException { IPath p1 = env.addProject("P1", CompilerOptions.getFirstSupportedJavaVersion()); //$NON-NLS-1$ IPath p2 = env.addProject("P2"); //$NON-NLS-1$ @@ -164,8 +164,7 @@ public void _2551_testMissingRequiredBinaries() throws JavaModelException { incrementalBuild(p1); expectingOnlySpecificProblemsFor(p1,new Problem[]{ - new Problem("p1", "The project was not built since its build path is incomplete. Cannot find the class file for p2.Z. Fix the build path then try building this project", p1, -1, -1, CategorizedProblem.CAT_BUILDPATH, IMarker.SEVERITY_ERROR),//$NON-NLS-1$ //$NON-NLS-2$ - new Problem("p1", "The type p2.Z cannot be resolved. It is indirectly referenced from required type p2.Y", xx, 51, 67, CategorizedProblem.CAT_BUILDPATH, IMarker.SEVERITY_ERROR)//$NON-NLS-1$ //$NON-NLS-2$ + new Problem("p1", "The method foo(int, Z) from the type Y refers to the missing type Z", xx, 53, 56, CategorizedProblem.CAT_MEMBER, IMarker.SEVERITY_ERROR)//$NON-NLS-1$ //$NON-NLS-2$ }); } From 54be506fdb37b0f6a3346554c80ca5fd2b00cecf Mon Sep 17 00:00:00 2001 From: Eclipse JDT Bot Date: Tue, 26 Nov 2024 15:00:34 +0000 Subject: [PATCH 03/26] Version bump(s) for 4.35 stream --- org.eclipse.jdt.core.tests.builder/META-INF/MANIFEST.MF | 2 +- org.eclipse.jdt.core.tests.builder/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/org.eclipse.jdt.core.tests.builder/META-INF/MANIFEST.MF b/org.eclipse.jdt.core.tests.builder/META-INF/MANIFEST.MF index 3bb787a3c47..b9810e8569f 100644 --- a/org.eclipse.jdt.core.tests.builder/META-INF/MANIFEST.MF +++ b/org.eclipse.jdt.core.tests.builder/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.jdt.core.tests.builder; singleton:=true -Bundle-Version: 3.12.600.qualifier +Bundle-Version: 3.12.700.qualifier Bundle-Vendor: %providerName Bundle-Localization: plugin Export-Package: org.eclipse.jdt.core.tests.builder diff --git a/org.eclipse.jdt.core.tests.builder/pom.xml b/org.eclipse.jdt.core.tests.builder/pom.xml index 83a2b0ec31a..836ca2e2698 100644 --- a/org.eclipse.jdt.core.tests.builder/pom.xml +++ b/org.eclipse.jdt.core.tests.builder/pom.xml @@ -18,7 +18,7 @@ ../tests-pom/ org.eclipse.jdt.core.tests.builder - 3.12.600-SNAPSHOT + 3.12.700-SNAPSHOT eclipse-test-plugin From 386474a09a3ad5d03f87842f2fd1a88d460577c7 Mon Sep 17 00:00:00 2001 From: Srikanth Sankaran <131454720+srikanth-sankaran@users.noreply.github.com> Date: Wed, 27 Nov 2024 07:25:55 +0530 Subject: [PATCH 04/26] Test failures in I-Builds due to less diagnostics being emitted (#3357) * Fixes https://github.com/eclipse-jdt/eclipse.jdt.core/issues/3356 --- .../internal/compiler/ast/CaseStatement.java | 5 +- .../tests/compiler/regression/EnumTest.java | 47 +++++++++++++++++++ 2 files changed, 49 insertions(+), 3 deletions(-) diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/CaseStatement.java b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/CaseStatement.java index 7bfefdbb812..2edeabb2bb2 100644 --- a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/CaseStatement.java +++ b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/CaseStatement.java @@ -128,10 +128,9 @@ private Constant resolveConstantLabel(BlockScope scope, TypeBinding caseType, Ty CompilerOptions options = scope.compilerOptions(); if (caseType.isEnum() && caseType.isCompatibleWith(selectorType)) { - if (((expression.bits & ASTNode.ParenthesizedMASK) >> ASTNode.ParenthesizedSHIFT) != 0) { + if (((expression.bits & ASTNode.ParenthesizedMASK) >> ASTNode.ParenthesizedSHIFT) != 0) scope.problemReporter().enumConstantsCannotBeSurroundedByParenthesis(expression); - return Constant.NotAConstant; - } + if (expression instanceof NameReference reference && reference.binding instanceof FieldBinding field) { if ((field.modifiers & ClassFileConstants.AccEnum) == 0) scope.problemReporter().enumSwitchCannotTargetField(reference, field); diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/EnumTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/EnumTest.java index df1b0361757..a8af812be9e 100644 --- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/EnumTest.java +++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/EnumTest.java @@ -7428,4 +7428,51 @@ void k() { "Cannot make a static reference to the non-static field h\n" + "----------\n"); } +// https://github.com/eclipse-jdt/eclipse.jdt.core/issues/3356 +// Test failures in I-Builds due to less diagnostics being emitted +public void testIssue3356() { + this.runNegativeTest(new String[] { + "X.java", + """ + public class X { + public enum color {black, white} + public void foo(color c) { + switch (c) { + case (color.black): + System.out.println("Black"); + break; + } + } + } + """ + }, + this.complianceLevel < ClassFileConstants.JDK21 ? + "----------\n" + + "1. WARNING in X.java (at line 4)\n" + + " switch (c) {\n" + + " ^\n" + + "The enum constant white needs a corresponding case label in this enum switch on X.color\n" + + "----------\n" + + "2. ERROR in X.java (at line 5)\n" + + " case (color.black):\n" + + " ^^^^^^^^^^^^^\n" + + "Enum constants cannot be surrounded by parenthesis\n" + + "----------\n" + + "3. ERROR in X.java (at line 5)\n" + + " case (color.black):\n" + + " ^^^^^^^^^^^^^\n" + + "The qualified case label X.color.black must be replaced with the unqualified enum constant black\n" + + "----------\n" + : "----------\n" + + "1. WARNING in X.java (at line 4)\n" + + " switch (c) {\n" + + " ^\n" + + "The enum constant white needs a corresponding case label in this enum switch on X.color\n" + + "----------\n" + + "2. ERROR in X.java (at line 5)\n" + + " case (color.black):\n" + + " ^^^^^^^^^^^^^\n" + + "Enum constants cannot be surrounded by parenthesis\n" + + "----------\n"); +} } From b97d947ec2156313afe8873fc5b928ec831980c7 Mon Sep 17 00:00:00 2001 From: Srikanth Sankaran <131454720+srikanth-sankaran@users.noreply.github.com> Date: Wed, 27 Nov 2024 13:31:51 +0530 Subject: [PATCH 05/26] Textual problem indicator goes wild with lamda (#3358) --- .../compiler/problem/ProblemReporter.java | 5 ++- .../core/tests/builder/DependencyTests.java | 4 +- .../core/tests/builder/PackageInfoTest.java | 2 +- .../compiler/regression/AnnotationTest.java | 10 ++--- .../compiler/regression/Deprecated15Test.java | 4 +- .../compiler/regression/Deprecated18Test.java | 6 +-- .../compiler/regression/Deprecated9Test.java | 28 ++++++------ .../compiler/regression/DeprecatedTest.java | 14 +++--- .../compiler/regression/JavadocBugsTest.java | 2 +- .../regression/JavadocTestForConstructor.java | 6 +-- .../regression/JavadocTestForInterface.java | 6 +-- .../regression/JavadocTestForMethod.java | 14 +++--- .../regression/LambdaExpressionsTest.java | 44 +++++++++++++++++++ .../core/tests/model/ReconcilerTests9.java | 8 ++-- 14 files changed, 100 insertions(+), 53 deletions(-) diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/problem/ProblemReporter.java b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/problem/ProblemReporter.java index 3213176ef46..0a838e896cc 100644 --- a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/problem/ProblemReporter.java +++ b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/problem/ProblemReporter.java @@ -1858,22 +1858,25 @@ public void deprecatedMethod(final MethodBinding method, ASTNode location) { boolean isConstructor = method.isConstructor(); int start = -1; + int end = -1; if (isConstructor) { if(location instanceof AllocationExpression) { // omit the new keyword from the warning marker // https://bugs.eclipse.org/bugs/show_bug.cgi?id=300031 AllocationExpression allocationExpression = (AllocationExpression) location; start = allocationExpression.nameSourceStart(); + end = allocationExpression.nameSourceEnd(); } } else { if (location instanceof MessageSend) { // start the warning marker from the location where the name of the method starts // https://bugs.eclipse.org/bugs/show_bug.cgi?id=300031 start = (int) (((MessageSend)location).nameSourcePosition >>> 32); + end = (int) ((MessageSend)location).nameSourcePosition; } } int sourceStart = (start == -1) ? location.sourceStart : start; - int sourceEnd = location.sourceEnd; + final int sourceEnd = (end == -1) ? location.sourceEnd : end; // discriminate: boolean terminally = (method.tagBits & TagBits.AnnotationTerminallyDeprecated) != 0; diff --git a/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/DependencyTests.java b/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/DependencyTests.java index 9034e70d830..18503ea2d1d 100644 --- a/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/DependencyTests.java +++ b/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/DependencyTests.java @@ -1245,7 +1245,7 @@ public void test0100() throws JavaModelException { M1Path, 198, 200, CategorizedProblem.CAT_DEPRECATION, IMarker.SEVERITY_WARNING)); expectingSpecificProblemFor(M1Path, new Problem("", "The method foo() from the type N1.N2.N3 is deprecated", - M1Path, 217, 222, CategorizedProblem.CAT_DEPRECATION, IMarker.SEVERITY_WARNING)); + M1Path, 217, 220, CategorizedProblem.CAT_DEPRECATION, IMarker.SEVERITY_WARNING)); M1Path = env.addClass(rootPath, "p", "M1", M1Contents); incrementalBuild(projectPath); expectingOnlyProblemsFor(new IPath[] {M1Path}); @@ -1254,6 +1254,6 @@ public void test0100() throws JavaModelException { M1Path, 198, 200, CategorizedProblem.CAT_DEPRECATION, IMarker.SEVERITY_WARNING)); expectingSpecificProblemFor(M1Path, new Problem("", "The method foo() from the type N1.N2.N3 is deprecated", - M1Path, 217, 222, CategorizedProblem.CAT_DEPRECATION, IMarker.SEVERITY_WARNING)); + M1Path, 217, 220, CategorizedProblem.CAT_DEPRECATION, IMarker.SEVERITY_WARNING)); } } diff --git a/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/PackageInfoTest.java b/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/PackageInfoTest.java index ad6abd620af..01ae540f327 100644 --- a/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/PackageInfoTest.java +++ b/org.eclipse.jdt.core.tests.builder/src/org/eclipse/jdt/core/tests/builder/PackageInfoTest.java @@ -139,7 +139,7 @@ public void test002() throws JavaModelException { String javaVersion = System.getProperty("java.version"); if (javaVersion != null && JavaCore.compareJavaVersions(javaVersion, "9") >= 0) { expectingProblemsFor(new Path("/Project/src/testcase/Main.java"), - "Problem : The method getPackage(String) from the type Package is deprecated [ resource : range : <125,147> category : <110> severity : <1>]"); + "Problem : The method getPackage(String) from the type Package is deprecated [ resource : range : <125,135> category : <110> severity : <1>]"); } else { expectingNoProblems(); } diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AnnotationTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AnnotationTest.java index 135fd371db2..0576a48884b 100644 --- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AnnotationTest.java +++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/AnnotationTest.java @@ -3721,7 +3721,7 @@ public void test119() { "----------\n" + "3. WARNING in Y.java (at line 2)\n" + " void foo(){ super.foo(); }\n" + - " ^^^^^\n" + + " ^^^\n" + "The method foo() from the type X is deprecated\n" + "----------\n" + "4. ERROR in Y.java (at line 3)\n" + @@ -3758,7 +3758,7 @@ public void test120() { "----------\n" + "3. WARNING in Y.java (at line 2)\n" + " void foo(){ super.foo(); }\n" + - " ^^^^^\n" + + " ^^^\n" + "The method foo() from the type X is deprecated\n" + "----------\n" + "4. ERROR in Y.java (at line 3)\n" + @@ -4122,7 +4122,7 @@ public void test132() { "----------\n" + "1. WARNING in X.java (at line 7)\n" + " W.deprecated();\n" + - " ^^^^^^^^^^^^\n" + + " ^^^^^^^^^^\n" + "The method deprecated() from the type W is deprecated\n" + "----------\n" + "2. WARNING in X.java (at line 8)\n" + @@ -4362,7 +4362,7 @@ public void test137() { "----------\n" + "3. WARNING in X.java (at line 8)\n" + " W.deprecated();\n" + - " ^^^^^^^^^^^^\n" + + " ^^^^^^^^^^\n" + "The method deprecated() from the type W is deprecated\n" + "----------\n" + "4. WARNING in X.java (at line 9)\n" + @@ -4635,7 +4635,7 @@ public void test142c() { "----------\n" + "3. ERROR in X.java (at line 8)\n" + " super.foo();\n" + - " ^^^^^\n" + + " ^^^\n" + "The method foo() from the type OldStuff is deprecated\n" + "----------\n", JavacTestOptions.Excuse.EclipseWarningConfiguredAsError); diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/Deprecated15Test.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/Deprecated15Test.java index 58e34d0cd79..48ef6bb7435 100644 --- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/Deprecated15Test.java +++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/Deprecated15Test.java @@ -157,7 +157,7 @@ public void test002() { "----------\n" + "3. ERROR in p\\M1.java (at line 5)\n" + " m.foo();\n" + - " ^^^^^\n" + + " ^^^\n" + "The method foo() from the type N1.N2.N3 is deprecated\n" + "----------\n", JavacTestOptions.Excuse.EclipseWarningConfiguredAsError); @@ -269,7 +269,7 @@ public void test005() { "----------\n" + "3. ERROR in p2\\C.java (at line 4)\n" + " a.foo();\n" + - " ^^^^^\n" + + " ^^^\n" + "The method foo() from the type X.Inner is deprecated\n" + "----------\n", JavacTestOptions.Excuse.EclipseWarningConfiguredAsError); diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/Deprecated18Test.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/Deprecated18Test.java index 9f7487fce69..bc60993c23d 100644 --- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/Deprecated18Test.java +++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/Deprecated18Test.java @@ -49,7 +49,7 @@ public void test412555() { "----------\n" + "1. ERROR in X.java (at line 4)\n" + " Y.callMe();\n" + - " ^^^^^^^^\n" + + " ^^^^^^\n" + "The method callMe() from the type Y is deprecated\n" + "----------\n", null, @@ -94,7 +94,7 @@ void callDeprecated2() { ---------- 1. ERROR in Y.java (at line 10) X.deprecatedMethod(null); - ^^^^^^^^^^^^^^^^^^^^^^ + ^^^^^^^^^^^^^^^^ The method deprecatedMethod(Object) from the type X is deprecated ---------- 2. ERROR in Y.java (at line 11) @@ -104,7 +104,7 @@ The method deprecatedMethod(Object) from the type X is deprecated ---------- 3. ERROR in Y.java (at line 12) List.of().forEach(o -> X.deprecatedMethod(o)); - ^^^^^^^^^^^^^^^^^^^ + ^^^^^^^^^^^^^^^^ The method deprecatedMethod(Object) from the type X is deprecated ---------- """, diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/Deprecated9Test.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/Deprecated9Test.java index 39b395c55cf..0d7d51007d1 100644 --- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/Deprecated9Test.java +++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/Deprecated9Test.java @@ -95,7 +95,7 @@ public void test002() { "----------\n" + "3. ERROR in p\\M1.java (at line 5)\n" + " m.foo();\n" + - " ^^^^^\n" + + " ^^^\n" + "The method foo() from the type N1.N2.N3 has been deprecated and marked for removal\n" + "----------\n", JavacTestOptions.Excuse.EclipseWarningConfiguredAsError); @@ -148,7 +148,7 @@ public void test002binary() { "----------\n" + "3. ERROR in p\\M1.java (at line 5)\n" + " m.foo();\n" + - " ^^^^^\n" + + " ^^^\n" + "The method foo() from the type N1.N2.N3 has been deprecated and marked for removal\n" + "----------\n"; runner.javacTestOptions = @@ -232,7 +232,7 @@ public void test005a() { "----------\n" + "3. ERROR in p2\\C.java (at line 4)\n" + " a.foo();\n" + - " ^^^^^\n" + + " ^^^\n" + "The method foo() from the type X.Inner has been deprecated and marked for removal\n" + "----------\n", JavacTestOptions.Excuse.EclipseWarningConfiguredAsError); @@ -294,7 +294,7 @@ public void test005c() { "----------\n" + "1. WARNING in p2\\C.java (at line 5)\n" + " a.foo();\n" + - " ^^^^^\n" + + " ^^^\n" + "The method foo() from the type X.Inner has been deprecated and marked for removal\n" + "----------\n"; runner.runWarningTest(); @@ -403,7 +403,7 @@ public void testSinceSource() { "----------\n" + "1. WARNING in test1\\E02.java (at line 4)\n" + " System.out.println(new E01.Old());\n" + - " ^^^^^^^^^\n" + + " ^^^^^^^\n" + "The constructor E01.Old() is deprecated since version 1.0\n" + "----------\n" + "2. WARNING in test1\\E02.java (at line 4)\n" + @@ -413,12 +413,12 @@ public void testSinceSource() { "----------\n" + "3. WARNING in test1\\E02.java (at line 5)\n" + " E01 e = new E01();\n" + - " ^^^^^\n" + + " ^^^\n" + "The constructor E01() is deprecated since version 3.0.0\n" + "----------\n" + "4. WARNING in test1\\E02.java (at line 6)\n" + " e.old();\n" + - " ^^^^^\n" + + " ^^^\n" + "The method old() from the type E01 is deprecated since version 4-SNAPSHOT\n" + "----------\n" + "5. WARNING in test1\\E02.java (at line 7)\n" + @@ -484,7 +484,7 @@ public void testSinceBinary() { "----------\n" + "1. WARNING in test1\\E02.java (at line 4)\n" + " System.out.println(new E01.Old());\n" + - " ^^^^^^^^^\n" + + " ^^^^^^^\n" + "The constructor E01.Old() is deprecated since version 1.0\n" + "----------\n" + "2. WARNING in test1\\E02.java (at line 4)\n" + @@ -494,12 +494,12 @@ public void testSinceBinary() { "----------\n" + "3. WARNING in test1\\E02.java (at line 5)\n" + " E01 e = new E01();\n" + - " ^^^^^\n" + + " ^^^\n" + "The constructor E01() is deprecated since version 3.0.0\n" + "----------\n" + "4. WARNING in test1\\E02.java (at line 6)\n" + " e.old();\n" + - " ^^^^^\n" + + " ^^^\n" + "The method old() from the type E01 is deprecated since version 4-SNAPSHOT\n" + "----------\n" + "5. WARNING in test1\\E02.java (at line 7)\n" + @@ -559,7 +559,7 @@ public void testSinceTerminally() { "----------\n" + "1. ERROR in test1\\E02.java (at line 4)\n" + " System.out.println(new E01.Old());\n" + - " ^^^^^^^^^\n" + + " ^^^^^^^\n" + "The constructor E01.Old() has been deprecated since version 1.0 and marked for removal\n" + "----------\n" + "2. ERROR in test1\\E02.java (at line 4)\n" + @@ -569,12 +569,12 @@ public void testSinceTerminally() { "----------\n" + "3. ERROR in test1\\E02.java (at line 5)\n" + " E01 e = new E01();\n" + - " ^^^^^\n" + + " ^^^\n" + "The constructor E01() has been deprecated since version 3.0.0 and marked for removal\n" + "----------\n" + "4. ERROR in test1\\E02.java (at line 6)\n" + " e.old();\n" + - " ^^^^^\n" + + " ^^^\n" + "The method old() from the type E01 has been deprecated since version 4-SNAPSHOT and marked for removal\n" + "----------\n" + "5. ERROR in test1\\E02.java (at line 7)\n" + @@ -1159,7 +1159,7 @@ public class Test { ---------- 2. WARNING in Test.java (at line 4) int zz = nothing(); - ^^^^^^^^^ + ^^^^^^^ The method nothing() from the type C1 is deprecated ---------- """; diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/DeprecatedTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/DeprecatedTest.java index 92c076097f9..cbff03cc0b8 100644 --- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/DeprecatedTest.java +++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/DeprecatedTest.java @@ -214,7 +214,7 @@ public void test004() { "----------\n" + "2. WARNING in p\\Warning.java (at line 7)\n" + " dateObj.UTC(1,2,3,4,5,6);\n" + - " ^^^^^^^^^^^^^^^^\n" + + " ^^^\n" + "The method UTC(int, int, int, int, int, int) from the type Date is deprecated\n" + "----------\n"); } @@ -696,7 +696,7 @@ public void test015() { "----------\n" + "3. ERROR in p\\M1.java (at line 5)\n" + " m.foo();\n" + - " ^^^^^\n" + + " ^^^\n" + "The method foo() from the type N1.N2.N3 is deprecated\n" + "----------\n", // javac options @@ -748,7 +748,7 @@ public void test016() { "----------\n" + "3. ERROR in p\\M1.java (at line 5)\n" + " m.foo();\n" + - " ^^^^^\n" + + " ^^^\n" + "The method foo() from the type N1.N2.N3 is deprecated\n" + "----------\n", // javac options @@ -844,7 +844,7 @@ public void test018() { "----------\n" + "3. ERROR in p\\M1.java (at line 5)\n" + " m.foo();\n" + - " ^^^^^\n" + + " ^^^\n" + "The method foo() from the type N1.N2.N3 is deprecated\n" + "----------\n", // javac options @@ -950,17 +950,17 @@ public void test020() { "----------\n" + "4. ERROR in a.b.c.d.e\\T.java (at line 8)\n" + " f.foo().goo();\n" + - " ^^^^^\n" + + " ^^^\n" + "The method foo() from the type Deprecated is deprecated\n" + "----------\n" + "5. ERROR in a.b.c.d.e\\T.java (at line 8)\n" + " f.foo().goo();\n" + - " ^^^^^\n" + + " ^^^\n" + "The method goo() from the type Deprecated is deprecated\n" + "----------\n" + "6. ERROR in a.b.c.d.e\\T.java (at line 9)\n" + " a.b.c.d.Deprecated.bar();\n" + - " ^^^^^\n" + + " ^^^\n" + "The method bar() from the type Deprecated is deprecated\n" + "----------\n", // javac options diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocBugsTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocBugsTest.java index 53a49775176..186403d8ed8 100644 --- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocBugsTest.java +++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocBugsTest.java @@ -3407,7 +3407,7 @@ public void testBug74369deprecated() { "----------\n" + "1. ERROR in X.java (at line 12)\n" + " new Y().bar();\n" + - " ^^^^^\n" + + " ^^^\n" + "The method bar() from the type Y is deprecated\n" + "----------\n", JavacTestOptions.Excuse.EclipseWarningConfiguredAsError diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTestForConstructor.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTestForConstructor.java index a39edfff1d4..f1dc9dd21ae 100644 --- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTestForConstructor.java +++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTestForConstructor.java @@ -69,7 +69,7 @@ public void test001() { "----------\n" + "1. WARNING in X.java (at line 4)\n" + " new Z();\n" - + " ^^^\n" + + " ^\n" + "The constructor Z() is deprecated\n" + "----------\n", null, null, JavacTestOptions.Excuse.EclipseHasSomeMoreWarnings); @@ -103,7 +103,7 @@ public void test002() { "----------\n" + "1. WARNING in X.java (at line 4)\n" + " new Z(2);\n" - + " ^^^^\n" + + " ^\n" + "The constructor Z(int) is deprecated\n" + "----------\n"); } @@ -138,7 +138,7 @@ public void test003() { "----------\n" + "1. WARNING in X.java (at line 4)\n" + " new Z();\n" - + " ^^^\n" + + " ^\n" + "The constructor Z() is deprecated\n" + "----------\n" + "----------\n" diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTestForInterface.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTestForInterface.java index 26758f4cdf1..6d5ebbf65a3 100644 --- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTestForInterface.java +++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTestForInterface.java @@ -991,7 +991,7 @@ public void test060() { "----------\n" + "1. WARNING in X.java (at line 3)\n" + " x.foo();\n" - + " ^^^^^\n" + + " ^^^\n" + "The method foo() from the type IX is deprecated\n" + "----------\n", null, null, JavacTestOptions.Excuse.EclipseHasSomeMoreWarnings); @@ -1083,7 +1083,7 @@ public void test062() { "----------\n" + "1. WARNING in X.java (at line 4)\n" + " x.foo(2);\n" - + " ^^^^^^\n" + + " ^^^\n" + "The method foo(int) from the type IX is deprecated\n" + "----------\n"); } @@ -1117,7 +1117,7 @@ public void test063() { "----------\n" + "1. WARNING in X.java (at line 4)\n" + " x.foo(2);\n" - + " ^^^^^^\n" + + " ^^^\n" + "The method foo(int) from the type IX is deprecated\n" + "----------\n" + "----------\n" diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTestForMethod.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTestForMethod.java index eaaad327445..7b877b86736 100644 --- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTestForMethod.java +++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/JavadocTestForMethod.java @@ -79,7 +79,7 @@ public void test001() { "----------\n" + "1. WARNING in X.java (at line 4)\n" + " new Z().foo();\n" - + " ^^^^^\n" + + " ^^^\n" + "The method foo() from the type Z is deprecated\n" + "----------\n", null, null, JavacTestOptions.Excuse.EclipseHasSomeMoreWarnings); @@ -176,7 +176,7 @@ public void test003() { "----------\n" + "1. WARNING in X.java (at line 4)\n" + " new Z().foo(2);\n" + - " ^^^^^^\n" + + " ^^^\n" + "The method foo(int) from the type Z is deprecated\n" + "----------\n" ); @@ -213,7 +213,7 @@ public void test004() { "----------\n" + "1. WARNING in X.java (at line 4)\n" + " new Z().foo(2);\n" + - " ^^^^^^\n" + + " ^^^\n" + "The method foo(int) from the type Z is deprecated\n" + "----------\n" + "----------\n" + @@ -281,7 +281,7 @@ public void test005() { "----------\n" + "1. WARNING in X.java (at line 4)\n" + " new Z().foo(2);\n" + - " ^^^^^^\n" + + " ^^^\n" + "The method foo(int) from the type Z is deprecated\n" + "----------\n" ); @@ -319,7 +319,7 @@ public void test006() { "----------\n" + "1. WARNING in X.java (at line 4)\n" + " new Z().foo(2);\n" + - " ^^^^^^\n" + + " ^^^\n" + "The method foo(int) from the type Z is deprecated\n" + "----------\n" + "----------\n" + @@ -387,7 +387,7 @@ public void test007() { "----------\n" + "1. WARNING in X.java (at line 4)\n" + " new Z().foo(2);\n" + - " ^^^^^^\n" + + " ^^^\n" + "The method foo(int) from the type Z is deprecated\n" + "----------\n" ); @@ -424,7 +424,7 @@ public void test008() { "----------\n" + "1. WARNING in X.java (at line 4)\n" + " new Z().foo(2);\n" + - " ^^^^^^\n" + + " ^^^\n" + "The method foo(int) from the type Z is deprecated\n" + "----------\n" + "----------\n" + diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/LambdaExpressionsTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/LambdaExpressionsTest.java index efb0c997cca..64746229b0e 100644 --- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/LambdaExpressionsTest.java +++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/LambdaExpressionsTest.java @@ -8563,6 +8563,50 @@ private static class B {} """}); } +// https://github.com/eclipse-jdt/eclipse.jdt.core/issues/2096 +// Textual problem indicator goes wild with lamda +public void testGHIssue2096() { + if (this.complianceLevel < ClassFileConstants.JDK17) + return; // just to standardize messages, we skip below 17. + this.runNegativeTest( + new String[] { + "X.java", + """ + import java.security.AccessController; + import java.security.PrivilegedActionException; + import java.security.PrivilegedExceptionAction; + + public class X { + public static void main(String[] args) throws PrivilegedActionException { + AccessController.doPrivileged((PrivilegedExceptionAction)() -> + { + System.out.println(); + System.out.println();System.out.println();System.out.println();System.out.println(); + System.out.println();System.out.println();System.out.println();System.out.println(); + System.out.println();System.out.println();System.out.println();System.out.println(); + System.out.println();System.out.println();System.out.println();System.out.println(); + System.out.println();System.out.println();System.out.println();System.out.println(); + }); + } + } + """}, + "----------\n" + + "1. WARNING in X.java (at line 7)\n" + + " AccessController.doPrivileged((PrivilegedExceptionAction)() ->\n" + + " ^^^^^^^^^^^^^^^^\n" + + "The type AccessController has been deprecated since version 17 and marked for removal\n" + + "----------\n" + + "2. WARNING in X.java (at line 7)\n" + + " AccessController.doPrivileged((PrivilegedExceptionAction)() ->\n" + + " ^^^^^^^^^^^^\n" + + "The method doPrivileged(PrivilegedExceptionAction) from the type AccessController has been deprecated and marked for removal\n" + + "----------\n" + + "3. ERROR in X.java (at line 7)\n" + + " AccessController.doPrivileged((PrivilegedExceptionAction)() ->\n" + + " ^^^^^\n" + + "This method must return a result of type Boolean\n" + + "----------\n"); +} public static Class testClass() { return LambdaExpressionsTest.class; diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ReconcilerTests9.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ReconcilerTests9.java index d4cbf8d70a8..dde3d07aa8d 100644 --- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ReconcilerTests9.java +++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ReconcilerTests9.java @@ -316,7 +316,7 @@ public void testTerminalDeprecation1() throws CoreException { "----------\n" + "2. WARNING in /P1/src/Y.java (at line 3)\n" + " x2.m();\n" + - " ^^^\n" + + " ^\n" + "The method m() from the type X2 has been deprecated and marked for removal\n" + "----------\n" + "3. WARNING in /P1/src/Y.java (at line 4)\n" + @@ -385,12 +385,12 @@ public void testTerminalDeprecation2() throws CoreException, IOException { "----------\n" + "2. WARNING in /P1/src/Y.java (at line 3)\n" + " x2.m();\n" + - " ^^^\n" + + " ^\n" + deprecatedForRemoval("The method m() from the type X2") + "----------\n" + "3. WARNING in /P1/src/Y.java (at line 4)\n" + " x2.m2();\n" + - " ^^^^\n" + + " ^^\n" + "The method m2() from the type X2 is deprecated\n" + "----------\n" + "4. WARNING in /P1/src/Y.java (at line 5)\n" + @@ -454,7 +454,7 @@ public void testSinceDeprecation() throws CoreException, IOException { "----------\n" + "1. WARNING in /P1/src/Y.java (at line 3)\n" + " x2.m();\n" + - " ^^^\n" + + " ^\n" + "The method m() from the type X2 is deprecated since version 9\n" + "----------\n"); } finally { From 287ae94f04ad850483a375a3e7ee90a409b9852b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Kubitz?= Date: Tue, 26 Nov 2024 18:21:58 +0100 Subject: [PATCH 06/26] jclMin23: ignore missing serializable problem "The serializable class Long does not declare a static final serialVersionUID field of type" --- .../.settings/org.eclipse.jdt.core.prefs | 109 ++++++++++++++++++ 1 file changed, 109 insertions(+) diff --git a/JCL/jclMin23/.settings/org.eclipse.jdt.core.prefs b/JCL/jclMin23/.settings/org.eclipse.jdt.core.prefs index d8fc6e5605f..d927de6addc 100644 --- a/JCL/jclMin23/.settings/org.eclipse.jdt.core.prefs +++ b/JCL/jclMin23/.settings/org.eclipse.jdt.core.prefs @@ -1,4 +1,17 @@ eclipse.preferences.version=1 +org.eclipse.jdt.core.builder.annotationPath.allLocations=disabled +org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled +org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore +org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull +org.eclipse.jdt.core.compiler.annotation.nonnull.secondary= +org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault +org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary= +org.eclipse.jdt.core.compiler.annotation.notowning=org.eclipse.jdt.annotation.NotOwning +org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable +org.eclipse.jdt.core.compiler.annotation.nullable.secondary= +org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled +org.eclipse.jdt.core.compiler.annotation.owning=org.eclipse.jdt.annotation.Owning +org.eclipse.jdt.core.compiler.annotation.resourceanalysis=disabled org.eclipse.jdt.core.compiler.codegen.methodParameters=generate org.eclipse.jdt.core.compiler.codegen.targetPlatform=23 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve @@ -6,7 +19,103 @@ org.eclipse.jdt.core.compiler.compliance=23 org.eclipse.jdt.core.compiler.debug.lineNumber=generate org.eclipse.jdt.core.compiler.debug.localVariable=generate org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.APILeak=warning +org.eclipse.jdt.core.compiler.problem.annotatedTypeArgumentToUnannotated=info +org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning +org.eclipse.jdt.core.compiler.problem.autoboxing=ignore +org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning +org.eclipse.jdt.core.compiler.problem.deadCode=warning +org.eclipse.jdt.core.compiler.problem.deprecation=warning +org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled +org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled +org.eclipse.jdt.core.compiler.problem.discouragedReference=warning +org.eclipse.jdt.core.compiler.problem.emptyStatement=ignore org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore +org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore +org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled +org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore +org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning +org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning +org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled +org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning +org.eclipse.jdt.core.compiler.problem.incompatibleOwningContract=warning +org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning +org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore +org.eclipse.jdt.core.compiler.problem.insufficientResourceAnalysis=warning +org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore +org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning +org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore +org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore +org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled +org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore +org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore +org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled +org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore +org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore +org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning +org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning +org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore +org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning +org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning +org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error +org.eclipse.jdt.core.compiler.problem.nullReference=warning +org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error +org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning +org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning +org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore +org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning +org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore +org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore +org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore +org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning +org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning +org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore +org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore +org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore +org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore +org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning +org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled +org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning +org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled +org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled +org.eclipse.jdt.core.compiler.problem.suppressWarningsNotFullyAnalysed=info +org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled +org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore +org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning +org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning +org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled +org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning +org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning +org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore +org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning +org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning +org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled +org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info +org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore +org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore +org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore +org.eclipse.jdt.core.compiler.problem.unstableAutoModuleName=warning +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled +org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore +org.eclipse.jdt.core.compiler.problem.unusedImport=warning +org.eclipse.jdt.core.compiler.problem.unusedLabel=warning +org.eclipse.jdt.core.compiler.problem.unusedLambdaParameter=warning +org.eclipse.jdt.core.compiler.problem.unusedLocal=warning +org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore +org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore +org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled +org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled +org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled +org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning +org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore +org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning +org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning org.eclipse.jdt.core.compiler.release=enabled org.eclipse.jdt.core.compiler.source=23 From 8eb06efe25d5a5027dae6270e3336dfc400791f9 Mon Sep 17 00:00:00 2001 From: Jeff Johnston Date: Wed, 27 Nov 2024 20:06:02 -0500 Subject: [PATCH 07/26] Fix FieldLocator and MethodLocator to support local/anonymous classes (#3314) - Fix FieldLocator.reportDeclaration() and MethodLocator.reportDeclaration() to find the anonymous or local type for the declaration rather than to return - add new tests to JavaSearchBugsTests - fixes #3308 --- .../core/tests/model/JavaSearchBugsTests.java | 96 ++++++++++++++++++- .../core/search/matching/FieldLocator.java | 22 +++++ .../core/search/matching/MethodLocator.java | 22 ++++- 3 files changed, 138 insertions(+), 2 deletions(-) diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchBugsTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchBugsTests.java index d7a3a796bbe..c94bfd7a45f 100644 --- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchBugsTests.java +++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchBugsTests.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2000, 2021 IBM Corporation and others. + * Copyright (c) 2000, 2024 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -15499,6 +15499,100 @@ public void testModuleConflictGh723() throws Exception { } } +/** + * issue 3308: SearchEngine.searchDeclarationsOfSentMessages() does not support local or anonymous classes + * @see "https://github.com/eclipse-jdt/eclipse.jdt.core/issues/3308" + */ +public void testIssue3308() throws CoreException { + this.workingCopies = new ICompilationUnit[1]; + String src= """ + package issue3308; + public class Test { + public class BaseTargetClass { + } + + public class OriginalClass { + public int data = 60; + + public void memberMethod() { + } + + public class NestedOriginalClass extends BaseTargetClass { + void setup() { + new BaseTargetClass() { + int j = 1; + + void methodToBePulledUp() { + j = 2; + methodHelper(); + } + + void methodHelper() { + System.out.println("Helper Method in Anonymous Class: " + data); + } + }; + } + } + } + } + """; + + this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/issue3308/Test.java", src); + IType type = (IType) this.workingCopies[0].getElementAt(src.indexOf("new BaseTargetClass")); + IMethod method = type.getMethod("methodToBePulledUp", new String[] {}); + new SearchEngine(this.workingCopies).searchDeclarationsOfSentMessages(method, this.resultCollector, null); + assertSearchResults( + "src/issue3308/Test.java void void issue3308.Test$OriginalClass$NestedOriginalClass.setup():#1.methodHelper() [methodHelper()] EXACT_MATCH" + ); +} + +/** + * issue 3308: SearchEngine.searchDeclarationsOfSentMessages() does not support local or anonymous classes + * @see "https://github.com/eclipse-jdt/eclipse.jdt.core/issues/3308" + */ +public void testIssue3308b() throws CoreException { + this.workingCopies = new ICompilationUnit[1]; + String src= """ + package issue3308; + public class Test { + public class BaseTargetClass { + } + + public class OriginalClass { + public int data = 60; + + public void memberMethod() { + } + + public class NestedOriginalClass extends BaseTargetClass { + void setup() { + new BaseTargetClass() { + int j = 1; + + void methodToBePulledUp() { + j = 2; + methodHelper(); + } + + void methodHelper() { + System.out.println("Helper Method in Anonymous Class: " + data); + } + }; + } + } + } + } + """; + + this.workingCopies[0] = getWorkingCopy("/JavaSearchBugs/src/issue3308b/Test.java", src); + IType type = (IType) this.workingCopies[0].getElementAt(src.indexOf("new BaseTargetClass")); + IMethod method = type.getMethod("methodToBePulledUp", new String[] {}); + new SearchEngine(this.workingCopies).searchDeclarationsOfAccessedFields(method, this.resultCollector, null); + assertSearchResults( + "src/issue3308b/Test.java void issue3308b.Test$OriginalClass$NestedOriginalClass.setup():#1.j [j] EXACT_MATCH" + ); +} + private static String toString(char[][] modules) { StringBuilder sb = new StringBuilder(); for (char[] m : modules) { diff --git a/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/FieldLocator.java b/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/FieldLocator.java index c8bfd4ceb0a..f85693c4036 100644 --- a/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/FieldLocator.java +++ b/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/FieldLocator.java @@ -15,6 +15,7 @@ import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.CoreException; +import org.eclipse.jdt.core.ICompilationUnit; import org.eclipse.jdt.core.IField; import org.eclipse.jdt.core.IJavaElement; import org.eclipse.jdt.core.IType; @@ -280,6 +281,27 @@ protected void reportDeclaration(FieldBinding fieldBinding, MatchLocator locator ReferenceBinding declaringClass = fieldBinding.declaringClass; IType type = locator.lookupType(declaringClass); + if (type == null) { + if (declaringClass instanceof LocalTypeBinding) { + ReferenceBinding refBinding= declaringClass; + while (refBinding instanceof LocalTypeBinding localBinding) { + MethodBinding enclosingBinding= localBinding.enclosingMethod; + refBinding= enclosingBinding.declaringClass; + } + type= locator.lookupType(refBinding); + if (type != null) { + if (type.getTypeRoot() instanceof ICompilationUnit cu) { + FieldDeclaration fieldDecl= fieldBinding.sourceField(); + if (fieldDecl != null) { + IJavaElement element= cu.getElementAt(fieldDecl.sourceStart()); + if (element instanceof IField) { + type= ((IField) element).getDeclaringType(); + } + } + } + } + } + } if (type == null) return; // case of a secondary type char[] bindingName = fieldBinding.name; diff --git a/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/MethodLocator.java b/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/MethodLocator.java index f6bf05e08b1..c59b92a5dda 100644 --- a/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/MethodLocator.java +++ b/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/MethodLocator.java @@ -24,6 +24,7 @@ import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.CoreException; import org.eclipse.jdt.core.Flags; +import org.eclipse.jdt.core.ICompilationUnit; import org.eclipse.jdt.core.IJavaElement; import org.eclipse.jdt.core.IMethod; import org.eclipse.jdt.core.IType; @@ -664,7 +665,26 @@ protected int referenceType() { protected void reportDeclaration(MethodBinding methodBinding, MatchLocator locator, SimpleSet knownMethods) throws CoreException { ReferenceBinding declaringClass = methodBinding.declaringClass; IType type = locator.lookupType(declaringClass); - if (type == null) return; // case of a secondary type + if (type == null) { + if (declaringClass instanceof LocalTypeBinding) { + ReferenceBinding refBinding= declaringClass; + while (refBinding instanceof LocalTypeBinding localBinding) { + MethodBinding enclosingBinding= localBinding.enclosingMethod; + refBinding= enclosingBinding.declaringClass; + } + type= locator.lookupType(refBinding); + if (type != null) { + if (type.getTypeRoot() instanceof ICompilationUnit cu) { + IJavaElement element= cu.getElementAt(methodBinding.sourceStart()); + if (element instanceof IMethod) { + type= ((IMethod) element).getDeclaringType(); + } + } + } + } + } + if (type == null) + return; // case of a secondary type // Report match for binary if (type.isBinary()) { From 352a0aa7559ed890e56e5829fbaa1ac2b5802e63 Mon Sep 17 00:00:00 2001 From: Manoj N Palat Date: Fri, 29 Nov 2024 11:53:21 +0530 Subject: [PATCH 08/26] Codegen Primitives in record comonent patterns to be enabled with null check before calling accessor(#3361) Before generating an invoke of accessor of a record component, do a null check if primitive conversions are involved. --- .../internal/compiler/ast/RecordPattern.java | 13 ++++++++++++ .../regression/PrimitiveInPatternsTest.java | 20 ++++++++++++++++++- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/RecordPattern.java b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/RecordPattern.java index 883202e4099..b824369cdfa 100644 --- a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/RecordPattern.java +++ b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/RecordPattern.java @@ -244,6 +244,7 @@ original record instance as receiver - leaving the stack drained. labels.add(exceptionLabel); TypeBinding componentType = p.accessorMethod.returnType; + checkForPrimitiveType(currentScope, p, componentType); if (TypeBinding.notEquals(p.accessorMethod.original().returnType.erasure(), componentType.erasure())) codeStream.checkcast(componentType); // lastComponent ? [C] : [R, C] @@ -291,6 +292,18 @@ original record instance as receiver - leaving the stack drained. } } + private void checkForPrimitiveType(BlockScope currentScope, Pattern p, TypeBinding componentType) { + if (p.isTotalTypeNode && !componentType.isPrimitiveType() && p instanceof TypePattern tp) { + TypeBinding providedType = tp.resolvedType; + if (providedType != null && providedType.isPrimitiveType()) { + PrimitiveConversionRoute route = Pattern.findPrimitiveConversionRoute(componentType, providedType, currentScope); + if (route != PrimitiveConversionRoute.NO_CONVERSION_ROUTE) { + p.isTotalTypeNode = false; + } + } + } + } + @Override public void traverse(ASTVisitor visitor, BlockScope scope) { if (visitor.visit(this, scope)) { diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/PrimitiveInPatternsTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/PrimitiveInPatternsTest.java index 93c368e72d9..8670e433d6d 100644 --- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/PrimitiveInPatternsTest.java +++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/PrimitiveInPatternsTest.java @@ -25,7 +25,7 @@ public class PrimitiveInPatternsTest extends AbstractRegressionTest9 { static { // TESTS_NUMBERS = new int [] { 1 }; // TESTS_RANGE = new int[] { 1, -1 }; -// TESTS_NAMES = new String[] { "testIssue2936" }; +// TESTS_NAMES = new String[] { "testIssuePrimitivesWithNull" }; } private String extraLibPath; public static Class testClass() { @@ -7331,6 +7331,24 @@ public static void main(String[] args) { "43.0"); } + public void testIssuePrimitivesWithNull() { + runConformTest(new String[] { + "X.java", + """ + public class X { + record R(Integer i) {} + public static int foo(R r) { + if (r instanceof R(int i)) { return i; } + return -1; + } + public static void main(String argv[]) { + System.out.println(foo(new R(null))); + } + } + """ + }, + "-1"); + } public void _testSpec00X() { runNegativeTest(new String[] { "X.java", From 681dc0aff701f3bfe3109d43b838b0894c6d2cdd Mon Sep 17 00:00:00 2001 From: Stephan Herrmann Date: Sun, 1 Dec 2024 01:48:22 +0100 Subject: [PATCH 09/26] java.lang.StackOverflowError during "Requesting Java AST from selection" (#3373) + resilience: avoid accepting a sourceType being completed already + better hiding of modules seen via the classpath Fixes https://github.com/eclipse-jdt/eclipse.jdt.core/issues/3273 --- .../jdt/internal/compiler/Compiler.java | 10 ++- .../compiler/env/ICompilationUnit.java | 8 +- .../env/IModuleAwareNameEnvironment.java | 12 ++- .../jdt/core/tests/dom/ASTConverter9Test.java | 85 +++++++++++++++++++ .../internal/core/SearchableEnvironment.java | 17 ++++ 5 files changed, 128 insertions(+), 4 deletions(-) diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/Compiler.java b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/Compiler.java index 5b624bd5048..aa4ce599980 100644 --- a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/Compiler.java +++ b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/Compiler.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2000, 2017 IBM Corporation and others. + * Copyright (c) 2000, 2024 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -335,6 +335,14 @@ public void accept(IBinaryType binaryType, PackageBinding packageBinding, Access */ @Override public void accept(ICompilationUnit sourceUnit, AccessRestriction accessRestriction) { + if (this.lookupEnvironment.unitBeingCompleted != null) { + // resilience for https://github.com/eclipse-jdt/eclipse.jdt.core/issues/3273 + // NEVER accept a sourceUnit that is already being completed + char[] fileName1 = this.lookupEnvironment.unitBeingCompleted.compilationResult.fileName; + char[] fileName2 = sourceUnit.getFileName(); + if (CharOperation.equals(fileName1, fileName2) && !CharOperation.equals(fileName1, TypeConstants.MODULE_INFO_FILE_NAME)) + return; + } // Switch the current policy and compilation result for this unit to the requested one. CompilationResult unitResult = new CompilationResult(sourceUnit, this.totalUnits, this.totalUnits, this.options.maxProblemsPerUnit); diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/env/ICompilationUnit.java b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/env/ICompilationUnit.java index 7d846729cf7..d9b3318b6b7 100644 --- a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/env/ICompilationUnit.java +++ b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/env/ICompilationUnit.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2000, 2017 IBM Corporation and others. + * Copyright (c) 2000, 2024 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -61,7 +61,11 @@ default boolean ignoreOptionalProblems() { * @return the binding representing the module. */ default ModuleBinding module(LookupEnvironment environment) { - return environment.getModule(getModuleName()); + if (environment.nameEnvironment instanceof IModuleAwareNameEnvironment modEnv) { + char[] moduleName = modEnv.isOnModulePath(this) ? getModuleName() : ModuleBinding.UNNAMED; + return environment.getModule(moduleName); + } + return null; } /** * Returns the name of the module to which this compilation unit is associated. diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/env/IModuleAwareNameEnvironment.java b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/env/IModuleAwareNameEnvironment.java index 093af6cf389..594ed13bc08 100644 --- a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/env/IModuleAwareNameEnvironment.java +++ b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/env/IModuleAwareNameEnvironment.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2016, 2017 IBM Corporation and others. + * Copyright (c) 2016, 2024 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -132,6 +132,16 @@ default char[][] getUniqueModulesDeclaringPackage(char[][] packageName, char[] m IModule getModule(char[] moduleName); char[][] getAllAutomaticModules(); + /** + * If this environment focusses on one IJavaProject answer if the given + * compilation unit is found on the module path, rather than the class path. + * @param unit compilation unit to test + * @return true iff unit is on the module path. + */ + default boolean isOnModulePath(ICompilationUnit unit) { + return true; // TODO: should more / all implementors implement this method? + } + /** * Ask the name environment to perform any updates (add-exports or add-reads) to the given module. * @param module the compiler representation of the module to updates diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter9Test.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter9Test.java index e1c200c0e4e..e5a5461d8aa 100644 --- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter9Test.java +++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/ASTConverter9Test.java @@ -1512,5 +1512,90 @@ public void testClassCastExceptionWhenOpeningModuleInfoWithClass() throws JavaMo deleteProject("ASTParserModelTests"); } } + public void testStackOverflow_type_schizophrenia() throws JavaModelException, CoreException { + try { + // empty project, used only as a dependency: + IJavaProject project0 = createJavaProject("P0", new String[] { "src" }, + new String[] { "CONVERTER_JCL9_LIB" }, "bin", "9"); + + // modular shared project + IJavaProject project1 = createJavaProject("P1", new String[] { "src" }, + new String[] { "CONVERTER_JCL9_LIB" }, "bin", "9"); + + // HACK#1 + // the following dependency triggers a code path in ModuleUpdater.determineModulesOfProjectsWithNonEmptyClasspath() + // - guarded by containsNonModularDependency() + // - if effective it adds ALL-UNNAMED to P1's module requirements: + addClasspathEntry(project1, JavaCore.newProjectEntry(project0.getPath())); // not modular! + + project1.open(null); + createFolder("/P1/src/common/pack1"); + createFile("/P1/src/common/pack1/C1.java", + """ + package common.pack1; + import common.pack1.Shared; + // the type parameter bound forces resolving 'Shared' from within its module: + public interface C1 { + static final String CONST1 = "const1"; + } + """); + createFile("/P1/src/common/pack1/Shared.java", + """ + package common.pack1; + // the following import triggers recursive lookup of the class being inserted into compilation: + import static common.pack1.Shared.Kind.*; + public interface Shared { + enum Kind { Good, Bad } + static Kind DEFAULT = Good; + } + """); + createFile("/P1/src/module-info.java", + """ + module first { + exports common.pack1; + } + """); + + // non-modular client project where the SOE occurs: + IJavaProject project2 = createJavaProject("P2", new String[] { "src" }, + new String[] { "CONVERTER_JCL9_LIB" }, "bin", "9"); + addClasspathEntry(project2, JavaCore.newProjectEntry(project1.getPath())); // not modular! + + // the following dependency enables a code path in the constructor of SearchableEnvironment: + // - guarded by Arrays.stream(expandedClasspath).anyMatch(IClasspathEntry::isTest) + // - if effective tries to add ALL-UNNAMED to module requirements. + // - additionally needs HACK#1 to be effective + addClasspathEntry(project2, JavaCore.newSourceEntry(new Path("/P2/testsrc"), null, null, new Path("/P2/testbin"), + new IClasspathAttribute[] {JavaCore.newClasspathAttribute(IClasspathAttribute.TEST, "true")})); + project2.open(null); + createFolder("/P2/src/common/test"); + createFile("/P2/src/common/test/Client.java", + """ + package common.test; + import static common.pack1.C1.*; // this import pulls in classes from the other project + import common.pack1.C1; + public class Client { + String s = CONST1; + C1 c1; + } + """); + + IJavaElement[] types = { project2.findType("common.test.Client") }; + ASTParser astParser = ASTParser.newParser(AST.getJLSLatest()); + astParser.setProject(project2); + IBinding[] bindings = astParser.createBindings(types, null); + assertEquals(1, bindings.length); + ITypeBinding type = (ITypeBinding) bindings[0]; + IVariableBinding c1 = type.getDeclaredFields()[0]; + IModuleBinding module = c1.getType().getModule(); + assertNotNull(module); + assertEquals("", module.getName()); + } finally { + deleteProject("P0"); + deleteProject("P1"); + deleteProject("P2"); + } + } + // Add new tests here } diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SearchableEnvironment.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SearchableEnvironment.java index 1cf884c5e0d..740bb197452 100644 --- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SearchableEnvironment.java +++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/SearchableEnvironment.java @@ -22,6 +22,7 @@ import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Set; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; @@ -301,6 +302,22 @@ public void findModules(char[] prefix, ISearchRequestor requestor, IJavaProject this.nameLookup.seekModule(prefix, true, new SearchableEnvironmentRequestor(requestor)); } + @Override + public boolean isOnModulePath(ICompilationUnit unit) { + if (unit instanceof CompilationUnit cUnit) { + IPackageFragmentRoot root = cUnit.originalFromClone().getPackageFragmentRoot(); + if (Objects.equals(root.getJavaProject(), this.project)) + return true; // current project: modular if it contains module-info :) + IClasspathEntry entry = this.nameLookup.rootToResolvedEntries.get(root); + if (entry instanceof ClasspathEntry cpEntry) + return cpEntry.isModular(); + return true; // out-of-band resolution / transitive dependency? + } else if (unit instanceof BasicCompilationUnit bUnit) { + return bUnit.moduleName != null; + } + return false; + } + /** * Find the packages that start with the given prefix. * A valid prefix is a qualified name separated by periods From 2528b4a891fd8f8765e9348bb854adbfef3ad9ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=8A?= =?UTF-8?q?=D1=80=20=D0=9A=D1=83=D1=80=D1=82=D0=B0=D0=BA=D0=BE=D0=B2?= Date: Sun, 1 Dec 2024 22:44:01 +0200 Subject: [PATCH 10/26] Add NoSuchFieldError to converterJclMin18 (#3368) Add NoSuchFieldError to converterJclMin18 + build the jar + avoid new warning Enable couple of tests fixed by this. --------- Co-authored-by: Stephan Herrmann --- .../src/java/lang/NoSuchFieldError.java | 15 +++++++++++++++ .../JCL/build.xml | 4 ++-- .../JCL/converterJclMin1.8.jar | Bin 42793 -> 54212 bytes .../JCL/converterJclMin1.8src.zip | Bin 55716 -> 55998 bytes .../tests/dom/ASTConverter15JLS4Test.java | 2 +- .../tests/dom/ASTConverter15JLS8Test.java | 2 +- 6 files changed, 19 insertions(+), 4 deletions(-) create mode 100644 JCL/converterJclMin1.8/src/java/lang/NoSuchFieldError.java diff --git a/JCL/converterJclMin1.8/src/java/lang/NoSuchFieldError.java b/JCL/converterJclMin1.8/src/java/lang/NoSuchFieldError.java new file mode 100644 index 00000000000..fd901dc0937 --- /dev/null +++ b/JCL/converterJclMin1.8/src/java/lang/NoSuchFieldError.java @@ -0,0 +1,15 @@ +package java.lang; + +public +class NoSuchFieldError extends IncompatibleClassChangeError { + + static final long serialVersionUID = 1L; + + public NoSuchFieldError() { + super(); + } + + public NoSuchFieldError(String s) { + super(s); + } +} diff --git a/org.eclipse.jdt.core.tests.model/JCL/build.xml b/org.eclipse.jdt.core.tests.model/JCL/build.xml index 03201a6b62f..094e866f808 100644 --- a/org.eclipse.jdt.core.tests.model/JCL/build.xml +++ b/org.eclipse.jdt.core.tests.model/JCL/build.xml @@ -19,10 +19,10 @@ - + diff --git a/org.eclipse.jdt.core.tests.model/JCL/converterJclMin1.8.jar b/org.eclipse.jdt.core.tests.model/JCL/converterJclMin1.8.jar index 9d9164642f44cfb152ae2e4a2367517597270cde..e38ff9f749f970bf01081a0372eb8d28cc725f01 100644 GIT binary patch literal 54212 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 literal 42793 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 vSL|rJ!xh2fH-?YB~g;0~xY$E) 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 delta 3462 zcmZWr3s6+o8NPd$nneLoSRS_^ySxe_k;R}QQVl9nfkKrClhlcjMnp3R5;YIQ0xAX# zMEHS5#RY|EM5U3H$RaGrTUegU@`_3l9W|Y4Q%MsIZ9>o9^WQo*?#!M0?SH=i`(Njr zx%xV3l~!sK8!5Gz%P=yA3E%Y~uF%HKf`6+#=sUsP!ZFj7P?+gS|DRt<-xGfP8)On6 zYEa4H4-y+{d`&{xa7X}`kft4zyei>I+92sih&n8a5WP015)msqfvD6{jmUZ43?fJC zBZw+&3J?X_mLoDPxPhqHt`^ZI`8S9H9IqjI5KQ$u{R=grYd1+YwuH(4#*-1XrzJJ%+ZO ze?CgPGrjF!XnOGaV?5$N!f+H(YuIFehqD9A)D7WtTw^T0Rqg-@t$QO>qrjLbj-a8?LI8}5W zUDp?v@vd;c_$&o^B^6Z6zjQA~s{8~Sr~T8Z1`II2tP9cPnd693$|n(RJR6PZlXDLc z-5Lr;bRiVjHLRo{rePTcW`~Lf zbkH}vM6Evxyucf)sb%ktO%$};h@@bC;|2;68qsp0F^XEAG-ABvP2tp%)wGd<-lmr+ zu+@iAuvGwM`Uq-yq>rW`xOp7~S4UhD~3vG#RRpjYpK(dR&-j~hA}hSeovQL+Jw^EW2hym9Yg8bkv!Xu>4bM6$nU@@ z40fRMf=(3N(urOtJL9O}V_|7o7lz2~dW9}cb#0~~s2i6)?8cl8-PkbKTiD&CTNtZS z0ID7iez|22ulFe2NDC60zkm2&jf7!xr3~Z2Jo{B;JAtMr(9L`SewbaERzo;?!jV6t zFjd*};JY4ArI}M5v>`HuaK2y}##6*$5*he=q8H4zSt-oSFm?E8JHkr+&9Bv(li*0N z2d(aMFDG$^u3m3!NG~Vt+QGopME8#p#N1uhx zlgQwS!Iuv{Eh}GqkEHpT1;f~j(wyB5Yx~^!dZ(jWyHZJpFTC*U41FNG&yyGW+V-Jl zkO*y_!!W-U3EfG9jy_+7`C|RY{?PlSgv3}ejEjggvlndo7t;(^_jBysw;`e5pI82; z%h}iy#3|~zZa>`zpY~&a48&>R06gmVrs+(0`8W`#H6(32QKY-?!ixh+o^*L((ib}j z>GpFo3Vt7M4md*a!TGStK*yvhD9JA(N?(&lJkTEw5;ENxVX8xQ`-ox>QS=gpy#p-+ zPH-pF7FG=k;~M1Hi)ud5_8d#d9b7=`KTYi0v(aw9BsNmQ+DpwJU^2$MU((cXTuUY~ znn(x0=gU2kV5nP8ws5X7ka8Lcr@0Wu zjdV-*xNk_0Cdq6gk5ZIW3V?ECDZizQm&C~v$YLsa#M{*p6eDstJR+y!XGSYg|jz zq$x_Wu{n{@OQ#8uel^3-#BsI^oJW0lr@3|uKQJF5HF0tfITdIiag-j$-7({BmW0$z z9x>^y3ixysKfU`#IkxF6d^_sR-&lD+&D|A79FCFN97W0(Dj6uOa)O94E53OVcdccS zgjq(I;=>gP8Dn&lMOkU&A%v4fIO039^*q##VOMUCaqRlf;OUrxcH3o~lNv8F&{Xa7 z>{?4F#?ng+WL@_D|D~yNjeod;BpE~=@%*-4fv?7Wshsr$$4*`W-w8jycLm1$&^08d z!z8DLq6%yO25(O&_%=YP|1bLq$%{02k%$y@l>xU}H;8DYH^R%0Q#%t0bN0Cs|5IBu z>A|bz#P7NiN;vNjjyTWCYYgPqxxn^GJgI4uoWviFPkPxLU=A>~N^&n Date: Mon, 2 Dec 2024 17:43:02 +0530 Subject: [PATCH 11/26] Incorrect control flow analysis causes statement subsequent to a switch statement to be flagged unreachable under some circumstances(#3377) * Fixes https://github.com/eclipse-jdt/eclipse.jdt.core/issues/3376 --- .../jdt/internal/compiler/ast/ASTNode.java | 1 + .../jdt/internal/compiler/ast/Block.java | 58 +++++++------ .../compiler/ast/SwitchStatement.java | 5 +- .../jdt/internal/compiler/parser/Parser.java | 3 + .../tests/compiler/regression/SwitchTest.java | 85 +++++++++++++++++++ 5 files changed, 122 insertions(+), 30 deletions(-) diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/ASTNode.java b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/ASTNode.java index 80050df0af0..14439b68f0c 100644 --- a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/ASTNode.java +++ b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/ASTNode.java @@ -224,6 +224,7 @@ public abstract class ASTNode implements TypeConstants, TypeIds { public static final int IsUsefulEmptyStatement = Bit1; // for block and method declaration + public static final int SwitchRuleBlock = Bit1; public static final int UndocumentedEmptyBlock = Bit4; public static final int OverridingMethodWithSupercall = Bit5; public static final int CanBeStatic = Bit9; // used to flag a method that can be declared static diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/Block.java b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/Block.java index 9601579da2c..711a57707f4 100644 --- a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/Block.java +++ b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/Block.java @@ -42,36 +42,42 @@ public Block(int explicitDeclarations) { @Override public FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) { - // empty block - if (this.statements == null) return flowInfo; - int complaintLevel = (flowInfo.reachMode() & FlowInfo.UNREACHABLE) != 0 ? Statement.COMPLAINED_FAKE_REACHABLE : Statement.NOT_COMPLAINED; - CompilerOptions compilerOptions = currentScope.compilerOptions(); - boolean enableSyntacticNullAnalysisForFields = compilerOptions.enableSyntacticNullAnalysisForFields; - for (Statement stat : this.statements) { - if ((complaintLevel = stat.complainIfUnreachable(flowInfo, this.scope, complaintLevel, true)) < Statement.COMPLAINED_UNREACHABLE) { - flowInfo = stat.analyseCode(this.scope, flowContext, flowInfo); + if (this.statements != null) { + int complaintLevel = (flowInfo.reachMode() & FlowInfo.UNREACHABLE) != 0 ? Statement.COMPLAINED_FAKE_REACHABLE : Statement.NOT_COMPLAINED; + CompilerOptions compilerOptions = currentScope.compilerOptions(); + boolean enableSyntacticNullAnalysisForFields = compilerOptions.enableSyntacticNullAnalysisForFields; + for (Statement stat : this.statements) { + if ((complaintLevel = stat.complainIfUnreachable(flowInfo, this.scope, complaintLevel, true)) < Statement.COMPLAINED_UNREACHABLE) { + flowInfo = stat.analyseCode(this.scope, flowContext, flowInfo); + } + // record the effect of stat on the finally block of an enclosing try-finally, if any: + flowContext.mergeFinallyNullInfo(flowInfo); + if (enableSyntacticNullAnalysisForFields) { + flowContext.expireNullCheckedFieldInfo(); + } + if (compilerOptions.analyseResourceLeaks) { + FakedTrackingVariable.cleanUpUnassigned(this.scope, stat, flowInfo, false); + } } - // record the effect of stat on the finally block of an enclosing try-finally, if any: - flowContext.mergeFinallyNullInfo(flowInfo); - if (enableSyntacticNullAnalysisForFields) { - flowContext.expireNullCheckedFieldInfo(); + if (this.scope != currentScope) { + // if block is tracking any resources other than the enclosing 'currentScope', analyse them now: + this.scope.checkUnclosedCloseables(flowInfo, flowContext, null, null); } - if (compilerOptions.analyseResourceLeaks) { - FakedTrackingVariable.cleanUpUnassigned(this.scope, stat, flowInfo, false); + if (this.explicitDeclarations > 0) { + // cleanup assignment info for locals that are scoped to this block: + LocalVariableBinding[] locals = this.scope.locals; + if (locals != null) { + int numLocals = this.scope.localIndex; + for (int i = 0; i < numLocals; i++) { + flowInfo.resetAssignmentInfo(locals[i]); + } + } } } - if (this.scope != currentScope) { - // if block is tracking any resources other than the enclosing 'currentScope', analyse them now: - this.scope.checkUnclosedCloseables(flowInfo, flowContext, null, null); - } - if (this.explicitDeclarations > 0) { - // cleanup assignment info for locals that are scoped to this block: - LocalVariableBinding[] locals = this.scope.locals; - if (locals != null) { - int numLocals = this.scope.localIndex; - for (int i = 0; i < numLocals; i++) { - flowInfo.resetAssignmentInfo(locals[i]); - } + if ((this.bits & ASTNode.SwitchRuleBlock) != 0) { // switch rule blocks don't fall through + if (flowInfo != FlowInfo.DEAD_END) { + flowContext.recordBreakFrom(flowInfo); + return FlowInfo.DEAD_END; } } return flowInfo; diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/SwitchStatement.java b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/SwitchStatement.java index 40a96991762..c18f738f012 100644 --- a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/SwitchStatement.java +++ b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/SwitchStatement.java @@ -97,8 +97,7 @@ public static record SingletonBootstrap(String id, char[] selector, char[] signa // fallthrough public final static int CASE = 0; public final static int FALLTHROUGH = 1; - public final static int ESCAPING = 2; - public final static int BREAKING = 3; + public final static int BREAKING = 2; // Other bits public final static int LabeledRules = ASTNode.Bit1; @@ -432,8 +431,6 @@ else if ((statement.bits & ASTNode.DocumentedFallthrough) == 0) // the case is n } if ((complaintLevel = statement.complainIfUnreachable(caseInits, this.scope, complaintLevel, true)) < Statement.COMPLAINED_UNREACHABLE) { caseInits = statement.analyseCode(this.scope, switchContext, caseInits); - if (caseInits == FlowInfo.DEAD_END) - fallThroughState = ESCAPING; if (compilerOptions.enableSyntacticNullAnalysisForFields) switchContext.expireNullCheckedFieldInfo(); if (compilerOptions.analyseResourceLeaks) diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/Parser.java b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/Parser.java index dffa8893759..f2a4d85db6d 100644 --- a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/Parser.java +++ b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/parser/Parser.java @@ -9441,6 +9441,9 @@ protected void consumeSwitchRule(SwitchRuleKind kind) { expr.bits &= ~ASTNode.InsideExpressionStatement; YieldStatement yieldStatement = new YieldStatement(expr, true, expr.sourceStart, this.endStatementPosition); this.astStack[this.astPtr] = yieldStatement; + } else if (kind == SwitchRuleKind.BLOCK) { + Block block = (Block) this.astStack[this.astPtr]; + block.bits |= ASTNode.SwitchRuleBlock; } concatNodeLists(); } diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/SwitchTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/SwitchTest.java index dadfb333677..b70952ed440 100644 --- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/SwitchTest.java +++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/SwitchTest.java @@ -3539,6 +3539,91 @@ public static void main(String[] args) { "----------\n"); } +// https://github.com/eclipse-jdt/eclipse.jdt.core/issues/3376 +// Incorrect control flow analysis causes statement subsequent to a switch statement to be flagged unreachable under some circumstances +public void testIssue3376() throws Exception { + if (this.complianceLevel < ClassFileConstants.JDK14) + return; + + this.runConformTest(new String[] { + "SwitchTest.java", + """ + public class SwitchTest { + String unreachableCode(String arg) { + String result; + switch (arg) { + case "a" -> { + result = "A"; + } + default -> throw new RuntimeException(arg); + } + return result; // <- ecj reports "Unreachable code" + } + + String unreachableCode2(String arg) { + String result; + switch (arg) { + case "a" -> result = "A"; + default -> throw new RuntimeException(arg); + } + return result; + } + + String unreachableCode3(String arg) { + String result; + switch (arg) { + case "a" -> { + result = "A"; + break; // <- this makes ecj happy + } + default -> throw new RuntimeException(arg); + } + return result; + } + + public static void main(String[] args) { + System.out.println(new SwitchTest().unreachableCode("a")); + System.out.println(new SwitchTest().unreachableCode2("a")); + System.out.println(new SwitchTest().unreachableCode3("a")); + } + + } + """, + }, + "A\nA\nA"); +} + +// https://github.com/eclipse-jdt/eclipse.jdt.core/issues/3376 +// Incorrect control flow analysis causes statement subsequent to a switch statement to be flagged unreachable under some circumstances +public void testIssue3376_2() throws Exception { + if (this.complianceLevel < ClassFileConstants.JDK14) + return; + + this.runNegativeTest(new String[] { + "SwitchTest.java", + """ + public class SwitchTest { + String unreachableCode(String arg) { + String result; + switch (arg) { + case "a" : { + result = "A"; + } + default : throw new RuntimeException(arg); + } + return result; + } + } + """, + }, + "----------\n" + + "1. ERROR in SwitchTest.java (at line 10)\n" + + " return result;\n" + + " ^^^^^^^^^^^^^^\n" + + "Unreachable code\n" + + "----------\n"); +} + public static Class testClass() { return SwitchTest.class; } From c0a418850028a2de4182957b15acd59e6aa41bab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=8A?= =?UTF-8?q?=D1=80=20=D0=9A=D1=83=D1=80=D1=82=D0=B0=D0=BA=D0=BE=D0=B2?= Date: Mon, 2 Dec 2024 15:26:17 +0200 Subject: [PATCH 12/26] Remove unused api problem filter --- org.eclipse.jdt.core/.settings/.api_filters | 24 --------------------- 1 file changed, 24 deletions(-) diff --git a/org.eclipse.jdt.core/.settings/.api_filters b/org.eclipse.jdt.core/.settings/.api_filters index 6f1b56b1b89..52da6aef10b 100644 --- a/org.eclipse.jdt.core/.settings/.api_filters +++ b/org.eclipse.jdt.core/.settings/.api_filters @@ -1,29 +1,5 @@ - - - - - - - - - - - - - - - - - - - - - - - - From 1584cd3540889431b81aff47f820b54f817d5b0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=8A?= =?UTF-8?q?=D1=80=20=D0=9A=D1=83=D1=80=D1=82=D0=B0=D0=BA=D0=BE=D0=B2?= Date: Mon, 2 Dec 2024 15:47:35 +0200 Subject: [PATCH 13/26] Update tycho build to 4.0.10 --- .mvn/extensions.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.mvn/extensions.xml b/.mvn/extensions.xml index 916d3db10cc..e2650078048 100644 --- a/.mvn/extensions.xml +++ b/.mvn/extensions.xml @@ -3,6 +3,6 @@ org.eclipse.tycho tycho-build - 4.0.7 + 4.0.10 \ No newline at end of file From 074bbd3c90edf4e1f8aabfd72d8b8845b5998430 Mon Sep 17 00:00:00 2001 From: Snjeza Date: Tue, 3 Dec 2024 06:30:29 +0100 Subject: [PATCH 14/26] Completion for unimported types doesn't work. - use MissingTypesGuesser to select all missing types and offer their completion - Fixes #1502 --- .../core/tests/model/CompletionTests18.java | 67 +++++++++++++++++++ .../internal/codeassist/CompletionEngine.java | 44 ++++++++---- .../codeassist/MissingTypesGuesser.java | 6 ++ .../complete/CompletionOnMemberAccess.java | 6 +- 4 files changed, 108 insertions(+), 15 deletions(-) diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests18.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests18.java index 418eb91e4dc..00e1932417c 100644 --- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests18.java +++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests18.java @@ -7171,5 +7171,72 @@ public static void foo() { + (R_DEFAULT + R_RESOLVED + R_INTERESTING + R_CASE + R_UNQUALIFIED + R_NON_RESTRICTED) + "}", result); } +// https://github.com/eclipse-jdt/eclipse.jdt.core/issues/1502 +public void testGH1502() throws JavaModelException { + this.workingCopies = new ICompilationUnit[1]; + this.workingCopies[0] = getWorkingCopy("/Completion/src/X.java", """ + public class X { + void foo() { + new ArrayList<>(). + } + } + """); + CompletionTestsRequestor2 requestor = new CompletionTestsRequestor2(true); + requestor.allowAllRequiredProposals(); + + String str = this.workingCopies[0].getSource(); + String completeBehind = "ArrayList<>()."; + int cursorLocation = str.lastIndexOf(completeBehind) + completeBehind.length(); + this.workingCopies[0].codeComplete(cursorLocation, requestor, this.wcOwner, new NullProgressMonitor()); + + String result = requestor.getResults(); + assertResults( + "add[METHOD_REF]{add(), Ljava.util.ArrayList<>;, (ITE;)V, add, (arg0, arg1), 61}\n" + + "add[METHOD_REF]{add(), Ljava.util.ArrayList<>;, (TE;)Z, add, (arg0), 61}\n" + + "addAll[METHOD_REF]{addAll(), Ljava.util.ArrayList<>;, (ILjava.util.Collection<+TE;>;)Z, addAll, (arg0, arg1), 61}\n" + + "addAll[METHOD_REF]{addAll(), Ljava.util.ArrayList<>;, (Ljava.util.Collection<+TE;>;)Z, addAll, (arg0), 61}\n" + + "clear[METHOD_REF]{clear(), Ljava.util.ArrayList<>;, ()V, clear, null, 61}\n" + + "clone[METHOD_REF]{clone(), Ljava.util.ArrayList<>;, ()Ljava.lang.Object;, clone, null, 61}\n" + + "contains[METHOD_REF]{contains(), Ljava.util.ArrayList<>;, (Ljava.lang.Object;)Z, contains, (arg0), 61}\n" + + "containsAll[METHOD_REF]{containsAll(), Ljava.util.List;, (Ljava.util.Collection<*>;)Z, containsAll, (arg0), 61}\n" + + "ensureCapacity[METHOD_REF]{ensureCapacity(), Ljava.util.ArrayList<>;, (I)V, ensureCapacity, (arg0), 61}\n" + + "equals[METHOD_REF]{equals(), Ljava.util.List;, (Ljava.lang.Object;)Z, equals, (arg0), 61}\n" + + "finalize[METHOD_REF]{finalize(), Ljava.lang.Object;, ()V, finalize, null, 61}\n" + + "forEach[METHOD_REF]{forEach(), Ljava.util.ArrayList<>;, (Ljava.util.function.Consumer<-TE;>;)V, forEach, (arg0), 61}\n" + + "get[METHOD_REF]{get(), Ljava.util.ArrayList<>;, (I)TE;, get, (arg0), 61}\n" + + "getClass[METHOD_REF]{getClass(), Ljava.lang.Object;, ()Ljava.lang.Class<*>;, getClass, null, 61}\n" + + "hashCode[METHOD_REF]{hashCode(), Ljava.util.List;, ()I, hashCode, null, 61}\n" + + "indexOf[METHOD_REF]{indexOf(), Ljava.util.ArrayList<>;, (Ljava.lang.Object;)I, indexOf, (arg0), 61}\n" + + "isEmpty[METHOD_REF]{isEmpty(), Ljava.util.ArrayList<>;, ()Z, isEmpty, null, 61}\n" + + "iterator[METHOD_REF]{iterator(), Ljava.util.ArrayList<>;, ()Ljava.util.Iterator;, iterator, null, 61}\n" + + "lastIndexOf[METHOD_REF]{lastIndexOf(), Ljava.util.ArrayList<>;, (Ljava.lang.Object;)I, lastIndexOf, (arg0), 61}\n" + + "listIterator[METHOD_REF]{listIterator(), Ljava.util.ArrayList<>;, ()Ljava.util.ListIterator;, listIterator, null, 61}\n" + + "listIterator[METHOD_REF]{listIterator(), Ljava.util.ArrayList<>;, (I)Ljava.util.ListIterator;, listIterator, (arg0), 61}\n" + + "modCount[FIELD_REF]{modCount, Ljava.util.AbstractList;, I, modCount, null, 61}\n" + + "notify[METHOD_REF]{notify(), Ljava.lang.Object;, ()V, notify, null, 61}\n" + + "notifyAll[METHOD_REF]{notifyAll(), Ljava.lang.Object;, ()V, notifyAll, null, 61}\n" + + "parallelStream[METHOD_REF]{parallelStream(), Ljava.util.Collection;, ()Ljava.util.stream.Stream;, parallelStream, null, 61}\n" + + "remove[METHOD_REF]{remove(), Ljava.util.ArrayList<>;, (I)TE;, remove, (arg0), 61}\n" + + "remove[METHOD_REF]{remove(), Ljava.util.ArrayList<>;, (Ljava.lang.Object;)Z, remove, (arg0), 61}\n" + + "removeAll[METHOD_REF]{removeAll(), Ljava.util.ArrayList<>;, (Ljava.util.Collection<*>;)Z, removeAll, (arg0), 61}\n" + + "removeIf[METHOD_REF]{removeIf(), Ljava.util.ArrayList<>;, (Ljava.util.function.Predicate<-TE;>;)Z, removeIf, (arg0), 61}\n" + + "removeRange[METHOD_REF]{removeRange(), Ljava.util.ArrayList<>;, (II)V, removeRange, (arg0, arg1), 61}\n" + + "replaceAll[METHOD_REF]{replaceAll(), Ljava.util.ArrayList<>;, (Ljava.util.function.UnaryOperator;)V, replaceAll, (arg0), 61}\n" + + "retainAll[METHOD_REF]{retainAll(), Ljava.util.ArrayList<>;, (Ljava.util.Collection<*>;)Z, retainAll, (arg0), 61}\n" + + "set[METHOD_REF]{set(), Ljava.util.ArrayList<>;, (ITE;)TE;, set, (arg0, arg1), 61}\n" + + "size[METHOD_REF]{size(), Ljava.util.ArrayList<>;, ()I, size, null, 61}\n" + + "sort[METHOD_REF]{sort(), Ljava.util.ArrayList<>;, (Ljava.util.Comparator<-TE;>;)V, sort, (arg0), 61}\n" + + "spliterator[METHOD_REF]{spliterator(), Ljava.util.ArrayList<>;, ()Ljava.util.Spliterator;, spliterator, null, 61}\n" + + "stream[METHOD_REF]{stream(), Ljava.util.Collection;, ()Ljava.util.stream.Stream;, stream, null, 61}\n" + + "subList[METHOD_REF]{subList(), Ljava.util.ArrayList<>;, (II)Ljava.util.List;, subList, (arg0, arg1), 61}\n" + + "toArray[METHOD_REF]{toArray(), Ljava.util.ArrayList<>;, ()[Ljava.lang.Object;, toArray, null, 61}\n" + + "toArray[METHOD_REF]{toArray(), Ljava.util.ArrayList<>;, ([TT;)[TT;, toArray, (arg0), 61}\n" + + "toString[METHOD_REF]{toString(), Ljava.util.AbstractCollection;, ()Ljava.lang.String;, toString, null, 61}\n" + + "trimToSize[METHOD_REF]{trimToSize(), Ljava.util.ArrayList<>;, ()V, trimToSize, null, 61}\n" + + "wait[METHOD_REF]{wait(), Ljava.lang.Object;, ()V, wait, null, 61}\n" + + "wait[METHOD_REF]{wait(), Ljava.lang.Object;, (J)V, wait, (millis), 61}\n" + + "wait[METHOD_REF]{wait(), Ljava.lang.Object;, (JI)V, wait, (millis, nanos), 61}", + result); +} } diff --git a/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/CompletionEngine.java b/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/CompletionEngine.java index a6267cf13a9..db6329a306b 100644 --- a/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/CompletionEngine.java +++ b/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/CompletionEngine.java @@ -3012,23 +3012,39 @@ private void completionOnMemberAccess(ASTNode astNode, ASTNode enclosingNode, Bi this.completionToken = access.token; if (qualifiedBinding.problemId() == ProblemReasons.NotFound) { - // complete method members with missing return type - // class X { - // Missing f() {return null;} - // void foo() { - // f().| - // } - // } if (this.assistNodeInJavadoc == 0 && (this.requestor.isAllowingRequiredProposals(CompletionProposal.FIELD_REF, CompletionProposal.TYPE_REF) || this.requestor.isAllowingRequiredProposals(CompletionProposal.METHOD_REF, CompletionProposal.TYPE_REF))) { - ProblemMethodBinding problemMethodBinding = (ProblemMethodBinding) qualifiedBinding; - findFieldsAndMethodsFromMissingReturnType( - problemMethodBinding.selector, - problemMethodBinding.parameters, - scope, - access, - insideTypeAnnotation); + if (qualifiedBinding instanceof ProblemMethodBinding) { + // complete method members with missing return type + // class X { + // Missing f() {return null;} + // void foo() { + // f().| + // } + // } + ProblemMethodBinding problemMethodBinding = (ProblemMethodBinding) qualifiedBinding; + findFieldsAndMethodsFromMissingReturnType(problemMethodBinding.selector, + problemMethodBinding.parameters, scope, access, insideTypeAnnotation); + } else if (access.receiver instanceof AllocationExpression expr) { + // complete on missing type + // class X { + // void foo() { + // new ArrayList().| + // } + // } + TypeReference type = expr.type; + char[] token = null; + if (type instanceof SingleTypeReference ref) { + token = ref.token; + } + if (type instanceof QualifiedTypeReference ref) { + token = ref.tokens[0]; + } + if (token != null) { + findFieldsAndMethodsFromMissingType(type, scope, access, scope); + } + } } } else { if (!access.isInsideAnnotation) { diff --git a/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/MissingTypesGuesser.java b/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/MissingTypesGuesser.java index 532df165691..5975c4ef9cd 100644 --- a/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/MissingTypesGuesser.java +++ b/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/MissingTypesGuesser.java @@ -347,6 +347,9 @@ private TypeReference convert(ParameterizedQualifiedTypeReference typeRef) { this.substituedTypes.put(convertedType, typeNames); this.originalTypes.put(convertedType, typeName); this.combinationsCount *= typeNames.length; + if (length > 0 && typeArguments[length - 1] == TypeReference.NO_TYPE_ARGUMENTS) { + convertedType.bits |= ASTNode.IsDiamond; + } return convertedType; } } @@ -392,6 +395,9 @@ private TypeReference convert(ParameterizedSingleTypeReference typeRef) { this.substituedTypes.put(convertedType, typeNames); this.originalTypes.put(convertedType, typeName); this.combinationsCount *= typeNames.length; + if (typeArguments == TypeReference.NO_TYPE_ARGUMENTS) { + convertedType.bits |= ASTNode.IsDiamond; + } return convertedType; } } diff --git a/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMemberAccess.java b/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMemberAccess.java index 8a09e4418c0..a7879689e78 100644 --- a/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMemberAccess.java +++ b/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionOnMemberAccess.java @@ -86,8 +86,12 @@ public TypeBinding resolveType(BlockScope scope) { } } - if (this.actualReceiverType == null || !this.actualReceiverType.isValidBinding()) + if (this.actualReceiverType == null || !this.actualReceiverType.isValidBinding()) { + if (this.receiver.resolvedType != null && this.receiver.resolvedType.problemId() == ProblemReasons.NotFound) { + throw new CompletionNodeFound(this, this.receiver.resolvedType, scope); + } throw new CompletionNodeFound(); + } else throw new CompletionNodeFound(this, this.actualReceiverType, scope); // array types are passed along to find the length field From eaff460a9348f868889de3058bb6ef212cabeb37 Mon Sep 17 00:00:00 2001 From: Srikanth Sankaran <131454720+srikanth-sankaran@users.noreply.github.com> Date: Tue, 3 Dec 2024 15:07:33 +0530 Subject: [PATCH 15/26] [Enhanced Switch] Wrong error message: Cannot switch on a value of type Integer... at levels that don't support enhanced switch (#3380) * Fixes https://github.com/eclipse-jdt/eclipse.jdt.core/issues/3379 --- .../compiler/ast/SwitchStatement.java | 43 +++---- .../tests/compiler/regression/SwitchTest.java | 105 ++++++++++++++++++ 2 files changed, 118 insertions(+), 30 deletions(-) diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/SwitchStatement.java b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/SwitchStatement.java index c18f738f012..daa9872434f 100644 --- a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/SwitchStatement.java +++ b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/SwitchStatement.java @@ -1029,16 +1029,12 @@ void gatherLabelExpression(LabelExpression labelExpression) { public void resolve(BlockScope upperScope) { try { TypeBinding expressionType = this.expression.resolveType(upperScope); + if (expressionType != null && !expressionType.isValidBinding()) + expressionType = null; // fault-tolerance: ignore further type mismatch from label expressions CompilerOptions compilerOptions = upperScope.compilerOptions(); if (expressionType != null) { this.expression.computeConversion(upperScope, expressionType, expressionType); checkType: { - - if (!expressionType.isValidBinding()) { - expressionType = null; // fault-tolerance: ignore type mismatch from constants from hereon - break checkType; - } - if (expressionType.isBaseType()) { if (JavaFeature.PRIMITIVES_IN_PATTERNS.isSupported(compilerOptions)) this.isPrimitiveSwitch = true; @@ -1047,28 +1043,25 @@ public void resolve(BlockScope upperScope) { if (expressionType.isCompatibleWith(TypeBinding.INT)) break checkType; } - if (expressionType.id == TypeIds.T_JavaLangString || expressionType.isEnum() || upperScope.isBoxingCompatibleWith(expressionType, TypeBinding.INT)) break checkType; - - if (!JavaFeature.PATTERN_MATCHING_IN_SWITCH.isSupported(compilerOptions) || (expressionType.isBaseType() && expressionType.id != T_null && expressionType.id != T_void)) { + if (JavaFeature.PATTERN_MATCHING_IN_SWITCH.isSupported(compilerOptions) && (!expressionType.isBaseType() || expressionType.id == T_null || expressionType.id == T_void)) { + this.isNonTraditional = true; + } else { if (!this.isPrimitiveSwitch) { // when isPrimitiveSwitch is set it is approved above upperScope.problemReporter().incorrectSwitchType(this.expression, expressionType); expressionType = null; // fault-tolerance: ignore type mismatch from constants from hereon } - } else { - this.isNonTraditional = true; } } } this.scope = new BlockScope(upperScope); if (expressionType != null) - reserveSecretVariablesSlots(); + reserveSecretVariablesSlot(); else this.switchBits |= InvalidSelector; - if (this.statements != null) { preprocess(); // make a pass over the switch block and allocate vectors. LocalVariableBinding[] patternVariables = NO_VARIABLES; @@ -1096,18 +1089,10 @@ public void resolve(BlockScope upperScope) { if (expressionType != null) { if (!expressionType.isBaseType() && upperScope.isBoxingCompatibleWith(expressionType, TypeBinding.INT)) { - if (this.containsPatterns || this.containsNull) { - if (!JavaFeature.PATTERN_MATCHING_IN_SWITCH.isSupported(compilerOptions) || (expressionType.isBaseType() && expressionType.id != T_null && expressionType.id != T_void)) { - if (!this.isPrimitiveSwitch) { // when isPrimitiveSwitch is set it is approved above - upperScope.problemReporter().incorrectSwitchType(this.expression, expressionType); - this.switchBits |= InvalidSelector; - expressionType = null; // fault-tolerance: ignore type mismatch from constants from hereon - } - } - } else + if (!this.containsPatterns && !this.containsNull) this.expression.computeConversion(upperScope, TypeBinding.INT, expressionType); } - releaseUnusedSecretVariables(); + releaseUnusedSecretVariable(); complainIfNotExhaustiveSwitch(upperScope, expressionType, compilerOptions); } @@ -1148,12 +1133,10 @@ private void complainIfNotExhaustiveSwitch(BlockScope upperScope, TypeBinding se } if (this.defaultCase == null) { - if (this instanceof SwitchExpression // complained about elsewhere, don't also bark here - || compilerOptions.getSeverity(CompilerOptions.MissingDefaultCase) == ProblemSeverities.Ignore) { + if (this instanceof SwitchExpression || compilerOptions.getSeverity(CompilerOptions.MissingDefaultCase) == ProblemSeverities.Ignore) // complained about elsewhere, don't also bark here upperScope.methodScope().hasMissingSwitchDefault = true; - } else { + else upperScope.problemReporter().missingDefaultCase(this, true, selectorType); - } } return; } @@ -1311,13 +1294,13 @@ private boolean needPatternDispatchCopy() { return !(eType.isPrimitiveOrBoxedPrimitiveType() || eType.isEnum() || eType.id == TypeIds.T_JavaLangString); // classic selectors } - private void reserveSecretVariablesSlots() { // may be released later if unused. + private void reserveSecretVariablesSlot() { // may be released later if unused. this.selector = new LocalVariableBinding(SecretSelectorVariableName, this.scope.getJavaLangObject(), ClassFileConstants.AccDefault, false); this.scope.addLocalVariable(this.selector); this.selector.setConstant(Constant.NotAConstant); } - private void releaseUnusedSecretVariables() { + private void releaseUnusedSecretVariable() { if (this.selector != null) { if (this.expression.resolvedType.id == T_JavaLangString && !this.isNonTraditional) { this.selector.useFlag = LocalVariableBinding.USED; @@ -1325,7 +1308,7 @@ private void releaseUnusedSecretVariables() { } else if (needPatternDispatchCopy()) { this.selector.useFlag = LocalVariableBinding.USED; this.selector.type = this.expression.resolvedType; - } + } // else gets released by virtue of not being tagged USED. } } protected void reportMissingEnumConstantCase(BlockScope upperScope, FieldBinding enumConstant) { diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/SwitchTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/SwitchTest.java index b70952ed440..e3c4394ad36 100644 --- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/SwitchTest.java +++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/SwitchTest.java @@ -3624,6 +3624,111 @@ String unreachableCode(String arg) { "----------\n"); } +// https://github.com/eclipse-jdt/eclipse.jdt.core/issues/3379 +// [Enhanced Switch] Wrong error message: Cannot switch on a value of type Integer... at levels that don't support enhanced switch +public void testIssue3379() throws Exception { + if (this.complianceLevel < ClassFileConstants.JDK14) + return; // uses switch rules. + String [] sources = new String[] { + "X.java", + """ + public class X { + public static void main(String[] args) { + Integer i = 42; + switch (i) { + case null -> System.out.println("Null"); + default -> System.out.println("Default: " + i); + } + } + } + """, + }; + + if (this.complianceLevel < ClassFileConstants.JDK21) { + this.runNegativeTest(sources, + "----------\n" + + "1. ERROR in X.java (at line 5)\n" + + " case null -> System.out.println(\"Null\");\n" + + " ^^^^\n" + + "The Java feature 'Pattern Matching in Switch' is only available with source level 21 and above\n" + + "----------\n"); + } else { + this.runConformTest(sources, "Default: 42"); + } +} + +// https://github.com/eclipse-jdt/eclipse.jdt.core/issues/3379 +// [Enhanced Switch] Wrong error message: Cannot switch on a value of type Integer... at levels that don't support enhanced switch +public void testIssue3379_2() throws Exception { + if (this.complianceLevel < ClassFileConstants.JDK14) + return; // uses switch rules. + String [] sources = new String[] { + "X.java", + """ + public class X { + public static void main(String[] args) { + Long i = 42l; + switch (i) { + case null -> System.out.println("Null"); + default -> System.out.println("Default: " + i); + } + } + } + """, + }; + + if (this.complianceLevel < ClassFileConstants.JDK21) { + this.runNegativeTest(sources, + "----------\n" + + "1. ERROR in X.java (at line 4)\n" + + " switch (i) {\n" + + " ^\n" + + "Cannot switch on a value of type Long. Only convertible int values, strings or enum variables are permitted\n" + + "----------\n" + + "2. ERROR in X.java (at line 5)\n" + + " case null -> System.out.println(\"Null\");\n" + + " ^^^^\n" + + "The Java feature 'Pattern Matching in Switch' is only available with source level 21 and above\n" + + "----------\n"); + } else { + this.runConformTest(sources, "Default: 42"); + } +} + +// https://github.com/eclipse-jdt/eclipse.jdt.core/issues/3379 +// [Enhanced Switch] Wrong error message: Cannot switch on a value of type Integer... at levels that don't support enhanced switch +public void testIssue3379_3() throws Exception { + if (this.complianceLevel < ClassFileConstants.JDK14) + return; // uses switch rules. + + String [] sources = new String[] { + "X.java", + """ + public class X { + public static void main(String[] args) { + Short i = 42; + switch (i) { + case null -> System.out.println("Null"); + default -> System.out.println("Default: " + i); + } + } + } + """, + }; + + if (this.complianceLevel < ClassFileConstants.JDK21) { + this.runNegativeTest(sources, + "----------\n" + + "1. ERROR in X.java (at line 5)\n" + + " case null -> System.out.println(\"Null\");\n" + + " ^^^^\n" + + "The Java feature 'Pattern Matching in Switch' is only available with source level 21 and above\n" + + "----------\n"); + } else { + this.runConformTest(sources, "Default: 42"); + } +} + public static Class testClass() { return SwitchTest.class; } From c002247da9c00873b55e1b247c1eb725cda46142 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Kubitz?= Date: Thu, 14 Nov 2024 09:48:38 +0100 Subject: [PATCH 16/26] ASTNode: improve IllegalArgumentException for more information https://github.com/eclipse-jdt/eclipse.jdt.core/issues/3309 --- .../dom/org/eclipse/jdt/core/dom/ASTNode.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/ASTNode.java b/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/ASTNode.java index 7159ce3ba00..a4ec4c4691e 100644 --- a/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/ASTNode.java +++ b/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/ASTNode.java @@ -3443,10 +3443,10 @@ public final int getLength() { */ public final void setSourceRange(int startPosition, int length) { if (startPosition >= 0 && length < 0) { - throw new IllegalArgumentException(); + throw new IllegalArgumentException("negative length=" + length + " startPosition= " + startPosition); //$NON-NLS-1$ //$NON-NLS-2$ } if (startPosition < 0 && length != 0) { - throw new IllegalArgumentException(); + throw new IllegalArgumentException("negative startPosition=" + startPosition + " length=" + length); //$NON-NLS-1$ //$NON-NLS-2$ } // source positions are not considered a structural property // but we protect them nevertheless From 400bdddf8bbd022b48526df01ba01d61c797e140 Mon Sep 17 00:00:00 2001 From: Stephan Herrmann Date: Tue, 3 Dec 2024 18:33:03 +0100 Subject: [PATCH 17/26] [Performance] Full build takes more time since 2024-09 (type inference) (#3384) optimize 1: + record only pairs where both types are parameterized optimize 2: + stop traversal when both types are the same Fixes https://github.com/eclipse-jdt/eclipse.jdt.core/issues/3327 --- .../org/eclipse/jdt/internal/compiler/lookup/BoundSet.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/BoundSet.java b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/BoundSet.java index d4d6ae852a2..871f9fe03db 100644 --- a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/BoundSet.java +++ b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/BoundSet.java @@ -1267,11 +1267,14 @@ protected List> allSuperPairsWithCommonGenericType(TypeBinding if (s == null || s.id == TypeIds.T_JavaLangObject || t == null || t.id == TypeIds.T_JavaLangObject) return Collections.emptyList(); List> result = new ArrayList<>(); - if (TypeBinding.equalsEquals(s.original(), t.original())) { + if (s.isParameterizedType() && t.isParameterizedType() // optimization #1: clients of this method only want to compare type arguments + && TypeBinding.equalsEquals(s.original(), t.original())) { result.add(new Pair<>(s, t)); } + if (TypeBinding.equalsEquals(s, t)) + return result; // optimization #2: nothing interesting above equal types TypeBinding tSuper = t.findSuperTypeOriginatingFrom(s); - if (tSuper != null) { + if (tSuper != null && s.isParameterizedType() && tSuper.isParameterizedType()) { // optimization #1 again result.add(new Pair<>(s, tSuper)); } result.addAll(allSuperPairsWithCommonGenericType(s.superclass(), t)); From 40ddacf26d187e663a69c2937640da8d94888b48 Mon Sep 17 00:00:00 2001 From: Stephan Herrmann Date: Tue, 3 Dec 2024 20:17:28 +0100 Subject: [PATCH 18/26] Annotation-based analysis breaks when annotations are not on the build path (#3374) + tag elements annotated with a missing type relevant for analysis + report the missing annotation at client sites when possibly relevant + also: treat Closeable lambda as fresh resource Fixes https://github.com/eclipse-jdt/eclipse.jdt.core/ --- JCL/jclMin23/src/java/io/InputStream.java | 4 +- .../src/java/lang/AssertionError.java | 18 + JCL/jclMin23/src/java/lang/AutoCloseable.java | 4 + .../lang/IncompatibleClassChangeError.java | 2 + JCL/jclMin23/src/java/lang/LinkageError.java | 4 +- .../src/java/lang/NoClassDefFoundError.java | 2 + .../src/java/lang/NoSuchFieldError.java | 2 + .../java/lang/invoke/LambdaMetafactory.java | 3 + .../META-INF/MANIFEST.MF | 2 +- org.eclipse.jdt.core.compiler.batch/pom.xml | 2 +- .../eclipse/jdt/core/compiler/IProblem.java | 6 + .../jdt/internal/compiler/ast/ASTNode.java | 27 + .../compiler/ast/FakedTrackingVariable.java | 25 +- .../jdt/internal/compiler/ast/Invocation.java | 6 +- .../compiler/lookup/ExtendedTagBits.java | 2 + .../compiler/lookup/FieldBinding.java | 3 +- .../compiler/lookup/LookupEnvironment.java | 21 + .../compiler/lookup/MethodBinding.java | 12 + .../jdt/internal/compiler/lookup/TypeIds.java | 2 + .../compiler/problem/ProblemReporter.java | 53 ++ .../compiler/problem/messages.properties | 3 + .../regression/CompilerInvocationTests.java | 6 + .../ResourceLeakAnnotatedTests.java | 129 +++++ .../JCL/jclMin23.jar | Bin 29552 -> 30936 bytes .../JCL/jclMin23src.zip | Bin 21602 -> 22562 bytes .../core/tests/model/AllJavaModelTests.java | 3 + .../model/OwningAnnotationModelTests.java | 519 ++++++++++++++++++ 27 files changed, 849 insertions(+), 11 deletions(-) create mode 100644 JCL/jclMin23/src/java/lang/AssertionError.java create mode 100644 JCL/jclMin23/src/java/lang/AutoCloseable.java create mode 100644 JCL/jclMin23/src/java/lang/invoke/LambdaMetafactory.java create mode 100644 org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/OwningAnnotationModelTests.java diff --git a/JCL/jclMin23/src/java/io/InputStream.java b/JCL/jclMin23/src/java/io/InputStream.java index 12017e76a4b..ff133a644a7 100644 --- a/JCL/jclMin23/src/java/io/InputStream.java +++ b/JCL/jclMin23/src/java/io/InputStream.java @@ -1,5 +1,5 @@ package java.io; -public class InputStream { - +public class InputStream implements AutoCloseable { + public void close() {} } diff --git a/JCL/jclMin23/src/java/lang/AssertionError.java b/JCL/jclMin23/src/java/lang/AssertionError.java new file mode 100644 index 00000000000..c2032d58df8 --- /dev/null +++ b/JCL/jclMin23/src/java/lang/AssertionError.java @@ -0,0 +1,18 @@ +package java.lang; + +public class AssertionError extends Error { + + static final long serialVersionUID = 1L; + + public AssertionError(java.lang.String s) { + super(s); + } + + public AssertionError(java.lang.String s, java.lang.Throwable cause) { + super(s, cause); + } + + public AssertionError() { + } + +} diff --git a/JCL/jclMin23/src/java/lang/AutoCloseable.java b/JCL/jclMin23/src/java/lang/AutoCloseable.java new file mode 100644 index 00000000000..46c293d3be9 --- /dev/null +++ b/JCL/jclMin23/src/java/lang/AutoCloseable.java @@ -0,0 +1,4 @@ +package java.lang; +public interface AutoCloseable { + void close() throws Exception; +} \ No newline at end of file diff --git a/JCL/jclMin23/src/java/lang/IncompatibleClassChangeError.java b/JCL/jclMin23/src/java/lang/IncompatibleClassChangeError.java index b8e171ea5b6..eaa29701a53 100644 --- a/JCL/jclMin23/src/java/lang/IncompatibleClassChangeError.java +++ b/JCL/jclMin23/src/java/lang/IncompatibleClassChangeError.java @@ -3,6 +3,8 @@ public class IncompatibleClassChangeError extends LinkageError { + static final long serialVersionUID = 1L; + public IncompatibleClassChangeError () { super(); } diff --git a/JCL/jclMin23/src/java/lang/LinkageError.java b/JCL/jclMin23/src/java/lang/LinkageError.java index 72ee8ffbd11..26dc1290549 100644 --- a/JCL/jclMin23/src/java/lang/LinkageError.java +++ b/JCL/jclMin23/src/java/lang/LinkageError.java @@ -3,7 +3,9 @@ public class LinkageError extends Error { - public LinkageError() { + static final long serialVersionUID = 1L; + + public LinkageError() { super(); } diff --git a/JCL/jclMin23/src/java/lang/NoClassDefFoundError.java b/JCL/jclMin23/src/java/lang/NoClassDefFoundError.java index 80b2dfed6d6..790f4e5b4ed 100644 --- a/JCL/jclMin23/src/java/lang/NoClassDefFoundError.java +++ b/JCL/jclMin23/src/java/lang/NoClassDefFoundError.java @@ -3,6 +3,8 @@ public class NoClassDefFoundError extends LinkageError { + static final long serialVersionUID = 1L; + public NoClassDefFoundError() { super(); } diff --git a/JCL/jclMin23/src/java/lang/NoSuchFieldError.java b/JCL/jclMin23/src/java/lang/NoSuchFieldError.java index 0ce8c8ebaf4..db00e4f6cab 100644 --- a/JCL/jclMin23/src/java/lang/NoSuchFieldError.java +++ b/JCL/jclMin23/src/java/lang/NoSuchFieldError.java @@ -3,6 +3,8 @@ public class NoSuchFieldError extends IncompatibleClassChangeError { + static final long serialVersionUID = 1L; + public NoSuchFieldError() { super(); } diff --git a/JCL/jclMin23/src/java/lang/invoke/LambdaMetafactory.java b/JCL/jclMin23/src/java/lang/invoke/LambdaMetafactory.java new file mode 100644 index 00000000000..b8d89314345 --- /dev/null +++ b/JCL/jclMin23/src/java/lang/invoke/LambdaMetafactory.java @@ -0,0 +1,3 @@ +package java.lang.invoke; +public class LambdaMetafactory { +} \ No newline at end of file diff --git a/org.eclipse.jdt.core.compiler.batch/META-INF/MANIFEST.MF b/org.eclipse.jdt.core.compiler.batch/META-INF/MANIFEST.MF index 53cc25974bc..d501f898fb4 100644 --- a/org.eclipse.jdt.core.compiler.batch/META-INF/MANIFEST.MF +++ b/org.eclipse.jdt.core.compiler.batch/META-INF/MANIFEST.MF @@ -3,7 +3,7 @@ Main-Class: org.eclipse.jdt.internal.compiler.batch.Main Bundle-ManifestVersion: 2 Bundle-Name: Eclipse Compiler for Java(TM) Bundle-SymbolicName: org.eclipse.jdt.core.compiler.batch -Bundle-Version: 3.40.100.qualifier +Bundle-Version: 3.41.0.qualifier Bundle-ClassPath: . Bundle-Vendor: Eclipse.org Automatic-Module-Name: org.eclipse.jdt.core.compiler.batch diff --git a/org.eclipse.jdt.core.compiler.batch/pom.xml b/org.eclipse.jdt.core.compiler.batch/pom.xml index fa9902c1ee5..79ac576539f 100644 --- a/org.eclipse.jdt.core.compiler.batch/pom.xml +++ b/org.eclipse.jdt.core.compiler.batch/pom.xml @@ -17,7 +17,7 @@ 4.35.0-SNAPSHOT org.eclipse.jdt.core.compiler.batch - 3.40.100-SNAPSHOT + 3.41.0-SNAPSHOT eclipse-plugin diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/core/compiler/IProblem.java b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/core/compiler/IProblem.java index 42d2fd9d5de..289c958a32c 100644 --- a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/core/compiler/IProblem.java +++ b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/core/compiler/IProblem.java @@ -1995,6 +1995,12 @@ public interface IProblem { * @since 3.36 */ int NullityUncheckedTypeAnnotation = Internal + 986; + /** @since 3.41 */ + int MessageSendWithUnresolvedOwningAnnotation = Internal + 987; + /** @since 3.41 */ + int ParameterWithUnresolvedOwningAnnotation = Internal + 988; + /** @since 3.41 */ + int FieldWithUnresolvedOwningAnnotation = Internal + 989; // Java 8 work diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/ASTNode.java b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/ASTNode.java index 14439b68f0c..1adf20c1bc7 100644 --- a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/ASTNode.java +++ b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/ASTNode.java @@ -1001,6 +1001,7 @@ public static void resolveAnnotations(BlockScope scope, Annotation[] sourceAnnot if (annotations != null) { annotations[i] = annotation.getCompilerAnnotation(); } + tagMissingAnalysisAnnotation(scope, recipient, annotation); } } @@ -1076,6 +1077,32 @@ public static void resolveAnnotations(BlockScope scope, Annotation[] sourceAnnot return annotations; } + private static void tagMissingAnalysisAnnotation(Scope scope, Binding recipient, Annotation annotation) { + long extendedTagBits = scope.environment().checkForMissingAnalysisAnnotation(annotation.resolvedType); + if (extendedTagBits != 0) { + if (recipient instanceof MethodBinding method) { + method.extendedTagBits |= extendedTagBits; + } else if (recipient instanceof VariableBinding variable) { + if (extendedTagBits == ExtendedTagBits.HasMissingOwningAnnotation + && scope instanceof MethodScope methodScope + && variable.isParameter() + && variable instanceof LocalVariableBinding local + && local.declaration instanceof Argument arg) + { + Argument[] arguments = methodScope.referenceMethod().arguments; + for (int j=0;j < arguments.length;j++){ + if (arguments[j] == arg) { + methodScope.referenceMethodBinding().original().markMissingOwningAnnotationOnParameter(j); + break; + } + } + } else if (variable instanceof FieldBinding field) { + field.extendedTagBits |= extendedTagBits; + } + } + } + } + /** Resolve JSR308 annotations on a type reference, array creation expression or a wildcard. Type parameters go directly to the method/ctor, By construction the bindings associated with QTR, PQTR etc get resolved first and then annotations for different levels get resolved and applied at one go. Likewise for multidimensional arrays. diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/FakedTrackingVariable.java b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/FakedTrackingVariable.java index 56ce1d92bf5..f48813dd78f 100644 --- a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/FakedTrackingVariable.java +++ b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/FakedTrackingVariable.java @@ -342,6 +342,18 @@ public static FakedTrackingVariable preConnectTrackerAcrossAssignment(ASTNode lo } return closeTracker; } + static void checkMethodForMissingAnnotation(MessageSend messageSend, Scope scope) { + if ((messageSend.binding.original().extendedTagBits & ExtendedTagBits.HasMissingOwningAnnotation) != 0) + scope.problemReporter().messageWithUnresolvedOwningAnnotation(messageSend, scope.environment()); + } + static void checkParameterForMissingAnnotation(ASTNode location, MethodBinding method, int rank, Scope scope) { + if (method != null && method.parameterHasMissingOwningAnnotation(rank)) + scope.problemReporter().parameterWithUnresolvedOwningAnnotation(location, method.original(), rank, scope.environment()); + } + static void checkFieldForMissingAnnotation(ASTNode location, FieldBinding fieldBinding, Scope scope) { + if (fieldBinding != null && (fieldBinding.extendedTagBits & ExtendedTagBits.HasMissingOwningAnnotation) != 0) + scope.problemReporter().fieldWithUnresolvedOwningAnnotation(location, fieldBinding, scope.environment()); + } private static boolean containsAllocation(SwitchExpression location) { for (Expression re : location.resultExpressions()) { @@ -510,6 +522,7 @@ public static FlowInfo analyseCloseableAcquisition(BlockScope scope, FlowInfo fl } else { // regular resource FakedTrackingVariable tracker = acquisition.closeTracker; if (scope.compilerOptions().isAnnotationBasedResourceAnalysisEnabled) { + checkMethodForMissingAnnotation(acquisition, scope); long owningTagBits = acquisition.binding.tagBits & TagBits.AnnotationOwningMASK; int initialNullStatus = (owningTagBits == TagBits.AnnotationNotOwning) ? FlowInfo.NON_NULL : FlowInfo.NULL; if (tracker == null) { @@ -839,6 +852,7 @@ public static void handleResourceFieldAssignment(BlockScope scope, FlowInfo flow field = fieldReference.binding; } if (field != null&& (field.tagBits & TagBits.AnnotationNotOwning) == 0) { // assignment to @NotOwned has no meaning + checkFieldForMissingAnnotation(lhs, field, scope); if ((field.tagBits & TagBits.AnnotationOwning) != 0) { rhsTrackVar.markNullStatus(flowInfo, flowContext, FlowInfo.NON_NULL); } else { @@ -914,6 +928,7 @@ else if (expression instanceof CastExpression) if (useAnnotations && (expression.bits & RestrictiveFlagMASK) == Binding.FIELD) { // field read FieldBinding fieldBinding = ((Reference) expression).lastFieldBinding(); + checkFieldForMissingAnnotation(expression, fieldBinding, scope); long owningBits = 0; if (fieldBinding != null) { owningBits = fieldBinding.getAnnotationTagBits() & TagBits.AnnotationOwningMASK; @@ -946,7 +961,7 @@ else if (expression instanceof CastExpression) if (isBlacklistedMethod(expression)) { initialNullStatus = FlowInfo.NULL; } else if (useAnnotations) { - initialNullStatus = getNullStatusFromMessageSend(expression); + initialNullStatus = getNullStatusFromMessageSend(expression, scope); } if (initialNullStatus != 0) return new FakedTrackingVariable(local, location, flowInfo, flowContext, initialNullStatus, useAnnotations); @@ -968,6 +983,9 @@ else if (expression instanceof CastExpression) // leave state as UNKNOWN, the bit OWNED_BY_OUTSIDE will prevent spurious warnings return tracker; } + } else if (expression instanceof LambdaExpression) { + // treat fresh lambda like a fresh resource + return new FakedTrackingVariable(local, location, flowInfo, flowContext, FlowInfo.NULL, useAnnotations); } if (local.closeTracker != null) @@ -992,8 +1010,9 @@ private static boolean isBlacklistedMethod(Expression expression) { } /* pre: usesOwningAnnotations. */ - protected static int getNullStatusFromMessageSend(Expression expression) { - if (expression instanceof MessageSend) { + protected static int getNullStatusFromMessageSend(Expression expression, Scope scope) { + if (expression instanceof MessageSend message) { + checkMethodForMissingAnnotation(message, scope); if ((((MessageSend) expression).binding.tagBits & TagBits.AnnotationNotOwning) != 0) return FlowInfo.NON_NULL; return FlowInfo.NULL; // per default assume responsibility to close diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/Invocation.java b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/Invocation.java index 2e84117b5f1..49400b9421f 100644 --- a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/Invocation.java +++ b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/Invocation.java @@ -60,9 +60,11 @@ default FlowInfo handleResourcePassedToInvocation(BlockScope currentScope, Metho if (currentScope.compilerOptions().isAnnotationBasedResourceAnalysisEnabled) { FakedTrackingVariable trackVar = FakedTrackingVariable.getCloseTrackingVariable(argument, flowInfo, flowContext, true); if (trackVar != null) { - if (methodBinding.ownsParameter(rank)) { + int safeRank = Math.min(rank, methodBinding.parameters.length-1); // account for varargs + FakedTrackingVariable.checkParameterForMissingAnnotation(argument, methodBinding, safeRank, currentScope); + if (methodBinding.ownsParameter(safeRank)) { trackVar.markOwnedByOutside(flowInfo, flowContext); - } else if (methodBinding.notownsParameter(rank)) { + } else if (methodBinding.notownsParameter(safeRank)) { // ignore, no relevant change } else { trackVar.markAsShared(); diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/ExtendedTagBits.java b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/ExtendedTagBits.java index e7b7b5d32b5..5d6f3b15789 100644 --- a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/ExtendedTagBits.java +++ b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/ExtendedTagBits.java @@ -31,4 +31,6 @@ public interface ExtendedTagBits { // @Owning / closing int IsClosingMethod = ASTNode.Bit1; // method + + int HasMissingOwningAnnotation = ASTNode.Bit2; // method/ctor or field } diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/FieldBinding.java b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/FieldBinding.java index eaafde60124..22cc530ee5e 100644 --- a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/FieldBinding.java +++ b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/FieldBinding.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2000, 2020 IBM Corporation and others. + * Copyright (c) 2000, 2024 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -38,6 +38,7 @@ public class FieldBinding extends VariableBinding { public int compoundUseFlag = 0; // number or accesses via postIncrement or compoundAssignment public FakedTrackingVariable closeTracker; + public long extendedTagBits; protected FieldBinding() { super(null, null, 0, null); diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/LookupEnvironment.java b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/LookupEnvironment.java index fef2eb95c2f..303fe765988 100644 --- a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/LookupEnvironment.java +++ b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/LookupEnvironment.java @@ -1656,6 +1656,27 @@ int getAnalysisAnnotationBit(char[][] qualifiedTypeName) { Integer typeBit = this.allAnalysisAnnotations.get(qualifiedTypeString); return typeBit == null ? 0 : typeBit; } +/** + * Check if the given type is a missing type that could be relevant for static analysis. + * @return A bit from {@link ExtendedTagBits} encoding the check result, or {@code 0}. + */ +public long checkForMissingAnalysisAnnotation(TypeBinding resolvedType) { + if (resolvedType instanceof MissingTypeBinding missing) { + if (this.globalOptions.isAnnotationBasedResourceAnalysisEnabled) { + if ((getAnalysisAnnotationBit(missing.compoundName) & TypeIds.BitAnyOwningAnnotation) != 0) + return ExtendedTagBits.HasMissingOwningAnnotation; + char[] simpleName = missing.compoundName[missing.compoundName.length-1]; + if (matchesSimpleName(simpleName, this.globalOptions.owningAnnotationName) + || matchesSimpleName(simpleName, this.globalOptions.notOwningAnnotationName)) + return ExtendedTagBits.HasMissingOwningAnnotation; + } + } + return 0; +} +private boolean matchesSimpleName(char[] simpleName, char[][] qualifiedName) { + return CharOperation.equals(simpleName, qualifiedName[qualifiedName.length-1]); +} + public boolean isNullnessAnnotationPackage(PackageBinding pkg) { return this.nonnullAnnotationPackage == pkg || this.nullableAnnotationPackage == pkg || this.nonnullByDefaultAnnotationPackage == pkg; } diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/MethodBinding.java b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/MethodBinding.java index b2e0e94bde0..28cc9c3ac24 100644 --- a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/MethodBinding.java +++ b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/MethodBinding.java @@ -78,6 +78,7 @@ public class MethodBinding extends Binding { public static byte PARAM_NULLITY = (byte) (PARAM_NONNULL | PARAM_NULLABLE); public static byte PARAM_OWNING = 4; public static byte PARAM_NOTOWNING = 8; + public static byte PARAM_MISSING_OWNING_ANN = 16; public static byte flowBitFromAnnotationTagBit(long tagBit) { if (tagBit == TagBits.AnnotationNonNull) @@ -1509,6 +1510,17 @@ public boolean notownsParameter(int i) { return (this.parameterFlowBits[i] & PARAM_NOTOWNING) != 0; return false; } +public boolean parameterHasMissingOwningAnnotation(int rank) { + if (this.parameterFlowBits != null) + return (this.parameterFlowBits[rank] & PARAM_MISSING_OWNING_ANN) != 0; + return false; +} +public void markMissingOwningAnnotationOnParameter(int rank) { + if (this.parameterFlowBits == null) + this.parameterFlowBits = new byte[this.parameters.length]; + this.parameterFlowBits[rank] |= PARAM_MISSING_OWNING_ANN; +} + /** @return TRUE means @NonNull declared, FALSE means @Nullable declared, null means nothing declared */ public Boolean getParameterNullness(int idx) { if (this.parameterFlowBits != null) { diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/TypeIds.java b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/TypeIds.java index e0c4a672010..8a503d5c7cd 100644 --- a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/TypeIds.java +++ b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/TypeIds.java @@ -289,6 +289,8 @@ public interface TypeIds { /** Mark the type as notowning-annotation for resource analysis. */ final int BitNotOwningAnnotation = 4096; + final int BitAnyOwningAnnotation = BitOwningAnnotation | BitNotOwningAnnotation; + /** * Set of type bits that should be inherited by any sub types. */ diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/problem/ProblemReporter.java b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/problem/ProblemReporter.java index 0a838e896cc..d44a5e6dcb5 100644 --- a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/problem/ProblemReporter.java +++ b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/problem/ProblemReporter.java @@ -6410,6 +6410,59 @@ public void nullAnnotationUnsupportedLocation(TypeReference type) { handle(IProblem.NullAnnotationUnsupportedLocationAtType, NoArgument, NoArgument, type.sourceStart, sourceEnd); } +private char[][] missingAnalysisAnnotationName(AnnotationBinding[] annotations, LookupEnvironment environment) { + for (AnnotationBinding annotationBinding : annotations) { + if (annotationBinding.getAnnotationType() instanceof ReferenceBinding type + && environment.checkForMissingAnalysisAnnotation(type) != 0) + return type.compoundName; + } + return null; +} +public void messageWithUnresolvedOwningAnnotation(MessageSend send, LookupEnvironment environment) { + char[][] compoundName = missingAnalysisAnnotationName(send.binding.original().getAnnotations(), environment); + if (compoundName == null) + return; + String selector = String.valueOf(send.selector); + handle(IProblem.MessageSendWithUnresolvedOwningAnnotation, + new String[] {selector, CharOperation.toString(compoundName)}, + new String[] {selector, String.valueOf(compoundName[compoundName.length-1])}, + ProblemSeverities.Warning, + send.sourceStart, + send.nameSourceEnd()); +} +public void parameterWithUnresolvedOwningAnnotation(ASTNode location, MethodBinding method, int rank, LookupEnvironment environment) { + // locate the missing annotation on parameter #rank: + AnnotationBinding[][] parameterAnnotations = method.original().getParameterAnnotations(); + char[][] compoundName = missingAnalysisAnnotationName(parameterAnnotations[rank], environment); + if (compoundName == null) + return; + String parameterName = method.parameterNames != Binding.NO_PARAMETER_NAMES + ? String.valueOf(method.parameterNames[rank]) + : "arg"+rank; //$NON-NLS-1$ + String[] args = { + String.valueOf(parameterName), + String.valueOf(method.selector), + CharOperation.toString(compoundName) + }; + handle(IProblem.ParameterWithUnresolvedOwningAnnotation, + args, + args, + ProblemSeverities.Warning, + location.sourceStart, + location.sourceEnd); +} +public void fieldWithUnresolvedOwningAnnotation(ASTNode location, FieldBinding fieldBinding, LookupEnvironment environment) { + char[][] compoundName = missingAnalysisAnnotationName(fieldBinding.getAnnotations(), environment); + if (compoundName == null) + return; + String selector = String.valueOf(fieldBinding.name); + handle(IProblem.FieldWithUnresolvedOwningAnnotation, + new String[] {selector, CharOperation.toString(compoundName)}, + new String[] {selector, String.valueOf(compoundName[compoundName.length-1])}, + ProblemSeverities.Warning, + location.sourceStart, + location.sourceEnd); +} public void localVariableNullInstanceof(LocalVariableBinding local, ASTNode location) { int severity = computeSeverity(IProblem.NullLocalVariableInstanceofYieldsFalse); if (severity == ProblemSeverities.Ignore) return; diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/problem/messages.properties b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/problem/messages.properties index b1d22ac8767..f928348c096 100644 --- a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/problem/messages.properties +++ b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/problem/messages.properties @@ -870,6 +870,9 @@ 985 = This array dimension with declared element type {0} will be initialized with ''null'' entries # same text as 955: 986 = Null type safety (type annotations): The expression of type ''{1}'' needs unchecked conversion to conform to ''{0}'' +987 = Method ''{0}'' has an unresolved annotation ''{1}'' that could be relevant for static analysis +988 = Parameter ''{0}'' of method ''{1}'' has an unresolved annotation ''{2}'' that could be relevant for static analysis +989 = Field ''{0}'' has an unresolved annotation ''{1}'' that could be relevant for static analysis # Java 8 1001 = Syntax error, modifiers and annotations are not allowed for the lambda parameter {0} as its type is elided diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/CompilerInvocationTests.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/CompilerInvocationTests.java index f0ecad9241e..96c45a4075c 100644 --- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/CompilerInvocationTests.java +++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/CompilerInvocationTests.java @@ -522,6 +522,7 @@ class ProblemAttributes { expectedProblemAttributes.put("FieldTypeInternalNameProvided", DEPRECATED); expectedProblemAttributes.put("FieldTypeNotFound", DEPRECATED); expectedProblemAttributes.put("FieldTypeNotVisible", DEPRECATED); + expectedProblemAttributes.put("FieldWithUnresolvedOwningAnnotation", new ProblemAttributes(CategorizedProblem.CAT_INTERNAL)); expectedProblemAttributes.put("FinalBoundForTypeVariable", new ProblemAttributes(CategorizedProblem.CAT_CODE_STYLE)); expectedProblemAttributes.put("FinalFieldAssignment", new ProblemAttributes(CategorizedProblem.CAT_MEMBER)); expectedProblemAttributes.put("FinalMethodCannotBeOverridden", new ProblemAttributes(CategorizedProblem.CAT_MEMBER)); @@ -811,6 +812,7 @@ class ProblemAttributes { expectedProblemAttributes.put("MaskedCatch", new ProblemAttributes(CategorizedProblem.CAT_POTENTIAL_PROGRAMMING_PROBLEM)); expectedProblemAttributes.put("MandatoryCloseNotShown", new ProblemAttributes(CategorizedProblem.CAT_POTENTIAL_PROGRAMMING_PROBLEM)); expectedProblemAttributes.put("MandatoryCloseNotShownAtExit", new ProblemAttributes(CategorizedProblem.CAT_POTENTIAL_PROGRAMMING_PROBLEM)); + expectedProblemAttributes.put("MessageSendWithUnresolvedOwningAnnotation", new ProblemAttributes(CategorizedProblem.CAT_INTERNAL)); expectedProblemAttributes.put("MethodButWithConstructorName", new ProblemAttributes(CategorizedProblem.CAT_CODE_STYLE)); expectedProblemAttributes.put("MethodCanBePotentiallyStatic", new ProblemAttributes(CategorizedProblem.CAT_CODE_STYLE)); expectedProblemAttributes.put("MethodCanBeStatic", new ProblemAttributes(CategorizedProblem.CAT_CODE_STYLE)); @@ -951,6 +953,7 @@ class ProblemAttributes { expectedProblemAttributes.put("ParameterMismatch", new ProblemAttributes(CategorizedProblem.CAT_MEMBER)); expectedProblemAttributes.put("ParameterizedConstructorArgumentTypeMismatch", new ProblemAttributes(CategorizedProblem.CAT_TYPE)); expectedProblemAttributes.put("ParameterizedMethodArgumentTypeMismatch", new ProblemAttributes(CategorizedProblem.CAT_TYPE)); + expectedProblemAttributes.put("ParameterWithUnresolvedOwningAnnotation", new ProblemAttributes(CategorizedProblem.CAT_INTERNAL)); expectedProblemAttributes.put("ParsingError", new ProblemAttributes(CategorizedProblem.CAT_SYNTAX)); expectedProblemAttributes.put("ParsingErrorDeleteToken", new ProblemAttributes(CategorizedProblem.CAT_SYNTAX)); expectedProblemAttributes.put("ParsingErrorDeleteTokens", new ProblemAttributes(CategorizedProblem.CAT_SYNTAX)); @@ -1656,6 +1659,7 @@ class ProblemAttributes { expectedProblemAttributes.put("FieldTypeInternalNameProvided", SKIP); expectedProblemAttributes.put("FieldTypeNotFound", SKIP); expectedProblemAttributes.put("FieldTypeNotVisible", SKIP); + expectedProblemAttributes.put("FieldWithUnresolvedOwningAnnotation", SKIP); expectedProblemAttributes.put("FinalBoundForTypeVariable", new ProblemAttributes(JavaCore.COMPILER_PB_FINAL_PARAMETER_BOUND)); expectedProblemAttributes.put("FinalFieldAssignment", SKIP); expectedProblemAttributes.put("FinalMethodCannotBeOverridden", SKIP); @@ -1947,6 +1951,7 @@ class ProblemAttributes { expectedProblemAttributes.put("MaskedCatch", new ProblemAttributes(JavaCore.COMPILER_PB_HIDDEN_CATCH_BLOCK)); expectedProblemAttributes.put("MandatoryCloseNotShown", new ProblemAttributes(JavaCore.COMPILER_PB_UNCLOSED_CLOSEABLE)); expectedProblemAttributes.put("MandatoryCloseNotShownAtExit", new ProblemAttributes(JavaCore.COMPILER_PB_UNCLOSED_CLOSEABLE)); + expectedProblemAttributes.put("MessageSendWithUnresolvedOwningAnnotation", SKIP); expectedProblemAttributes.put("MethodButWithConstructorName", new ProblemAttributes(JavaCore.COMPILER_PB_METHOD_WITH_CONSTRUCTOR_NAME)); expectedProblemAttributes.put("MethodCanBePotentiallyStatic", new ProblemAttributes(JavaCore.COMPILER_PB_POTENTIALLY_MISSING_STATIC_ON_METHOD)); expectedProblemAttributes.put("MethodCanBeStatic", new ProblemAttributes(JavaCore.COMPILER_PB_MISSING_STATIC_ON_METHOD)); @@ -2087,6 +2092,7 @@ class ProblemAttributes { expectedProblemAttributes.put("ParameterMismatch", SKIP); expectedProblemAttributes.put("ParameterizedConstructorArgumentTypeMismatch", SKIP); expectedProblemAttributes.put("ParameterizedMethodArgumentTypeMismatch", SKIP); + expectedProblemAttributes.put("ParameterWithUnresolvedOwningAnnotation", SKIP); expectedProblemAttributes.put("ParsingError", SKIP); expectedProblemAttributes.put("ParsingErrorDeleteToken", SKIP); expectedProblemAttributes.put("ParsingErrorDeleteTokens", SKIP); diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ResourceLeakAnnotatedTests.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ResourceLeakAnnotatedTests.java index 0b3d03ee0d2..ddc0e3da95e 100644 --- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ResourceLeakAnnotatedTests.java +++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ResourceLeakAnnotatedTests.java @@ -13,9 +13,11 @@ *******************************************************************************/ package org.eclipse.jdt.core.tests.compiler.regression; +import java.io.File; import java.util.Map; import junit.framework.Test; import junit.framework.TestSuite; +import org.eclipse.jdt.core.tests.util.Util; import org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants; import org.eclipse.jdt.internal.compiler.impl.CompilerOptions; @@ -1708,4 +1710,131 @@ public class NotOwningTest { "", options); } +public void testGH3278_OK() { + Map options = getCompilerOptions(); + options.put(CompilerOptions.OPTION_ReportPotentiallyUnclosedCloseable, CompilerOptions.ERROR); + options.put(CompilerOptions.OPTION_ReportUnclosedCloseable, CompilerOptions.ERROR); + runLeakTestWithAnnotations(new String[] { + "annotated/TestNotOwning.java", + """ + package annotated; + + import java.io.Closeable; + import java.io.IOException; + import java.util.ArrayList; + import java.util.List; + + import org.eclipse.jdt.annotation.NotOwning; + import org.eclipse.jdt.annotation.Owning; + + public class TestNotOwning implements Closeable { + private final List toClose = new ArrayList<>(); + + @NotOwning + public T register(@Owning + T closeable) throws IOException { + closeable.close(); + return closeable; + } + + @Override + public void close() throws IOException { + for (Closeable closeable : toClose.reversed()) { + closeable.close(); // Ignore error handling for this demonstration + } + } + + public static void client() throws IOException { + try (TestNotOwning t = new TestNotOwning()) { + Closeable a = () -> {} ; // produces warning + Closeable b = t.register(() -> {} ); // produces no warning + assert a != null; + assert b != null; + } + } + } + """ + }, + "----------\n" + + "1. ERROR in annotated\\TestNotOwning.java (at line 30)\n" + + " Closeable a = () -> {} ; // produces warning\n" + + " ^\n" + + "Resource leak: \'a\' is never closed\n" + + "----------\n", + options); +} +public void testGH3278_missingAnnotations() { + runLeakTestWithAnnotations(new String[] { + "annotated/TestNotOwning.java", + """ + package annotated; + + import java.io.Closeable; + import java.io.IOException; + import java.util.ArrayList; + import java.util.List; + + import org.eclipse.jdt.annotation.NotOwning; + import org.eclipse.jdt.annotation.Owning; + + public class TestNotOwning implements Closeable { + private final List toClose = new ArrayList<>(); + + @NotOwning + public T register(@Owning + T closeable) throws IOException { + closeable.close(); + return closeable; + } + + @Override + public void close() throws IOException { + for (Closeable closeable : toClose.reversed()) { + closeable.close(); // Ignore error handling for this demonstration + } + } + } + """ + }, + "", + getCompilerOptions()); + Util.delete(new File(OUTPUT_DIR, "org/eclipse/jdt/annotation/Owning.class".replaceAll("/", File.separator))); + Util.delete(new File(OUTPUT_DIR, "org/eclipse/jdt/annotation/NotOwning.class".replaceAll("/", File.separator))); + + Map options = getCompilerOptions(); + options.put(CompilerOptions.OPTION_ReportPotentiallyUnclosedCloseable, CompilerOptions.ERROR); + options.put(CompilerOptions.OPTION_ReportUnclosedCloseable, CompilerOptions.ERROR); + options.put(CompilerOptions.OPTION_AnnotationBasedResourceAnalysis, CompilerOptions.ENABLED); + runLeakTest(new String[] { + "client/TestingAnnotated.java", + """ + package client; + + import java.io.Closeable; + import java.io.IOException; + + import annotated.TestNotOwning; + + public class TestingAnnotated { + + public static void client() throws IOException { + try (TestNotOwning t = new TestNotOwning()) { + Closeable a = () -> {} ; // produces warning + Closeable b = t.register(() -> {} ); // produces no warning + assert a != null; + assert b != null; + } + } + } + """ + }, + "----------\n" + + "1. ERROR in client\\TestingAnnotated.java (at line 12)\n" + + " Closeable a = () -> {} ; // produces warning\n" + + " ^\n" + + "Resource leak: \'a\' is never closed\n" + + "----------\n", + options, + false); +} } diff --git a/org.eclipse.jdt.core.tests.model/JCL/jclMin23.jar b/org.eclipse.jdt.core.tests.model/JCL/jclMin23.jar index 1c543708419b9302c0501c39479a25532577c35e..281e5bbd8b8cc49ea846a3998c4146a86b7a1a30 100644 GIT binary patch delta 5433 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 diff --git a/org.eclipse.jdt.core.tests.model/JCL/jclMin23src.zip b/org.eclipse.jdt.core.tests.model/JCL/jclMin23src.zip index e4f0a35959a177781a2fa2ed757bbd03618b59f8..04ffe6be61a615c687a3809697761750ca6569aa 100644 GIT binary patch delta 2331 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 toClose; + + @NotOwning + public T register(Object dontCare, @Owning T closeable) throws Exception { + closeable.close(); + return closeable; + } + + public void close() throws Exception { + for (AutoCloseable closeable : toClose) { + closeable.close(); // Ignore error handling for this demonstration + } + } + } + """; + createFile(testNotOwningPath, testNotOwningSource); + + this.problemRequestor.initialize(testNotOwningSource.toCharArray()); + ICompilationUnit unit = getCompilationUnit(testNotOwningPath).getWorkingCopy(this.wcOwner, null); + assertNoProblem(unit.getBuffer().getCharacters(), unit); + + p1.getProject().build(IncrementalProjectBuilder.FULL_BUILD, null); + IMarker[] markers = p1.getProject().findMarkers(IJavaModelMarker.JAVA_MODEL_PROBLEM_MARKER, true, IResource.DEPTH_INFINITE); + assertMarkers("Unexpected markers", "", markers); + + + IJavaProject p2 = createJavaProject("P2", new String[] {""}, new String[] {"JCL_23_LIB"}, "bin", "23"); + p2.setOption(JavaCore.COMPILER_ANNOTATION_RESOURCE_ANALYSIS, JavaCore.ENABLED); + addClasspathEntry(p2, JavaCore.newProjectEntry(p1.getPath())); // no access to the annotation lib, since not re-exported + + createFolder("/P2/client"); + String testingAnnotatedPath = "/P2/client/TestingAnnotated.java"; + String testingAnnotatedSource = """ + package client; + + import annotated.TestNotOwning; + import java.io.InputStream; + + public class TestingAnnotated { + + public static void client() throws Exception { + try (TestNotOwning t = new TestNotOwning()) { + AutoCloseable a = () -> {} ; + AutoCloseable b = t.register(null, new InputStream()); + assert a != null; + assert b != null; + } + } + } + """; + createFile(testingAnnotatedPath, testingAnnotatedSource); + + // Challenge CompilationUnitProblemFinder: + this.problemRequestor.initialize(testingAnnotatedSource.toCharArray()); + unit = getCompilationUnit(testingAnnotatedPath).getWorkingCopy(this.wcOwner, null); + String expectedError = + """ + ---------- + 1. WARNING in /P2/client/TestingAnnotated.java (at line 10) + AutoCloseable a = () -> {} ; + ^ + Resource leak: 'a' is never closed + ---------- + 2. WARNING in /P2/client/TestingAnnotated.java (at line 11) + AutoCloseable b = t.register(null, new InputStream()); + ^ + Resource leak: 'b' is never closed + ---------- + 3. WARNING in /P2/client/TestingAnnotated.java (at line 11) + AutoCloseable b = t.register(null, new InputStream()); + ^^^^^^^^^^ + Method 'register' has an unresolved annotation 'NotOwning' that could be relevant for static analysis + ---------- + 4. WARNING in /P2/client/TestingAnnotated.java (at line 11) + AutoCloseable b = t.register(null, new InputStream()); + ^^^^^^^^^^^^^^^^^ + Parameter 'closeable' of method 'register' has an unresolved annotation 'Owning' that could be relevant for static analysis + ---------- + 5. WARNING in /P2/client/TestingAnnotated.java (at line 11) + AutoCloseable b = t.register(null, new InputStream()); + ^^^^^^^^^^^^^^^^^ + Mandatory close of resource '' has not been shown + ---------- + """; + assertProblems("Unexpected problems from CompilationUnitProblemFinder", expectedError); + + // Challenge JavaBuilder (using class files from p1 we only see one problem): + assertMarkersFromJavaBuilder(p2, "Resource leak: 'a' is never closed", "/P2/client/TestingAnnotated.java"); + + assertErrorFromCompilationUnitResolver(p2, unit, expectedError); + } finally { + deleteProject("P1"); + deleteProject("P2"); + } + } + + public void testAnnotationNotRexeported_srcModular() throws CoreException, InterruptedException { + try { + // Resources creation + IJavaProject p1 = createJavaProject("P1", new String[] {""}, new String[] {"JCL_23_LIB"}, "bin", "23"); + addLibraryEntry(p1, new Path(this.ANNOTATION_LIB), null, null, null, null, + new IClasspathAttribute[] {JavaCore.newClasspathAttribute(IClasspathAttribute.MODULE, "true")}, false); + p1.setOption(JavaCore.COMPILER_ANNOTATION_RESOURCE_ANALYSIS, JavaCore.ENABLED); + p1.setOption(JavaCore.COMPILER_SOURCE, "23"); + p1.setOption(JavaCore.COMPILER_COMPLIANCE, "23"); + + createFile("/P1/module-info.java", + """ + module P1 { + requires org.eclipse.jdt.annotation; + exports annotated; + } + """); + createFolder("/P1/annotated"); + String testNotOwningPath = "/P1/annotated/TestNotOwning.java"; + String testNotOwningSource = """ + package annotated; + import java.util.List; + import org.eclipse.jdt.annotation.NotOwning; + import org.eclipse.jdt.annotation.Owning; + + public class TestNotOwning implements AutoCloseable { + private List toClose; + + @NotOwning + public T register(@Owning T closeable) throws Exception { + closeable.close(); + return closeable; + } + + public void close() throws Exception { + for (AutoCloseable closeable : toClose) { + closeable.close(); // Ignore error handling for this demonstration + } + } + } + """; + createFile(testNotOwningPath, testNotOwningSource); + + this.problemRequestor.initialize(testNotOwningSource.toCharArray()); + ICompilationUnit unit = getCompilationUnit(testNotOwningPath).getWorkingCopy(this.wcOwner, null); + assertNoProblem(unit.getBuffer().getCharacters(), unit); + + p1.getProject().build(IncrementalProjectBuilder.FULL_BUILD, null); + IMarker[] markers = p1.getProject().findMarkers(IJavaModelMarker.JAVA_MODEL_PROBLEM_MARKER, true, IResource.DEPTH_INFINITE); + assertMarkers("Unexpected markers", "", markers); + + + IJavaProject p2 = createJavaProject("P2", new String[] {""}, new String[] {"JCL_23_LIB"}, "bin", "23"); + p2.setOption(JavaCore.COMPILER_ANNOTATION_RESOURCE_ANALYSIS, JavaCore.ENABLED); + p2.setOption(JavaCore.COMPILER_SOURCE, "23"); + p2.setOption(JavaCore.COMPILER_COMPLIANCE, "23"); + addClasspathEntry(p2, + JavaCore.newProjectEntry(p1.getPath(), + null, + false, + new IClasspathAttribute[] {JavaCore.newClasspathAttribute(IClasspathAttribute.MODULE, "true")}, + false) ); + // no access to the annotation lib, since not re-exported + + createFile("/P2/module-info.java", + """ + module P2 { + requires P1; + } + """); + + createFolder("/P2/client"); + String testingAnnotatedPath = "/P2/client/TestingAnnotated.java"; + String testingAnnotatedSource = """ + package client; + + import annotated.TestNotOwning; + + public class TestingAnnotated { + + public static void client() throws Exception { + try (TestNotOwning t = new TestNotOwning()) { + AutoCloseable a = () -> {} ; // produces warning + AutoCloseable b = t.register(() -> {} ); // produces no warning + assert a != null; + assert b != null; + } + } + } + """; + createFile(testingAnnotatedPath, testingAnnotatedSource); + + // Challenge CompilationUnitProblemFinder: + this.problemRequestor.initialize(testingAnnotatedSource.toCharArray()); + unit = getCompilationUnit(testingAnnotatedPath).getWorkingCopy(this.wcOwner, null); + String expectedError = + """ + ---------- + 1. WARNING in /P2/client/TestingAnnotated.java (at line 9) + AutoCloseable a = () -> {} ; // produces warning + ^ + Resource leak: 'a' is never closed + ---------- + 2. WARNING in /P2/client/TestingAnnotated.java (at line 10) + AutoCloseable b = t.register(() -> {} ); // produces no warning + ^ + Resource leak: 'b' is never closed + ---------- + 3. WARNING in /P2/client/TestingAnnotated.java (at line 10) + AutoCloseable b = t.register(() -> {} ); // produces no warning + ^^^^^^^^^^ + Method 'register' has an unresolved annotation 'NotOwning' that could be relevant for static analysis + ---------- + """; + assertProblems("Unexpected problems from CompilationUnitProblemFinder", expectedError); + + // Challenge JavaBuilder (using class files from p1 we only see one problem): + assertMarkersFromJavaBuilder(p2, "Resource leak: 'a' is never closed", "/P2/client/TestingAnnotated.java"); + + assertErrorFromCompilationUnitResolver(p2, unit, expectedError); + } finally { + deleteProject("P1"); + deleteProject("P2"); + } + } + public void testAnnotationNotRexeported_bin() throws Exception { + try { + // using class TestNotOwning from a jar, all three strategies show only one problem: + + IJavaProject p = createJavaProject("P", new String[] {""}, new String[] {"JCL_23_LIB", this.ANNOTATION_LIB}, "bin", "23"); + p.setOption(JavaCore.COMPILER_ANNOTATION_RESOURCE_ANALYSIS, JavaCore.ENABLED); + String jarAbsPath = p.getProject().getLocation()+"/annotated.jar"; + + createJar(new String[] { + "annotated/TestNotOwning.java", + """ + package annotated; + import java.util.List; + import org.eclipse.jdt.annotation.*; + + public class TestNotOwning implements AutoCloseable { + private List toClose; + + @NotOwning + public T register(@Owning T closeable) throws Exception { + closeable.close(); + return closeable; + } + + public void close() throws Exception { + for (AutoCloseable closeable : toClose) { + closeable.close(); // Ignore error handling for this demonstration + } + } + } + """ + }, + jarAbsPath, + new String[] {this.ANNOTATION_LIB}, + "23"); + + // no access to the annotation lib + addClasspathEntry(p, JavaCore.newLibraryEntry(new Path(jarAbsPath), null, null)); + + createFolder("/P/client"); + String testingAnnotatedPath = "/P/client/TestingAnnotated.java"; + String testingAnnotatedSource = """ + package client; + + import annotated.TestNotOwning; + + public class TestingAnnotated { + + public static void client() throws Exception { + try (TestNotOwning t = new TestNotOwning()) { + AutoCloseable a = () -> {} ; // produces warning + AutoCloseable b = t.register(() -> {} ); // produces no warning + assert a != null; + assert b != null; + } + } + } + """; + createFile(testingAnnotatedPath, testingAnnotatedSource); + + // Challenge CompilationUnitProblemFinder: + this.problemRequestor.initialize(testingAnnotatedSource.toCharArray()); + ICompilationUnit unit = getCompilationUnit(testingAnnotatedPath).getWorkingCopy(this.wcOwner, null); + String expectedError = + """ + ---------- + 1. WARNING in /P/client/TestingAnnotated.java (at line 9) + AutoCloseable a = () -> {} ; // produces warning + ^ + Resource leak: 'a' is never closed + ---------- + """; + assertProblems("Unexpected problems from CompilationUnitProblemFinder", expectedError); + + assertMarkersFromJavaBuilder(p, "Resource leak: 'a' is never closed", "/P/client/TestingAnnotated.java"); + + assertErrorFromCompilationUnitResolver(p, unit, expectedError); + } finally { + deleteProject("P"); + } + } + + public void testAnnotationNotRexeported_src_inheritedField() throws CoreException, InterruptedException { + try { + // Resources creation + IJavaProject p1 = createJavaProject("P1", new String[] {""}, new String[] {"JCL_23_LIB", this.ANNOTATION_LIB}, "bin", "23"); + p1.setOption(JavaCore.COMPILER_ANNOTATION_RESOURCE_ANALYSIS, JavaCore.ENABLED); + + createFolder("/P1/annotated"); + String testNotOwningPath = "/P1/annotated/TestOwning.java"; + String testNotOwningSource = """ + package annotated; + + import org.eclipse.jdt.annotation.Owning; + + public class TestOwning implements AutoCloseable { + protected @Owning AutoCloseable cached; + + public void close() throws Exception { + cached.close(); // Ignore error handling for this demonstration + } + } + """; + createFile(testNotOwningPath, testNotOwningSource); + + this.problemRequestor.initialize(testNotOwningSource.toCharArray()); + ICompilationUnit unit = getCompilationUnit(testNotOwningPath).getWorkingCopy(this.wcOwner, null); + assertNoProblem(unit.getBuffer().getCharacters(), unit); + + p1.getProject().build(IncrementalProjectBuilder.FULL_BUILD, null); + IMarker[] markers = p1.getProject().findMarkers(IJavaModelMarker.JAVA_MODEL_PROBLEM_MARKER, true, IResource.DEPTH_INFINITE); + assertMarkers("Unexpected markers", "", markers); + + + IJavaProject p2 = createJavaProject("P2", new String[] {""}, new String[] {"JCL_23_LIB"}, "bin", "23"); + p2.setOption(JavaCore.COMPILER_ANNOTATION_RESOURCE_ANALYSIS, JavaCore.ENABLED); + addClasspathEntry(p2, JavaCore.newProjectEntry(p1.getPath())); // no access to the annotation lib, since not re-exported + + createFolder("/P2/client"); + String testingAnnotatedPath = "/P2/client/TestingAnnotated.java"; + String testingAnnotatedSource = """ + package client; + + import annotated.TestOwning; + import java.io.InputStream; + + public class TestingAnnotated extends TestOwning { + + public void client() throws Exception { + this.cached = new InputStream(); + } + } + """; + createFile(testingAnnotatedPath, testingAnnotatedSource); + + // Challenge CompilationUnitProblemFinder: + this.problemRequestor.initialize(testingAnnotatedSource.toCharArray()); + unit = getCompilationUnit(testingAnnotatedPath).getWorkingCopy(this.wcOwner, null); + String expectedError = + """ + ---------- + 1. WARNING in /P2/client/TestingAnnotated.java (at line 9) + this.cached = new InputStream(); + ^^^^^^^^^^^ + Field 'cached' has an unresolved annotation 'Owning' that could be relevant for static analysis + ---------- + 2. WARNING in /P2/client/TestingAnnotated.java (at line 9) + this.cached = new InputStream(); + ^^^^^^^^^^^^^^^^^ + Mandatory close of resource '' has not been shown + ---------- + """; + assertProblems("Unexpected problems from CompilationUnitProblemFinder", expectedError); + + // Challenge JavaBuilder (using binary types from p1 we have no problem): + assertMarkersFromJavaBuilder(p2, "", null); + + assertErrorFromCompilationUnitResolver(p2, unit, expectedError); + } finally { + deleteProject("P1"); + deleteProject("P2"); + } + } +} From c00377995a300904ab8f84e68be4d007868f6e4a Mon Sep 17 00:00:00 2001 From: Srikanth Sankaran <131454720+srikanth-sankaran@users.noreply.github.com> Date: Wed, 4 Dec 2024 05:20:44 +0530 Subject: [PATCH 19/26] [Enhanced Switch][Null] Missing Null pointer access warning with total/unconditional patterns in case labels (#3382) * [Enhanced Switch][Null] Missing Null pointer access warning with total/unconditional patterns in case labels * Fixes https://github.com/eclipse-jdt/eclipse.jdt.core/issues/3381 Co-authored-by: Stephan Herrmann --- .../compiler/ast/SwitchStatement.java | 14 +---- .../internal/compiler/ast/TypePattern.java | 13 +--- .../regression/NullAnnotationTests21.java | 62 +++++++++++++++---- 3 files changed, 52 insertions(+), 37 deletions(-) diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/SwitchStatement.java b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/SwitchStatement.java index daa9872434f..10d3b920bbd 100644 --- a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/SwitchStatement.java +++ b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/SwitchStatement.java @@ -373,9 +373,9 @@ protected boolean needToCheckFlowInAbsenceOfDefaultBranch() { public FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext, FlowInfo flowInfo) { try { flowInfo = this.expression.analyseCode(currentScope, flowContext, flowInfo); - if (isNullHostile()) { + if (!this.containsNull && this.expression.resolvedType instanceof ReferenceBinding) this.expression.checkNPE(currentScope, flowContext, flowInfo, 1); - } + SwitchFlowContext switchContext = new SwitchFlowContext(flowContext, this, (this.breakLabel = new BranchLabel()), true, true); @@ -461,16 +461,6 @@ else if ((statement.bits & ASTNode.DocumentedFallthrough) == 0) // the case is n if (this.scope != null) this.scope.enclosingCase = null; // no longer inside switch case block } } - private boolean isNullHostile() { - if (this.containsNull) - return false; - if ((this.expression.implicitConversion & TypeIds.UNBOXING) != 0) - return true; - if (this.expression.resolvedType != null && (this.expression.resolvedType.id == T_JavaLangString || this.expression.resolvedType.isEnum())) - return true; - return this.totalPattern == null; - } - /** * Switch on String code generation * This assumes that hashCode() specification for java.lang.String is API diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/TypePattern.java b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/TypePattern.java index dfbb068495f..f2ffd391f4f 100644 --- a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/TypePattern.java +++ b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/ast/TypePattern.java @@ -69,18 +69,7 @@ public FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext, Fl return patternInfo; // exclude anonymous blokes from flow analysis. patternInfo.markAsDefinitelyAssigned(this.local.binding); - if (!this.isTotalTypeNode) { - // non-total type patterns create a nonnull local: - patternInfo.markAsDefinitelyNonNull(this.local.binding); - } else { - // total type patterns inherit the nullness of the value being switched over, unless ... - if (flowContext.associatedNode instanceof SwitchStatement swStmt) { - int nullStatus = swStmt.containsNull - ? FlowInfo.NON_NULL // ... null is handled in a separate case - : swStmt.expression.nullStatus(patternInfo, flowContext); - patternInfo.markNullStatus(this.local.binding, nullStatus); - } - } + patternInfo.markAsDefinitelyNonNull(this.local.binding); return patternInfo; } diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NullAnnotationTests21.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NullAnnotationTests21.java index efbe1fe2ef9..dd661a86bdd 100644 --- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NullAnnotationTests21.java +++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NullAnnotationTests21.java @@ -107,7 +107,7 @@ public void test_totalTypePatternDoesNotAdmitNull() { " case Number n0 -> consumeNumber(n0);\n" + " }\n" + " } catch (NullPointerException npe) {\n" + - " // ignoring the unchecked warning, and expecting the NPE:\n" + + " // Expecting an NPE because selector is null\n" + " System.out.print(npe.getMessage());\n" + " }\n" + " }\n" + @@ -115,6 +115,7 @@ public void test_totalTypePatternDoesNotAdmitNull() { " System.out.print(i);\n" + " }\n" + " void consumeNumber(@NonNull Number n) {\n" + + " System.out.println(\"consumeNumber \");\n" + " System.out.print(n.toString());\n" + " }\n" + " public static void main(String... args) {\n" + @@ -122,14 +123,7 @@ public void test_totalTypePatternDoesNotAdmitNull() { " }\n" + "}\n" }; - runner.expectedCompilerLog = - "----------\n" + - "1. WARNING in X.java (at line 7)\n" + - " case Number n0 -> consumeNumber(n0);\n" + - " ^^\n" + - "Null type safety (type annotations): The expression of type \'Number\' needs unchecked conversion to conform to \'@NonNull Number\'\n" + - "----------\n"; -// runner.expectedOutputString = "Cannot invoke \"Object.toString()\" because \"n\" is null"; + runner.expectedCompilerLog = ""; runner.expectedOutputString = "null"; runner.runConformTest(); } @@ -234,10 +228,10 @@ public void test_totalTypePatternNullableExpression() { }; runner.expectedCompilerLog = "----------\n" + - "1. ERROR in X.java (at line 6)\n" + - " case Number n0 -> consumeNumber(n0);\n" + - " ^^\n" + - "Null type mismatch: required \'@NonNull Number\' but the provided value is inferred as @Nullable\n" + + "1. ERROR in X.java (at line 4)\n" + + " switch (n) {\n" + + " ^\n" + + "Potential null pointer access: this expression has a '@Nullable' type\n" + "----------\n"; runner.runNegativeTest(); } @@ -1244,4 +1238,46 @@ static Stuff match(PatternMatching pm, int v) { """; runner.runNegativeTest(); } + + // https://github.com/eclipse-jdt/eclipse.jdt.core/issues/3381 + // [Enhanced Switch][Null] Missing Null pointer access warning with total/unconditional patterns + public void testIssue3381() { + Runner runner = getDefaultRunner(); + runner.testFiles = new String[] { + "X.java", + """ + import org.eclipse.jdt.annotation.Nullable; + + public class X { + void foo() { + @Nullable Integer i = null; + switch (i) { + case Integer ii -> System.out.println(); + } + } + void goo() { + @Nullable Integer i = null; + switch (i) { + default -> System.out.println(); + } + } + } + """ + }; + runner.expectedCompilerLog = + """ + ---------- + 1. ERROR in X.java (at line 6) + switch (i) { + ^ + Null pointer access: The variable i can only be null at this location + ---------- + 2. ERROR in X.java (at line 12) + switch (i) { + ^ + Null pointer access: This expression of type Integer is null but requires auto-unboxing + ---------- + """; + runner.runNegativeTest(); + } } From 243787e8352163b5b12ff21d115049560a4ecfe3 Mon Sep 17 00:00:00 2001 From: Srikanth Sankaran <131454720+srikanth-sankaran@users.noreply.github.com> Date: Wed, 4 Dec 2024 06:53:15 +0530 Subject: [PATCH 20/26] Regression test for https://github.com/eclipse-jdt/eclipse.jdt.core/issues/3319 (#3391) This was fixed by https://github.com/eclipse-jdt/eclipse.jdt.core/pull/3382 --- .../regression/NullAnnotationTests21.java | 83 +++++++++++++++++++ 1 file changed, 83 insertions(+) diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NullAnnotationTests21.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NullAnnotationTests21.java index dd661a86bdd..43041968987 100644 --- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NullAnnotationTests21.java +++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NullAnnotationTests21.java @@ -1280,4 +1280,87 @@ void goo() { """; runner.runNegativeTest(); } + + // https://github.com/eclipse-jdt/eclipse.jdt.core/issues/3319 + // [Enhanced Switch][Null] Inconsistent nullness propagation + public void testIssue3319() { + Runner runner = getDefaultRunner(); + runner.testFiles = new String[] { + "X.java", + """ + import org.eclipse.jdt.annotation.NonNull; + + public class X { + static @NonNull Object foo(Object o) { + switch (o) { + case String s -> { + if (o == null) { + System.out.println("o cannot be null at all!"); + } + System.out.println(); + } + default -> { + if (o == null) { + System.out.println("o cannot be null at all!"); + } + System.out.println(); + } + } + return new Object(); + } + + static @NonNull Object foo(X o) { + switch (o) { + case X s -> { + if (o == null) { + System.out.println("o cannot be null at all!"); + } + System.out.println(s); + } + } + return new Object(); + } + } + """ + }; + runner.expectedCompilerLog = + "----------\n" + + "1. ERROR in X.java (at line 7)\n" + + " if (o == null) {\n" + + " ^\n" + + "Null comparison always yields false: The variable o cannot be null at this location\n" + + "----------\n" + + "2. WARNING in X.java (at line 7)\n" + + " if (o == null) {\n" + + " System.out.println(\"o cannot be null at all!\");\n" + + " }\n" + + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" + + "Dead code\n" + + "----------\n" + + "3. ERROR in X.java (at line 13)\n" + + " if (o == null) {\n" + + " ^\n" + + "Null comparison always yields false: The variable o cannot be null at this location\n" + + "----------\n" + + "4. WARNING in X.java (at line 13)\n" + + " if (o == null) {\n" + + " System.out.println(\"o cannot be null at all!\");\n" + + " }\n" + + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" + + "Dead code\n" + + "----------\n" + + "5. ERROR in X.java (at line 25)\n" + + " if (o == null) {\n" + + " ^\n" + + "Null comparison always yields false: The variable o cannot be null at this location\n" + + "----------\n" + + "6. WARNING in X.java (at line 25)\n" + + " if (o == null) {\n" + + " System.out.println(\"o cannot be null at all!\");\n" + + " }\n" + + " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n" + + "Dead code\n" + + "----------\n"; + runner.runNegativeTest(); + } } From 0364a4852e70e0c998ee597d47c7f1b8a96de5dc Mon Sep 17 00:00:00 2001 From: Eclipse JDT Bot Date: Tue, 3 Dec 2024 12:12:18 +0000 Subject: [PATCH 21/26] Version bump(s) for 4.35 stream --- org.eclipse.jdt.apt.pluggable.tests/META-INF/MANIFEST.MF | 2 +- org.eclipse.jdt.apt.pluggable.tests/pom.xml | 2 +- org.eclipse.jdt.apt.tests/META-INF/MANIFEST.MF | 2 +- org.eclipse.jdt.apt.tests/pom.xml | 2 +- org.eclipse.jdt.core.tests.performance/META-INF/MANIFEST.MF | 2 +- org.eclipse.jdt.core.tests.performance/pom.xml | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/org.eclipse.jdt.apt.pluggable.tests/META-INF/MANIFEST.MF b/org.eclipse.jdt.apt.pluggable.tests/META-INF/MANIFEST.MF index 1b6d60b40bb..3b5a7f5d844 100644 --- a/org.eclipse.jdt.apt.pluggable.tests/META-INF/MANIFEST.MF +++ b/org.eclipse.jdt.apt.pluggable.tests/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.jdt.apt.pluggable.tests;singleton:=true -Bundle-Version: 3.6.600.qualifier +Bundle-Version: 3.6.700.qualifier Bundle-Activator: org.eclipse.jdt.apt.pluggable.tests.Apt6TestsPlugin Bundle-Localization: plugin Require-Bundle: org.junit, diff --git a/org.eclipse.jdt.apt.pluggable.tests/pom.xml b/org.eclipse.jdt.apt.pluggable.tests/pom.xml index a4a3f376489..85e08f750f7 100644 --- a/org.eclipse.jdt.apt.pluggable.tests/pom.xml +++ b/org.eclipse.jdt.apt.pluggable.tests/pom.xml @@ -19,7 +19,7 @@ ../tests-pom/ org.eclipse.jdt.apt.pluggable.tests - 3.6.600-SNAPSHOT + 3.6.700-SNAPSHOT eclipse-test-plugin ${project.artifactId} diff --git a/org.eclipse.jdt.apt.tests/META-INF/MANIFEST.MF b/org.eclipse.jdt.apt.tests/META-INF/MANIFEST.MF index 5fa3f3bff43..7c3b0f08255 100644 --- a/org.eclipse.jdt.apt.tests/META-INF/MANIFEST.MF +++ b/org.eclipse.jdt.apt.tests/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.jdt.apt.tests; singleton:=true -Bundle-Version: 3.6.600.qualifier +Bundle-Version: 3.6.700.qualifier Bundle-ClassPath: apt.jar, aptext.jar, . diff --git a/org.eclipse.jdt.apt.tests/pom.xml b/org.eclipse.jdt.apt.tests/pom.xml index 6204335e33b..b1a4674e146 100644 --- a/org.eclipse.jdt.apt.tests/pom.xml +++ b/org.eclipse.jdt.apt.tests/pom.xml @@ -19,7 +19,7 @@ ../tests-pom/ org.eclipse.jdt.apt.tests - 3.6.600-SNAPSHOT + 3.6.700-SNAPSHOT eclipse-test-plugin diff --git a/org.eclipse.jdt.core.tests.performance/META-INF/MANIFEST.MF b/org.eclipse.jdt.core.tests.performance/META-INF/MANIFEST.MF index 0cfafbd6ec2..f621f5333e2 100644 --- a/org.eclipse.jdt.core.tests.performance/META-INF/MANIFEST.MF +++ b/org.eclipse.jdt.core.tests.performance/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.jdt.core.tests.performance -Bundle-Version: 3.12.550.qualifier +Bundle-Version: 3.12.650.qualifier Bundle-Vendor: %providerName Bundle-Localization: plugin Export-Package: org.eclipse.jdt.core.tests.performance, diff --git a/org.eclipse.jdt.core.tests.performance/pom.xml b/org.eclipse.jdt.core.tests.performance/pom.xml index dbe003551a0..674ca127328 100644 --- a/org.eclipse.jdt.core.tests.performance/pom.xml +++ b/org.eclipse.jdt.core.tests.performance/pom.xml @@ -19,7 +19,7 @@ ../tests-pom/ org.eclipse.jdt.core.tests.performance - 3.12.550-SNAPSHOT + 3.12.650-SNAPSHOT eclipse-test-plugin ${project.artifactId} From 0c7adc85f5e0a1396e2d1dcf0c390aa516cbd4b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Kubitz?= Date: Tue, 3 Dec 2024 13:00:23 +0100 Subject: [PATCH 22/26] tests: use nanoTime for measurements * System.currentTimeMillis() is not guaranteed to be monotonic * removed some related dead code * added missing volatile modifier --- .../apt/pluggable/tests/PerformanceTests.java | 86 ++++++------------- .../jdt/apt/pluggable/tests/ScalingTests.java | 8 +- .../pause/PauseAnnotationProcessor.java | 13 ++- .../eclipse/jdt/apt/tests/APTTestBase.java | 18 ---- .../jdt/apt/tests/AptBuilderTests.java | 4 +- .../org/eclipse/jdt/apt/tests/PerfTests.java | 8 +- .../eclipse/jdt/apt/tests/ScalingTests.java | 8 +- .../jdt/apt/tests/StarProcessorTests.java | 4 +- .../regression/NullReferenceImplTests.java | 6 +- .../NullReferenceImplTransformations.java | 14 +-- .../jdt/core/tests/eval/JDIStackFrame.java | 6 +- .../core/tests/eval/target/IDEInterface.java | 8 +- .../core/tests/runtime/TargetInterface.java | 12 +-- .../org/eclipse/jdt/core/tests/util/Util.java | 13 +-- .../tests/formatter/FormatterJSR308Tests.java | 6 +- .../formatter/FormatterRegressionTests.java | 6 +- .../tests/model/AbstractJavaModelTests.java | 6 +- .../jdt/core/tests/model/BPThread.java | 12 +-- .../jdt/core/tests/model/ClasspathTests.java | 8 -- .../core/tests/model/CompletionTests2.java | 7 +- .../jdt/core/tests/model/Semaphore.java | 15 ++-- .../FullSourceWorkspaceBuildTests.java | 9 +- ...ullSourceWorkspaceCompleteSearchTests.java | 6 +- .../FullSourceWorkspaceFormatterTests.java | 14 +-- .../FullSourceWorkspaceModelTests.java | 38 ++++---- .../FullSourceWorkspaceSearchTests.java | 6 +- .../performance/FullSourceWorkspaceTests.java | 68 ++++----------- .../internal/core/builder/BuildNotifier.java | 2 +- .../core/search/processing/JobManager.java | 2 +- 29 files changed, 163 insertions(+), 250 deletions(-) diff --git a/org.eclipse.jdt.apt.pluggable.tests/src/org/eclipse/jdt/apt/pluggable/tests/PerformanceTests.java b/org.eclipse.jdt.apt.pluggable.tests/src/org/eclipse/jdt/apt/pluggable/tests/PerformanceTests.java index 3f57d9e75aa..872112cc99b 100644 --- a/org.eclipse.jdt.apt.pluggable.tests/src/org/eclipse/jdt/apt/pluggable/tests/PerformanceTests.java +++ b/org.eclipse.jdt.apt.pluggable.tests/src/org/eclipse/jdt/apt/pluggable/tests/PerformanceTests.java @@ -153,43 +153,32 @@ public void testBoringFiles() throws Exception Runtime run = Runtime.getRuntime(); - long start; + long startNanos; if (INCLUDE_APT_DISABLED) { AptConfig.setEnabled(jproj, false); - start = System.currentTimeMillis(); + startNanos = System.nanoTime(); run.exec(CMD_START_CPU_PROFILING).waitFor(); fullBuild( project.getFullPath() ); - if (VERBOSE) - System.out.println("APT disabled: full build took " + ((System.currentTimeMillis() - start)/1000L) + " sec"); + if (VERBOSE) { + System.out + .println("APT disabled: full build took " + ((System.nanoTime() - startNanos) / 1_000_000L) + " ms"); + } run.exec(CMD_PERF_SNAPSHOT).waitFor(); run.exec(CMD_STOP_CPU_PROFILING).waitFor(); expectingNoProblems(); - -// System.gc(); -// Thread.sleep(1000); -// -// AptConfig.setEnabled(jproj, false); -// start = System.currentTimeMillis(); -// fullBuild( project.getFullPath() ); -// if (VERBOSE) { -// System.out.println("full build took " + ((System.currentTimeMillis() - start)/1000L) + " sec"); -// System.out.println("Taking heap snapshot"); -// } -// run.exec(CMD_HEAP_SNAPSHOT).waitFor(); -// expectingNoProblems(); } System.gc(); Thread.sleep(1000); AptConfig.setEnabled(jproj, true); - start = System.currentTimeMillis(); + startNanos = System.nanoTime(); if (VERBOSE) System.out.println("APT enabled: starting full build"); fullBuild( project.getFullPath() ); if (VERBOSE) { - System.out.println("full build took " + ((System.currentTimeMillis() - start)/1000L) + " sec"); + System.out.println("full build took " + ((System.nanoTime() - startNanos) / 1_000_000L) + " ms"); System.out.println("Taking heap snapshot"); } run.exec(CMD_HEAP_SNAPSHOT).waitFor(); @@ -199,13 +188,14 @@ public void testBoringFiles() throws Exception Thread.sleep(1000); AptConfig.setEnabled(jproj, true); - start = System.currentTimeMillis(); + startNanos = System.nanoTime(); if (VERBOSE) System.out.println("APT enabled: starting full build"); run.exec(CMD_START_CPU_PROFILING).waitFor(); fullBuild( project.getFullPath() ); - if (VERBOSE) - System.out.println("full build took " + ((System.currentTimeMillis() - start)/1000L) + " sec"); + if (VERBOSE) { + System.out.println("full build took " + ((System.nanoTime() - startNanos) / 1_000_000L) + " ms"); + } run.exec(CMD_PERF_SNAPSHOT).waitFor(); run.exec(CMD_STOP_CPU_PROFILING).waitFor(); expectingNoProblems(); @@ -214,13 +204,14 @@ public void testBoringFiles() throws Exception Thread.sleep(1000); AptConfig.setEnabled(jproj, true); - start = System.currentTimeMillis(); + startNanos = System.nanoTime(); if (VERBOSE) System.out.println("APT enabled: starting full build"); run.exec(CMD_START_CPU_PROFILING).waitFor(); fullBuild( project.getFullPath() ); - if (VERBOSE) - System.out.println("full build took " + ((System.currentTimeMillis() - start)/1000L) + " sec"); + if (VERBOSE) { + System.out.println("full build took " + ((System.nanoTime() - startNanos) / 1_000_000L) + " ms"); + } run.exec(CMD_PERF_SNAPSHOT).waitFor(); run.exec(CMD_STOP_CPU_PROFILING).waitFor(); expectingNoProblems(); @@ -247,63 +238,34 @@ public void _testInterestingFilesWithJ6() throws Exception Runtime run = Runtime.getRuntime(); - long start; - if (INCLUDE_APT_DISABLED) { AptConfig.setEnabled(jproj, false); - start = System.currentTimeMillis(); + long startNanos = System.nanoTime(); run.exec(CMD_START_CPU_PROFILING).waitFor(); fullBuild( project.getFullPath() ); if (VERBOSE) - System.out.println("APT disabled: full build took " + ((System.currentTimeMillis() - start)/1000L) + " sec"); + System.out.println( + "APT disabled: full build took " + ((System.nanoTime() - startNanos) / 1_000_000L) + " ms"); run.exec(CMD_PERF_SNAPSHOT).waitFor(); run.exec(CMD_STOP_CPU_PROFILING).waitFor(); expectingNoProblems(); - -// System.gc(); -// Thread.sleep(1000); -// -// AptConfig.setEnabled(jproj, false); -// start = System.currentTimeMillis(); -// run.exec(CMD_START_CPU_PROFILING).waitFor(); -// fullBuild( project.getFullPath() ); -// if (VERBOSE) -// System.out.println("APT disabled: full build took " + ((System.currentTimeMillis() - start)/1000L) + " sec"); -// run.exec(CMD_PERF_SNAPSHOT).waitFor(); -// run.exec(CMD_STOP_CPU_PROFILING).waitFor(); -// expectingNoProblems(); } System.gc(); Thread.sleep(1000); AptConfig.setEnabled(jproj, true); - start = System.currentTimeMillis(); + long startNanos = System.nanoTime(); if (VERBOSE) System.out.println("APT enabled: starting full build"); run.exec(CMD_START_CPU_PROFILING).waitFor(); fullBuild( project.getFullPath() ); if (VERBOSE) - System.out.println("full build took " + ((System.currentTimeMillis() - start)/1000L) + " sec"); + System.out.println("full build took " + ((System.nanoTime() - startNanos) / 1_000_000L) + " ms"); run.exec(CMD_PERF_SNAPSHOT).waitFor(); run.exec(CMD_STOP_CPU_PROFILING).waitFor(); expectingNoProblems(); -// System.gc(); -// Thread.sleep(1000); -// -// AptConfig.setEnabled(jproj, true); -// start = System.currentTimeMillis(); -// if (VERBOSE) -// System.out.println("APT enabled: starting full build"); -// run.exec(CMD_START_CPU_PROFILING).waitFor(); -// fullBuild( project.getFullPath() ); -// if (VERBOSE) -// System.out.println("full build took " + ((System.currentTimeMillis() - start)/1000L) + " sec"); -// run.exec(CMD_PERF_SNAPSHOT).waitFor(); -// run.exec(CMD_STOP_CPU_PROFILING).waitFor(); -// expectingNoProblems(); - // Now delete the project! if (VERBOSE) System.out.println("Deleting workspace"); @@ -329,10 +291,10 @@ public void _testGeneratingLotsOfFiles() throws Exception // Set some per-project preferences AptConfig.setEnabled(jproj, true); - long start = System.currentTimeMillis(); - fullBuild( project.getFullPath() ); + long startNanos = System.nanoTime(); + fullBuild(project.getFullPath()); if (VERBOSE) - System.out.println("Done with build after " + ((System.currentTimeMillis() - start)/1000L) + " sec"); + System.out.println("Done with build after " + ((System.nanoTime() - startNanos) / 1_000_000L) + " ms"); expectingNoProblems(); diff --git a/org.eclipse.jdt.apt.pluggable.tests/src/org/eclipse/jdt/apt/pluggable/tests/ScalingTests.java b/org.eclipse.jdt.apt.pluggable.tests/src/org/eclipse/jdt/apt/pluggable/tests/ScalingTests.java index dbfc4100b5b..96a27ce5f72 100644 --- a/org.eclipse.jdt.apt.pluggable.tests/src/org/eclipse/jdt/apt/pluggable/tests/ScalingTests.java +++ b/org.eclipse.jdt.apt.pluggable.tests/src/org/eclipse/jdt/apt/pluggable/tests/ScalingTests.java @@ -85,10 +85,12 @@ public void testGeneratingLotsOfFiles() throws Exception // Set some per-project preferences AptConfig.setEnabled(jproj, true); - long start = System.currentTimeMillis(); + long startNanos = System.nanoTime(); fullBuild( project.getFullPath() ); - if (VERBOSE) - System.out.println("Done with build after " + ((System.currentTimeMillis() - start)/1000L) + " sec"); + if (VERBOSE) { + System.out.println( + "Done with build after " + ((System.nanoTime() - startNanos) / 1_000_000L) + " ms"); + } expectingNoProblems(); diff --git a/org.eclipse.jdt.apt.tests/src-annotations/org/eclipse/jdt/apt/tests/annotations/pause/PauseAnnotationProcessor.java b/org.eclipse.jdt.apt.tests/src-annotations/org/eclipse/jdt/apt/tests/annotations/pause/PauseAnnotationProcessor.java index 5bbb84b4790..a92b3848607 100644 --- a/org.eclipse.jdt.apt.tests/src-annotations/org/eclipse/jdt/apt/tests/annotations/pause/PauseAnnotationProcessor.java +++ b/org.eclipse.jdt.apt.tests/src-annotations/org/eclipse/jdt/apt/tests/annotations/pause/PauseAnnotationProcessor.java @@ -44,14 +44,13 @@ public void process() { Collection annotatedDecls = _env.getDeclarationsAnnotatedWith(_annotationDecl); for (Declaration decl : annotatedDecls) { Pause a = decl.getAnnotation(Pause.class); - int pause = a.value(); - System.out.println(phase + " pausing for " + pause + " to process " + decl.getSimpleName() + "..."); + int pauseMs = a.value(); + System.out.println(phase + " pausing for " + pauseMs + " to process " + decl.getSimpleName() + "..."); // busy sleep - long end = System.currentTimeMillis() + pause; - while (System.currentTimeMillis() < end) - for (int i = 0; i < 100000; ++i) { - /* pausing */ - } + long timeoutNanos = System.nanoTime() + pauseMs * 1_000_000L; + while (System.nanoTime() < timeoutNanos) { + Thread.onSpinWait(); + } System.out.println(phase + " finished pausing"); } } diff --git a/org.eclipse.jdt.apt.tests/src/org/eclipse/jdt/apt/tests/APTTestBase.java b/org.eclipse.jdt.apt.tests/src/org/eclipse/jdt/apt/tests/APTTestBase.java index d2c68903c3a..afe34ce3ef0 100644 --- a/org.eclipse.jdt.apt.tests/src/org/eclipse/jdt/apt/tests/APTTestBase.java +++ b/org.eclipse.jdt.apt.tests/src/org/eclipse/jdt/apt/tests/APTTestBase.java @@ -365,22 +365,4 @@ protected void expectingSpecificProblemsFor(IPath root, ExpectedProblem[] proble protected void expectingOnlySpecificProblemFor(IPath root, ExpectedProblem problem) { expectingOnlySpecificProblemsFor(root, new ExpectedProblem[] { problem }); } - - protected static void sleep( long millis ) - { - long end = System.currentTimeMillis() + millis; - while ( millis > 0 ) - { - try - { - Thread.sleep( millis ); - } - catch ( InterruptedException ie ) - {} - millis = end - System.currentTimeMillis(); - } - } - - - } diff --git a/org.eclipse.jdt.apt.tests/src/org/eclipse/jdt/apt/tests/AptBuilderTests.java b/org.eclipse.jdt.apt.tests/src/org/eclipse/jdt/apt/tests/AptBuilderTests.java index 011add3e075..a112fe4a841 100644 --- a/org.eclipse.jdt.apt.tests/src/org/eclipse/jdt/apt/tests/AptBuilderTests.java +++ b/org.eclipse.jdt.apt.tests/src/org/eclipse/jdt/apt/tests/AptBuilderTests.java @@ -502,7 +502,7 @@ public void testDeletedParentFile() throws Exception TestUtil.deleteFile(p1a1Path); // sleep to let the resource-change event fire - sleep( 1000 ); + Util.waitAtLeast(1000); incrementalBuild( project.getFullPath() ); @@ -513,7 +513,7 @@ public void testDeletedParentFile() throws Exception // sleep to let the resource-change event fire // TODO: Is there a more reliable, consistent, and efficient way to wait? - sleep( 1000 ); + Util.waitAtLeast(1000); incrementalBuild( project.getFullPath() ); expectingOnlyProblemsFor( p1bPath ); diff --git a/org.eclipse.jdt.apt.tests/src/org/eclipse/jdt/apt/tests/PerfTests.java b/org.eclipse.jdt.apt.tests/src/org/eclipse/jdt/apt/tests/PerfTests.java index e1c93ae9d85..cc73ffbdb6b 100644 --- a/org.eclipse.jdt.apt.tests/src/org/eclipse/jdt/apt/tests/PerfTests.java +++ b/org.eclipse.jdt.apt.tests/src/org/eclipse/jdt/apt/tests/PerfTests.java @@ -142,9 +142,9 @@ public void testBuilding() throws Throwable { assertNoUnexpectedProblems(); System.out.println("Performing full build without apt..."); - long start = System.currentTimeMillis(); + long startNanos = System.nanoTime(); proj.build(IncrementalProjectBuilder.FULL_BUILD, null); - long totalWithoutAPT = System.currentTimeMillis() - start; + long totalWithoutAPT = (System.nanoTime() - startNanos) / 1_000_000L; System.out.println("Completed full build without APT in " + totalWithoutAPT + "ms."); assertNoUnexpectedProblems(); @@ -156,9 +156,9 @@ public void testBuilding() throws Throwable { assertNoUnexpectedProblems(); System.out.println("Performing full build with apt..."); - start = System.currentTimeMillis(); + startNanos = System.nanoTime(); proj.build(IncrementalProjectBuilder.FULL_BUILD, null); - long totalWithAPT = System.currentTimeMillis() - start; + long totalWithAPT = (System.nanoTime() - startNanos) / 1_000_000L; System.out.println("Completed full build with APT in " + totalWithAPT + "ms."); assertNoUnexpectedProblems(); diff --git a/org.eclipse.jdt.apt.tests/src/org/eclipse/jdt/apt/tests/ScalingTests.java b/org.eclipse.jdt.apt.tests/src/org/eclipse/jdt/apt/tests/ScalingTests.java index aa8dfebb06d..2817963a0df 100644 --- a/org.eclipse.jdt.apt.tests/src/org/eclipse/jdt/apt/tests/ScalingTests.java +++ b/org.eclipse.jdt.apt.tests/src/org/eclipse/jdt/apt/tests/ScalingTests.java @@ -98,11 +98,11 @@ public void testGeneratingLotsOfFiles() throws Exception IJavaProject jproj = env.getJavaProject( projName ); AptConfig.setEnabled(jproj, true); - long start = System.currentTimeMillis(); + long startNanos = System.nanoTime(); fullBuild( project.getFullPath() ); - if (VERBOSE) - System.out.println("Done with build after " + ((System.currentTimeMillis() - start)/1000L) + " sec"); - + if (VERBOSE) { + System.out.println("Done with build after " + ((System.nanoTime() - startNanos) / 1_000_000L) + " ms"); + } expectingNoProblems(); IPath projPath = jproj.getProject().getLocation(); diff --git a/org.eclipse.jdt.apt.tests/src/org/eclipse/jdt/apt/tests/StarProcessorTests.java b/org.eclipse.jdt.apt.tests/src/org/eclipse/jdt/apt/tests/StarProcessorTests.java index 9bc933e392e..a4780246f15 100644 --- a/org.eclipse.jdt.apt.tests/src/org/eclipse/jdt/apt/tests/StarProcessorTests.java +++ b/org.eclipse.jdt.apt.tests/src/org/eclipse/jdt/apt/tests/StarProcessorTests.java @@ -500,7 +500,7 @@ public void testDeletedParentFile() throws Exception TestUtil.deleteFile(p1a1Path); // sleep to let the resource-change event fire - sleep( 1000 ); + Util.waitAtLeast(1000); incrementalBuild( project.getFullPath() ); @@ -511,7 +511,7 @@ public void testDeletedParentFile() throws Exception // sleep to let the resource-change event fire // TODO: Is there a more reliable, consistent, and efficient way to wait? - sleep( 1000 ); + Util.waitAtLeast(1000); incrementalBuild( project.getFullPath() ); expectingOnlyProblemsFor( p1bPath ); diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NullReferenceImplTests.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NullReferenceImplTests.java index 1895ac3a690..d013d3e787a 100644 --- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NullReferenceImplTests.java +++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NullReferenceImplTests.java @@ -643,9 +643,9 @@ public void test2062_mergedWith() { public void test2400_state_consistency() { int failures = 0; - long start; + long startNanos; if (MEASURE_PERFORMANCES) { - start = System.currentTimeMillis(); + startNanos = System.nanoTime(); } String header = "state consistency failures: "; for (int l = 0; l < COMBINATION_TESTS_LOOP_NB ; l++) { @@ -721,7 +721,7 @@ public void test2400_state_consistency() { } if (MEASURE_PERFORMANCES) { System.out.println("mergedWith\t\t\t" + COMBINATION_TESTS_LOOP_NB + "\t" + - (System.currentTimeMillis() - start)); + (System.nanoTime() - startNanos) / 1_000_000L); } for (int i = 0; i < State.states.length; i++) { if (State.states[i].symbolic) { diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NullReferenceImplTransformations.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NullReferenceImplTransformations.java index bbbe468e944..c0bd34dee39 100644 --- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NullReferenceImplTransformations.java +++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/NullReferenceImplTransformations.java @@ -2765,9 +2765,9 @@ int test(int combinationTestsLoopsNb, boolean skipHighOrderBits) { Map.Entry transition, transitionsSet; this.failuresNb = 0; // reset this.failuresNb = 0; // reset - long start = 0; + long startNanos = 0; if (combinationTestsLoopsNb > 1) { - start = System.currentTimeMillis(); + startNanos = System.nanoTime(); } for (int l = 0; l < combinationTestsLoopsNb ; l++) { transitionsSetsIterator = this.initializedTransitions.entrySet().iterator(); @@ -2795,8 +2795,8 @@ int test(int combinationTestsLoopsNb, boolean skipHighOrderBits) { } } if (combinationTestsLoopsNb > 1) { - System.out.println(this.name + "...\t\t" + combinationTestsLoopsNb + "\t" + - (System.currentTimeMillis() - start)); + System.out.println( + this.name + "...\t\t" + combinationTestsLoopsNb + "\t" + (System.nanoTime() - startNanos) / 1_000_000L); } // PREMATURE optimize test (extraneous allocations and copies) // PREMATURE optimize test (extraneous iterations - undup) @@ -3117,9 +3117,9 @@ int test(int combinationTestsLoopsNb, boolean skipHighOrderBits) { Map.Entry transition, transitionsSet; this.failuresNb = 0; // reset this.failuresNb = 0; // reset - long start = 0; + long startNanos = 0; if (combinationTestsLoopsNb > 1) { - start = System.currentTimeMillis(); + startNanos = System.nanoTime(); } for (int l = 0; l < combinationTestsLoopsNb ; l++) { transitionsSetsIterator = this.initializedTransitions.entrySet().iterator(); @@ -3159,7 +3159,7 @@ int test(int combinationTestsLoopsNb, boolean skipHighOrderBits) { } if (combinationTestsLoopsNb > 1) { System.out.println(this.name + "...\t\t" + combinationTestsLoopsNb + "\t" + - (System.currentTimeMillis() - start)); + (System.nanoTime() - startNanos) / 1_000_000L); } // PREMATURE optimize test (extraneous allocations and copies) // PREMATURE optimize test (extraneous iterations - undup) diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/eval/JDIStackFrame.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/eval/JDIStackFrame.java index 4f145d7bec6..55e64d3c158 100644 --- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/eval/JDIStackFrame.java +++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/eval/JDIStackFrame.java @@ -261,11 +261,11 @@ public boolean run(String codeSnippetClassName) { ObjectReference codeSnippetRunner; try { // Get the code snippet class - long start = System.currentTimeMillis(); + long timeoutNanos = System.nanoTime() + this.timeout * 1_000_000L; List classes = this.jdiVM.classesByName(codeSnippetClassName); while (classes.size() == 0) { try { - Thread.sleep(100); + Thread.sleep(1); } catch (InterruptedException e) { } classes = this.jdiVM.classesByName(codeSnippetClassName); @@ -280,7 +280,7 @@ public boolean run(String codeSnippetClassName) { break; } } - if (classes.size() == 0 && (System.currentTimeMillis()-start) > this.timeout) { + if (classes.size() == 0 && System.nanoTime() > timeoutNanos) { return false; } } diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/eval/target/IDEInterface.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/eval/target/IDEInterface.java index 2ec0070adf9..c00e64532e9 100644 --- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/eval/target/IDEInterface.java +++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/eval/target/IDEInterface.java @@ -48,7 +48,7 @@ public class IDEInterface { * Whether timing info should be printed to stdout */ static final boolean TIMING = false; - long startTime; + private long startNanos; int portNumber = 0; Socket socket; @@ -87,7 +87,7 @@ protected byte[][] getNextClasses() { return new byte[0][]; } if (TIMING) { - this.startTime = System.currentTimeMillis(); + this.startNanos = System.nanoTime(); } try { DataInputStream in = new DataInputStream(this.socket.getInputStream()); @@ -117,7 +117,7 @@ protected boolean getRunFlag() { return false; } if (TIMING) { - this.startTime = System.currentTimeMillis(); + this.startNanos = System.nanoTime(); } try { DataInputStream in = new DataInputStream(this.socket.getInputStream()); @@ -155,7 +155,7 @@ protected void sendResult(Class resultType, Object resultValue) { disconnect(); } if (TIMING) { - System.out.println("Time to run on target is " + (System.currentTimeMillis() - this.startTime) + "ms"); + System.out.println("Time to run on target is " + (System.nanoTime() - this.startNanos) / 1_000_000L + "ms"); } } } diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/runtime/TargetInterface.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/runtime/TargetInterface.java index 57570bd6550..a4639e66b7f 100644 --- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/runtime/TargetInterface.java +++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/runtime/TargetInterface.java @@ -41,7 +41,7 @@ public class TargetInterface { * Whether timing info should be printed to stdout */ static final boolean TIMING = false; - long sentTime; + private long sentTimeNanos; /** * The connection to the target's ide interface. @@ -59,12 +59,12 @@ public static class Result { * Try as long as the given time (in ms) has not expired. * Use isConnected() to find out if the connection was successful. */ -public void connect(ServerSocket server, int timeout) { +public void connect(ServerSocket server, int timeoutMs) { if (isConnected()) { return; } if (server != null) { - long startTime = System.currentTimeMillis(); + long timeoutNanos = System.nanoTime() + timeoutMs * 1_000_000L; do { try { this.socket = server.accept(); @@ -79,7 +79,7 @@ public void connect(ServerSocket server, int timeout) { } catch (InterruptedException e) { } } - } while (!isConnected() && (System.currentTimeMillis() - startTime) < timeout); + } while (!isConnected() && System.nanoTime() < timeoutNanos); } } /** @@ -135,7 +135,7 @@ public Result getResult() { } } if (TIMING) { - System.out.println("Time to send compiled classes, run on target and get result is " + (System.currentTimeMillis() - this.sentTime) + "ms"); + System.out.println("Time to send compiled classes, run on target and get result is " + (System.nanoTime() - this.sentTimeNanos) / 1_000_000L + "ms"); } Result result = new Result(); result.displayString = toString == null ? null : toString.toCharArray(); @@ -178,7 +178,7 @@ public void sendClasses(boolean mustRun, ClassFile[] classes) throws TargetExcep } } else { if (TIMING) { - this.sentTime = System.currentTimeMillis(); + this.sentTimeNanos = System.nanoTime(); } if (!isConnected()) { throw new TargetException("Connection to the target VM has been lost"); diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/util/Util.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/util/Util.java index b555d47edd9..feda6e00a01 100644 --- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/util/Util.java +++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/util/Util.java @@ -1257,14 +1257,15 @@ public static void unzip(String zipPath, String destDirPath) throws IOException } } -public static void waitAtLeast(int time) { - long start = System.currentTimeMillis(); - do { +public static void waitAtLeast(int timeMs) { + long timeoutNanos = System.nanoTime() + timeMs * 1_000_000L; + long remainingNanos; + while ((remainingNanos = timeoutNanos - System.nanoTime()) > 0) { try { - Thread.sleep(time); - } catch (InterruptedException e) { + Thread.sleep(remainingNanos / 1_000_000L); + } catch (InterruptedException ignored) { } - } while ((System.currentTimeMillis() - start) < time); + } } /** diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterJSR308Tests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterJSR308Tests.java index cbd9834b9ba..09d811ba640 100644 --- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterJSR308Tests.java +++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterJSR308Tests.java @@ -40,7 +40,7 @@ public class FormatterJSR308Tests extends AbstractJavaModelTests { public static final boolean DEBUG = false; static final String LINE_SEPARATOR = System.getProperty("line.separator"); private static final String PROJECT_NAME = "FormatterJSR308"; - private long time; + private long startNanos; DefaultCodeFormatterOptions formatterPrefs; Map formatterOptions; @@ -119,7 +119,7 @@ public void setUpSuite() throws Exception { } if (DEBUG) { - this.time = System.currentTimeMillis(); + this.startNanos = System.nanoTime(); } } @@ -131,7 +131,7 @@ public void tearDownSuite() throws Exception { deleteProject(JAVA_PROJECT); //$NON-NLS-1$ JAVA_PROJECT = null; if (DEBUG) { - System.out.println("Time spent = " + (System.currentTimeMillis() - this.time));//$NON-NLS-1$ + System.out.println("Time spent = " + (System.nanoTime() - this.startNanos) / 1_000_000L);//$NON-NLS-1$ } super.tearDownSuite(); } diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterRegressionTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterRegressionTests.java index bf1756b54e3..f520a1b8f89 100644 --- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterRegressionTests.java +++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/formatter/FormatterRegressionTests.java @@ -60,7 +60,7 @@ public class FormatterRegressionTests extends AbstractJavaModelTests { public static final String OUT = "_out"; public static final boolean DEBUG = false; static final String LINE_SEPARATOR = System.getProperty("line.separator"); - private long time; + private long startNanos; DefaultCodeFormatterOptions formatterPrefs; Map formatterOptions; @@ -232,7 +232,7 @@ public void setUpSuite() throws Exception { } if (DEBUG) { - this.time = System.currentTimeMillis(); + this.startNanos = System.nanoTime(); } } @@ -244,7 +244,7 @@ public void tearDownSuite() throws Exception { deleteProject(JAVA_PROJECT); //$NON-NLS-1$ JAVA_PROJECT = null; if (DEBUG) { - System.out.println("Time spent = " + (System.currentTimeMillis() - this.time));//$NON-NLS-1$ + System.out.println("Time spent = " + (System.nanoTime() - this.startNanos) / 1_000_000L);//$NON-NLS-1$ } super.tearDownSuite(); } diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AbstractJavaModelTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AbstractJavaModelTests.java index 16e093ccdb2..3f5ff6817f5 100644 --- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AbstractJavaModelTests.java +++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AbstractJavaModelTests.java @@ -479,13 +479,13 @@ public synchronized String toString() { } public void waitForResourceDelta() { - long start = System.currentTimeMillis(); + long startNanos = System.nanoTime(); while (!this.gotResourceDelta) { try { - Thread.sleep(50); + Thread.sleep(1); } catch (InterruptedException e) { } - if ((System.currentTimeMillis() - start) > 10000/*wait 10 s max*/) { + if ((System.nanoTime() - startNanos) / 1_0000_000 > 10000/* wait 10 s max */) { throw new RuntimeException("Didn't get resource delta after 10 seconds"); } } diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/BPThread.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/BPThread.java index 17bc7b03fb9..d8174ebb8b9 100644 --- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/BPThread.java +++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/BPThread.java @@ -20,7 +20,7 @@ public class BPThread { private final String name; private Thread thread; private final Semaphore sem = new Semaphore(); - private int breakppoint = -1; + private volatile int breakppoint = -1; public BPThread(String name) { this.name = name; @@ -51,17 +51,19 @@ public void resume() { this.sem.release(); } public void runToBP(int bp) { - if (isSuspended()) + if (isSuspended()) { resume(); - long start = System.currentTimeMillis(); + } + long timeoutNanos = System.nanoTime() + TIMEOUT * 1_000_000L; while (this.breakppoint != bp) { try { - Thread.sleep(100); + Thread.sleep(1); } catch (InterruptedException e) { e.printStackTrace(); } - if ((System.currentTimeMillis() - start) > TIMEOUT) + if (System.nanoTime() > timeoutNanos) { throw new RuntimeException(new TimeOutException()); + } } } public void start(Runnable runnable) { diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ClasspathTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ClasspathTests.java index 7694670c9e5..ec584fa581c 100644 --- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ClasspathTests.java +++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ClasspathTests.java @@ -5156,9 +5156,6 @@ private void noCycleDetection(final int numberOfParticipants, final boolean useF final String[] projectNames = new String[numberOfParticipants]; final int[] allProjectsInCycle = new int[numberOfParticipants]; - final long[] start = new long[1]; - final long[] time = new long[1]; - try { if (createProjectsFirst) { JavaCore.run(new IWorkspaceRunnable() { @@ -5195,16 +5192,11 @@ public void run(IProgressMonitor monitor) throws CoreException { System.arraycopy(oldClasspath, 0 , newClasspath, 0, oldClasspath.length); System.arraycopy(extraEntries, 0, newClasspath, oldClasspath.length, extraEntries.length); // set classpath - long innerStart = System.currentTimeMillis(); // time spent in individual CP setting projects[i].setRawClasspath(newClasspath, null); - time[0] += System.currentTimeMillis() - innerStart; } - start[0] = System.currentTimeMillis(); // time spent in delta refresh } }, null); - time[0] += System.currentTimeMillis()-start[0]; - //System.out.println("No cycle check ("+numberOfParticipants+" participants) : "+ time[0]+" ms, "+ (useForwardReferences ? "forward references" : "backward references") + ", " + (createProjectsFirst ? "two steps (projects created first, then classpaths are set)" : "one step (projects created and classpaths set in one batch)")); for (int i = 0; i < numberOfParticipants; i++){ // check cycle markers diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests2.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests2.java index fe74367eba1..00c3c6ccc8a 100644 --- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests2.java +++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CompletionTests2.java @@ -180,13 +180,12 @@ static File createDirectory(File parent, String name) { * @return monitor that will answer {@code isCancelled() == true} after one minute */ static NullProgressMonitor createSelfCancellingMonitor() { + long timeoutNanos = System.nanoTime() + 60_000 * 1_000_000L; NullProgressMonitor monitor = new NullProgressMonitor() { - long start = System.currentTimeMillis(); public boolean isCanceled() { - long time = System.currentTimeMillis() - this.start; - return time > 60_000; // cancel after 1 minute - } + return System.nanoTime() >= timeoutNanos; + } }; return monitor; diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/Semaphore.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/Semaphore.java index 96a8c79e8f6..21d0515c56d 100644 --- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/Semaphore.java +++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/Semaphore.java @@ -41,21 +41,22 @@ public void acquire() { e.printStackTrace(); } } - public synchronized void acquire(long timeout) throws TimeOutException { - long start = System.currentTimeMillis(); - while (this.permissions <= 0 && timeout > 0) { + public synchronized void acquire(long timeoutMs) throws TimeOutException { + long timeoutNanos = timeoutMs == Long.MAX_VALUE ? Long.MAX_VALUE : (timeoutMs * 1_000_000L); + long startNanos = System.nanoTime(); + while (this.permissions <= 0 && timeoutNanos > 0) { try { if (this.name != null) System.out.println(Thread.currentThread() + " - waiting to acquire: " + this.name); //$NON-NLS-1$ - if (timeout == Long.MAX_VALUE) { + if (timeoutNanos == Long.MAX_VALUE) { wait(); } else { - wait(timeout); + wait(timeoutNanos / 1_000_000L); } } catch(InterruptedException e){ } - timeout -= System.currentTimeMillis() - start; + timeoutNanos -= System.nanoTime() - startNanos; } - if (timeout <= 0) { + if (timeoutNanos <= 0) { throw new TimeOutException(); } this.permissions--; diff --git a/org.eclipse.jdt.core.tests.performance/src/org/eclipse/jdt/core/tests/performance/FullSourceWorkspaceBuildTests.java b/org.eclipse.jdt.core.tests.performance/src/org/eclipse/jdt/core/tests/performance/FullSourceWorkspaceBuildTests.java index 6774da5041b..3880d0ec2d9 100644 --- a/org.eclipse.jdt.core.tests.performance/src/org/eclipse/jdt/core/tests/performance/FullSourceWorkspaceBuildTests.java +++ b/org.eclipse.jdt.core.tests.performance/src/org/eclipse/jdt/core/tests/performance/FullSourceWorkspaceBuildTests.java @@ -396,10 +396,7 @@ long[] parseFile(String fileName, int kind, int iterations) throws InvalidInputE // Measures long parsedLines = 0; long parsedCharacters = 0; - long start = 0; - if (DEBUG) { - start = System.currentTimeMillis(); - } + long startNanos = System.nanoTime(); startMeasuring(); for (int i = 0; i < iterations; i++) { ICompilationUnit unit = new CompilationUnit(content, file.getName(), null); @@ -413,8 +410,8 @@ long[] parseFile(String fileName, int kind, int iterations) throws InvalidInputE // Warn if measure time is not enough while debugging if (DEBUG) { - long time = System.currentTimeMillis() - start; - if (time < TIME_THRESHOLD) { + long timeMs = (System.nanoTime() - startNanos) / 1_000_000L; + if (timeMs < TIME_THRESHOLD) { System.err.println(parsedLines + " lines/"+ parsedCharacters + " characters parsed"); } else { System.out.println(parsedLines + " lines/"+ parsedCharacters + " characters parsed"); diff --git a/org.eclipse.jdt.core.tests.performance/src/org/eclipse/jdt/core/tests/performance/FullSourceWorkspaceCompleteSearchTests.java b/org.eclipse.jdt.core.tests.performance/src/org/eclipse/jdt/core/tests/performance/FullSourceWorkspaceCompleteSearchTests.java index bf5e957d20a..3cff0d299d8 100644 --- a/org.eclipse.jdt.core.tests.performance/src/org/eclipse/jdt/core/tests/performance/FullSourceWorkspaceCompleteSearchTests.java +++ b/org.eclipse.jdt.core.tests.performance/src/org/eclipse/jdt/core/tests/performance/FullSourceWorkspaceCompleteSearchTests.java @@ -201,13 +201,15 @@ protected void search(IJavaElement element, int limitTo, JavaSearchResultCollect * @param resultCollector result collector to count the matches found */ protected void cleanCategoryTableCache(boolean type, JavaSearchResultCollector resultCollector) throws CoreException { - long time = System.currentTimeMillis(); + long startNanos = System.nanoTime(); if (type) { search("foo", FIELD, DECLARATIONS, resultCollector); } else { search("Foo", TYPE, DECLARATIONS, resultCollector); } - if (DEBUG) System.out.println("Time to clean category table cache: "+(System.currentTimeMillis()-time)); + if (DEBUG) { + System.out.println("Time to clean category table cache [ms]: " + (System.nanoTime() - startNanos) / 1_000_000L); + } } /** diff --git a/org.eclipse.jdt.core.tests.performance/src/org/eclipse/jdt/core/tests/performance/FullSourceWorkspaceFormatterTests.java b/org.eclipse.jdt.core.tests.performance/src/org/eclipse/jdt/core/tests/performance/FullSourceWorkspaceFormatterTests.java index 8d89b954c06..194557dd331 100644 --- a/org.eclipse.jdt.core.tests.performance/src/org/eclipse/jdt/core/tests/performance/FullSourceWorkspaceFormatterTests.java +++ b/org.eclipse.jdt.core.tests.performance/src/org/eclipse/jdt/core/tests/performance/FullSourceWorkspaceFormatterTests.java @@ -65,9 +65,9 @@ protected void setUp() throws Exception { File file = fetchFromBinariesProject("GenericTypeTest.java", 1_258_374); String sourceFilePath = file.getAbsolutePath(); - long start = System.currentTimeMillis(); + long startNanos = System.nanoTime(); FORMAT_TYPE_SOURCE = Util.fileContent(sourceFilePath); - System.out.println("("+(System.currentTimeMillis()-start)+"ms)"); + System.out.println("(" + (System.nanoTime() - startNanos) / 1_000_000L + "ms)"); } @Override @@ -101,10 +101,11 @@ public void testFormatDefault() throws JavaModelException { String source = PARSER_WORKING_COPY.getSource(); int warmup = WARMUP_COUNT; for (int i=0; i0 && i%10==0) System.out.print(" + folder src"+i+"..."); - long top = System.currentTimeMillis(); + long topNanos = System.nanoTime(); for (int j = 0; j < PACKAGES_COUNT; j++) { new java.io.File(path + i + "/org/eclipse/jdt/core/tests" + i + "/performance" + j).mkdirs(); } - if (PRINT && i>0 && i%10==0) System.out.println("("+(System.currentTimeMillis()-top)+"ms)"); + if (PRINT && i > 0 && i % 10 == 0) { + System.out.println("(" + (System.nanoTime() - topNanos) / 1_000_000L + " ms)"); + } } - System.out.println(" => global time = "+(System.currentTimeMillis()-start)/1000.0+" seconds)"); + System.out.println(" => global time = " + (System.nanoTime() - startNanos) / 1_000_000L + " ms)"); // Add project to workspace - start = System.currentTimeMillis(); + startNanos = System.nanoTime(); System.out.print(" - add project to full source workspace..."); ENV.addProject(BIG_PROJECT_NAME); BIG_PROJECT = (JavaProject) createJavaProject(BIG_PROJECT_NAME, sourceFolders, "bin", "1.4"); BIG_PROJECT.setRawClasspath(BIG_PROJECT.getRawClasspath(), null); } - System.out.println("("+(System.currentTimeMillis()-start)+"ms)"); + System.out.println("(" + (System.nanoTime() - startNanos) / 1_000_000L + " ms)"); // Add CU with secondary type System.out.print(" - Create compilation unit with secondary type..."); - start = System.currentTimeMillis(); + startNanos = System.nanoTime(); BIG_PROJECT_TYPE_PATH = new Path("/BigProject/src" + (FOLDERS_COUNT-1) + "/org/eclipse/jdt/core/tests" + (FOLDERS_COUNT-1) + "/performance" + (PACKAGES_COUNT-1) + "/TestBigProject.java"); IFile file = workspaceRoot.getFile(BIG_PROJECT_TYPE_PATH); if (!file.exists()) { @@ -187,7 +189,7 @@ private void setUpBigProject() throws CoreException, IOException { file.create(content.getBytes(), true, false, null); } WORKING_COPY = (ICompilationUnit)JavaCore.create(file); - System.out.println("("+(System.currentTimeMillis()-start)+"ms)"); + System.out.println("(" + (System.nanoTime() - startNanos) / 1_000_000L + "ms)"); } finally { // do not delete project } @@ -1344,10 +1346,10 @@ public void testReopenSingleProject() throws CoreException { tagAsSummary("Reopen a single project in a workspace", false); // do NOT put in fingerprint // First close all Eclipse projects - long startTime = 0; + long startNanos = 0; if (PRINT) { System.out.print("Close all Eclipse projects..."); - startTime = System.currentTimeMillis(); + startNanos = System.nanoTime(); } int length=ALL_PROJECTS.length; for (int j=0; j B1, B1\n" + "B2 -> B2, B2"); } + + // https://github.com/eclipse-jdt/eclipse.jdt.core/issues/3395 + // [Enhanced Switch] ECG generated code hangs + public void testIssue3395() { + runConformTest( + new String[] { + "X.java", + """ + public class X { + public static void main(String[] args) { + for (String s : new String [] { "World", "Check", "Hello", "Null", "Default" }) { + String sel = s.equals("Null") ? null : s; + switch (sel) { + case "World" -> System.out.print("World"); + case String str when s.equals("Check") -> System.out.print("Check"); + case "Hello" -> System.out.print("Hello"); + case null -> System.out.print("Null"); + default -> System.out.print("Default"); + } + System.out.print("--"); + } + System.out.println(""); + for (String s : new String [] { "Default", "Null", "Hello", "Check", "World" }) { + String sel = s.equals("Null") ? null : s; + switch (sel) { + case "World" -> System.out.print("World"); + case String str when s.equals("Check") -> System.out.print("Check"); + case "Hello" -> System.out.print("Hello"); + case null -> System.out.print("Null"); + default -> System.out.print("Default"); + } + System.out.print("--"); + } + System.out.println(""); + } + } + """, + }, + "World--Check--Hello--Null--Default--\n" + + "Default--Null--Hello--Check--World--"); + } } From 7ebcecc88a1a02f299450c75d63328ffafdcf3fc Mon Sep 17 00:00:00 2001 From: Stephan Herrmann Date: Thu, 5 Dec 2024 00:44:11 +0100 Subject: [PATCH 24/26] [Performance] Full build takes more time since 2024-09 (type inference) (#3387) optimize 3: + never visit the same super type more than once Fixes https://github.com/eclipse-jdt/eclipse.jdt.core/issues/3327 --- .../eclipse/jdt/internal/compiler/lookup/BoundSet.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/BoundSet.java b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/BoundSet.java index 871f9fe03db..360a4ea4408 100644 --- a/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/BoundSet.java +++ b/org.eclipse.jdt.core.compiler.batch/src/org/eclipse/jdt/internal/compiler/lookup/BoundSet.java @@ -1264,8 +1264,14 @@ private boolean superOnlyRaw(TypeBinding g, TypeBinding s, LookupEnvironment env } protected List> allSuperPairsWithCommonGenericType(TypeBinding s, TypeBinding t) { + return allSuperPairsWithCommonGenericTypeRecursive(s, t, new HashSet<>()); + } + + private List> allSuperPairsWithCommonGenericTypeRecursive(TypeBinding s, TypeBinding t, HashSet visited) { if (s == null || s.id == TypeIds.T_JavaLangObject || t == null || t.id == TypeIds.T_JavaLangObject) return Collections.emptyList(); + if (!visited.add(s.prototype())) + return Collections.emptyList(); List> result = new ArrayList<>(); if (s.isParameterizedType() && t.isParameterizedType() // optimization #1: clients of this method only want to compare type arguments && TypeBinding.equalsEquals(s.original(), t.original())) { @@ -1277,11 +1283,11 @@ protected List> allSuperPairsWithCommonGenericType(TypeBinding if (tSuper != null && s.isParameterizedType() && tSuper.isParameterizedType()) { // optimization #1 again result.add(new Pair<>(s, tSuper)); } - result.addAll(allSuperPairsWithCommonGenericType(s.superclass(), t)); + result.addAll(allSuperPairsWithCommonGenericTypeRecursive(s.superclass(), t, visited)); ReferenceBinding[] superInterfaces = s.superInterfaces(); if (superInterfaces != null) { for (ReferenceBinding superInterface : superInterfaces) { - result.addAll(allSuperPairsWithCommonGenericType(superInterface, t)); + result.addAll(allSuperPairsWithCommonGenericTypeRecursive(superInterface, t, visited)); } } return result; From 452a5de1ca83d1641d9a537417c71a531c36f831 Mon Sep 17 00:00:00 2001 From: Jay Arthanareeswaran Date: Thu, 5 Dec 2024 12:59:49 +0530 Subject: [PATCH 25/26] Update version of jdt.core to be the same as compiler.batch (#3397) --- org.eclipse.jdt.core/META-INF/MANIFEST.MF | 4 ++-- org.eclipse.jdt.core/pom.xml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/org.eclipse.jdt.core/META-INF/MANIFEST.MF b/org.eclipse.jdt.core/META-INF/MANIFEST.MF index 8fc000b414d..c8a79b82985 100644 --- a/org.eclipse.jdt.core/META-INF/MANIFEST.MF +++ b/org.eclipse.jdt.core/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.jdt.core; singleton:=true -Bundle-Version: 3.40.100.qualifier +Bundle-Version: 3.41.0.qualifier Bundle-Activator: org.eclipse.jdt.core.JavaCore Bundle-Vendor: %providerName Bundle-Localization: plugin @@ -47,7 +47,7 @@ Require-Bundle: org.eclipse.core.resources;bundle-version="[3.22.0,4.0.0)", org.eclipse.core.filesystem;bundle-version="[1.11.0,2.0.0)", org.eclipse.text;bundle-version="[3.6.0,4.0.0)", org.eclipse.team.core;bundle-version="[3.1.0,4.0.0)";resolution:=optional, - org.eclipse.jdt.core.compiler.batch;bundle-version="3.40.0";visibility:=reexport + org.eclipse.jdt.core.compiler.batch;bundle-version="3.41.0";visibility:=reexport Bundle-RequiredExecutionEnvironment: JavaSE-17 Eclipse-ExtensibleAPI: true Bundle-ActivationPolicy: lazy diff --git a/org.eclipse.jdt.core/pom.xml b/org.eclipse.jdt.core/pom.xml index 856bb483995..3ae36bab719 100644 --- a/org.eclipse.jdt.core/pom.xml +++ b/org.eclipse.jdt.core/pom.xml @@ -17,7 +17,7 @@ 4.35.0-SNAPSHOT org.eclipse.jdt.core - 3.40.100-SNAPSHOT + 3.41.0-SNAPSHOT eclipse-plugin From 7a31ab746a1d5a40e61235ec2998b30e28abcc34 Mon Sep 17 00:00:00 2001 From: Stephan Herrmann Date: Thu, 5 Dec 2024 17:24:41 +0100 Subject: [PATCH 26/26] 6 new compiler test errors on Java 17 builds since I20241203-1800 (#3405) Fixes https://github.com/eclipse-jdt/eclipse.jdt.core/issues/3393 --- .../tests/compiler/regression/ResourceLeakAnnotatedTests.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ResourceLeakAnnotatedTests.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ResourceLeakAnnotatedTests.java index ddc0e3da95e..3915fcaaf81 100644 --- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ResourceLeakAnnotatedTests.java +++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/ResourceLeakAnnotatedTests.java @@ -1739,7 +1739,7 @@ public T register(@Owning @Override public void close() throws IOException { - for (Closeable closeable : toClose.reversed()) { + for (Closeable closeable : toClose) { closeable.close(); // Ignore error handling for this demonstration } } @@ -1789,7 +1789,7 @@ public T register(@Owning @Override public void close() throws IOException { - for (Closeable closeable : toClose.reversed()) { + for (Closeable closeable : toClose) { closeable.close(); // Ignore error handling for this demonstration } }