You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@daffodil.apache.org by "Steve Lawrence (Jira)" <ji...@apache.org> on 2025/08/04 18:33:00 UTC

[jira] [Assigned] (DAFFODIL-3012) Unidoc generation broken in scala3

     [ https://issues.apache.org/jira/browse/DAFFODIL-3012?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Steve Lawrence reassigned DAFFODIL-3012:
----------------------------------------

    Assignee: Steve Lawrence

> Unidoc generation broken in scala3
> ----------------------------------
>
>                 Key: DAFFODIL-3012
>                 URL: https://issues.apache.org/jira/browse/DAFFODIL-3012
>             Project: Daffodil
>          Issue Type: Bug
>          Components: Infrastructure
>    Affects Versions: 4.0.0
>            Reporter: Steve Lawrence
>            Assignee: Steve Lawrence
>            Priority: Major
>             Fix For: 4.0.0
>
>
> Running sbt unidoc on the lastest main branch does not generate any documentation.
> I think the issue is that sbt-unidoc uses the {{tastyFiles}} setting instead of the {{sources}} setting when building with Scala 3:
> https://github.com/sbt/sbt-unidoc/blob/develop/src/main/scala/sbtunidoc/ScalaUnidocPlugin.scala#L34-L41
> It does not look like tasty files are created for .java files, so our apiDocSettings filter causes unidocAllSources to be empty, and we do not generate any documentation.
> A fix could be to reimplement unidocAllSources to use non-scala3 logic so .java files are included, e.g.:
> {code:scala}
>     ScalaUnidoc / unidoc / unidocAllSources := Def.taskDyn {
>       val scopeFilter = (ScalaUnidoc / unidoc / unidocScopeFilter).value
>       sources.all(scopeFilter)
>     }.value.map(apiDocSourceFilter)
> {code}
> And that *should* get us generating javadoc again since it will only include /src/main/java/ files, which does not include any .scala or .tasty files and will use javadoc to generate docs.
> However, it's not clear to me if we can generate scaladoc as well. We have a PR that adds a dummy.scala file and reruns sbt unidoc:
> https://github.com/apache/daffodil-site/pull/183
> But I think that only works on scala 2 to generate scaladoc. It seems like Scala3 scaladoc only works on .tasty files and ignores .java files completely, even if they are part of the public API. I can't find any mention of this behavior, but simple tests with a single .java and .scala file do not include any documentation about the java class.
> We could maybe add the dummy.scala file and change scalaVersion to 2.13 temporarily only when building docs, but I imagine that would mean we would still need to support scala 2.13 (even if we don't publish 2.13), which we don't really want to do.
> Another alternative is maybe to convert our java files to .scala or .tasty files just for document generation (essentially the opposite of what genjavadoc does which converts .scala files to .java files), but from what I can tell nothing like that exists.
> We may need to just drop the scaladoc view of the Daffodil API, and update our site to only include javadoc if scaladoc3 does not have a way to include Java files in the scaladoc documentation.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)