java2xtend icon indicating copy to clipboard operation
java2xtend copied to clipboard

improvement: handle builtin and known extensions

Open vladdu opened this issue 12 years ago • 3 comments

Lists.newArrayList(); can get converted to just newArrayList, for example.

vladdu avatar May 16 '13 08:05 vladdu

Do you mean like if Java source is explicitly using Guava? For example, from Java:

import java.util.List;
import com.google.common.collect.Lists;

public class Test {
    public static void main(String[] args) {
        List<Integer> list = Lists.newArrayList();
    }
}

You'd like:

class Test {
        static def main(String[] args) {
            var list = newArrayList
        }
    }

instead of

import com.google.common.collect.Lists

class Test {
    static def main(String[] args) {
        var list = Lists::newArrayList
    }
}

Right?

rzymek avatar May 16 '13 12:05 rzymek

Some additional information. Sven Efftinge:

The implicitly imported static methods are located in the following classes: ArrayLiterals.class, CollectionLiterals.class, InputOutput.class

Extension methods for classes from the JDK are coming from ArrayExtensions.class, BigDecimalExtensions.class, BigIntegerExtensions.class, BooleanExtensions.class, ByteExtensions.class, CharacterExtensions.class, CollectionExtensions.class, ComparableExtensions.class, DoubleExtensions.class, FloatExtensions.class, FunctionExtensions.class, IntegerExtensions.class, IterableExtensions.class, IteratorExtensions.class, ListExtensions.class, LongExtensions.class, MapExtensions.class, ObjectExtensions.class, ProcedureExtensions.class, ShortExtensions.class, StringExtensions.class

Jan Köhnlein:

The implicit imports are defined in org.eclipse.xtext.xbase.scoping.batch.ImplicitlyImportedTypes

rzymek avatar May 22 '13 07:05 rzymek

Yes, that's what I meant. It's more xtend-ish.

vladdu avatar Aug 16 '13 11:08 vladdu