From e307d037aa3288639e45d5b656bfe614766c7e43 Mon Sep 17 00:00:00 2001 From: aclement Date: Tue, 20 Jan 2009 22:41:41 +0000 Subject: [PATCH] 258510: promoted additional annotation/class/interface storage from delegate to referencetype --- .../compiler/lookup/AjLookupEnvironment.java | 168 +++++++----------- .../compiler/lookup/EclipseSourceType.java | 63 +++---- 2 files changed, 81 insertions(+), 150 deletions(-) diff --git a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/AjLookupEnvironment.java b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/AjLookupEnvironment.java index 61c145b87..a467c1f6f 100644 --- a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/AjLookupEnvironment.java +++ b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/AjLookupEnvironment.java @@ -126,17 +126,14 @@ public class AjLookupEnvironment extends LookupEnvironment implements AnonymousC // ??? duplicates some of super's code public void completeTypeBindings() { AsmManager.setCompletingTypeBindings(true); - ContextToken completeTypeBindingsToken = CompilationAndWeavingContext - .enteringPhase( - CompilationAndWeavingContext.COMPLETING_TYPE_BINDINGS, - ""); + ContextToken completeTypeBindingsToken = CompilationAndWeavingContext.enteringPhase( + CompilationAndWeavingContext.COMPLETING_TYPE_BINDINGS, ""); // builtInterTypesAndPerClauses = false; // pendingTypesToWeave = new ArrayList(); stepCompleted = BUILD_TYPE_HIERARCHY; for (int i = lastCompletedUnitIndex + 1; i <= lastUnitIndex; i++) { - ContextToken tok = CompilationAndWeavingContext.enteringPhase( - CompilationAndWeavingContext.CHECK_AND_SET_IMPORTS, + ContextToken tok = CompilationAndWeavingContext.enteringPhase(CompilationAndWeavingContext.CHECK_AND_SET_IMPORTS, units[i].compilationResult.fileName); units[i].scope.checkAndSetImports(); CompilationAndWeavingContext.leavingPhase(tok); @@ -144,8 +141,7 @@ public class AjLookupEnvironment extends LookupEnvironment implements AnonymousC stepCompleted = CHECK_AND_SET_IMPORTS; for (int i = lastCompletedUnitIndex + 1; i <= lastUnitIndex; i++) { - ContextToken tok = CompilationAndWeavingContext.enteringPhase( - CompilationAndWeavingContext.CONNECTING_TYPE_HIERARCHY, + ContextToken tok = CompilationAndWeavingContext.enteringPhase(CompilationAndWeavingContext.CONNECTING_TYPE_HIERARCHY, units[i].compilationResult.fileName); units[i].scope.connectTypeHierarchy(); CompilationAndWeavingContext.leavingPhase(tok); @@ -153,8 +149,7 @@ public class AjLookupEnvironment extends LookupEnvironment implements AnonymousC stepCompleted = CONNECT_TYPE_HIERARCHY; for (int i = lastCompletedUnitIndex + 1; i <= lastUnitIndex; i++) { - ContextToken tok = CompilationAndWeavingContext.enteringPhase( - CompilationAndWeavingContext.BUILDING_FIELDS_AND_METHODS, + ContextToken tok = CompilationAndWeavingContext.enteringPhase(CompilationAndWeavingContext.BUILDING_FIELDS_AND_METHODS, units[i].compilationResult.fileName); // units[i].scope.checkParameterizedTypes(); do this check a little // later, after ITDs applied to stbs @@ -242,9 +237,8 @@ public class AjLookupEnvironment extends LookupEnvironment implements AnonymousC while (typesToProcess.size() > 0) { // A side effect of weaveIntertypes() is that the processed type // is removed from the collection - weaveIntertypes(typesToProcess, - (SourceTypeBinding) typesToProcess.get(0), typeMungers, - declareParents, declareAnnotationOnTypes); + weaveIntertypes(typesToProcess, (SourceTypeBinding) typesToProcess.get(0), typeMungers, declareParents, + declareAnnotationOnTypes); } } else { @@ -252,8 +246,7 @@ public class AjLookupEnvironment extends LookupEnvironment implements AnonymousC for (int i = lastCompletedUnitIndex + 1; i <= lastUnitIndex; i++) { // System.err.println("Working on "+new // String(units[i].getFileName())); - weaveInterTypeDeclarations(units[i].scope, typeMungers, - declareParents, declareAnnotationOnTypes); + weaveInterTypeDeclarations(units[i].scope, typeMungers, declareParents, declareAnnotationOnTypes); } } @@ -264,10 +257,8 @@ public class AjLookupEnvironment extends LookupEnvironment implements AnonymousC for (int i = lastCompletedUnitIndex + 1; i <= lastUnitIndex; i++) { SourceTypeBinding[] b = units[i].scope.topLevelTypes; for (int j = 0; j < b.length; j++) { - ContextToken tok = CompilationAndWeavingContext - .enteringPhase( - CompilationAndWeavingContext.RESOLVING_POINTCUT_DECLARATIONS, - b[j].sourceName); + ContextToken tok = CompilationAndWeavingContext.enteringPhase( + CompilationAndWeavingContext.RESOLVING_POINTCUT_DECLARATIONS, b[j].sourceName); resolvePointcutDeclarations(b[j].scope); CompilationAndWeavingContext.leavingPhase(tok); } @@ -276,10 +267,8 @@ public class AjLookupEnvironment extends LookupEnvironment implements AnonymousC for (int i = lastCompletedUnitIndex + 1; i <= lastUnitIndex; i++) { SourceTypeBinding[] b = units[i].scope.topLevelTypes; for (int j = 0; j < b.length; j++) { - ContextToken tok = CompilationAndWeavingContext - .enteringPhase( - CompilationAndWeavingContext.ADDING_DECLARE_WARNINGS_AND_ERRORS, - b[j].sourceName); + ContextToken tok = CompilationAndWeavingContext.enteringPhase( + CompilationAndWeavingContext.ADDING_DECLARE_WARNINGS_AND_ERRORS, b[j].sourceName); addAdviceLikeDeclares(b[j].scope); CompilationAndWeavingContext.leavingPhase(tok); } @@ -326,7 +315,7 @@ public class AjLookupEnvironment extends LookupEnvironment implements AnonymousC // new Integer(i+1), // typeVariables[i].getDisplayName(), // superType.getGenericType().getName()); - //factory.getWorld().getMessageHandler().handleMessage(MessageUtil.error(msg + // factory.getWorld().getMessageHandler().handleMessage(MessageUtil.error(msg // ,onType.getSourceLocation())); // } // } @@ -343,25 +332,21 @@ public class AjLookupEnvironment extends LookupEnvironment implements AnonymousC } else if (rb instanceof ParameterizedTypeBinding) { // If its a PTB we need to pull the SourceTypeBinding out of it. ParameterizedTypeBinding ptb = (ParameterizedTypeBinding) rb; - if (ptb.type instanceof SourceTypeBinding - && yetToProcess.contains(ptb.type)) { - collectAllITDsAndDeclares((SourceTypeBinding) ptb.type, - yetToProcess); + if (ptb.type instanceof SourceTypeBinding && yetToProcess.contains(ptb.type)) { + collectAllITDsAndDeclares((SourceTypeBinding) ptb.type, yetToProcess); } } } /** - * Find all the ITDs and Declares, but it is important we do this from the - * supertypes down to the subtypes. + * Find all the ITDs and Declares, but it is important we do this from the supertypes down to the subtypes. * * @param sourceType * @param yetToProcess */ private void collectAllITDsAndDeclares(SourceTypeBinding sourceType, Collection yetToProcess) { // Look at the supertype first - ContextToken tok = CompilationAndWeavingContext.enteringPhase( - CompilationAndWeavingContext.COLLECTING_ITDS_AND_DECLARES, + ContextToken tok = CompilationAndWeavingContext.enteringPhase(CompilationAndWeavingContext.COLLECTING_ITDS_AND_DECLARES, sourceType.sourceName); yetToProcess.remove(sourceType); @@ -382,41 +367,32 @@ public class AjLookupEnvironment extends LookupEnvironment implements AnonymousC } /** - * Weave the parents and intertype decls into a given type. This method - * looks at the supertype and superinterfaces for the specified type and - * recurses to weave those first if they are in the full list of types we - * are going to process during this compile... it stops recursing the first - * time it hits a type we aren't going to process during this compile. This - * could cause problems if you supply 'pieces' of a hierarchy, i.e. the - * bottom and the top, but not the middle - but what the hell are you doing - * if you do that? + * Weave the parents and intertype decls into a given type. This method looks at the supertype and superinterfaces for the + * specified type and recurses to weave those first if they are in the full list of types we are going to process during this + * compile... it stops recursing the first time it hits a type we aren't going to process during this compile. This could cause + * problems if you supply 'pieces' of a hierarchy, i.e. the bottom and the top, but not the middle - but what the hell are you + * doing if you do that? */ - private void weaveIntertypes(List typesToProcess, - SourceTypeBinding typeToWeave, Collection typeMungers, + private void weaveIntertypes(List typesToProcess, SourceTypeBinding typeToWeave, Collection typeMungers, Collection declareParents, Collection declareAnnotationOnTypes) { // Look at the supertype first ReferenceBinding superType = typeToWeave.superclass(); - if (typesToProcess.contains(superType) - && superType instanceof SourceTypeBinding) { + if (typesToProcess.contains(superType) && superType instanceof SourceTypeBinding) { // System.err.println("Recursing to supertype "+new // String(superType.getFileName())); - weaveIntertypes(typesToProcess, (SourceTypeBinding) superType, - typeMungers, declareParents, declareAnnotationOnTypes); + weaveIntertypes(typesToProcess, (SourceTypeBinding) superType, typeMungers, declareParents, declareAnnotationOnTypes); } // Then look at the superinterface list ReferenceBinding[] interfaceTypes = typeToWeave.superInterfaces(); for (int i = 0; i < interfaceTypes.length; i++) { ReferenceBinding binding = interfaceTypes[i]; - if (typesToProcess.contains(binding) - && binding instanceof SourceTypeBinding) { + if (typesToProcess.contains(binding) && binding instanceof SourceTypeBinding) { // System.err.println("Recursing to superinterface "+new // String(binding.getFileName())); - weaveIntertypes(typesToProcess, (SourceTypeBinding) binding, - typeMungers, declareParents, declareAnnotationOnTypes); + weaveIntertypes(typesToProcess, (SourceTypeBinding) binding, typeMungers, declareParents, declareAnnotationOnTypes); } } - weaveInterTypeDeclarations(typeToWeave, typeMungers, declareParents, - declareAnnotationOnTypes, false); + weaveInterTypeDeclarations(typeToWeave, typeMungers, declareParents, declareAnnotationOnTypes, false); typesToProcess.remove(typeToWeave); } @@ -497,12 +473,10 @@ public class AjLookupEnvironment extends LookupEnvironment implements AnonymousC } /** - * Return true if the declaration has @Aspect annotation. Called 'couldBe' - * rather than 'is' because someone else may have defined an annotation - * called Aspect - we can't verify the full name (including package name) - * because it may not have been resolved just yet and rather going through - * expensive resolution when we dont have to, this gives us a cheap check - * that tells us whether to bother. + * Return true if the declaration has @Aspect annotation. Called 'couldBe' rather than 'is' because someone else may have + * defined an annotation called Aspect - we can't verify the full name (including package name) because it may not have been + * resolved just yet and rather going through expensive resolution when we dont have to, this gives us a cheap check that tells + * us whether to bother. */ private boolean couldBeAnnotationStyleAspectDeclaration(TypeDeclaration dec) { Annotation[] annotations = dec.annotations; @@ -590,8 +564,7 @@ public class AjLookupEnvironment extends LookupEnvironment implements AnonymousC private void weaveInterTypeDeclarations(SourceTypeBinding sourceType, Collection typeMungers, Collection declareParents, Collection declareAnnotationOnTypes, boolean skipInners) { - ContextToken tok = CompilationAndWeavingContext.enteringPhase( - CompilationAndWeavingContext.WEAVING_INTERTYPE_DECLARATIONS, + ContextToken tok = CompilationAndWeavingContext.enteringPhase(CompilationAndWeavingContext.WEAVING_INTERTYPE_DECLARATIONS, sourceType.sourceName); ResolvedType onType = factory.fromEclipse(sourceType); @@ -622,13 +595,11 @@ public class AjLookupEnvironment extends LookupEnvironment implements AnonymousC // Check if the type we are looking at is the topMostImplementor of a // dangerous interface - // report a problem if it is. - for (Iterator i = dangerousInterfaces.entrySet().iterator(); i - .hasNext();) { + for (Iterator i = dangerousInterfaces.entrySet().iterator(); i.hasNext();) { Map.Entry entry = (Map.Entry) i.next(); ResolvedType interfaceType = (ResolvedType) entry.getKey(); if (onType.isTopmostImplementor(interfaceType)) { - factory.showMessage(IMessage.ERROR, onType + ": " - + entry.getValue(), onType.getSourceLocation(), null); + factory.showMessage(IMessage.ERROR, onType + ": " + entry.getValue(), onType.getSourceLocation(), null); } } @@ -754,16 +725,13 @@ public class AjLookupEnvironment extends LookupEnvironment implements AnonymousC } /** - * Called when we discover we are weaving intertype declarations on some - * type that has an existing 'WeaverStateInfo' object - this is typically - * some previously woven type that has been passed on the inpath. + * Called when we discover we are weaving intertype declarations on some type that has an existing 'WeaverStateInfo' object - + * this is typically some previously woven type that has been passed on the inpath. * * sourceType and onType are the 'same type' - the former is the 'Eclipse' version and the latter is the 'Weaver' version. */ - private void processTypeMungersFromExistingWeaverState( - SourceTypeBinding sourceType, ResolvedType onType) { - Collection previouslyAppliedMungers = onType.getWeaverState() - .getTypeMungers(onType); + private void processTypeMungersFromExistingWeaverState(SourceTypeBinding sourceType, ResolvedType onType) { + Collection previouslyAppliedMungers = onType.getWeaverState().getTypeMungers(onType); for (Iterator i = previouslyAppliedMungers.iterator(); i.hasNext();) { ConcreteTypeMunger m = (ConcreteTypeMunger) i.next(); @@ -784,16 +752,14 @@ public class AjLookupEnvironment extends LookupEnvironment implements AnonymousC ContextToken tok = CompilationAndWeavingContext.enteringPhase(CompilationAndWeavingContext.PROCESSING_DECLARE_PARENTS, sourceType.sourceName); ResolvedType resolvedSourceType = factory.fromEclipse(sourceType); - List newParents = declareParents.findMatchingNewParents( - resolvedSourceType, false); + List newParents = declareParents.findMatchingNewParents(resolvedSourceType, false); if (!newParents.isEmpty()) { for (Iterator i = newParents.iterator(); i.hasNext();) { ResolvedType parent = (ResolvedType) i.next(); if (dangerousInterfaces.containsKey(parent)) { ResolvedType onType = factory.fromEclipse(sourceType); - factory.showMessage(IMessage.ERROR, onType + ": " - + dangerousInterfaces.get(parent), onType - .getSourceLocation(), null); + factory.showMessage(IMessage.ERROR, onType + ": " + dangerousInterfaces.get(parent), + onType.getSourceLocation(), null); } if (Modifier.isFinal(parent.getModifiers())) { factory.showMessage(IMessage.ERROR, "cannot extend final class " + parent.getClassName(), declareParents @@ -849,16 +815,14 @@ public class AjLookupEnvironment extends LookupEnvironment implements AnonymousC return sb.toString(); } - private boolean doDeclareAnnotations(DeclareAnnotation decA, - SourceTypeBinding sourceType, boolean reportProblems) { + private boolean doDeclareAnnotations(DeclareAnnotation decA, SourceTypeBinding sourceType, boolean reportProblems) { ResolvedType rtx = factory.fromEclipse(sourceType); if (!decA.matches(rtx)) return false; if (!rtx.isExposedToWeaver()) return false; - ContextToken tok = CompilationAndWeavingContext.enteringPhase( - CompilationAndWeavingContext.PROCESSING_DECLARE_ANNOTATIONS, + ContextToken tok = CompilationAndWeavingContext.enteringPhase(CompilationAndWeavingContext.PROCESSING_DECLARE_ANNOTATIONS, sourceType.sourceName); // Get the annotation specified in the declare @@ -966,23 +930,16 @@ public class AjLookupEnvironment extends LookupEnvironment implements AnonymousC if (reportProblems) { if (decA.isExactPattern()) { - factory - .showMessage( - IMessage.ERROR, - WeaverMessages - .format( - WeaverMessages.INCORRECT_TARGET_FOR_DECLARE_ANNOTATION, - rtx.getName(), - toAdd[0].type, - stringifyTargets(abits)), - decA.getSourceLocation(), null); + factory.showMessage(IMessage.ERROR, WeaverMessages.format( + WeaverMessages.INCORRECT_TARGET_FOR_DECLARE_ANNOTATION, rtx.getName(), toAdd[0].type, + stringifyTargets(abits)), decA.getSourceLocation(), null); } // dont put out the lint - the weaving process will do // that // else { // if (factory.getWorld().getLint(). // invalidTargetForAnnotation.isEnabled()) { - //factory.getWorld().getLint().invalidTargetForAnnotation + // factory.getWorld().getLint().invalidTargetForAnnotation // .signal(new // String[]{rtx.getName(),toAdd[0].type.toString(), // stringifyTargets @@ -1008,8 +965,7 @@ public class AjLookupEnvironment extends LookupEnvironment implements AnonymousC if (currentAnnotations != null) for (int i = 0; i < currentAnnotations.length; i++) { Annotation annotation = currentAnnotations[i]; - String a = CharOperation - .toString(annotation.type.getTypeName()); + String a = CharOperation.toString(annotation.type.getTypeName()); String b = CharOperation.toString(toAdd[0].type.getTypeName()); // FIXME asc we have a lint for attempting to add an annotation // twice to a method, @@ -1076,20 +1032,16 @@ public class AjLookupEnvironment extends LookupEnvironment implements AnonymousC } /** - * Transform an annotation from its AJ form to an eclipse form. We *DONT* - * care about the values of the annotation. that is because it is only being - * stuck on a type during type completion to allow for other constructs - * (decps, decas) that might be looking for it - when the class actually - * gets to disk it wont have this new annotation on it and during weave time - * we will do the right thing copying across values too. + * Transform an annotation from its AJ form to an eclipse form. We *DONT* care about the values of the annotation. that is + * because it is only being stuck on a type during type completion to allow for other constructs (decps, decas) that might be + * looking for it - when the class actually gets to disk it wont have this new annotation on it and during weave time we will do + * the right thing copying across values too. */ - private static Annotation createAnnotationFromBcelAnnotation( - AnnotationAJ annX, int pos, EclipseFactory factory) { + private static Annotation createAnnotationFromBcelAnnotation(AnnotationAJ annX, int pos, EclipseFactory factory) { String name = annX.getTypeName(); TypeBinding tb = factory.makeTypeBinding(annX.getType()); // String theName = annX.getSignature().getBaseName(); - char[][] typeName = CharOperation.splitOn('.', name.replace('$', '.') - .toCharArray()); // pr149293 - not bulletproof... + char[][] typeName = CharOperation.splitOn('.', name.replace('$', '.').toCharArray()); // pr149293 - not bulletproof... long[] positions = new long[typeName.length]; for (int i = 0; i < positions.length; i++) positions[i] = pos; @@ -1220,7 +1172,8 @@ public class AjLookupEnvironment extends LookupEnvironment implements AnonymousC ReferenceType rt = (ReferenceType) onType; ReferenceTypeDelegate rtd = rt.getDelegate(); if (rtd instanceof BcelObjectType) { - ((BcelObjectType) rtd).addParent(parent); + rt.addParent(parent); + // ((BcelObjectType) rtd).addParent(parent); } } @@ -1275,9 +1228,8 @@ public class AjLookupEnvironment extends LookupEnvironment implements AnonymousC } /** - * Callback driven when the compiler detects an anonymous type during block - * resolution. We need to add it to the weaver so that we don't trip up - * later. + * Callback driven when the compiler detects an anonymous type during block resolution. We need to add it to the weaver so that + * we don't trip up later. * * @param aBinding */ @@ -1361,7 +1313,7 @@ public class AjLookupEnvironment extends LookupEnvironment implements AnonymousC // System.arraycopy(currentlyHas,0,newset,1,currentlyHas.length); // } // methodDecl.annotations = newset; -//System.err.println("New set on "+CharOperation.charToString(sourceMb.selector) +// System.err.println("New set on "+CharOperation.charToString(sourceMb.selector) // +" is "+newset); // } else // System.err.println("NO MATCH"); diff --git a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseSourceType.java b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseSourceType.java index c59e8c4fd..cf7b45a1e 100644 --- a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseSourceType.java +++ b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseSourceType.java @@ -81,8 +81,7 @@ import org.aspectj.weaver.patterns.PerSingleton; import org.aspectj.weaver.patterns.Pointcut; /** - * Supports viewing eclipse TypeDeclarations/SourceTypeBindings as a - * ResolvedType + * Supports viewing eclipse TypeDeclarations/SourceTypeBindings as a ResolvedType * * @author Jim Hugunin */ @@ -358,8 +357,8 @@ public class EclipseSourceType extends AbstractReferenceTypeDelegate { } /** - * This method may not return all fields, for example it may not include the - * ajc$initFailureCause or ajc$perSingletonInstance fields - see bug 129613 + * This method may not return all fields, for example it may not include the ajc$initFailureCause or ajc$perSingletonInstance + * fields - see bug 129613 */ public ResolvedMember[] getDeclaredFields() { if (declaredFields == null) @@ -368,8 +367,8 @@ public class EclipseSourceType extends AbstractReferenceTypeDelegate { } /** - * This method may not return all methods, for example it may not include - * clinit, aspectOf, hasAspect or ajc$postClinit methods - see bug 129613 + * This method may not return all methods, for example it may not include clinit, aspectOf, hasAspect or ajc$postClinit methods + * - see bug 129613 */ public ResolvedMember[] getDeclaredMethods() { if (declaredMethods == null) @@ -464,18 +463,12 @@ public class EclipseSourceType extends AbstractReferenceTypeDelegate { public boolean isEnum() { return (binding.getAccessFlags() & ACC_ENUM) != 0; - } + } public boolean isAnnotation() { return (binding.getAccessFlags() & ACC_ANNOTATION) != 0; } - public void addAnnotation(AnnotationAJ annotationX) { - // XXX Big hole here - annotationX holds a BCEL annotation but - // we need an Eclipse one here, we haven't written the conversion utils - // yet. Not sure if this method will be called in practice... - throw new RuntimeException("EclipseSourceType.addAnnotation() not implemented"); - } public boolean isAnnotationWithRuntimeRetention() { if (!isAnnotation()) { @@ -590,23 +583,17 @@ public class EclipseSourceType extends AbstractReferenceTypeDelegate { /** * WARNING: This method does not have a complete implementation. * - * The aim is that it converts Eclipse annotation objects to the AspectJ - * form of annotations (the type AnnotationAJ). The AnnotationX objects - * returned are wrappers over either a Bcel annotation type or the AspectJ - * AnnotationAJ type. The minimal implementation provided here is for - * processing the RetentionPolicy and Target annotation types - these are - * the only ones which the weaver will attempt to process from an - * EclipseSourceType. + * The aim is that it converts Eclipse annotation objects to the AspectJ form of annotations (the type AnnotationAJ). The + * AnnotationX objects returned are wrappers over either a Bcel annotation type or the AspectJ AnnotationAJ type. The minimal + * implementation provided here is for processing the RetentionPolicy and Target annotation types - these are the only ones + * which the weaver will attempt to process from an EclipseSourceType. * - * More notes: The pipeline has required us to implement this. With the - * pipeline we can be weaving a type and asking questions of annotations - * before they have been turned into Bcel objects - ie. when they are still - * in EclipseSourceType form. Without the pipeline we would have converted - * everything to Bcel objects before proceeding with weaving. Because the - * pipeline won't start weaving until all aspects have been compiled and the - * fact that no AspectJ constructs match on the values within annotations, - * this code only needs to deal with converting system annotations that the - * weaver needs to process (RetentionPolicy, Target). + * More notes: The pipeline has required us to implement this. With the pipeline we can be weaving a type and asking questions + * of annotations before they have been turned into Bcel objects - ie. when they are still in EclipseSourceType form. Without + * the pipeline we would have converted everything to Bcel objects before proceeding with weaving. Because the pipeline won't + * start weaving until all aspects have been compiled and the fact that no AspectJ constructs match on the values within + * annotations, this code only needs to deal with converting system annotations that the weaver needs to process + * (RetentionPolicy, Target). */ public AnnotationAJ[] getAnnotations() { if (annotations != null) @@ -625,14 +612,11 @@ public class EclipseSourceType extends AbstractReferenceTypeDelegate { } /** - * Convert one eclipse annotation into an AnnotationX object containing an - * AnnotationAJ object. + * Convert one eclipse annotation into an AnnotationX object containing an AnnotationAJ object. * - * This code and the helper methods used by it will go *BANG* if they - * encounter anything not currently supported - this is safer than limping - * along with a malformed annotation. When the *BANG* is encountered the bug - * reporter should indicate the kind of annotation they were working with - * and this code can be enhanced to support it. + * This code and the helper methods used by it will go *BANG* if they encounter anything not currently supported - this is safer + * than limping along with a malformed annotation. When the *BANG* is encountered the bug reporter should indicate the kind of + * annotation they were working with and this code can be enhanced to support it. */ public AnnotationAJ convertEclipseAnnotation(Annotation eclipseAnnotation, World w) { // TODO if it is sourcevisible, we shouldn't let it through!!!!!!!!! @@ -652,8 +636,7 @@ public class EclipseSourceType extends AbstractReferenceTypeDelegate { } /** - * Use the information in the supplied eclipse based annotation to fill in - * the standard annotation. + * Use the information in the supplied eclipse based annotation to fill in the standard annotation. * * @param annotation eclipse based annotation representation * @param annotationAJ AspectJ based annotation representation @@ -1044,8 +1027,4 @@ public class EclipseSourceType extends AbstractReferenceTypeDelegate { return tv; } - public void ensureDelegateConsistent() { - // do nothing, currently these can't become inconsistent (phew) - } - } -- 2.39.5