This project involves creating divers APIs and compiler plugins, to extend to JVM programming language XTend. The following tasks are to be done:
* Refactor a pre-existing open-source Java Functor API, to be used in the rest of this project.
* Using XTend's active annotation processors, modify interfaces written in XTend to behave mostly like Scala's traits, This involves modifying the interface definition, and generating an implementation for it (or possibly even multiple implementations). The traits must support multiple-inheritance, like in Scala.
* Use the pre-existing Meta-Info API to annotate the types, field and methods that to be modified.
* Extend the original Java-like generic capabilities, with real templates, that are closer to the C++ templates and macros.
* Implement some form of typedefs, like is found in C++, with support for primitive types.
* Implement implicit type-to-boolean conversion, as is found in Python.
* Implement Value classes like in Scala
* Automatically generate serialization code for trait implementations.
* Optionally, implement conditional compilation, similar to C++ (might already be possible)
The expected project duration is 2 or 3 weeks.