Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "JDT Core/Plan/4.8/JEP286"
(→Preferences) |
(→Quick fixes) |
||
Line 54: | Line 54: | ||
=== Quick fixes === | === Quick fixes === | ||
− | * Convert 'var' into the resolved type | + | * Convert 'var' into the resolved type - [https://bugs.eclipse.org/bugs/show_bug.cgi?id=531039 bug 531039]. |
− | * Convert explicit typed local variable into 'var', like changing "String coolIde = "Eclipse";" into "var coolIde = "Eclipse";" | + | * 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<String> names = new LinkedList<>()" into "var names = new LinkedList<String>()" - [https://bugs.eclipse.org/bugs/show_bug.cgi?id=531040 bug 531040]. |
− | + | ||
=== Code templates === | === Code templates === | ||
* Use 'var' in templates for loops and introduce new variable, if preferred by the code style. | * Use 'var' in templates for loops and introduce new variable, if preferred by the code style. |
Revision as of 09:45, 12 February 2018
Contents
Planning page for JDT Implementation of Local Variable Type Inference (JEP 286) for Photon (4.8)
Main tracking bug: JEP286 Bug
Compiler changes
Changes regarding the compiler: Compiler Bug
Grammar changes
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.
Type checking
- Determine the type of the var declaration
- Determine upwards/downwards type projection for type
- Fallback to "Object" type in case of error
Error reports
- 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 non denotable
- 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.
Code generation
Shouldn't be much work since the stack frame would be filled in with the bound type anyway.
Java Search support
Changes regarding the Search: Search Bug
DOM support
Changes regarding the DOM: DOM Bug
Content Assist support
- 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 ?
UI Changes
- Switch ASTs to JLS10 - bug 530298
Code hover
- Show inferred type of variable
Preferences
- 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].
Quick fixes
- 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<String> names = new LinkedList<>()" into "var names = new LinkedList<String>()" - bug 531040.
Code templates
- Use 'var' in templates for loops and introduce new variable, if preferred by the code style.