Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-dev] UnsupportedOperationException thrown: unable to parameterize unresolved type: Pjava/util/List<+Ljava/lang/Object; >;

Compiler exceptions are definitely bugs.  

I reproduced this in HEAD and in code style (below).  

Please submit at

  http://dev.eclipse.org/bugs/enter_bug.cgi?product=AspectJ
  
Thanks for pointing this out. (Not sure if the code is correct.)
Wes

------------- Main.java
import java.util.ArrayList;
import java.util.List;

public class Main {

 public List<? extends Element> getElements() {
  return new ArrayList<Element>();
 }

 class Element {};

 static abstract aspect Base<T> {

   List<? extends T> around() : call(List<? extends T> *.*(..)) {
    return (List<? extends T>) proceed();
  }
 }

 static aspect Concrete extends Base<Element> {}

 public static void main(String[] args) {
  new Main().getElements();
 }

}

> ------------Original Message------------
> From: Adam Smyczek <adamsmyczek@xxxxxxxxx>
> To: aspectj-dev@xxxxxxxxxxx
> Date: Wed, Oct-18-2006 5:25 PM
> Subject: [aspectj-dev] UnsupportedOperationException thrown: unable to parameterize unresolved type: Pjava/util/List<+Ljava/lang/Object; >;
>
> Hi all,
> 
> I am getting:
> 
> java.lang.UnsupportedOperationException
> at org.aspectj.weaver.UnresolvedType.parameterize(UnresolvedType.java: 
> 220)
> at org.aspectj.weaver.patterns.ExactTypePattern.parameterizeWith 
> (ExactTypePattern.java:244)
> at org.aspectj.weaver.patterns.SignaturePattern.parameterizeWith 
> (SignaturePattern.java:265)
> at org.aspectj.weaver.patterns.KindedPointcut.parameterizeWith 
> (KindedPointcut.java:381)
> at org.aspectj.weaver.bcel.BcelAdvice.parameterizeWith 
> (BcelAdvice.java:93)
> at org.aspectj.weaver.ResolvedType.getDeclaredAdvice 
> (ResolvedType.java:710)
> at org.aspectj.weaver.ResolvedType.getDeclaredShadowMungers 
> (ResolvedType.java:739)
> at org.aspectj.weaver.ResolvedType.collectShadowMungers 
> (ResolvedType.java:575)
> at org.aspectj.weaver.ResolvedType.collectCrosscuttingMembers 
> (ResolvedType.java:504)
> at org.aspectj.weaver.CrosscuttingMembersSet.addOrReplaceAspect 
> (CrosscuttingMembersSet.java:68)
> at org.aspectj.weaver.CrosscuttingMembersSet.addOrReplaceAspect 
> (CrosscuttingMembersSet.java:57)
> at org.aspectj.weaver.bcel.BcelWeaver.prepareForWeave(BcelWeaver.java: 
> 450)
> at org.aspectj.ajdt.internal.compiler.AjCompilerAdapter.weave 
> (AjCompilerAdapter.java:299)
> at org.aspectj.ajdt.internal.compiler.AjCompilerAdapter.afterCompiling 
> (AjCompilerAdapter.java:192)
> at org.aspectj.ajdt.internal.compiler.CompilerAdapter.ajc 
> $afterReturning$org_aspectj_ajdt_internal_compiler_CompilerAdapter$2 
> $f9cc9ca0(CompilerAdapter.aj:70)
> at org.aspectj.org.eclipse.jdt.internal.compiler.Compiler.compile 
> (Compiler.java:367)
> at  
> org.aspectj.ajdt.internal.core.builder.AjBuildManager.performCompilation 
> (AjBuildManager.java:887)
> at org.aspectj.ajdt.internal.core.builder.AjBuildManager.doBuild 
> (AjBuildManager.java:244)
> at org.aspectj.ajdt.internal.core.builder.AjBuildManager.batchBuild 
> (AjBuildManager.java:163)
> at org.aspectj.ajde.internal.CompilerAdapter.compile 
> (CompilerAdapter.java:122)
> at org.aspectj.ajde.internal.AspectJBuildManager$CompilerThread.run 
> (AspectJBuildManager.java:191)
> 
> UnsupportedOperationException thrown: unable to parameterize  
> unresolved type: Pjava/util/List<+Ljava/lang/Object;>;
> 
> To reproduce this, please compile the following code:
> 
> import java.util.ArrayList;
> import java.util.List;
> 
> import org.aspectj.lang.ProceedingJoinPoint;
> import org.aspectj.lang.annotation.Around;
> import org.aspectj.lang.annotation.Aspect;
> 
> public class Main {
> 
> 	public List<? extends Element> getElements() {
> 		return new ArrayList<Element>();
> 	}
> 	
> 	class Element {};
> 	
> 	@Aspect
> 	static abstract class Base<T> {
> 		@Around("call(List<? extends T> *.*(..))")
> 		public List<? extends T> elementList(ProceedingJoinPoint  
> thisJoinPoint) {
> 			try {
> 				return (List<? extends T>)thisJoinPoint.proceed();
> 			} catch (Throwable e) {
> 				throw new RuntimeException(e);
> 			}
> 		}
> 	}
> 
> 	@Aspect
> 	static class Concrete extends Base<Element> {}
> 
> 	public static void main(String[] args) {
> 		new Main().getElements();
> 	}
> 	
> }
> 
> Is something wrong with my generic type declaration or is this a bug?
> 
> Thanks,
> Adam
> 
> 
> _______________________________________________
> aspectj-dev mailing list
> aspectj-dev@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/aspectj-dev
> 



Back to the top