Bug 438586 - IllegalArgumentException in API Analysis Builder
Summary: IllegalArgumentException in API Analysis Builder
Status: VERIFIED FIXED
Alias: None
Product: PDE
Classification: Eclipse Project
Component: API Tools (show other bugs)
Version: 4.4   Edit
Hardware: PC Mac OS X
: P3 normal (vote)
Target Milestone: 4.5 M7   Edit
Assignee: Vikas Chandra CLA
QA Contact:
URL:
Whiteboard:
Keywords: investigate
Depends on:
Blocks:
 
Reported: 2014-06-30 17:15 EDT by Greg Watson CLA
Modified: 2015-04-27 04:47 EDT (History)
4 users (show)

See Also:


Attachments
project with an example of the issue (4.07 KB, application/zip)
2015-03-26 12:34 EDT, Eugene Bova CLA
no flags Details
Errors running builder 'API Analysis Builder' - Screenshot (144.04 KB, image/png)
2015-03-27 05:07 EDT, Eugene Bova CLA
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Greg Watson CLA 2014-06-30 17:15:41 EDT
Eclipse Standard 4.4 package on OS X 10.9.4. Seeing error on plugin, so I ran Project>Clean... This resulted in the following exception. I am unable to build the project, so suggestions on what to do would be appreciated.

java.lang.IllegalArgumentException
	at org.eclipse.jdt.core.dom.AST.newArrayType(AST.java:1140)
	at org.eclipse.pde.api.tools.internal.util.Signatures.getType(Signatures.java:546)
	at org.eclipse.pde.api.tools.internal.util.Signatures.getParametersTypeNames(Signatures.java:522)
	at org.eclipse.pde.api.tools.internal.util.Signatures.getMethodSignatureFromNode(Signatures.java:492)
	at org.eclipse.pde.api.tools.internal.provisional.scanner.TagScanner$Visitor.scanMethodJavaDoc(TagScanner.java:495)
	at org.eclipse.pde.api.tools.internal.provisional.scanner.TagScanner$Visitor.visit(TagScanner.java:482)
	at org.eclipse.jdt.core.dom.MethodDeclaration.accept0(MethodDeclaration.java:611)
	at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711)
	at org.eclipse.jdt.core.dom.ASTNode.acceptChildren(ASTNode.java:2782)
	at org.eclipse.jdt.core.dom.TypeDeclaration.accept0(TypeDeclaration.java:470)
	at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711)
	at org.eclipse.jdt.core.dom.ASTNode.acceptChildren(ASTNode.java:2782)
	at org.eclipse.jdt.core.dom.CompilationUnit.accept0(CompilationUnit.java:212)
	at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2711)
	at org.eclipse.pde.api.tools.internal.provisional.scanner.TagScanner.scan(TagScanner.java:694)
	at org.eclipse.pde.api.tools.internal.provisional.scanner.TagScanner.scan(TagScanner.java:640)
	at org.eclipse.pde.api.tools.internal.ProjectApiDescription$TypeNode.refresh(ProjectApiDescription.java:268)
	at org.eclipse.pde.api.tools.internal.ApiDescription.findNode(ApiDescription.java:463)
	at org.eclipse.pde.api.tools.internal.ApiDescription.resolveAnnotations(ApiDescription.java:487)
	at org.eclipse.pde.api.tools.internal.builder.MethodLeakDetector.isProblem(MethodLeakDetector.java:98)
	at org.eclipse.pde.api.tools.internal.builder.AbstractProblemDetector.createProblems(AbstractProblemDetector.java:518)
	at org.eclipse.pde.api.tools.internal.builder.ReferenceAnalyzer.analyze(ReferenceAnalyzer.java:263)
	at org.eclipse.pde.api.tools.internal.builder.BaseApiAnalyzer.checkApiUsage(BaseApiAnalyzer.java:1206)
	at org.eclipse.pde.api.tools.internal.builder.BaseApiAnalyzer.analyzeComponent(BaseApiAnalyzer.java:271)
	at org.eclipse.pde.api.tools.internal.builder.ApiAnalysisBuilder.buildAll(ApiAnalysisBuilder.java:752)
	at org.eclipse.pde.api.tools.internal.builder.ApiAnalysisBuilder.build(ApiAnalysisBuilder.java:367)
	at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:734)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:206)
	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:246)
	at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:299)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
	at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:302)
	at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:358)
	at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:381)
	at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:143)
	at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:241)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
Comment 1 Dani Megert CLA 2014-07-01 08:07:24 EDT
Greg, is it a Java 8 project?

Are you saying the whole project isn't built or "only" the API builder aborts?
Comment 2 Greg Watson CLA 2014-07-01 08:11:57 EDT
No, it's not Java 8, although I'm using Java 8 to run Eclipse.

The project still has errors, so I assume the compile aborts.
Comment 3 Dani Megert CLA 2014-07-01 08:34:00 EDT
(In reply to Greg Watson from comment #2)
> No, it's not Java 8, although I'm using Java 8 to run Eclipse.
> 
> The project still has errors, so I assume the compile aborts.

Java compile errors or API Tools errors? This isn't the same. I'd expect that the other builders can complete their job.
Comment 4 Greg Watson CLA 2014-07-01 10:14:28 EDT
Compile errors. I was able to clear these, so reducing severity to normal.
Comment 5 Curtis Windatt CLA 2014-12-18 13:07:06 EST
From the Javadoc of AST.newArrayType()

Creates and returns a new unparented array type node with the given
element type, which cannot be an array type for API levels JLS8 and later.
By default, the array type has one non-annotated dimension.

So it seems the AST was using JLS8 but we still passed in an array.
Comment 6 Eugene Bova CLA 2015-03-26 12:34:24 EDT
Created attachment 251934 [details]
project with an example of the issue

I did some investigation and managed to isolate a code snippet when the issue occurs.
Attaching a project with an example.
"mvn clean compile" ends up with IllegalArgumentException.

It is reproducible in case:
1. There is some API method takes multidimensional array as a parameter
2. AND that method is annotated with some java doc
3. AND the package declaring the method is exported in MANIFEST.MF
Comment 7 Vikas Chandra CLA 2015-03-27 04:08:00 EDT
Can you give steps to recreate in eclipse? For example does eclipse -> Clean + Build cause this exception for this project. I tried but it works fine.
Comment 8 Eugene Bova CLA 2015-03-27 05:07:21 EDT
Created attachment 251946 [details]
Errors running builder 'API Analysis Builder' - Screenshot

It's reproducible during incremental build: 
1. F.e. add a comment or a space in ApiExample.java
2. Save the file.
Comment 9 Vikas Chandra CLA 2015-03-27 05:36:37 EDT
I can recreate it now . Thanks!
Comment 11 Vikas Chandra CLA 2015-04-27 04:47:48 EDT
verified on
Version: Mars (4.5)
Build id: N20150411-1500