We need to resolve the following issues before we get to 1.0
- define the name scoping rules for member, local, parameter, and global names
- define the name scoping rules in closures
- define semantics of member reflection, accounting for methods, fields, properties
- implement closure/block return/continue/break semantics (see James' proposition)
- fix GroovyMarkup
- decide the operators in and out and their precedence (integer division, binary or, power, spread/splice)
- rules for splicing things (like lists into parameter arguments etc)
- Define which subset of operators (if not all) can be overloaded
- Define a syntax for operator overloading in Groovy, like: operator +(a, b) {} or else def '+'(a,b) {}
- Define the syntax of overloaded operator methods in Java (g$add,g$multiply, or else mangled Unicode)
- Define syntax and semantics of calling sequences, including usage syntaxes, actual argument processing, linkage to class members, overload resolution.
- Define syntax and semantics of call-points (methods, properties, closures), including formal parameter definition.
- Define rules for keyword-based actual arguments and formal parameters.
- Define rules for spread actual arguments and formal parameters (Lisp APPLY and &REST, Java '...').
- Ensure groovy does follow the rules for accessing a member, method or class as known as in Java
- Write a GLS
- require-statement to know about depending scripts, when doing runtime compilation
RI issues
- reduce the Antlr jar size requirement to something smaller (we only need around 40Kish)
- support annotation bytecode?
- move to Maven 1.1 to allow us to ditch the Uber* tests?
Maybe punt until 2.0 possibilities
- make a call on new operators we came up with in the JSR meeting
- Borneo-style extension operators? (could handle ** etc w/o special rules)
- Applying a method call to many items of a collection
coll*.method(123)
// is equilvalent to
coll.collect { it.method(123) }
- add static typing support
Completed Stuff
JSR-01
- Normal EBNF grammar from the Antlr parser
- ..< is used instead get rid of the horrible – operator for ranges
- introduction of the .& operator* resolve the 'method pointer' issue; foo.bar should not automatically generate a method pointer to foo's bar() method - but what syntax should we use for a method pointer? foo.&bar?
- define the use of def / any / type names in method & variable declarations, particularly with respect to annotations and modifiers
- decide the interconversions between methods, properties, and fields
- "Handling nulls gracefully
coll?.property // is equilvalent to (coll != null) ? coll.property : null
- intdiv() method must be used instead of previous \ operator for integer division
- power operator (2 ** 3 == 8 or 2.power 8 etc)
JSR-02
- figured out how to deal with accidental capture of implicit 'it' from nested blocks
- migrated to ASM 2.0
- fixed DocGenerator
- JavaDoc APIs updated to the latest version
- better error reporting, with code snippet of the offending code, and column and line number information
- support for writing abstract classes and methods, and interfaces
- compile-time scoping checks
- compile-time checks for abstract classes and methods, and for interfaces
JSR-03
JSR-04
- ditch classworlds
- support annotation bytecode is started
Labels
(None)
