-
Notifications
You must be signed in to change notification settings - Fork 134
Planning Eclipse4.8 JEP286
Simeon Andreev edited this page Feb 17, 2023
·
1 revision
Main tracking bug: JEP286 Bug
Changes regarding the compiler: Compiler Bug
Since var is not a keyword, but a reserved type name AND we need to be backwards compatible anyway, it should be handled in type resolution instead of grammar. Local variable type inference should be denoted by a bit AST node and type binding.
- Determine the type of the var declaration
- Determine upwards/downwards type projection for type
- Fallback to "Object" type in case of error
- Errors where local variable type cannot be inferred:
- Cannot use 'var' on variable without initializer
- Lambda expression needs an explicit target-type
- Variable initializer is 'null'
- Inferred type is 'void'
- When method reference needs an explicit target-type.
- array initializer needs an explicit target-type
- Error when defining a type called 'var':
This should be a configurable 'warning'/'info' for Java 9 and earlier.
Shouldn't be much work since the stack frame would be filled in with the bound type anyway.
Changes regarding the Search: Search Bug
Changes regarding the DOM: DOM Bug
- Top level bug at https://bugs.eclipse.org/bugs/show_bug.cgi?id=529556
- var to be included in completion - https://bugs.eclipse.org/bugs/show_bug.cgi?id=529552
- type. completions if the type is var - tracked via https://bugs.eclipse.org/bugs/show_bug.cgi?id=529556
- name of the variable? Default camel case type to a little alphabet prefixed name will not work here - alternatives (low prio).
- changes to priority of proposals ?
- Switch ASTs to JLS10 - bug 530298, bug 531142.
- Show inferred type of variable - bug 531041.
- Allow JDT UI to target Java 10 in Compiler Preferences - bug 529432
- Clean up option to prefer 'var' over specific types (to control the irritants generated by the compiler) - [based on need - low prio].
- Convert 'var' into the resolved type - bug 531039.
- Convert explicit typed local variable into 'var', like changing "String coolIde = "Eclipse";" into "var coolIde = "Eclipse";" It should also include: Convert diamond operator to var, like fixing "List names = new LinkedList<>()" into "var names = new LinkedList()" - bug 531040.
- New templates with 'var' in for loops and introduce new variable - [can be added if useful - need examples - low prio].