Hi folks,
This month, while I spent a little bit of time understanding and finding how to fix class name refactoring, I realized that it wasn’t as high up my sponsor’s priority list as “Better error detection” was, so I switched gears back to the detection and have spent my time fixing those issues as I find them. The only one that was particularly pointed out in the work description was “var i : int = 10/2;”. I’ve fixed that and a number of other issues and am now working on the highlighted lines here:
By the way, the inspections you see here are not limited to Float/Int comparisons; it applies to anything that is assignment [in]compatible. That said, the plugin doesn’t have any real unification support or monomorph type coercion yet.
What I worked on for our sponsors:
1) Type annotation cleanup: (ongoing)
- Detect Float values being assigned to Int variables in variable declarations – including adding selectable quick fixes (such as “Wrap with Std.int()”). (complete – not reviewed — was in-progress last month)
- Detect incompatibility when initializing variables using type-tagged expressions (complete – not reviewed);
- Detect incompatibility when initializing variables using parenthesized expressions (complete – not reviewed);
- Detect incompatibility during assignment (in-progress)
2) Renaming a class (refactoring) inappropriately renames the constructor. (in-progress)
What I worked on for the Community:
1) Fix review comments and merged “Extract Variable” and “Extract Constant” refactorings. (merged)
- Added type-tag parsing (in general) and support it during extraction. (completed in January)
- Detect type and use it to make better name suggestions. (completed in January)
- Avoid using/allowing keywords as variable names/suggestions. (completed in January)
- Stop infinite loop when a variable was being extracted to the class level. (completed in December)
- Avoid Haxe keywords when making variable name suggestions. (complete in December)
- Fixed multi-select (for renaming all occurrences simultaneously). (completed in December)
- Fixed semi-colon detection and insertion. (completed in December)
2) Adding tab settings pane (in-progress):
- Get pane to display. (complete)
- Save settings and honor them. (complete, except for continuations)
- Honor continuation settings. (in-progress)
3) Research and preliminary work on Issue #641 – where unexpected directories (e.g. root!) are being deleted.
4) Some progress on the new UI for standard library locations. (It is going slow.)
Community contributions:
1) Updated hxcpp-debugger code with code generated using hxjava 3.2.0 to get rid of warnings and messy class names (m0rkeulv). (merged)
Next month:
1) Finish tab settings pane.
2) Continue type annotation cleanup. (sponsor priority)
3) Fix class constructor being inappropriately renamed during class rename refactoring.
4) Fix debugging C++ projects when build with Lime. (Currently looks like an hxcpp issue.)
5) Time for another release!
6) Continue UI for standard library locations.
7) Haxe 4 features?
Have a great month, everybody!
-Eric