From 02c8f2f6687f1cb5ef500dd8d65ed03c8c7a4ebd Mon Sep 17 00:00:00 2001 From: Tomasz Godzik Date: Wed, 17 Feb 2021 16:16:48 +0100 Subject: [PATCH] Add support for Scala 3.0.0-RC1 --- .github/workflows/ci.yml | 2 +- bin/test-release.sh | 1 + build.sbt | 4 ++-- .../mdoc/internal/markdown/SectionInput.scala | 12 +--------- .../mdoc/internal/pprint/TypePrinter.scala | 24 +++++++++++++++++++ .../mdoc/internal/sourcecode/Macros.scala | 18 ++++++++++++++ 6 files changed, 47 insertions(+), 14 deletions(-) create mode 100644 runtime/src/main/scala-3.0.0-RC1/mdoc/internal/pprint/TypePrinter.scala create mode 100644 runtime/src/main/scala-3.0.0-RC1/mdoc/internal/sourcecode/Macros.scala diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 38fc6d70..2a4e8edb 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -30,8 +30,8 @@ jobs: - "'++2.11.12 test'" - "'++2.12.13 test' scripted" - "'++2.13.4 test'" - - "'++3.0.0-M2 test'" - "'++3.0.0-M3 test'" + - "'++3.0.0-RC1 test'" steps: - uses: actions/checkout@v2 - uses: olafurpg/setup-scala@v10 diff --git a/bin/test-release.sh b/bin/test-release.sh index e2cf9bba..c31877e0 100755 --- a/bin/test-release.sh +++ b/bin/test-release.sh @@ -12,6 +12,7 @@ coursier fetch \ org.scalameta:mdoc_2.13:$version \ org.scalameta:mdoc_3.0.0-M2:$version \ org.scalameta:mdoc_3.0.0-M3:$version \ + org.scalameta:mdoc_3.0.0-RC1:$version \ org.scalameta:mdoc-js_2.11:$version \ org.scalameta:mdoc-js_2.12.12:$version \ org.scalameta:mdoc-js_2.12:$version \ diff --git a/build.sbt b/build.sbt index f10e4fab..5478107b 100644 --- a/build.sbt +++ b/build.sbt @@ -5,7 +5,7 @@ def scala212 = "2.12.13" def scala212Legacy = "2.12.12" def scala211 = "2.11.12" def scala213 = "2.13.4" -def scala3 = List("3.0.0-M3", "3.0.0-M2") +def scala3 = List("3.0.0-RC1", "3.0.0-M3", "3.0.0-M2") def scalajs = "1.3.0" def scalajsBinaryVersion = "1" @@ -113,7 +113,7 @@ lazy val sharedSettings = List( val V = new { val scalameta = "4.4.7" - val munit = "0.7.21" + val munit = "0.7.22" val coursier = "1.0.2" val scalacheck = "1.15.2" } diff --git a/mdoc/src/main/scala-3/mdoc/internal/markdown/SectionInput.scala b/mdoc/src/main/scala-3/mdoc/internal/markdown/SectionInput.scala index ea820d2d..dc271184 100644 --- a/mdoc/src/main/scala-3/mdoc/internal/markdown/SectionInput.scala +++ b/mdoc/src/main/scala-3/mdoc/internal/markdown/SectionInput.scala @@ -42,18 +42,8 @@ case class SectionInput(input : Input, mod : Modifier, context : MContext){ def show(tree : Tree, currentIdent : Int) = { val str = tree.sourcePos(using ctx).start val end = tree.sourcePos(using ctx).end - // workaround should be removed once support for 0.26.0 is dropped - val prefix = if (BuildInfo.scalaBinaryVersion == "0.26") - tree match { - case ext: ExtMethods if ext.tparams.nonEmpty => - "extension [" - case _: ExtMethods => - "extension (" - case _ => "" - } - else "" val realIdent = " " * (currentIdent - wrapIdent.size) - prefix + sourceCode.substring(str, end).replace("\n", "\n" + realIdent) + sourceCode.substring(str, end).replace("\n", "\n" + realIdent) } def text = source.show(using driver.currentCtx) } diff --git a/runtime/src/main/scala-3.0.0-RC1/mdoc/internal/pprint/TypePrinter.scala b/runtime/src/main/scala-3.0.0-RC1/mdoc/internal/pprint/TypePrinter.scala new file mode 100644 index 00000000..13c2c702 --- /dev/null +++ b/runtime/src/main/scala-3.0.0-RC1/mdoc/internal/pprint/TypePrinter.scala @@ -0,0 +1,24 @@ +package mdoc.internal.pprint + +import scala.language.implicitConversions +import scala.quoted._ +import scala.quoted.runtime.impl.printers.SyntaxHighlight + +trait TPrint[T]{ + def render: String +} + +object TPrint { + inline given default[T]: TPrint[T] = ${ TypePrinter.typeString[T] } +} + +object TypePrinter{ + + def typeString[T](using ctx: Quotes, tpe: Type[T]): Expr[TPrint[T]] = { + import ctx.reflect._ + + val valueType = TypeTree.of[T](using tpe).tpe.show(using Printer.TypeReprShortCode) + + '{ new TPrint[T]{ def render: String = ${ Expr(valueType) } } } + } +} diff --git a/runtime/src/main/scala-3.0.0-RC1/mdoc/internal/sourcecode/Macros.scala b/runtime/src/main/scala-3.0.0-RC1/mdoc/internal/sourcecode/Macros.scala new file mode 100644 index 00000000..e6d43fc8 --- /dev/null +++ b/runtime/src/main/scala-3.0.0-RC1/mdoc/internal/sourcecode/Macros.scala @@ -0,0 +1,18 @@ +package mdoc.internal.sourcecode + +import scala.language.implicitConversions +import scala.quoted._ + +trait StatementMacro { + inline implicit def generate[T](v: => T): SourceStatement[T] = ${ Macros.text('v) } + inline def apply[T](v: => T): SourceStatement[T] = ${ Macros.text('v) } +} + +object Macros{ + + def text[T: Type](v: Expr[T])(using ctx: Quotes): Expr[SourceStatement[T]] = { + import ctx.reflect.{_, given} + val txt = v.asTerm.pos.sourceCode.getOrElse("") + '{SourceStatement[T]($v, ${Expr(txt)})} + } +} \ No newline at end of file