groovy
  1. groovy
  2. GROOVY-4266

CLONE -Wrong generation of import statements in stubs

    Details

    • Type: Bug Bug
    • Status: Open Open
    • Priority: Major Major
    • Resolution: Unresolved
    • Affects Version/s: 1.7.3
    • Fix Version/s: None
    • Labels:
      None
    • Environment:
      Windows XP, Sun JDK 1.6.0_19
    • Patch Submitted:
      Yes
    • Number of attachments :
      0

      Description

      NOTE: Below is fixed, this issue is for tracking additional impots added at end of other imports, e.g. import java.io.*;


      Single-type import declarations in Groovy files are collected/converted into type-on-demand import declarations by the stub compiler – in other words,

      import my.package.Type1
      import my.package.Type2
      

      becomes

      import my.package.*;
      

      This breaks the type shadowing mechanisms described in Section 7.5.1 of the Java Language Specification (3rd edition) and leads to Java compiler errors like "cannot decide which of the classes to use".

      Moreover, current implementations is based on an unordered set, thus destroying the order of import declarations.

      Attached patch solves these issues by preserving both the form and the order of original import declarations.

        Activity

        Hide
        Paul King added a comment -

        I found an example (GroovyServ project) where removing the default imports means their project no longer compiles using the joint compiler. I am keeping the patch from GROOVY-4225 in place so extra "*" imports aren't added but will temporarily add back in the default imports (java.io, java.net, etc.) - though at the end not at the start where they were before. This will allow them to compile their project using a SNAPSHOT.

        This issue is a placeholder. We need to work out why the classes aren't being fully resolved, fix it and then remove the default import code.

        Show
        Paul King added a comment - I found an example (GroovyServ project) where removing the default imports means their project no longer compiles using the joint compiler. I am keeping the patch from GROOVY-4225 in place so extra "*" imports aren't added but will temporarily add back in the default imports (java.io, java.net, etc.) - though at the end not at the start where they were before. This will allow them to compile their project using a SNAPSHOT. This issue is a placeholder. We need to work out why the classes aren't being fully resolved, fix it and then remove the default import code.

          People

          • Assignee:
            Unassigned
            Reporter:
            Dmytro Rud
          • Votes:
            2 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

            • Created:
              Updated: