diff options
author | acolyer <acolyer> | 2005-08-16 09:28:24 +0000 |
---|---|---|
committer | acolyer <acolyer> | 2005-08-16 09:28:24 +0000 |
commit | 95a55cddfee7b47c9ac6f9a0ab9a57b80affa598 (patch) | |
tree | 78adad57e1150192ba71c013ff3d0c5614f83df6 | |
parent | 6a533b0d99891db6b252b2aed23995c39d062063 (diff) | |
download | aspectj-95a55cddfee7b47c9ac6f9a0ab9a57b80affa598.tar.gz aspectj-95a55cddfee7b47c9ac6f9a0ab9a57b80affa598.zip |
implementation of parameterize with
-rw-r--r-- | weaver/src/org/aspectj/weaver/patterns/DeclareSoft.java | 12 |
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()), |