Issue Details (XML | Word | Printable)

Key: QDOX-125
Type: Bug Bug
Status: Closed Closed
Resolution: Fixed
Priority: Major Major
Assignee: Paul Hammant
Reporter: Jochen Kuhnle
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
QDox

Name resolution of imported nested types does not work correctly

Created: 28/Jun/07 08:58 AM   Updated: 30/Jan/09 04:16 PM   Resolved: 30/Jan/09 04:16 PM
Component/s: None
Affects Version/s: 1.6
Fix Version/s: 1.8

Time Tracking:
Not Specified

File Attachments: 1. Text File QDOX-125.patch (10 kB)


Testcase included: yes
Patch Submitted: Yes


 Description  « Hide

When while resolving a type "MyType", JavaSource.resolveTypeInternal has an "import my.package.name.MyType", the result is "my.package.name.MyType". This is wrong in cases when name denotes a class, not a package. In this case the result should be "my.package.name$MyType". This is because of line 168:

if (imports[i].endsWith("." + typeName)) return imports[i];

Also, "name.MyType" is being resolved to "my.package.name.MyType", which is wrong according to the Java Language Spec (JLS) [1], as one cannot import subpackages.

The attached patch changes the resolution to follow the JLS. Since one cannot decide if a type "MyType" should be resolved to "my.package.name.MyType" or "my.package.name$MyType" without having the actual classes, some cases where resolution returned a (possibly incorrect) result now return null (see "corrected" test cases).

[1] http://java.sun.com/docs/books/jls/third_edition/html/packages.html#7.5.1



Paul Hammant added a comment - 30/Jan/09 04:16 PM

patch applied - thanks.