Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "JDT Core/Plan/4.8/JEP286"

m
 
(9 intermediate revisions by 4 users not shown)
Line 20: Line 20:
 
** Lambda expression needs an explicit target-type  
 
** Lambda expression needs an explicit target-type  
 
** Variable initializer is 'null'
 
** Variable initializer is 'null'
** Inferred type is non denotable
+
** Inferred type is 'void'
 
** When method reference needs an explicit target-type.
 
** When method reference needs an explicit target-type.
 
** array initializer needs an explicit target-type
 
** array initializer needs an explicit target-type
Line 36: Line 36:
  
 
== Content Assist support ==
 
== Content Assist support ==
* var to be included in completion - should be a no-brainer.
+
* Top level bug at https://bugs.eclipse.org/bugs/show_bug.cgi?id=529556
* Default camel case type to a little alphabet  prefixed name will not work here - alternatives (low prio).
+
* 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 ?
 
* changes to priority of proposals ?
  
 
== UI Changes ==
 
== UI Changes ==
This hasn't been looked into yet. Some ideas:
+
 
 +
* Switch ASTs to JLS10 - [https://bugs.eclipse.org/bugs/show_bug.cgi?id=530298 bug 530298], [https://bugs.eclipse.org/bugs/show_bug.cgi?id=531142 bug 531142].
  
 
=== Code hover ===
 
=== Code hover ===
* Show inferred type of variable
+
* Show inferred type of variable - [https://bugs.eclipse.org/bugs/show_bug.cgi?id=531041 bug 531041].
  
 
=== Preferences ===
 
=== Preferences ===
* 'Code Style' option to prefer 'var' over specific types (to control the irritants generated by the compiler)
+
* Allow JDT UI to target Java 10 in Compiler Preferences - [https://bugs.eclipse.org/bugs/show_bug.cgi?id=529432 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 ===
+
=== Quick assists ===
* 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].
* Convert diamond operator to var, like fixing "List<String> names = new LinkedList<>()" into "var names = new LinkedList<String>()"
+
  
 
=== Code templates ===
 
=== Code templates ===
* Use 'var' in templates for loops and introduce new variable, if preferred by the code style.
+
* New templates with 'var' in for loops and introduce new variable - [can be added if useful - need examples - low prio].
 +
 
 +
[[Category:JDT]]

Latest revision as of 09:19, 13 March 2018

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 '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.

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

UI Changes

Code hover

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 assists

  • 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

  • New templates with 'var' in for loops and introduce new variable - [can be added if useful - need examples - low prio].

Back to the top