diff options
author | acolyer <acolyer> | 2005-11-25 17:33:26 +0000 |
---|---|---|
committer | acolyer <acolyer> | 2005-11-25 17:33:26 +0000 |
commit | e988530d35b027b23a92aa964b0db686b6c8ca07 (patch) | |
tree | 609d628f5f551a0ea1f128a20684a35fb3d366f6 /org.aspectj.ajdt.core | |
parent | dd1c1b6b4a127a9bdc51f958ca05c3260fa5c64c (diff) | |
download | aspectj-e988530d35b027b23a92aa964b0db686b6c8ca07.tar.gz aspectj-e988530d35b027b23a92aa964b0db686b6c8ca07.zip |
tests and fix for pr115251
Diffstat (limited to 'org.aspectj.ajdt.core')
3 files changed, 15 insertions, 2 deletions
diff --git a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseFactory.java b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseFactory.java index f87d388e4..9df8b0382 100644 --- a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseFactory.java +++ b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseFactory.java @@ -964,7 +964,15 @@ public class EclipseFactory { // give it the same delegate and link it to the raw type if (binding.isGenericType()) { UnresolvedType complexTx = fromBinding(binding); // fully aware of any generics info - ReferenceType complexName = new ReferenceType(complexTx,world);//getWorld().lookupOrCreateName(complexTx); + ResolvedType cName = world.resolve(complexTx,true); + ReferenceType complexName = null; + if (cName != ResolvedType.MISSING) { + complexName = (ReferenceType) cName; + complexName = (ReferenceType) complexName.getGenericType(); + if (complexName == null) complexName = new ReferenceType(complexTx,world); + } else { + complexName = new ReferenceType(complexTx,world); + } name.setGenericType(complexName); complexName.setDelegate(t); complexName.setSourceContext(t.getResolvedTypeX().getSourceContext()); diff --git a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseSourceType.java b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseSourceType.java index d8df9e7b9..91eff5bd1 100644 --- a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseSourceType.java +++ b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/compiler/lookup/EclipseSourceType.java @@ -447,6 +447,10 @@ public class EclipseSourceType extends AbstractReferenceTypeDelegate { // but we don't need this level of detail, and working with real per clauses // at this stage of compilation is not worth the trouble if (!isAnnotationStyleAspect()) { +// if(declaration instanceof AspectDeclaration) { +// PerClause pc = ((AspectDeclaration)declaration).perClause; +// if (pc != null) return pc; +// } return new PerSingleton(); } else { // for @Aspect, we do need the real kind though we don't need the real perClause diff --git a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/core/builder/AjBuildManager.java b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/core/builder/AjBuildManager.java index 622eb02d9..63ad260af 100644 --- a/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/core/builder/AjBuildManager.java +++ b/org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/core/builder/AjBuildManager.java @@ -264,10 +264,11 @@ public class AjBuildManager implements IOutputClassFileNameProvider,IBinarySourc // dealt with on the first call to processDelta - we are going through this loop // again because in compiling something we found something else we needed to // rebuild. But what case causes this? - if (hereWeGoAgain) + if (hereWeGoAgain) { if (buildConfig.isEmacsSymMode() || buildConfig.isGenerateModelMode()) if (AsmManager.attemptIncrementalModelRepairs) AsmManager.getDefault().processDelta(files,state.addedFiles,state.deletedFiles); + } } if (!files.isEmpty()) { CompilationAndWeavingContext.leavingPhase(ct); |