Integrated Philipp's proof-of-concept delombok in javac7 fix, and used some

creative stubbing to ensure both the javac7 and the javac6 source file can be loaded in the same project in eclipse without dependency warnings.
This commit is contained in:
Reinier Zwitserloot committed 2011-08-15 22:11:25 +02:00
1 parent 7773bd4e60
commit d8d47c687d
14 files changed
+151 -95

No files matched your search

+8 -9
View File
@@ -130,7 +130,12 @@ the common tasks and can be called on to run the main aspects of all the sub-scr
anymore until you 'ant clean'. That's very much not desired, so we kill the processor, which stops lombok from running.
We re-create the file at the end of this target. -->
<delete file="build/lombok/META-INF/services/javax.annotation.processing.Processor" quiet="true" />
<ivy:compile destdir="build/stubs" source="1.5" target="1.5" includeantruntime="false">
<src path="src/stubs" />
</ivy:compile>
<ivy:compile destdir="build/lombok" source="1.5" target="1.5" includeantruntime="false">
<compilerarg value="-Xbootclasspath/p:build/stubs" />
<src path="src/core" />
<src path="src/installer" />
<src path="src/eclipseAgent" />
@@ -138,7 +143,7 @@ the common tasks and can be called on to run the main aspects of all the sub-scr
<classpath refid="build.path" />
</ivy:compile>
<ivy:compile destdir="build/lombok" source="1.6" target="1.6" includeantruntime="false">
<src path="src/contrib" />
<compilerarg value="-Xbootclasspath/p:build/stubs" />
<src path="src/core" />
<src path="src/delombok" />
<include name="com/sun/**" />
@@ -147,12 +152,6 @@ the common tasks and can be called on to run the main aspects of all the sub-scr
<classpath location="build/lombok" />
<classpath refid="build.path" />
</ivy:compile>
<ivy:compile destdir="build/lombok" source="1.6" target="1.6" includeantruntime="false">
<src path="experimental/delombok_java7/src/main" />
<include name="lombok/delombok/**" />
<classpath location="build/lombok" />
<classpath location="experimental/delombok_java7/lib/javac7.jar" />
</ivy:compile>
<mkdir dir="build/lombok/META-INF" />
<mkdir dir="build/lombok/META-INF/services" />
<echo file="build/lombok/META-INF/services/javax.annotation.processing.Processor">lombok.core.AnnotationProcessor</echo>
@@ -191,7 +190,7 @@ the common tasks and can be called on to run the main aspects of all the sub-scr
<srcdir dir="src/eclipseAgent" />
<srcdir dir="src/installer" />
<srcdir dir="src/delombok" />
<srcdir dir="src/contrib" />
<srcdir dir="src/stubs" />
<srcdir dir="experimental/src" />
<srcdir dir="test/transform/src" test="true" />
<srcdir dir="test/core/src" test="true" />
@@ -210,7 +209,7 @@ the common tasks and can be called on to run the main aspects of all the sub-scr
<srcdir dir="src/eclipseAgent" />
<srcdir dir="src/installer" />
<srcdir dir="src/delombok" />
<srcdir dir="src/contrib" />
<srcdir dir="src/stubs" />
<srcdir dir="experimental/src" />
<srcdir dir="test/transform/src" />
<srcdir dir="test/core/src" />
@@ -1,41 +0,0 @@
/*
* Copyright (c) 2005, 2009, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* The lombok team has removed the implementation
*/
package com.sun.tools.javac.file;
import javax.tools.JavaFileObject;
/**
* <p><b>This is NOT part of any supported API.
* If you write code that depends on this, you do so at your own risk.
* This code and its internal interfaces are subject to change or
* deletion without notice.</b>
*/
public abstract class BaseFileObject implements JavaFileObject {
protected BaseFileObject(JavacFileManager fileManager) {}
}
@@ -1,41 +0,0 @@
/*
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* The lombok team has removed the implementation
*/
package com.sun.tools.javac.file;
/**
* This class provides access to the source, class and other files
* used by the compiler and related tools.
*
* <p><b>This is NOT part of any supported API.
* If you write code that depends on this, you do so at your own risk.
* This code and its internal interfaces are subject to change or
* deletion without notice.</b>
*/
public class JavacFileManager {}
@@ -87,7 +87,7 @@ public class DelombokApp implements LombokApp {
final JarFile toolsJarFile = new JarFile(toolsJar);
ClassLoader loader = new ClassLoader() {
private Class<?>loadStreamAsClass(String name, boolean resolve, InputStream in) throws ClassNotFoundException {
private Class<?> loadStreamAsClass(String name, boolean resolve, InputStream in) throws ClassNotFoundException {
try {
try {
byte[] b = new byte[65536];
@@ -663,9 +663,9 @@ public class PrettyCommentsPrinter extends JCTree.Visitor {
else
print("class " + tree.name);
printTypeParameters(tree.typarams);
if (tree.extending != null) {
if (tree.getExtendsClause() != null) {
print(" extends ");
printExpr(tree.extending);
printExpr(tree.getExtendsClause());
}
if (tree.implementing.nonEmpty()) {
print(" implements ");
@@ -36,6 +36,10 @@ public class CommentCollectingScannerFactory extends Scanner.Factory {
public CommentCollectingScanner.Factory make() {
return new CommentCollectingScannerFactory(context);
}
public CommentCollectingScanner.Factory make(Context c) {
return new CommentCollectingScannerFactory(c);
}
});
}
@@ -32,7 +32,7 @@ import com.sun.tools.javac.parser.Scanner;
public class CommentCollectingScanner extends Scanner {
private final Comments comments;
private int endComment = 0;
private int endComment = 0;
public CommentCollectingScanner(CommentCollectingScannerFactory factory, CharBuffer charBuffer, Comments comments) {
super(factory, charBuffer);
@@ -37,6 +37,10 @@ public class CommentCollectingScannerFactory extends ScannerFactory {
public ScannerFactory make() {
return new CommentCollectingScannerFactory(context);
}
@Override public ScannerFactory make(Context c) {
return new CommentCollectingScannerFactory(c);
}
});
}
+1
View File
@@ -0,0 +1 @@
These are stub versions of various bits of javac-internal API (for various different versions of javac). Lombok is compiled against these.
@@ -0,0 +1,10 @@
/*
* These are stub versions of various bits of javac-internal API (for various different versions of javac). Lombok is compiled against these.
*/
package com.sun.tools.javac.file;
import javax.tools.JavaFileObject;
public abstract class BaseFileObject implements JavaFileObject {
protected BaseFileObject(JavacFileManager fileManager) {}
}
@@ -0,0 +1,6 @@
/*
* These are stub versions of various bits of javac-internal API (for various different versions of javac). Lombok is compiled against these.
*/
package com.sun.tools.javac.file;
public class JavacFileManager {}
@@ -0,0 +1,62 @@
/*
* These are stub versions of various bits of javac-internal API (for various different versions of javac). Lombok is compiled against these.
*/
package com.sun.tools.javac.parser;
import java.nio.CharBuffer;
import com.sun.tools.javac.util.Context;
public class Scanner {
protected Scanner(Factory fac, CharBuffer buffer) {
}
protected Scanner(Factory fac, char[] input, int inputLength) {
}
protected Scanner(ScannerFactory fac, CharBuffer buffer) {
}
protected Scanner(ScannerFactory fac, char[] input, int inputLength) {
}
public static class Factory {
public static final Context.Key<Scanner.Factory> scannerFactoryKey = null;
protected Factory(Context context) {
}
public Scanner newScanner(CharSequence input) {
return null;
}
public Scanner newScanner(char[] input, int inputLength) {
return null;
}
}
public enum CommentStyle {
LINE,
BLOCK,
JAVADOC,
}
protected void processComment(CommentStyle style) {
}
public int prevEndPos() {
return -1;
}
public int endPos() {
return -1;
}
public int pos() {
return -1;
}
public char[] getRawCharacters(int beginIndex, int endIndex) {
return null;
}
}
@@ -0,0 +1,21 @@
/*
* These are stub versions of various bits of javac-internal API (for various different versions of javac). Lombok is compiled against these.
*/
package com.sun.tools.javac.parser;
import com.sun.tools.javac.util.Context;
public class ScannerFactory {
public static final Context.Key<ScannerFactory> scannerFactoryKey = null;
protected ScannerFactory(Context c) {
}
public Scanner newScanner(CharSequence input, boolean keepDocComments) {
return null;
}
public Scanner newScanner(char[] input, int inputLength, boolean keepDocComments) {
return null;
}
}
@@ -0,0 +1,31 @@
/*
* These are stub versions of various bits of javac-internal API (for various different versions of javac). Lombok is compiled against these.
*/
package com.sun.tools.javac.util;
public class Context {
public static class Key<T> {
}
public interface Factory<T> {
T make(Context c);
T make();
}
public <T> void put(Key<T> key, Factory<T> fac) {
}
public <T> void put(Key<T> key, T data) {
}
public <T> void put(Class<T> clazz, T data) {
}
public <T> T get(Key<T> key) {
return null;
}
public <T> T get(Class<T> clazz) {
return null;
}
}