aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoraclement <aclement>2009-03-16 18:40:24 +0000
committeraclement <aclement>2009-03-16 18:40:24 +0000
commit73c305bb7af6382c09caf5795a39b3ac96439b9f (patch)
tree51fc7e8fae5eebe404fb2c30d8fe0f8efb9e4687
parent1c9611faa2341eb315045ce1ab0df0269a7ab423 (diff)
downloadaspectj-73c305bb7af6382c09caf5795a39b3ac96439b9f.tar.gz
aspectj-73c305bb7af6382c09caf5795a39b3ac96439b9f.zip
268710: test and fix: marker interface within generic aspect
-rw-r--r--org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/PointcutDesignator.java8
1 files changed, 8 insertions, 0 deletions
diff --git a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/PointcutDesignator.java b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/PointcutDesignator.java
index 4feafc640..d9e6094fa 100644
--- a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/PointcutDesignator.java
+++ b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/PointcutDesignator.java
@@ -22,6 +22,7 @@ import org.aspectj.org.eclipse.jdt.internal.compiler.ast.TypeDeclaration;
import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.MethodBinding;
import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding;
import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeBinding;
+import org.aspectj.org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding;
import org.aspectj.org.eclipse.jdt.internal.compiler.parser.Parser;
import org.aspectj.weaver.UnresolvedType;
import org.aspectj.weaver.patterns.FormalBinding;
@@ -75,6 +76,13 @@ public class PointcutDesignator extends ASTNode {
Argument arg = arguments[i];
String name = new String(arg.name);
UnresolvedType type = world.fromBinding(parameters[i]);
+ // pr268710: allow for inner interfaces in a generic aspect
+ if (parameters[i].isInterface() && parameters[i].isParameterizedType() && parameters[i].isMemberType()) {
+ TypeVariableBinding[] tvs = parameters[i].typeVariables();
+ if (tvs == null || tvs.length == 0) {
+ type = type.getRawType();
+ }
+ }
bindings[i] = new FormalBinding(type, name, i, arg.sourceStart, arg.sourceEnd);
}