package org.aspectj.weaver.patterns;
import java.io.IOException;
+import java.util.Map;
import org.aspectj.weaver.ISourceContext;
import org.aspectj.weaver.VersionedDataInputStream;
*/
public abstract void resolve(IScope scope);
+ /**
+ * Returns a version of this declare element in which all references to type variables
+ * are replaced with their bindings given in the map.
+ */
+ public abstract Declare parameterizeWith(Map typeVariableBindingMap);
+
/**
* Indicates if this declare should be treated like advice. If true, the
* declare will have no effect in an abstract aspect. It will be inherited by
import java.io.DataOutputStream;
import java.io.IOException;
+import java.util.Iterator;
+import java.util.Map;
import org.aspectj.weaver.AnnotationX;
import org.aspectj.weaver.ISourceContext;
}
}
+ public Declare parameterizeWith(Map typeVariableBindingMap) {
+ // TODO Auto-generated method stub
+ return this;
+ }
+
public boolean isAdviceLike() {
return false;
}
*/
private void ensureAnnotationDiscovered() {
if (annotation!=null) return;
- ResolvedMember rms[] = containingAspect.getDeclaredMethods();
- for (int i = 0; i < rms.length; i++) {
- ResolvedMember member = rms[i];
+ for (Iterator iter = containingAspect.getMethods(); iter.hasNext();) {
+ ResolvedMember member = (ResolvedMember) iter.next();
if (member.getName().equals(annotationMethod)) {
annotation = member.getAnnotations()[0];
- }
+ }
}
}
import java.io.DataOutputStream;
import java.io.IOException;
+import java.util.Map;
import org.aspectj.weaver.ISourceContext;
import org.aspectj.weaver.VersionedDataInputStream;
pointcut = pointcut.resolve(scope);
}
+ public Declare parameterizeWith(Map typeVariableBindingMap) {
+ Declare ret = new DeclareErrorOrWarning(isError,pointcut.parameterizeWith(typeVariableBindingMap),message);
+ ret.copyLocationFrom(this);
+ return ret;
+ }
+
public boolean isAdviceLike() {
return true;
}
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
+import java.util.Map;
import org.aspectj.bridge.IMessage;
import org.aspectj.bridge.ISourceLocation;
import org.aspectj.bridge.Message;
-import org.aspectj.weaver.AjAttribute;
import org.aspectj.weaver.ISourceContext;
import org.aspectj.weaver.ResolvedType;
import org.aspectj.weaver.UnresolvedType;
return visitor.visit(this,data);
}
+ public Declare parameterizeWith(Map typeVariableBindingMap) {
+ DeclareParents ret =
+ new DeclareParents(
+ child.parameterizeWith(typeVariableBindingMap),
+ parents.parameterizeWith(typeVariableBindingMap));
+ ret.copyLocationFrom(this);
+ return ret;
+ }
+
public String toString() {
StringBuffer buf = new StringBuffer();
buf.append("declare parents: ");
import java.io.DataOutputStream;
import java.io.IOException;
import java.util.List;
+import java.util.Map;
import org.aspectj.bridge.IMessage;
import org.aspectj.weaver.ISourceContext;
return visitor.visit(this,data);
}
+ public Declare parameterizeWith(Map typeVariableBindingMap) {
+ // TODO Auto-generated method stub
+ return this;
+ }
+
public String toString() {
StringBuffer buf = new StringBuffer();
buf.append("declare precedence: ");
patterns.write(s);
writeLocation(s);
}
-
+
public static Declare read(VersionedDataInputStream s, ISourceContext context) throws IOException {
Declare ret = new DeclarePrecedence(TypePatternList.read(s, context));
ret.readLocation(context, s);
import java.io.DataOutputStream;
import java.io.IOException;
+import java.util.Map;
import org.aspectj.bridge.IMessage;
import org.aspectj.weaver.ISourceContext;
return visitor.visit(this,data);
}
+ public Declare parameterizeWith(Map typeVariableBindingMap) {
+ // TODO Auto-generated method stub
+ return this;
+ }
+
public String toString() {
StringBuffer buf = new StringBuffer();
buf.append("declare soft: ");