James Richardson
09/07/2022, 10:53 AMAlexey Belkov [JB]
09/07/2022, 11:41 AMchristophsturm
09/07/2022, 11:45 AMFleshgrinder
09/07/2022, 11:47 AMchristophsturm
09/07/2022, 11:50 AMJames Richardson
09/07/2022, 11:50 AMchristophsturm
09/07/2022, 11:51 AMchristophsturm
09/07/2022, 11:53 AMJames Richardson
09/07/2022, 12:35 PMAnton Yalyshev [JB]
09/07/2022, 12:47 PMchristophsturm
09/07/2022, 12:48 PMJames Richardson
09/07/2022, 12:55 PMchristophsturm
09/07/2022, 12:59 PMAnton Yalyshev [JB]
09/07/2022, 2:25 PMJames Richardson
09/07/2022, 3:13 PMmbonnin
09/07/2022, 3:43 PMAlexey Belkov [JB]
09/07/2022, 4:16 PMAnton Yalyshev [JB]
09/07/2022, 4:23 PMchristophsturm
09/07/2022, 6:28 PMchristophsturm
09/07/2022, 6:43 PMOliver.O
09/07/2022, 7:57 PMrocketraman
09/07/2022, 10:55 PMrocketraman
09/07/2022, 10:56 PM222-1.7.20-Beta-release-102-IJ3345.90
seems to be on the better end of the spectrum.Anton Yalyshev [JB]
09/08/2022, 6:54 AMDo you guys review and action the crash reports from the plugin submitted via the IDE?Yes, of course. This crash-reporting system is not as good as full-fledged bug-tracker, in terms of requests management, but at the same, that reports contain all diagnostics information that IDE can give. It’s quite useful in case of UI freezes and code analysis failures, when the bug is caused by a combination of many circumstances and barely can be reproduced.
Anton Yalyshev [JB]
09/08/2022, 7:49 AMthere was always something on the horizon that will happen next yearWell, 3-5 years ago our team had another approach in the product development - we were trying to fix as much reports as possible. And almost always it was quite a local fixes, patches, hacks, which solved only that particular use-cases. At some point, we began to realize that in our conditions (product. that is built on rapidly developing technologies) this approach will not effective in a long term. And besides quick fixes we have to solve not urgent but big/long and important tasks. For example, moving the plugin codebase from the Kotlin to the IntelliJ repo took ~ 2 years (including complete integration to the new infrastructure and solving new issues, like building EAP-compiler-based plugins for EAP of IJ IDEA). Performance, Find Usages, Scripting support optimisations, usually take months, but it solves not a single but classes of problems. And also regarding refactoring, it was better to organise quality sprints for them (Inline_1, Inline_2, Change_signature). We couldn’t pay attention on all of them, but we choose these ones with help of our users feedback in the Youtrack. To sum up, we found that an effective approach, in our case, may be to allocate 1/2 team efforts on the K2-based plugin, 1/4 team on urgent fixes and 1/4 on long-term tasks, like I pointed above, for K1-based plugin
christophsturm
09/08/2022, 10:56 AMAlexey Belkov [JB]
09/08/2022, 11:16 AMchristophsturm
09/08/2022, 11:41 AMAlexey Belkov [JB]
09/08/2022, 11:51 AMchristophsturm
09/08/2022, 11:52 AMmcpiroman
09/08/2022, 12:37 PMFleshgrinder
09/08/2022, 12:56 PMclass C {
companion object
}
Now use any generate method refactoring (e.g. equals and hashCode
). 🤕
This is just an example from the top of my head. There are other trivial things, like this which I just encountered in Gradle:
val source = source.get()
fs.copy {
from(archives.zipTree(source))
into(target)
}
Doing an inline variable
on source
results in:
fs.copy {
from(archives.zipTree(this.source.get()))
into(target)
}
Obviously this won't compile, because this
is not this
in the copy
context. It's sometimes almost like the Kotlin plugin does not understand Kotlin at all.
Nothing like that ever happens in Java in IJ. IJ goes way beyond trivial refactorings in Java (and all of them actually work) like those available to us in IJ for Kotlin today, the inspections there are also much more useful. Honestly, if Java wouldn't be such a pita to write I'd switch back just because of the much, much, much better IJ support for pretty much everything.Oliver.O
09/08/2022, 2:50 PMcompanion object
does not make any sense. With companion object {}
, refactoring starts to work.
Would the second one still happen if there had not been two identically named, but different instances of source
, say sourceProvider
and source
?Fleshgrinder
09/08/2022, 2:53 PMOliver.O
09/08/2022, 2:54 PMchristophsturm
09/08/2022, 4:40 PMOliver.O
09/08/2022, 4:56 PMchristophsturm
09/08/2022, 4:59 PMchristophsturm
09/08/2022, 5:01 PMOliver.O
09/08/2022, 5:08 PMchristophsturm
09/08/2022, 5:23 PMchristophsturm
09/08/2022, 5:24 PM