Thanks for the screenshot, Dave. I'm able to reproduce. I'm thinking it's a problem with AJDT's use of the parser.
I'll raise a bug for it. On Wed, Jul 8, 2009 at 5:11 PM, Andrew Eisenberg<[email protected]> wrote: > I haven't tested this out, but I have a sneaking suspicion that the > "execution(public" is a problem here. I know that we've had problems > with that combination before. I'll try it out tonight to see if I can > reproduce. > > On Wed, Jul 8, 2009 at 3:54 PM, Andy Clement<[email protected]> wrote: >> Either AJDT passed in an odd signature with a rogue extra ';' or AspectJ >> failed to chew on a valid signature correctly. It'd be great to know what >> AJWorldFacade.java:122 passed in... >> >> You should raise a bug for this. >> >> Andy. >> >> 2009/7/8 Dave Whittaker <[email protected]> >>> >>> 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.ajworldfac...@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.ajbuildmana...@10370600 >>> !SUBENTRY 2 org.eclipse.ajdt.core 1 0 2009-07-07 12:02:30.942 >>> !MESSAGE world=class org.aspectj.weaver.bcel.bcelwo...@10170238 >>> !SUBENTRY 2 org.eclipse.ajdt.core 1 0 2009-07-07 12:02:30.942 >>> !MESSAGE cachedMungers=class java.util.hash...@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<[email protected]> 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 >>>>> [email protected] >>>>> https://dev.eclipse.org/mailman/listinfo/aspectj-users >>>>> >>>> _______________________________________________ >>>> aspectj-users mailing list >>>> [email protected] >>>> https://dev.eclipse.org/mailman/listinfo/aspectj-users >>> >>> _______________________________________________ >>> aspectj-users mailing list >>> [email protected] >>> https://dev.eclipse.org/mailman/listinfo/aspectj-users >> >> >> _______________________________________________ >> aspectj-users mailing list >> [email protected] >> https://dev.eclipse.org/mailman/listinfo/aspectj-users >> >> > _______________________________________________ aspectj-users mailing list [email protected] https://dev.eclipse.org/mailman/listinfo/aspectj-users
