diff options
author | acolyer <acolyer> | 2005-08-11 10:37:26 +0000 |
---|---|---|
committer | acolyer <acolyer> | 2005-08-11 10:37:26 +0000 |
commit | dcb99de4494f1f2fbc9fe9212d82c153ebf2ec00 (patch) | |
tree | 8667a36fb5f00529bdeee1ec9ba3297e8df0fe97 | |
parent | 1fc3d52b3c8ed451dbacd02533415d5897520ab0 (diff) | |
download | aspectj-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.java | 14 |
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; + } } } |