Skip to content

Commit e9a9bc9

Browse files
define the scala 2 macros in the scala 3 module (#480)
* define the scala 2 macros in the scala 3 module # Conflicts: # build.sbt * add -Ywarn-unused * migration 3.7 * update * update * update * update * fix ci
1 parent 7e4dc40 commit e9a9bc9

File tree

24 files changed

+1074
-238
lines changed

24 files changed

+1074
-238
lines changed

.github/workflows/ci.yml

Lines changed: 37 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -9,20 +9,42 @@ jobs:
99
strategy:
1010
fail-fast: false
1111
matrix:
12-
java: [8, 11, 17]
13-
scala: [2.11.x, 2.12.x, 2.13.x, 3.x]
12+
java: [ 8, 11, 17, 21 ]
13+
scala: [ 2.11.x, 2.12.x, 2.13.x, 3.x ]
1414
runs-on: ubuntu-latest
1515
steps:
16-
- uses: actions/checkout@v3
17-
with:
18-
fetch-depth: 0
19-
- uses: coursier/cache-action@v6
20-
- uses: actions/setup-java@v3
21-
with:
22-
distribution: temurin
23-
java-version: ${{matrix.java}}
24-
- uses: sbt/setup-sbt@v1
25-
- name: Test
26-
run: |
27-
sbt ++${{matrix.scala}} test
28-
git diff --exit-code # check scalariform
16+
- uses: actions/checkout@v3
17+
with:
18+
fetch-depth: 0
19+
- uses: coursier/cache-action@v6
20+
- uses: actions/setup-java@v3
21+
with:
22+
distribution: temurin
23+
java-version: ${{matrix.java}}
24+
- uses: sbt/setup-sbt@v1
25+
- name: Test
26+
run: |
27+
sbt ++${{matrix.scala}} test
28+
git diff --exit-code # check scalariform
29+
30+
integration-test:
31+
strategy:
32+
fail-fast: false
33+
matrix:
34+
java: [ 8, 11, 17, 21 ]
35+
scala: [ 2.13.x, 3.x ]
36+
runs-on: ubuntu-latest
37+
steps:
38+
- uses: actions/checkout@v3
39+
with:
40+
fetch-depth: 0
41+
- uses: coursier/cache-action@v6
42+
- uses: actions/setup-java@v3
43+
with:
44+
distribution: temurin
45+
java-version: ${{matrix.java}}
46+
- uses: sbt/setup-sbt@v1
47+
- name: Test
48+
run: |
49+
sbt ++${{matrix.scala}} integration-test/test
50+
git diff --exit-code # check scalariform

build.sbt

Lines changed: 89 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,95 @@
1+
import Library.{logbackClassic, mockitoScala, scalaTest}
2+
import _root_.com.github.sbt.osgi.SbtOsgi
3+
import sbt.url
4+
15
// basics
26

3-
name := "scala-logging"
4-
crossScalaVersions := Seq("3.3.5", "2.11.12", "2.12.20", "2.13.16")
5-
scalaVersion := crossScalaVersions.value.head
6-
ThisBuild / versionScheme := Some("early-semver")
7-
scalacOptions ++= Seq(
8-
"-unchecked",
9-
"-deprecation",
10-
"-language:_",
11-
"-encoding", "UTF-8",
12-
"-Ywarn-unused"
13-
)
14-
incOptions := incOptions.value.withLogRecompileOnMacro(false)
7+
val scala213 = "2.13.16"
8+
val scala3 = "3.7.3"
9+
val scala2 = Seq("2.11.12", "2.12.20", scala213)
1510
val isScala3 = Def.setting {
1611
CrossVersion.partialVersion(scalaVersion.value).exists(_._1 != 2)
1712
}
18-
libraryDependencies ++= Dependencies.scalaLogging(scalaVersion.value, isScala3.value)
19-
initialCommands := """|import com.typesafe.scalalogging._
20-
|import org.slf4j.{ Logger => Underlying, _ }""".stripMargin
21-
22-
// OSGi
23-
24-
enablePlugins(SbtOsgi)
25-
osgiSettings
26-
OsgiKeys.bundleSymbolicName := "com.typesafe.scala-logging"
27-
OsgiKeys.privatePackage := Seq()
28-
OsgiKeys.exportPackage := Seq("com.typesafe.scalalogging*")
29-
30-
// publishing
31-
32-
organization := "com.typesafe.scala-logging"
33-
licenses := Seq("Apache 2.0 License" -> url("http://www.apache.org/licenses/LICENSE-2.0.html"))
34-
homepage := Some(url("https://github.com/lightbend/scala-logging"))
35-
Test / publishArtifact := false
36-
pomIncludeRepository := (_ => false)
37-
scmInfo := Some(
38-
ScmInfo(url("https://github.com/lightbend/scala-logging"), "scm:git:git@github.com:lightbend/scala-logging.git")
39-
)
40-
developers := List(
41-
Developer(
42-
id = "hseeberger",
43-
name = "Heiko Seeberger",
44-
email = "",
45-
url = url("http://heikoseeberger.de")
46-
),
47-
Developer(
48-
id = "analytically",
49-
name = "Mathias Bogaert",
50-
email = "",
51-
url = url("http://twitter.com/analytically")
13+
14+
val scalacOption = Def.setting {
15+
if (isScala3.value) Seq.empty else Seq("-language:_", "-Ywarn-unused")
16+
}
17+
18+
lazy val root = (project in file(".")).aggregate(core, scala2macros)
19+
20+
lazy val core = (project in file("core"))
21+
.enablePlugins(SbtOsgi)
22+
.settings(
23+
name := "scala-logging",
24+
organization := "com.typesafe.scala-logging",
25+
crossScalaVersions := Seq(scala3) ++ scala2,
26+
scalaVersion := crossScalaVersions.value.head,
27+
ThisBuild / versionScheme := Some("early-semver"),
28+
scalacOptions ++= Seq(
29+
"-unchecked",
30+
"-deprecation",
31+
"-encoding", "UTF-8"
32+
) ++ scalacOption.value,
33+
incOptions := incOptions.value.withLogRecompileOnMacro(false),
34+
libraryDependencies ++= Dependencies.scalaLogging(scalaVersion.value, isScala3.value),
35+
initialCommands :=
36+
"""|import com.typesafe.scalalogging._
37+
|import org.slf4j.{ Logger => Underlying, _ }""".stripMargin
38+
).settings(
39+
// OSGi
40+
osgiSettings
41+
).settings(
42+
OsgiKeys.bundleSymbolicName := "com.typesafe.scala-logging",
43+
OsgiKeys.privatePackage := Seq(),
44+
OsgiKeys.exportPackage := Seq("com.typesafe.scalalogging*"),
45+
46+
// publishing
47+
licenses := Seq("Apache 2.0 License" -> url("http://www.apache.org/licenses/LICENSE-2.0.html")),
48+
homepage := Some(url("https://github.com/lightbend/scala-logging")),
49+
Test / publishArtifact := false,
50+
pomIncludeRepository := (_ => false),
51+
scmInfo := Some(
52+
ScmInfo(url("https://github.com/lightbend/scala-logging"), "scm:git:git@github.com:lightbend/scala-logging.git")
53+
),
54+
developers := List(
55+
Developer(
56+
id = "hseeberger",
57+
name = "Heiko Seeberger",
58+
email = "",
59+
url = url("http://heikoseeberger.de")
60+
),
61+
Developer(
62+
id = "analytically",
63+
name = "Mathias Bogaert",
64+
email = "",
65+
url = url("http://twitter.com/analytically")
66+
)
67+
))
68+
.dependsOn(scala2macros)
69+
70+
lazy val scala2macros = project
71+
.settings(
72+
name := "scala2macros",
73+
scalaVersion := scala213,
74+
crossScalaVersions := scala2,
75+
libraryDependencies ++= Dependencies.scalaLogging(scalaVersion.value, false),
76+
)
77+
78+
lazy val `integration-test` = project.in(file("integration-test"))
79+
.settings(
80+
publish / skip := true,
81+
scalaVersion := scala3,
82+
crossScalaVersions := Seq(scala3, scala213),
83+
scalacOptions ++= {
84+
CrossVersion.partialVersion(scalaVersion.value) match {
85+
case Some((2, 13)) => Seq("-Ytasty-reader")
86+
case _ => Seq.empty
87+
}
88+
},
89+
libraryDependencies ++= Seq(
90+
logbackClassic % "test",
91+
mockitoScala % "test",
92+
scalaTest % "test"
93+
)
5294
)
53-
)
95+
.dependsOn(core)
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
package com.typesafe.scalalogging
2+
3+
import org.slf4j.Marker
4+
class LoggerImpl {
5+
6+
// Error
7+
8+
def error(message: String): Unit = macro Scala2LoggerMacro.errorMessage
9+
10+
def error(message: String, cause: Throwable): Unit = macro Scala2LoggerMacro.errorMessageCause
11+
12+
def error(message: String, args: Any*): Unit = macro Scala2LoggerMacro.errorMessageArgs
13+
14+
def error(marker: Marker, message: String): Unit = macro Scala2LoggerMacro.errorMessageMarker
15+
16+
def error(marker: Marker, message: String, cause: Throwable): Unit = macro Scala2LoggerMacro.errorMessageCauseMarker
17+
18+
def error(marker: Marker, message: String, args: Any*): Unit = macro Scala2LoggerMacro.errorMessageArgsMarker
19+
20+
def whenErrorEnabled(body: Unit): Unit = macro Scala2LoggerMacro.errorCode
21+
22+
// Warn
23+
24+
def warn(message: String): Unit = macro Scala2LoggerMacro.warnMessage
25+
26+
def warn(message: String, cause: Throwable): Unit = macro Scala2LoggerMacro.warnMessageCause
27+
28+
def warn(message: String, args: Any*): Unit = macro Scala2LoggerMacro.warnMessageArgs
29+
30+
def warn(marker: Marker, message: String): Unit = macro Scala2LoggerMacro.warnMessageMarker
31+
32+
def warn(marker: Marker, message: String, cause: Throwable): Unit = macro Scala2LoggerMacro.warnMessageCauseMarker
33+
34+
def warn(marker: Marker, message: String, args: Any*): Unit = macro Scala2LoggerMacro.warnMessageArgsMarker
35+
36+
def whenWarnEnabled(body: Unit): Unit = macro Scala2LoggerMacro.warnCode
37+
38+
// Info
39+
40+
def info(message: String): Unit = macro Scala2LoggerMacro.infoMessage
41+
42+
def info(message: String, cause: Throwable): Unit = macro Scala2LoggerMacro.infoMessageCause
43+
44+
def info(message: String, args: Any*): Unit = macro Scala2LoggerMacro.infoMessageArgs
45+
46+
def info(marker: Marker, message: String): Unit = macro Scala2LoggerMacro.infoMessageMarker
47+
48+
def info(marker: Marker, message: String, cause: Throwable): Unit = macro Scala2LoggerMacro.infoMessageCauseMarker
49+
50+
def info(marker: Marker, message: String, args: Any*): Unit = macro Scala2LoggerMacro.infoMessageArgsMarker
51+
52+
def whenInfoEnabled(body: Unit): Unit = macro Scala2LoggerMacro.infoCode
53+
54+
// Debug
55+
56+
def debug(message: String): Unit = macro Scala2LoggerMacro.debugMessage
57+
58+
def debug(message: String, cause: Throwable): Unit = macro Scala2LoggerMacro.debugMessageCause
59+
60+
def debug(message: String, args: Any*): Unit = macro Scala2LoggerMacro.debugMessageArgs
61+
62+
def debug(marker: Marker, message: String): Unit = macro Scala2LoggerMacro.debugMessageMarker
63+
64+
def debug(marker: Marker, message: String, cause: Throwable): Unit = macro Scala2LoggerMacro.debugMessageCauseMarker
65+
66+
def debug(marker: Marker, message: String, args: Any*): Unit = macro Scala2LoggerMacro.debugMessageArgsMarker
67+
68+
def whenDebugEnabled(body: Unit): Unit = macro Scala2LoggerMacro.debugCode
69+
70+
// Trace
71+
72+
def trace(message: String): Unit = macro Scala2LoggerMacro.traceMessage
73+
74+
def trace(message: String, cause: Throwable): Unit = macro Scala2LoggerMacro.traceMessageCause
75+
76+
def trace(message: String, args: Any*): Unit = macro Scala2LoggerMacro.traceMessageArgs
77+
78+
def trace(marker: Marker, message: String): Unit = macro Scala2LoggerMacro.traceMessageMarker
79+
80+
def trace(marker: Marker, message: String, cause: Throwable): Unit = macro Scala2LoggerMacro.traceMessageCauseMarker
81+
82+
def trace(marker: Marker, message: String, args: Any*): Unit = macro Scala2LoggerMacro.traceMessageArgsMarker
83+
84+
def whenTraceEnabled(body: Unit): Unit = macro Scala2LoggerMacro.traceCode
85+
}
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
package com.typesafe.scalalogging
2+
3+
import org.slf4j.Marker
4+
5+
class LoggerTakingImplicitImpl[A] private[scalalogging] {
6+
7+
// Error
8+
9+
def error(message: String)(implicit a: A): Unit = macro Scala2LoggerTakingImplicitMacro.errorMessage[A]
10+
11+
def error(message: String, cause: Throwable)(implicit a: A): Unit = macro Scala2LoggerTakingImplicitMacro.errorMessageCause[A]
12+
13+
def error(message: String, args: Any*)(implicit a: A): Unit = macro Scala2LoggerTakingImplicitMacro.errorMessageArgs[A]
14+
15+
def error(marker: Marker, message: String)(implicit a: A): Unit = macro Scala2LoggerTakingImplicitMacro.errorMessageMarker[A]
16+
17+
def error(marker: Marker, message: String, cause: Throwable)(implicit a: A): Unit = macro Scala2LoggerTakingImplicitMacro.errorMessageCauseMarker[A]
18+
19+
def error(marker: Marker, message: String, args: Any*)(implicit a: A): Unit = macro Scala2LoggerTakingImplicitMacro.errorMessageArgsMarker[A]
20+
21+
def whenErrorEnabled(body: Unit)(implicit a: A): Unit = macro Scala2LoggerTakingImplicitMacro.errorCode[A]
22+
23+
// Warn
24+
25+
def warn(message: String)(implicit a: A): Unit = macro Scala2LoggerTakingImplicitMacro.warnMessage[A]
26+
27+
def warn(message: String, cause: Throwable)(implicit a: A): Unit = macro Scala2LoggerTakingImplicitMacro.warnMessageCause[A]
28+
29+
def warn(message: String, args: Any*)(implicit a: A): Unit = macro Scala2LoggerTakingImplicitMacro.warnMessageArgs[A]
30+
31+
def warn(marker: Marker, message: String)(implicit a: A): Unit = macro Scala2LoggerTakingImplicitMacro.warnMessageMarker[A]
32+
33+
def warn(marker: Marker, message: String, cause: Throwable)(implicit a: A): Unit = macro Scala2LoggerTakingImplicitMacro.warnMessageCauseMarker[A]
34+
35+
def warn(marker: Marker, message: String, args: Any*)(implicit a: A): Unit = macro Scala2LoggerTakingImplicitMacro.warnMessageArgsMarker[A]
36+
37+
def whenWarnEnabled(body: Unit)(implicit a: A): Unit = macro Scala2LoggerTakingImplicitMacro.warnCode[A]
38+
39+
// Info
40+
41+
def info(message: String)(implicit a: A): Unit = macro Scala2LoggerTakingImplicitMacro.infoMessage[A]
42+
43+
def info(message: String, cause: Throwable)(implicit a: A): Unit = macro Scala2LoggerTakingImplicitMacro.infoMessageCause[A]
44+
45+
def info(message: String, args: Any*)(implicit a: A): Unit = macro Scala2LoggerTakingImplicitMacro.infoMessageArgs[A]
46+
47+
def info(marker: Marker, message: String)(implicit a: A): Unit = macro Scala2LoggerTakingImplicitMacro.infoMessageMarker[A]
48+
49+
def info(marker: Marker, message: String, cause: Throwable)(implicit a: A): Unit = macro Scala2LoggerTakingImplicitMacro.infoMessageCauseMarker[A]
50+
51+
def info(marker: Marker, message: String, args: Any*)(implicit a: A): Unit = macro Scala2LoggerTakingImplicitMacro.infoMessageArgsMarker[A]
52+
53+
def whenInfoEnabled(body: Unit)(implicit a: A): Unit = macro Scala2LoggerTakingImplicitMacro.infoCode[A]
54+
55+
// Debug
56+
57+
def debug(message: String)(implicit a: A): Unit = macro Scala2LoggerTakingImplicitMacro.debugMessage[A]
58+
59+
def debug(message: String, cause: Throwable)(implicit a: A): Unit = macro Scala2LoggerTakingImplicitMacro.debugMessageCause[A]
60+
61+
def debug(message: String, args: Any*)(implicit a: A): Unit = macro Scala2LoggerTakingImplicitMacro.debugMessageArgs[A]
62+
63+
def debug(marker: Marker, message: String)(implicit a: A): Unit = macro Scala2LoggerTakingImplicitMacro.debugMessageMarker[A]
64+
65+
def debug(marker: Marker, message: String, cause: Throwable)(implicit a: A): Unit = macro Scala2LoggerTakingImplicitMacro.debugMessageCauseMarker[A]
66+
67+
def debug(marker: Marker, message: String, args: Any*)(implicit a: A): Unit = macro Scala2LoggerTakingImplicitMacro.debugMessageArgsMarker[A]
68+
69+
def whenDebugEnabled(body: Unit)(implicit a: A): Unit = macro Scala2LoggerTakingImplicitMacro.debugCode[A]
70+
71+
// Trace
72+
73+
def trace(message: String)(implicit a: A): Unit = macro Scala2LoggerTakingImplicitMacro.traceMessage[A]
74+
75+
def trace(message: String, cause: Throwable)(implicit a: A): Unit = macro Scala2LoggerTakingImplicitMacro.traceMessageCause[A]
76+
77+
def trace(message: String, args: Any*)(implicit a: A): Unit = macro Scala2LoggerTakingImplicitMacro.traceMessageArgs[A]
78+
79+
def trace(marker: Marker, message: String)(implicit a: A): Unit = macro Scala2LoggerTakingImplicitMacro.traceMessageMarker[A]
80+
81+
def trace(marker: Marker, message: String, cause: Throwable)(implicit a: A): Unit = macro Scala2LoggerTakingImplicitMacro.traceMessageCauseMarker[A]
82+
83+
def trace(marker: Marker, message: String, args: Any*)(implicit a: A): Unit = macro Scala2LoggerTakingImplicitMacro.traceMessageArgsMarker[A]
84+
85+
def whenTraceEnabled(body: Unit)(implicit a: A): Unit = macro Scala2LoggerTakingImplicitMacro.traceCode[A]
86+
}

0 commit comments

Comments
 (0)