Commit Diff


commit - c20235ebf75e6aca44381b87eab66aa3efee8961
commit + 04c2af68751f50eaed7904c47754829b53eb1c1c
blob - 45474126d5663012a92c7f3d2ca1c74445f182c6
blob + 421cc67980c2ee122d14bf5e4d19ec764e5d36d1
--- src/main/kotlin/dev/nezzontli/gotvcs/log/GotVcsLogProvider.kt
+++ src/main/kotlin/dev/nezzontli/gotvcs/log/GotVcsLogProvider.kt
@@ -27,11 +27,18 @@ import java.util.concurrent.ConcurrentHashMap
  * index/cache beyond GotCommandLineWrapper's in-memory commit cache) -- same
  * philosophy as the rest of this plugin: no daemon, no persisted state.
  */
-class GotVcsLogProvider(
-    private val project: Project,
-    private val commandLine: GotCommandLineWrapper = GotCommandLineWrapper(),
-) : VcsLogProvider {
+class GotVcsLogProvider(private val project: Project) : VcsLogProvider {
 
+    // A default-valued second constructor parameter here (as this used to
+    // have, before needing `project` for the refresh notifier) makes Kotlin
+    // emit a single constructor with a synthetic $default bridge, which the
+    // platform's reflective EP instantiation doesn't recognize as "a
+    // (Project) constructor" -- it silently failed to construct this class
+    // at all, which is why the whole Log tab disappeared. Every other
+    // extension point in this plugin avoids this by taking only `project`
+    // and constructing its own GotCommandLineWrapper as a plain field.
+    private val commandLine = GotCommandLineWrapper()
+
     override val supportedVcs: VcsKey = GotVcs.getKey()
 
     override val referenceManager: VcsLogRefManager = GotVcsLogRefManager()