improvement: handle builtin and known extensions
Lists.newArrayList(); can get converted to just newArrayList, for example.
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?
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
Yes, that's what I meant. It's more xtend-ish.