Thanks Andrew. That helps me get a bit of a handle on where
things stand.
I guess the most baffling one for me right now is an aspect I
have that
does involve an ITD, but doesn't involve generics. Here is a
screen shot
of what it looks like:
http://files.getdropbox.com/u/1242708/screenshot.png
The file compiles and the pointcut matches correctly , but the
AspectJ
editor still insists that there are issues. I am getting some
AJ related
messages in the log, which I'll include below. Any ideas?
org.aspectj.weaver.BCException: Bad type signature: ;
at
org
.aspectj
.weaver.UnresolvedType.signatureToName(UnresolvedType.java:711)
at
org
.aspectj
.weaver.UnresolvedType.signatureToName(UnresolvedType.java:678)
at
org.aspectj.weaver.UnresolvedType.getName(UnresolvedType.java:457)
at
org
.aspectj.weaver.bcel.ClassPathManager.find(ClassPathManager.java:
97)
at
org.aspectj.weaver.bcel.BcelWorld.lookupJavaClass(BcelWorld.java:
391)
at
org.aspectj.weaver.bcel.BcelWorld.resolveDelegate(BcelWorld.java:
362)
at
org.aspectj.weaver.World.resolveToReferenceType(World.java:384)
at org.aspectj.weaver.World.resolve(World.java:278)
at org.aspectj.weaver.World.getCoreType(World.java:502)
at
org
.eclipse
.ajdt
.core.model.AJWorldFacade.findITDInfoIfExists(AJWorldFacade.java:
122)
at
org
.eclipse
.ajdt
.internal
.core
.contentassist.ProposalRequestorWrapper.shouldAccept(ProposalRequ
estorWrapper.java:86)
at
org
.eclipse
.ajdt
.internal
.core
.contentassist.ProposalRequestorWrapper.accept(ProposalRequestorW
rapper.java:68)
at
org
.eclipse
.jdt
.internal
.codeassist
.CompletionEngine.findLocalMethods(CompletionEngine.java:835
4)
at
org
.eclipse
.jdt
.internal
.codeassist.CompletionEngine.findMethods(CompletionEngine.java:
9632)
at
org
.eclipse
.jdt
.internal
.codeassist.CompletionEngine.findMembers(CompletionEngine.java:
8951)
at
org
.eclipse
.jdt
.internal
.codeassist
.CompletionEngine.completionOnQualifiedNameReference(Complet
ionEngine.java:3014)
at
org
.eclipse
.jdt
.internal
.codeassist.CompletionEngine.complete(CompletionEngine.java:1642)
at
org
.eclipse
.jdt
.internal
.codeassist.CompletionEngine.complete(CompletionEngine.java:1862)
at
org
.eclipse
.ajdt
.core
.javaelements
.AJCompilationUnit.internalCodeComplete(AJCompilationUnit.jav
a:688)
at
org
.eclipse
.ajdt
.core
.javaelements
.AJCompilationUnit.codeComplete(AJCompilationUnit.java:637)
at
org
.eclipse
.jdt
.internal.core.CompilationUnit.codeComplete(CompilationUnit.java:
355)
at
org
.eclipse
.jdt
.internal.core.CompilationUnit.codeComplete(CompilationUnit.java:
343)
at
org
.eclipse
.jdt
.internal
.ui
.text
.java.JavaCompletionProposalComputer.internalComputeCompletionP
roposals(JavaCompletionProposalComputer.java:242)
at
org
.eclipse
.jdt
.internal
.ui
.text
.java.JavaCompletionProposalComputer.computeCompletionProposals
(JavaCompletionProposalComputer.java:204)
at
org
.eclipse
.mylyn
.internal
.java
.ui.editor.FocusedJavaAllProposalComputer.computeCompletionPropo
sals(FocusedJavaAllProposalComputer.java:72)
at
org
.eclipse
.jdt
.internal
.ui
.text
.java.CompletionProposalComputerDescriptor.computeCompletionPro
posals(CompletionProposalComputerDescriptor.java:316)
at
org
.eclipse
.jdt
.internal
.ui
.text
.java.CompletionProposalCategory.computeCompletionProposals(Com
pletionProposalCategory.java:264)
at
org
.eclipse
.jdt
.internal
.ui
.text
.java.ContentAssistProcessor.collectProposals(ContentAssistProc
essor.java:286)
at
org
.eclipse
.jdt
.internal
.ui
.text
.java.ContentAssistProcessor.computeCompletionProposals(Content
AssistProcessor.java:246)
at
org
.eclipse
.jface
.text
.contentassist
.ContentAssistant.computeCompletionProposals(ContentAssista
nt.java:1832)
at
org
.eclipse
.jface
.text
.contentassist
.CompletionProposalPopup.computeProposals(CompletionProposa
lPopup.java:556)
at
org
.eclipse.jface.text.contentassist.CompletionProposalPopup.access
$16(CompletionProposalPopup.
java:553)
at
org.eclipse.jface.text.contentassist.CompletionProposalPopup
$2.run(CompletionProposalPopup.java
:488)
at
org
.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
at
org
.eclipse
.jface
.text
.contentassist
.CompletionProposalPopup.showProposals(CompletionProposalPo
pup.java:482)
at
org
.eclipse
.jface
.text
.contentassist
.ContentAssistant.showPossibleCompletions(ContentAssistant.
java:1660)
at
org.eclipse.jdt.internal.ui.javaeditor.CompilationUnitEditor
$AdaptedSourceViewer.doOperation(Co
mpilationUnitEditor.java:182)
at
org.eclipse.ajdt.internal.ui.editor.AspectJEditor
$AJTextOperationTarget.doOperation(AspectJEdit
or.java:168)
at
org.eclipse.ui.texteditor.ContentAssistAction
$1.run(ContentAssistAction.java:82)
at
org
.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
at
org
.eclipse
.ui.texteditor.ContentAssistAction.run(ContentAssistAction.java:
80)
at
org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
at
org.eclipse.ui.commands.ActionHandler.execute(ActionHandler.java:
185)
at
org
.eclipse
.ui
.internal
.handlers.LegacyHandlerWrapper.execute(LegacyHandlerWrapper.java:
109)
at
org.eclipse.core.commands.Command.executeWithChecks(Command.java:
476)
at
org
.eclipse
.core
.commands
.ParameterizedCommand
.executeWithChecks(ParameterizedCommand.java:508)
at
org
.eclipse
.ui
.internal
.handlers.HandlerService.executeCommand(HandlerService.java:169)
at
org
.eclipse
.ui
.internal
.keys.WorkbenchKeyboard.executeCommand(WorkbenchKeyboard.java:470)
at
org
.eclipse
.ui.internal.keys.WorkbenchKeyboard.press(WorkbenchKeyboard.java:
824)
at
org
.eclipse
.ui
.internal
.keys.WorkbenchKeyboard.processKeyEvent(WorkbenchKeyboard.java:
880)
at
org
.eclipse
.ui
.internal
.keys
.WorkbenchKeyboard
.filterKeySequenceBindings(WorkbenchKeyboard.java
:569)
at
org.eclipse.ui.internal.keys.WorkbenchKeyboard.access
$3(WorkbenchKeyboard.java:510)
at
org.eclipse.ui.internal.keys.WorkbenchKeyboard
$KeyDownFilter.handleEvent(WorkbenchKeyboard.java
:125)
at
org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at
org.eclipse.swt.widgets.Display.filterEvent(Display.java:965)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:
3541)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:
1247)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:
1270)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:
1255)
at
org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1284)
at
org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1280)
at
org.eclipse.swt.widgets.Canvas.sendKeyEvent(Canvas.java:428)
at
org.eclipse.swt.widgets.Control.doCommandBySelector(Control.java:
906)
at
org.eclipse.swt.widgets.Display.windowProc(Display.java:4740)
at org.eclipse.swt.internal.cocoa.OS.objc_msgSend(Native
Method)
at
org
.eclipse
.swt
.internal.cocoa.NSResponder.interpretKeyEvents(NSResponder.java:
56)
at
org.eclipse.swt.widgets.Composite.keyDown(Composite.java:516)
at
org.eclipse.swt.widgets.Display.windowProc(Display.java:4654)
at
org.eclipse.swt.internal.cocoa.OS.objc_msgSendSuper(Native
Method)
at org.eclipse.swt.widgets.Widget.callSuper(Widget.java:
202)
at
org.eclipse.swt.widgets.Widget.windowSendEvent(Widget.java:1750)
at
org.eclipse.swt.widgets.Shell.windowSendEvent(Shell.java:1821)
at
org.eclipse.swt.widgets.Display.windowProc(Display.java:4712)
at
org.eclipse.swt.internal.cocoa.OS.objc_msgSendSuper(Native
Method)
at
org
.eclipse.swt.widgets.Display.applicationSendEvent(Display.java:
4284)
at
org.eclipse.swt.widgets.Display.applicationProc(Display.java:4351)
at org.eclipse.swt.internal.cocoa.OS.objc_msgSend(Native
Method)
at
org
.eclipse
.swt.internal.cocoa.NSApplication.sendEvent(NSApplication.java:
101)
at
org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3096)
at
org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:
2405)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:
2369)
at org.eclipse.ui.internal.Workbench.access
$4(Workbench.java:2221)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:
500)
at
org
.eclipse
.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at
org
.eclipse
.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:493)
at
org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:
149)
at
org
.eclipse
.ui
.internal
.ide.application.IDEApplication.start(IDEApplication.java:113)
at
org
.eclipse
.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:
194)
at
org
.eclipse
.core
.runtime
.internal
.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.
java:110)
at
org
.eclipse
.core
.runtime
.internal
.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at
org
.eclipse
.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:368)
at
org
.eclipse
.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)
at
sun
.reflect
.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun
.reflect
.DelegatingMethodAccessorImpl
.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:
514)
at org.eclipse.equinox.launcher.Main.run(Main.java:1311)
!SUBENTRY 1 org.eclipse.ajdt.core 4 0 2009-07-07 12:02:30.942
!MESSAGE
org
.eclipse
.ajdt
.core.model.AJWorldFacade.findITDInfoIfExists(AJWorldFacade.java:
123)
!SUBENTRY 1 org.eclipse.ajdt.core 1 1 2009-07-07 12:02:30.942
!MESSAGE org.eclipse.ajdt.core.model.AJWorldFacade@a358b4
!SUBENTRY 2 org.eclipse.ajdt.core 1 0 2009-07-07 12:02:30.942
!MESSAGE manager=class
org.aspectj.ajdt.internal.core.builder.AjBuildManager@10370600
!SUBENTRY 2 org.eclipse.ajdt.core 1 0 2009-07-07 12:02:30.942
!MESSAGE world=class org.aspectj.weaver.bcel.BcelWorld@10170238
!SUBENTRY 2 org.eclipse.ajdt.core 1 0 2009-07-07 12:02:30.942
!MESSAGE cachedMungers=class java.util.HashMap@16713261
On Jul 7, 2009, at 5:53 PM, Andrew Eisenberg wrote:
Hi David,
Our goal is to ensure that spurious AspectJ errors (ie- red
squiggles
on valid code) are not seen at all (but this has to be weighed
against
being to aggressive and ignoring actual errors). We have taken
care
to ensure that the common uses of AspectJ syntax will not show
red
squiggles in the editor, but more advanced uses of aspectj
(such as
generic ITDs, especially those on interfaces) have been less well
tested.
There is no explicit documentation that describes what is
working and
what is not, but there are a slew of test cases for this and
the code
for this is well documented. At this point, if you are seeing
something in the editor being marked as a problem when the
compiler
thinks it isn't, please let us know and we will address it as
soon as
we can.
For the past little while, we have been waiting to hear from
users
when they come across some of these spurious errors. And we
fix them
as they come in. The best way to help me debug this is to send
some
examples of failing code. You can raise a bug if you like, or
you can
send it through this mailing list.
--a
On Tue, Jul 7, 2009 at 8:53 AM, Dave Whittaker<dave@xxxxxxxxxx>
wrote:
Andrew, I guess this question would be for you: I know that
work has
been
done to provide better support for AspectJ inside eclipse
editors....
I'm
just not sure what should be working at this point and what
isn't yet.
I
still get a fair number of red squigglies in classes that ITDs
are
applied
to, and I've even started to see some of them in pointcuts
that are
viewed
inside an AspectJ editor. If any of these shouldn't be
showing up, I'd
like
to help debug the cause, but I don't want to bug you guys by
pointing
out
errors that you are already aware of. Is there a document
somewhere
that
lists what should be working and what is known to still be
broken? If
not,
could you give me a quick rundown?
_______________________________________________
aspectj-users mailing list
aspectj-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/aspectj-users
_______________________________________________
aspectj-users mailing list
aspectj-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/aspectj-users
_______________________________________________
aspectj-users mailing list
aspectj-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/aspectj-users