scalameta / mdoc

Typechecked markdown documentation for Scala
https://scalameta.org/mdoc/
Apache License 2.0
394 stars 81 forks source link

Exception thrown by mdoc terminates unforked JVM on sbt 1.6.x #613

Open iRevive opened 2 years ago

iRevive commented 2 years ago

sbt: 1.6.1 sbt-mdoc: 2.2.4

The issue

sbt dropped TrapExit mechanism in 1.6.0 release (https://github.com/sbt/sbt/pull/6665), hence any exception thrown by mdoc terminates unforked JVM.

The output of docs/mdoc command:

[info] running mdoc.Main
info: Compiling 23 files to /Users/maksim/projects/oss/xxx/mdoc/target/mdoc
error: README.md:2:15: compile-only cannot be used in combination with silent
```scala mdoc:silent:compile-only
              ^^^^^^^^^^^^^^^^^^^
info: Compiled in 1.69s (1 error)
[info] shutting down sbt server

The local fix

lazy val docs = project
  .in(file("mdoc"))
  .enablePlugins(MdocPlugin)
  .settings(
+   run / fork := true
  )

The proper solution

Should MdocPlugin enable forking by default? If not, I guess it's worth mentioning a workaround in the docs.

armanbilge commented 2 years ago

I'd also be interested if there's a way to solve this in mdoc without requiring forking. For some reason forking doesn't interact well with --watch in https://github.com/typelevel/sbt-typelevel/issues/197.