Bug 208486 - Get BCException during every compile
Summary: Get BCException during every compile
Status: RESOLVED WORKSFORME
Alias: None
Product: AspectJ
Classification: Tools
Component: Compiler (show other bugs)
Version: unspecified   Edit
Hardware: All Linux
: P3 normal (vote)
Target Milestone: 1.6.1   Edit
Assignee: aspectj inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2007-11-01 17:17 EDT by American Jeff Bowden CLA
Modified: 2008-06-09 12:50 EDT (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description American Jeff Bowden CLA 2007-11-01 17:17:22 EDT
It used to happen only sporadically, but now it happens during every compile.  Every time I save a file or do a refresh or project-clean.

I managed to get it to stop by changing the return type of an abstract method in the base class and the corresponding override in the class mentioned in the stacktrace.  The original return type was Table<?,?>[]  (an array of instances of a class with two type parameters).  The workaround type is List<Table<?,?>>.  The function I had to change is *not* the function that is mentioned in the stacktrace, btw.

Happened on amd64 (java 1.6.0-rc-b100) and ia32 (java 1.6.0_03-b05).  Compiler compliance level is set to 5.0.

org.aspectj.weaver.BCException
at org.aspectj.weaver.UnresolvedType.signatureToName(UnresolvedType.java:729)
at org.aspectj.weaver.UnresolvedType.getName(UnresolvedType.java:472)
at org.aspectj.weaver.bcel.BcelWorld.resolveDelegate(BcelWorld.java:309)
at org.aspectj.weaver.World.resolveToReferenceType(World.java:378)
at org.aspectj.weaver.World.resolve(World.java:271)
at org.aspectj.weaver.World.resolve(World.java:191)
at org.aspectj.weaver. ...                     RETURN   (line 99)
  end protected void stopPartitionBackup()

end public class com.vulcan.everest.store.partition.Partitionstore
Comment 1 Matt Chapman CLA 2007-11-02 10:21:49 EDT
passing over to compiler
Comment 2 Andrew Clement CLA 2007-11-08 03:54:10 EST
I am trying to recreate this so I can fix it - but my very very simple attempt at your scenario is working:


public class Tricky {
  Table<?,?>[] m() { return null; }
}

class SubTricky extends Tricky {
  Table<?,?>[] m() { return null; }
}

class Table<A,B> {}

aspect X {
  before(): execution(* *(..)) {}
}

that just compiles fine...  Is there something else you can mention about your scenario that is different to my test program?
Comment 3 Andrew Clement CLA 2008-06-09 12:50:26 EDT
not heard back on whether this is still a problem. since raised we have changed a lot - new compiler base and large scale weaver refactoring.  Please reopen if still an issue.