summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoracolyer <acolyer>2005-08-16 09:28:24 +0000
committeracolyer <acolyer>2005-08-16 09:28:24 +0000
commit95a55cddfee7b47c9ac6f9a0ab9a57b80affa598 (patch)
tree78adad57e1150192ba71c013ff3d0c5614f83df6
parent6a533b0d99891db6b252b2aed23995c39d062063 (diff)
downloadaspectj-95a55cddfee7b47c9ac6f9a0ab9a57b80affa598.tar.gz
aspectj-95a55cddfee7b47c9ac6f9a0ab9a57b80affa598.zip
implementation of parameterize with
-rw-r--r--weaver/src/org/aspectj/weaver/patterns/DeclareSoft.java12
1 files changed, 10 insertions, 2 deletions
diff --git a/weaver/src/org/aspectj/weaver/patterns/DeclareSoft.java b/weaver/src/org/aspectj/weaver/patterns/DeclareSoft.java
index 6e5da128e..c9a668e0d 100644
--- a/weaver/src/org/aspectj/weaver/patterns/DeclareSoft.java
+++ b/weaver/src/org/aspectj/weaver/patterns/DeclareSoft.java
@@ -38,8 +38,12 @@ public class DeclareSoft extends Declare {
}
public Declare parameterizeWith(Map typeVariableBindingMap) {
- // TODO Auto-generated method stub
- return this;
+ DeclareSoft ret =
+ new DeclareSoft(
+ exception.parameterizeWith(typeVariableBindingMap),
+ pointcut.parameterizeWith(typeVariableBindingMap));
+ ret.copyLocationFrom(this);
+ return ret;
}
public String toString() {
@@ -96,6 +100,10 @@ public class DeclareSoft extends Declare {
exception = exception.resolveBindings(scope, null, false, true);
ResolvedType excType = exception.getExactType().resolve(scope.getWorld());
if (excType != ResolvedType.MISSING) {
+ if (excType.isTypeVariableReference()) {
+ // a declare soft in a generic abstract aspect, we need to check the upper bound
+ excType = excType.getUpperBound().resolve(scope.getWorld());
+ }
if (!scope.getWorld().getCoreType(UnresolvedType.THROWABLE).isAssignableFrom(excType)) {
scope.getWorld().showMessage(IMessage.ERROR,
WeaverMessages.format(WeaverMessages.NOT_THROWABLE,excType.getName()),