summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoracolyer <acolyer>2005-08-11 10:37:26 +0000
committeracolyer <acolyer>2005-08-11 10:37:26 +0000
commitdcb99de4494f1f2fbc9fe9212d82c153ebf2ec00 (patch)
tree8667a36fb5f00529bdeee1ec9ba3297e8df0fe97
parent1fc3d52b3c8ed451dbacd02533415d5897520ab0 (diff)
downloadaspectj-dcb99de4494f1f2fbc9fe9212d82c153ebf2ec00.tar.gz
aspectj-dcb99de4494f1f2fbc9fe9212d82c153ebf2ec00.zip
check that only abstract aspects can have type parameters, and that a generic super-aspect is fully parameterized in an extends clause.
-rw-r--r--org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/AspectDeclaration.java14
1 files changed, 14 insertions, 0 deletions
diff --git a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/AspectDeclaration.java b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/AspectDeclaration.java
index ac88e4a07..1b0d3eaea 100644
--- a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/AspectDeclaration.java
+++ b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/ast/AspectDeclaration.java
@@ -144,6 +144,12 @@ public class AspectDeclaration extends TypeDeclaration {
}
}
}
+
+ // check the aspect was not declared generic, only abstract aspects can have type params
+ if (typeParameters != null && typeParameters.length > 0) {
+ scope.problemReporter().signalError(sourceStart(), sourceEnd(),
+ "only abstract aspects can have type parameters");
+ }
}
if (this.enclosingType != null) {
@@ -185,6 +191,14 @@ public class AspectDeclaration extends TypeDeclaration {
ignoreFurtherInvestigation = true;
return;
}
+
+ // if super type is generic, check that we have fully parameterized it
+ if (superType.isRawType()) {
+ scope.problemReporter().signalError(sourceStart, sourceEnd,
+ "a generic super-aspect must be fully parameterized in an extends clause");
+ ignoreFurtherInvestigation = true;
+ return;
+ }
}
}