aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/core/lombok/bytecode/PreventNullAnalysisRemover.java2
-rw-r--r--src/core/lombok/bytecode/SneakyThrowsRemover.java2
-rw-r--r--src/core/lombok/eclipse/Eclipse.java743
-rw-r--r--src/core/lombok/eclipse/EclipseAST.java2
-rw-r--r--src/core/lombok/eclipse/EclipseASTVisitor.java28
-rw-r--r--src/core/lombok/eclipse/HandlerLibrary.java13
-rw-r--r--src/core/lombok/eclipse/TransformEclipseAST.java6
-rw-r--r--src/core/lombok/eclipse/handlers/EclipseHandlerUtil.java743
-rw-r--r--src/core/lombok/eclipse/handlers/HandleCleanup.java28
-rw-r--r--src/core/lombok/eclipse/handlers/HandleConstructor.java58
-rw-r--r--src/core/lombok/eclipse/handlers/HandleEqualsAndHashCode.java226
-rw-r--r--src/core/lombok/eclipse/handlers/HandleGetter.java78
-rw-r--r--src/core/lombok/eclipse/handlers/HandleLog.java18
-rw-r--r--src/core/lombok/eclipse/handlers/HandleSetter.java16
-rw-r--r--src/core/lombok/eclipse/handlers/HandleSneakyThrows.java21
-rw-r--r--src/core/lombok/eclipse/handlers/HandleSynchronized.java18
-rw-r--r--src/core/lombok/eclipse/handlers/HandleToString.java37
-rw-r--r--src/core/lombok/eclipse/handlers/HandleVal.java3
-rw-r--r--src/core/lombok/javac/HandlerLibrary.java3
-rw-r--r--src/core/lombok/javac/Javac.java239
-rw-r--r--src/core/lombok/javac/JavacResolution.java3
-rw-r--r--src/core/lombok/javac/handlers/HandleCleanup.java8
-rw-r--r--src/core/lombok/javac/handlers/HandleConstructor.java16
-rw-r--r--src/core/lombok/javac/handlers/HandleDelegate.java9
-rw-r--r--src/core/lombok/javac/handlers/HandleEqualsAndHashCode.java76
-rw-r--r--src/core/lombok/javac/handlers/HandleGetter.java44
-rw-r--r--src/core/lombok/javac/handlers/HandleLog.java8
-rw-r--r--src/core/lombok/javac/handlers/HandleSetter.java17
-rw-r--r--src/core/lombok/javac/handlers/HandleSneakyThrows.java12
-rw-r--r--src/core/lombok/javac/handlers/HandleSynchronized.java12
-rw-r--r--src/core/lombok/javac/handlers/HandleToString.java25
-rw-r--r--src/core/lombok/javac/handlers/HandleVal.java9
-rw-r--r--src/core/lombok/javac/handlers/JavacHandlerUtil.java237
-rw-r--r--src/delombok/lombok/delombok/Delombok.java26
-rw-r--r--src/delombok/lombok/delombok/DelombokResult.java2
-rw-r--r--src/delombok/lombok/delombok/PrettyCommentsPrinter.java5
-rw-r--r--src/eclipseAgent/lombok/eclipse/agent/PatchDelegate.java37
-rw-r--r--src/eclipseAgent/lombok/eclipse/agent/PatchVal.java13
-rw-r--r--src/utils/lombok/bytecode/AsmUtil.java (renamed from src/core/lombok/bytecode/PostCompilationUtil.java)4
-rw-r--r--src/utils/lombok/bytecode/ClassFileMetaData.java (renamed from src/core/lombok/bytecode/ClassFileMetaData.java)0
-rw-r--r--src/utils/lombok/bytecode/FixedClassWriter.java (renamed from src/core/lombok/bytecode/FixedClassWriter.java)0
-rw-r--r--src/utils/lombok/core/SpiLoadUtil.java (renamed from src/core/lombok/core/SpiLoadUtil.java)7
-rw-r--r--src/utils/lombok/core/TransformationsUtil.java (renamed from src/core/lombok/core/handlers/TransformationsUtil.java)2
-rw-r--r--src/utils/lombok/eclipse/Eclipse.java175
-rw-r--r--src/utils/lombok/javac/Comment.java (renamed from src/delombok/lombok/delombok/Comment.java)15
-rw-r--r--src/utils/lombok/javac/Comments.java52
-rw-r--r--src/utils/lombok/javac/Javac.java139
-rw-r--r--src/utils/lombok/javac/TreeMirrorMaker.java (renamed from src/core/lombok/javac/TreeMirrorMaker.java)5
-rw-r--r--src/utils/lombok/javac/java6/CommentCollectingScanner.java (renamed from src/delombok/lombok/delombok/java7/CommentCollectingScanner.java)10
-rw-r--r--src/utils/lombok/javac/java6/CommentCollectingScannerFactory.java (renamed from src/delombok/lombok/delombok/java6/CommentCollectingScannerFactory.java)24
-rw-r--r--src/utils/lombok/javac/java7/CommentCollectingScanner.java (renamed from src/delombok/lombok/delombok/java6/CommentCollectingScanner.java)12
-rw-r--r--src/utils/lombok/javac/java7/CommentCollectingScannerFactory.java (renamed from src/delombok/lombok/delombok/java7/CommentCollectingScannerFactory.java)24
52 files changed, 1658 insertions, 1654 deletions
diff --git a/src/core/lombok/bytecode/PreventNullAnalysisRemover.java b/src/core/lombok/bytecode/PreventNullAnalysisRemover.java
index 4dc08bb4..b7b29f9f 100644
--- a/src/core/lombok/bytecode/PreventNullAnalysisRemover.java
+++ b/src/core/lombok/bytecode/PreventNullAnalysisRemover.java
@@ -21,7 +21,7 @@
*/
package lombok.bytecode;
-import static lombok.bytecode.PostCompilationUtil.fixJSRInlining;
+import static lombok.bytecode.AsmUtil.fixJSRInlining;
import java.util.concurrent.atomic.AtomicBoolean;
diff --git a/src/core/lombok/bytecode/SneakyThrowsRemover.java b/src/core/lombok/bytecode/SneakyThrowsRemover.java
index 54b00052..7c9a08a6 100644
--- a/src/core/lombok/bytecode/SneakyThrowsRemover.java
+++ b/src/core/lombok/bytecode/SneakyThrowsRemover.java
@@ -21,7 +21,7 @@
*/
package lombok.bytecode;
-import static lombok.bytecode.PostCompilationUtil.*;
+import static lombok.bytecode.AsmUtil.*;
import java.util.concurrent.atomic.AtomicBoolean;
diff --git a/src/core/lombok/eclipse/Eclipse.java b/src/core/lombok/eclipse/Eclipse.java
deleted file mode 100644
index 858c2fe9..00000000
--- a/src/core/lombok/eclipse/Eclipse.java
+++ /dev/null
@@ -1,743 +0,0 @@
-/*
- * Copyright © 2009-2011 Reinier Zwitserloot and Roel Spilker.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- */
-package lombok.eclipse;
-
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.WeakHashMap;
-
-import lombok.core.AnnotationValues;
-import lombok.core.TypeLibrary;
-import lombok.core.TypeResolver;
-import lombok.core.AST.Kind;
-import lombok.core.AnnotationValues.AnnotationValue;
-
-import org.eclipse.core.runtime.ILog;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jdt.internal.compiler.ast.ASTNode;
-import org.eclipse.jdt.internal.compiler.ast.Annotation;
-import org.eclipse.jdt.internal.compiler.ast.ArrayInitializer;
-import org.eclipse.jdt.internal.compiler.ast.ArrayQualifiedTypeReference;
-import org.eclipse.jdt.internal.compiler.ast.ArrayTypeReference;
-import org.eclipse.jdt.internal.compiler.ast.ClassLiteralAccess;
-import org.eclipse.jdt.internal.compiler.ast.CompilationUnitDeclaration;
-import org.eclipse.jdt.internal.compiler.ast.Expression;
-import org.eclipse.jdt.internal.compiler.ast.Literal;
-import org.eclipse.jdt.internal.compiler.ast.MarkerAnnotation;
-import org.eclipse.jdt.internal.compiler.ast.MemberValuePair;
-import org.eclipse.jdt.internal.compiler.ast.NormalAnnotation;
-import org.eclipse.jdt.internal.compiler.ast.ParameterizedQualifiedTypeReference;
-import org.eclipse.jdt.internal.compiler.ast.ParameterizedSingleTypeReference;
-import org.eclipse.jdt.internal.compiler.ast.QualifiedNameReference;
-import org.eclipse.jdt.internal.compiler.ast.QualifiedTypeReference;
-import org.eclipse.jdt.internal.compiler.ast.SingleMemberAnnotation;
-import org.eclipse.jdt.internal.compiler.ast.SingleNameReference;
-import org.eclipse.jdt.internal.compiler.ast.SingleTypeReference;
-import org.eclipse.jdt.internal.compiler.ast.TypeParameter;
-import org.eclipse.jdt.internal.compiler.ast.TypeReference;
-import org.eclipse.jdt.internal.compiler.ast.Wildcard;
-import org.eclipse.jdt.internal.compiler.lookup.CaptureBinding;
-import org.eclipse.jdt.internal.compiler.lookup.ParameterizedTypeBinding;
-import org.eclipse.jdt.internal.compiler.lookup.ReferenceBinding;
-import org.eclipse.jdt.internal.compiler.lookup.TypeBinding;
-import org.eclipse.jdt.internal.compiler.lookup.TypeConstants;
-import org.eclipse.jdt.internal.compiler.lookup.TypeIds;
-import org.eclipse.jdt.internal.compiler.lookup.WildcardBinding;
-import org.osgi.framework.Bundle;
-
-public class Eclipse {
- /**
- * Eclipse's Parser class is instrumented to not attempt to fill in the body of any method or initializer
- * or field initialization if this flag is set. Set it on the flag field of
- * any method, field, or initializer you create!
- */
- public static final int ECLIPSE_DO_NOT_TOUCH_FLAG = ASTNode.Bit24;
-
- private Eclipse() {
- //Prevent instantiation
- }
-
- private static final String DEFAULT_BUNDLE = "org.eclipse.jdt.core";
-
- /**
- * Generates an error in the Eclipse error log. Note that most people never look at it!
- *
- * @param cud The {@code CompilationUnitDeclaration} where the error occurred.
- * An error will be generated on line 0 linking to the error log entry. Can be {@code null}.
- * @param message Human readable description of the problem.
- * @param error The associated exception. Can be {@code null}.
- */
- public static void error(CompilationUnitDeclaration cud, String message, Throwable error) {
- error(cud, message, null, error);
- }
-
- /**
- * Generates an error in the Eclipse error log. Note that most people never look at it!
- *
- * @param cud The {@code CompilationUnitDeclaration} where the error occurred.
- * An error will be generated on line 0 linking to the error log entry. Can be {@code null}.
- * @param message Human readable description of the problem.
- * @param bundleName Can be {@code null} to default to {@code org.eclipse.jdt.core} which is usually right.
- * @param error The associated exception. Can be {@code null}.
- */
- public static void error(CompilationUnitDeclaration cud, String message, String bundleName, Throwable error) {
- if (bundleName == null) bundleName = DEFAULT_BUNDLE;
- try {
- new EclipseWorkspaceLogger().error(message, bundleName, error);
- } catch (NoClassDefFoundError e) { //standalone ecj does not jave Platform, ILog, IStatus, and friends.
- new TerminalLogger().error(message, bundleName, error);
- }
- if (cud != null) EclipseAST.addProblemToCompilationResult(cud, false, message + " - See error log.", 0, 0);
- }
-
- /**
- * Generates a warning in the Eclipse error log. Note that most people never look at it!
- *
- * @param message Human readable description of the problem.
- * @param error The associated exception. Can be {@code null}.
- */
- public static void warning(String message, Throwable error) {
- warning(message, null, error);
- }
-
- /**
- * Generates a warning in the Eclipse error log. Note that most people never look at it!
- *
- * @param message Human readable description of the problem.
- * @param bundleName Can be {@code null} to default to {@code org.eclipse.jdt.core} which is usually right.
- * @param error The associated exception. Can be {@code null}.
- */
- public static void warning(String message, String bundleName, Throwable error) {
- if (bundleName == null) bundleName = DEFAULT_BUNDLE;
- try {
- new EclipseWorkspaceLogger().warning(message, bundleName, error);
- } catch (NoClassDefFoundError e) { //standalone ecj does not jave Platform, ILog, IStatus, and friends.
- new TerminalLogger().warning(message, bundleName, error);
- }
- }
-
- private static class TerminalLogger {
- void error(String message, String bundleName, Throwable error) {
- System.err.println(message);
- if (error != null) error.printStackTrace();
- }
-
- void warning(String message, String bundleName, Throwable error) {
- System.err.println(message);
- if (error != null) error.printStackTrace();
- }
- }
-
- private static class EclipseWorkspaceLogger {
- void error(String message, String bundleName, Throwable error) {
- msg(IStatus.ERROR, message, bundleName, error);
- }
-
- void warning(String message, String bundleName, Throwable error) {
- msg(IStatus.WARNING, message, bundleName, error);
- }
-
- private void msg(int msgType, String message, String bundleName, Throwable error) {
- Bundle bundle = Platform.getBundle(bundleName);
- if (bundle == null) {
- System.err.printf("Can't find bundle %s while trying to report error:\n%s\n", bundleName, message);
- return;
- }
-
- ILog log = Platform.getLog(bundle);
-
- log.log(new Status(msgType, bundleName, message, error));
- }
- }
-
- /**
- * For 'speed' reasons, Eclipse works a lot with char arrays. I have my doubts this was a fruitful exercise,
- * but we need to deal with it. This turns [[java][lang][String]] into "java.lang.String".
- */
- public static String toQualifiedName(char[][] typeName) {
- StringBuilder sb = new StringBuilder();
- boolean first = true;
- for (char[] c : typeName) {
- sb.append(first ? "" : ".").append(c);
- first = false;
- }
- return sb.toString();
- }
-
- public static char[][] fromQualifiedName(String typeName) {
- String[] split = typeName.split("\\.");
- char[][] result = new char[split.length][];
- for (int i = 0; i < split.length; i++) {
- result[i] = split[i].toCharArray();
- }
- return result;
- }
-
- /**
- * You can't share TypeParameter objects or bad things happen; for example, one 'T' resolves differently
- * from another 'T', even for the same T in a single class file. Unfortunately the TypeParameter type hierarchy
- * is complicated and there's no clone method on TypeParameter itself. This method can clone them.
- */
- public static TypeParameter[] copyTypeParams(TypeParameter[] params, ASTNode source) {
- if (params == null) return null;
- TypeParameter[] out = new TypeParameter[params.length];
- int idx = 0;
- for (TypeParameter param : params) {
- TypeParameter o = new TypeParameter();
- setGeneratedBy(o, source);
- o.annotations = param.annotations;
- o.bits = param.bits;
- o.modifiers = param.modifiers;
- o.name = param.name;
- o.type = copyType(param.type, source);
- o.sourceStart = param.sourceStart;
- o.sourceEnd = param.sourceEnd;
- o.declarationEnd = param.declarationEnd;
- o.declarationSourceStart = param.declarationSourceStart;
- o.declarationSourceEnd = param.declarationSourceEnd;
- if (param.bounds != null) {
- TypeReference[] b = new TypeReference[param.bounds.length];
- int idx2 = 0;
- for (TypeReference ref : param.bounds) b[idx2++] = copyType(ref, source);
- o.bounds = b;
- }
- out[idx++] = o;
- }
- return out;
- }
-
- /**
- * Convenience method that creates a new array and copies each TypeReference in the source array via
- * {@link #copyType(TypeReference, ASTNode)}.
- */
- public static TypeReference[] copyTypes(TypeReference[] refs, ASTNode source) {
- if (refs == null) return null;
- TypeReference[] outs = new TypeReference[refs.length];
- int idx = 0;
- for (TypeReference ref : refs) {
- outs[idx++] = copyType(ref, source);
- }
- return outs;
- }
-
- /**
- * You can't share TypeReference objects or subtle errors start happening.
- * Unfortunately the TypeReference type hierarchy is complicated and there's no clone
- * method on TypeReference itself. This method can clone them.
- */
- public static TypeReference copyType(TypeReference ref, ASTNode source) {
- if (ref instanceof ParameterizedQualifiedTypeReference) {
- ParameterizedQualifiedTypeReference iRef = (ParameterizedQualifiedTypeReference) ref;
- TypeReference[][] args = null;
- if (iRef.typeArguments != null) {
- args = new TypeReference[iRef.typeArguments.length][];
- int idx = 0;
- for (TypeReference[] inRefArray : iRef.typeArguments) {
- if (inRefArray == null) args[idx++] = null;
- else {
- TypeReference[] outRefArray = new TypeReference[inRefArray.length];
- int idx2 = 0;
- for (TypeReference inRef : inRefArray) {
- outRefArray[idx2++] = copyType(inRef, source);
- }
- args[idx++] = outRefArray;
- }
- }
- }
- TypeReference typeRef = new ParameterizedQualifiedTypeReference(iRef.tokens, args, iRef.dimensions(), iRef.sourcePositions);
- setGeneratedBy(typeRef, source);
- return typeRef;
- }
-
- if (ref instanceof ArrayQualifiedTypeReference) {
- ArrayQualifiedTypeReference iRef = (ArrayQualifiedTypeReference) ref;
- TypeReference typeRef = new ArrayQualifiedTypeReference(iRef.tokens, iRef.dimensions(), iRef.sourcePositions);
- setGeneratedBy(typeRef, source);
- return typeRef;
- }
-
- if (ref instanceof QualifiedTypeReference) {
- QualifiedTypeReference iRef = (QualifiedTypeReference) ref;
- TypeReference typeRef = new QualifiedTypeReference(iRef.tokens, iRef.sourcePositions);
- setGeneratedBy(typeRef, source);
- return typeRef;
- }
-
- if (ref instanceof ParameterizedSingleTypeReference) {
- ParameterizedSingleTypeReference iRef = (ParameterizedSingleTypeReference) ref;
- TypeReference[] args = null;
- if (iRef.typeArguments != null) {
- args = new TypeReference[iRef.typeArguments.length];
- int idx = 0;
- for (TypeReference inRef : iRef.typeArguments) {
- if (inRef == null) args[idx++] = null;
- else args[idx++] = copyType(inRef, source);
- }
- }
-
- TypeReference typeRef = new ParameterizedSingleTypeReference(iRef.token, args, iRef.dimensions(), (long)iRef.sourceStart << 32 | iRef.sourceEnd);
- setGeneratedBy(typeRef, source);
- return typeRef;
- }
-
- if (ref instanceof ArrayTypeReference) {
- ArrayTypeReference iRef = (ArrayTypeReference) ref;
- TypeReference typeRef = new ArrayTypeReference(iRef.token, iRef.dimensions(), (long)iRef.sourceStart << 32 | iRef.sourceEnd);
- setGeneratedBy(typeRef, source);
- return typeRef;
- }
-
- if (ref instanceof Wildcard) {
- Wildcard original = (Wildcard)ref;
-
- Wildcard wildcard = new Wildcard(original.kind);
- wildcard.sourceStart = original.sourceStart;
- wildcard.sourceEnd = original.sourceEnd;
- if (original.bound != null) wildcard.bound = copyType(original.bound, source);
- setGeneratedBy(wildcard, source);
- return wildcard;
- }
-
- if (ref instanceof SingleTypeReference) {
- SingleTypeReference iRef = (SingleTypeReference) ref;
- TypeReference typeRef = new SingleTypeReference(iRef.token, (long)iRef.sourceStart << 32 | iRef.sourceEnd);
- setGeneratedBy(typeRef, source);
- return typeRef;
- }
-
- return ref;
- }
-
- public static long pos(ASTNode node) {
- return ((long) node.sourceStart << 32) | (node.sourceEnd & 0xFFFFFFFFL);
- }
-
- public static long[] poss(ASTNode node, int repeat) {
- long p = ((long) node.sourceStart << 32) | (node.sourceEnd & 0xFFFFFFFFL);
- long[] out = new long[repeat];
- Arrays.fill(out, p);
- return out;
- }
-
- public static TypeReference makeType(TypeBinding binding, ASTNode pos, boolean allowCompound) {
- int dims = binding.dimensions();
- binding = binding.leafComponentType();
-
- // Primitives
-
- char[] base = null;
-
- switch (binding.id) {
- case TypeIds.T_int:
- base = TypeConstants.INT;
- break;
- case TypeIds.T_long:
- base = TypeConstants.LONG;
- break;
- case TypeIds.T_short:
- base = TypeConstants.SHORT;
- break;
- case TypeIds.T_byte:
- base = TypeConstants.BYTE;
- break;
- case TypeIds.T_double:
- base = TypeConstants.DOUBLE;
- break;
- case TypeIds.T_float:
- base = TypeConstants.FLOAT;
- break;
- case TypeIds.T_boolean:
- base = TypeConstants.BOOLEAN;
- break;
- case TypeIds.T_char:
- base = TypeConstants.CHAR;
- break;
- case TypeIds.T_void:
- base = TypeConstants.VOID;
- break;
- case TypeIds.T_null:
- return null;
- }
-
- if (base != null) {
- if (dims > 0) {
- TypeReference result = new ArrayTypeReference(base, dims, pos(pos));
- Eclipse.setGeneratedBy(result, pos);
- return result;
- }
- TypeReference result = new SingleTypeReference(base, pos(pos));
- Eclipse.setGeneratedBy(result, pos);
- return result;
- }
-
- if (binding.isAnonymousType()) {
- ReferenceBinding ref = (ReferenceBinding)binding;
- ReferenceBinding[] supers = ref.superInterfaces();
- if (supers == null || supers.length == 0) supers = new ReferenceBinding[] {ref.superclass()};
- if (supers[0] == null) {
- TypeReference result = new QualifiedTypeReference(TypeConstants.JAVA_LANG_OBJECT, poss(pos, 3));
- Eclipse.setGeneratedBy(result, pos);
- return result;
- }
- return makeType(supers[0], pos, false);
- }
-
- if (binding instanceof CaptureBinding) {
- return makeType(((CaptureBinding)binding).wildcard, pos, allowCompound);
- }
-
- if (binding.isUnboundWildcard()) {
- if (!allowCompound) {
- TypeReference result = new QualifiedTypeReference(TypeConstants.JAVA_LANG_OBJECT, poss(pos, 3));
- Eclipse.setGeneratedBy(result, pos);
- return result;
- } else {
- Wildcard out = new Wildcard(Wildcard.UNBOUND);
- Eclipse.setGeneratedBy(out, pos);
- out.sourceStart = pos.sourceStart;
- out.sourceEnd = pos.sourceEnd;
- return out;
- }
- }
-
- if (binding.isWildcard()) {
- WildcardBinding wildcard = (WildcardBinding) binding;
- if (wildcard.boundKind == Wildcard.EXTENDS) {
- if (!allowCompound) {
- return makeType(wildcard.bound, pos, false);
- } else {
- Wildcard out = new Wildcard(Wildcard.EXTENDS);
- Eclipse.setGeneratedBy(out, pos);
- out.bound = makeType(wildcard.bound, pos, false);
- out.sourceStart = pos.sourceStart;
- out.sourceEnd = pos.sourceEnd;
- return out;
- }
- } else if (allowCompound && wildcard.boundKind == Wildcard.SUPER) {
- Wildcard out = new Wildcard(Wildcard.SUPER);
- Eclipse.setGeneratedBy(out, pos);
- out.bound = makeType(wildcard.bound, pos, false);
- out.sourceStart = pos.sourceStart;
- out.sourceEnd = pos.sourceEnd;
- return out;
- } else {
- TypeReference result = new QualifiedTypeReference(TypeConstants.JAVA_LANG_OBJECT, poss(pos, 3));
- Eclipse.setGeneratedBy(result, pos);
- return result;
- }
- }
-
- char[][] parts;
-
- if (binding.isLocalType() || binding.isTypeVariable()) {
- parts = new char[][] { binding.shortReadableName() };
- } else {
- String[] pkg = new String(binding.qualifiedPackageName()).split("\\.");
- String[] name = new String(binding.qualifiedSourceName()).split("\\.");
- if (pkg.length == 1 && pkg[0].isEmpty()) pkg = new String[0];
- parts = new char[pkg.length + name.length][];
- int ptr;
- for (ptr = 0; ptr < pkg.length; ptr++) parts[ptr] = pkg[ptr].toCharArray();
- for (; ptr < pkg.length + name.length; ptr++) parts[ptr] = name[ptr - pkg.length].toCharArray();
- }
-
- TypeReference[] params = new TypeReference[0];
-
- if (binding instanceof ParameterizedTypeBinding) {
- ParameterizedTypeBinding paramized = (ParameterizedTypeBinding) binding;
- if (paramized.arguments != null) {
- params = new TypeReference[paramized.arguments.length];
- for (int i = 0; i < params.length; i++) {
- params[i] = makeType(paramized.arguments[i], pos, true);
- }
- }
- }
-
- if (params.length > 0) {
- if (parts.length > 1) {
- TypeReference[][] typeArguments = new TypeReference[parts.length][];
- typeArguments[typeArguments.length - 1] = params;
- TypeReference result = new ParameterizedQualifiedTypeReference(parts, typeArguments, dims, poss(pos, parts.length));
- Eclipse.setGeneratedBy(result, pos);
- return result;
- }
- TypeReference result = new ParameterizedSingleTypeReference(parts[0], params, dims, pos(pos));
- Eclipse.setGeneratedBy(result, pos);
- return result;
- }
-
- if (dims > 0) {
- if (parts.length > 1) {
- TypeReference result = new ArrayQualifiedTypeReference(parts, dims, poss(pos, parts.length));
- Eclipse.setGeneratedBy(result, pos);
- return result;
- }
- TypeReference result = new ArrayTypeReference(parts[0], dims, pos(pos));
- Eclipse.setGeneratedBy(result, pos);
- return result;
- }
-
- if (parts.length > 1) {
- TypeReference result = new QualifiedTypeReference(parts, poss(pos, parts.length));
- Eclipse.setGeneratedBy(result, pos);
- return result;
- }
- TypeReference result = new SingleTypeReference(parts[0], pos(pos));
- Eclipse.setGeneratedBy(result, pos);
- return result;
- }
-
- private static final Annotation[] EMPTY_ANNOTATION_ARRAY = new Annotation[0];
-
- public static Annotation[] copyAnnotations(ASTNode source, Annotation[]... allAnnotations) {
- boolean allNull = true;
-
- List<Annotation> result = new ArrayList<Annotation>();
- for (Annotation[] annotations : allAnnotations) {
- if (annotations != null) {
- allNull = false;
- for (Annotation annotation : annotations) {
- result.add(copyAnnotation(annotation, source));
- }
- }
- }
- if (allNull) return null;
- return result.toArray(EMPTY_ANNOTATION_ARRAY);
- }
-
- public static Annotation copyAnnotation(Annotation annotation, ASTNode source) {
- int pS = source.sourceStart, pE = source.sourceEnd;
-
- if (annotation instanceof MarkerAnnotation) {
- MarkerAnnotation ann = new MarkerAnnotation(copyType(annotation.type, source), pS);
- setGeneratedBy(ann, source);
- ann.declarationSourceEnd = ann.sourceEnd = ann.statementEnd = pE;
- return ann;
- }
-
- if (annotation instanceof SingleMemberAnnotation) {
- SingleMemberAnnotation ann = new SingleMemberAnnotation(copyType(annotation.type, source), pS);
- setGeneratedBy(ann, source);
- ann.declarationSourceEnd = ann.sourceEnd = ann.statementEnd = pE;
- //TODO memberValue(s) need to be copied as well (same for copying a NormalAnnotation as below).
- ann.memberValue = ((SingleMemberAnnotation)annotation).memberValue;
- return ann;
- }
-
- if (annotation instanceof NormalAnnotation) {
- NormalAnn