Version 1.2 Released

Now compatible with IntelliJ IDEA version 2019! We’ve added some more support for Haxe 4, in the guise of supporting resolution and completions through abstracts. We’ve added better internal type inference (and support for type checks) to improve our error highlighting. And, we’ve improved Rename and Introduce Variable refactorings.

Getting the Plugin:

You can pick the plugin up at the usual places:

Change Notes:

  • Update builds for 2019.1 and 2018.x versions.
  • Fix completion on abstracts using generic underlying types (e.g. abstract MyClass<T>(T) {}) (Issue #772)
  • Fix completion through abstracts.
  • Resolve fields and methods through abstracts.
  • Haxe 4: Special rules to resolve Null<T> as abstract.
  • Fixed constructor being renamed when a class is renamed (refactored). (Issue #776, #785)
  • Fixed ClassCastException when Refactor->Rename was used on generic type names.
  • No longer display type mismatch errors when using abstracts with (varying) generic type parameters. (e.g. Null<String>, Null<Test>)
  • Better detection of types inferred after declaration (monomorphs).
  • Fixed type detection for expressions in parenthesis.
  • Downgrade visibility (public/private) incompatibility to a warning.
  • Allow “Dynamic” as an interface type.
  • Detect simple type mismatches in declarations and assignments. Add quick fixes for them.
  • Check type of type check statements (e.g. (myExpression : Float)) and warn. Add quick fixes.
  • Auto-close regions and conditionally (un)compiled code, and add checkboxes to the Settings panel for folding.
  • Fix Extract Variable and Extract Constant refactorings (Issue #844):
    • Fixed infinite loop when extracting multiple occurrences.
    • Avoid keywords when making name suggestions.
    • Fix multi-select for custom names in all occurrences.
    • Fix semi-colon insertion/detection.
    • Suggest variable names based upon expression type.
  • Allow AIR targets to be debugged using the flash system. (Issue #849)

Status report: May 2019

Hi folks,

This month I pent the majority of my time getting the plug-in to build on versions of IntelliJ IDEA 2018.2, 2018.3, and 2019.1. Each version had its own challenges. In the end, I built a new system to create version-specific sources from templated source files. The templates live in the same tree as the normal sources and are copied as necessary to appropriate places for compilation. I was able to avoid using multiple trees as we have in the past, and we again have a reasonable solution to account for version differences so we can continue to support older versions of the IDE.

The end result of this, of course, was to get a build that works on 2019.x versions of IDEA. The build runs, but it doesn’t pass smoke tests — too many errors were being marked because our abstract support was incomplete. So, I’ve already checked in some fixes and have a few more to complete before I can call this good enough.

What I worked on for our sponsors:

1) Create local var from unresolved references (Alt+Enter). (incomplete — on hold until release)
2) Better detection and handling of abstract classes (falls under “Better error detection” task). (incomplete, partially merged, blocking release)
3) Release an updated version (incomplete).

What I worked on for the Community:

1) Building for all current versions of IntelliJ IDEA.
2) 2019.1 release.
3) Std library UI and properly detecting/updating Haxe Toolkits. (Back-burner)

On hold:

1) Tab settings pages and code reformatting engine. This is mostly done, but it needs exhaustive unit tests to be written. The current set is minimal.
2) Comment formatting — including DOX.

Next Month:

1) New release
2) Fix debugging C++ projects with Lime
3) Finish tab settings changes. (stretch)
4) Add safeguards so that project rebuilds won’t erase directories outside of the project tree. (stretch)
5) Haxe 4 features? (stretch)

Sponsor priorities:

1) Refactor: New Class/Method/Var from Alt+Enter.
2) Better error detection. (#531) (Next up is dealing with @allow issues.)
3) Haxe4?

Have a great month, folks.

-Eric