diff options
author | aclement <aclement> | 2006-07-28 14:05:39 +0000 |
---|---|---|
committer | aclement <aclement> | 2006-07-28 14:05:39 +0000 |
commit | af9e8ba799feb154ffbd40c190b42f6b01ec3109 (patch) | |
tree | 40ec7a0b2bc9734b930b95662c6f5066db9e26d5 /org.aspectj.ajdt.core | |
parent | 68c36e3ac9b5fc031a956800158aee15b0d44301 (diff) | |
download | aspectj-af9e8ba799feb154ffbd40c190b42f6b01ec3109.tar.gz aspectj-af9e8ba799feb154ffbd40c190b42f6b01ec3109.zip |
pipeline changes: fix for deep nesting aspects
Diffstat (limited to 'org.aspectj.ajdt.core')
-rw-r--r-- | org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/AjPipeliningCompilerAdapter.java | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/AjPipeliningCompilerAdapter.java b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/AjPipeliningCompilerAdapter.java index 024be56a1..0f37c5f2f 100644 --- a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/AjPipeliningCompilerAdapter.java +++ b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/AjPipeliningCompilerAdapter.java @@ -539,13 +539,24 @@ public class AjPipeliningCompilerAdapter extends AbstractCompilerAdapter { if (declaration.memberTypes!=null) { TypeDeclaration[] memberTypes = declaration.memberTypes; for (int j = 0; j < memberTypes.length; j++) { // loop through inner types - if (isAspect(memberTypes[j])) return true; + if (containsAnAspect(memberTypes[j])) return true; } } } } return false; } + + private boolean containsAnAspect(TypeDeclaration tDecl) { + if (isAspect(tDecl)) return true; + if (tDecl.memberTypes!=null) { + TypeDeclaration[] memberTypes = tDecl.memberTypes; + for (int j = 0; j < memberTypes.length; j++) { // loop through inner types + if (containsAnAspect(memberTypes[j])) return true; + } + } + return false; + } private static final char[] aspectSig = "Lorg/aspectj/lang/annotation/Aspect;".toCharArray(); private boolean isAspect(TypeDeclaration declaration) { |