Skip to content

Commit 760e54e

Browse files
committed
define the scala 2 macros in the scala 3 module
# Conflicts: # build.sbt
1 parent a7fdbf5 commit 760e54e

File tree

21 files changed

+409
-219
lines changed

21 files changed

+409
-219
lines changed

build.sbt

Lines changed: 65 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,75 @@
1+
import _root_.com.github.sbt.osgi.SbtOsgi
2+
import sbt.url
3+
14
// basics
25

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)
6+
val scala213 = "2.13.16"
7+
val scala3 = "3.7.3"
8+
val scala2 = Seq("2.11.12", "2.12.20", scala213)
159
val isScala3 = Def.setting {
1610
CrossVersion.partialVersion(scalaVersion.value).exists(_._1 != 2)
1711
}
18-
libraryDependencies ++= Dependencies.scalaLogging(scalaVersion.value, isScala3.value)
19-
initialCommands := """|import com.typesafe.scalalogging._
20-
|import org.slf4j.{ Logger => Underlying, _ }""".stripMargin
2112

22-
// OSGi
2313

24-
enablePlugins(SbtOsgi)
25-
osgiSettings
26-
OsgiKeys.bundleSymbolicName := "com.typesafe.scala-logging"
27-
OsgiKeys.privatePackage := Seq()
28-
OsgiKeys.exportPackage := Seq("com.typesafe.scalalogging*")
14+
lazy val root = (project in file(".")).aggregate(core, scala2macros)
15+
val scalacOption = Def.setting {
16+
if (isScala3.value) Seq.empty else Seq("-language:_")
17+
}
18+
19+
lazy val core = (project in file("core"))
20+
.enablePlugins(SbtOsgi)
21+
.settings(
22+
name := "scala-logging",
23+
organization := "com.typesafe.scala-logging",
24+
crossScalaVersions := Seq(scala3) ++ scala2,
25+
scalaVersion := crossScalaVersions.value.head,
26+
ThisBuild / versionScheme := Some("early-semver"),
27+
scalacOptions ++= Seq(
28+
"-unchecked",
29+
"-deprecation",
30+
"-encoding", "UTF-8",
31+
) ++ scalacOption.value,
32+
incOptions := incOptions.value.withLogRecompileOnMacro(false),
33+
libraryDependencies ++= Dependencies.scalaLogging(scalaVersion.value, isScala3.value),
34+
initialCommands :=
35+
"""|import com.typesafe.scalalogging._
36+
|import org.slf4j.{ Logger => Underlying, _ }""".stripMargin
37+
).settings(
38+
// OSGi
39+
osgiSettings
40+
).settings(
41+
OsgiKeys.bundleSymbolicName := "com.typesafe.scala-logging",
42+
OsgiKeys.privatePackage := Seq(),
43+
OsgiKeys.exportPackage := Seq("com.typesafe.scalalogging*"),
2944

30-
// publishing
45+
// publishing
46+
licenses := Seq("Apache 2.0 License" -> url("http://www.apache.org/licenses/LICENSE-2.0.html")),
47+
homepage := Some(url("https://github.com/lightbend/scala-logging")),
48+
Test / publishArtifact := false,
49+
pomIncludeRepository := (_ => false),
50+
scmInfo := Some(
51+
ScmInfo(url("https://github.com/lightbend/scala-logging"), "scm:git:[email protected]:lightbend/scala-logging.git")
52+
),
53+
developers := List(
54+
Developer(
55+
id = "hseeberger",
56+
name = "Heiko Seeberger",
57+
email = "",
58+
url = url("http://heikoseeberger.de")
59+
),
60+
Developer(
61+
id = "analytically",
62+
name = "Mathias Bogaert",
63+
email = "",
64+
url = url("http://twitter.com/analytically")
65+
)
66+
))
67+
.dependsOn(scala2macros)
3168

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:[email protected]: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")
69+
lazy val scala2macros = project
70+
.settings(
71+
name := "scala2macros",
72+
scalaVersion := scala213,
73+
crossScalaVersions := scala2,
74+
libraryDependencies ++= Dependencies.scalaLogging(scalaVersion.value, false),
5275
)
53-
)
File renamed without changes.
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+
}

src/main/scala-3/com/typesafe/scalalogging/LoggerImpl.scala renamed to core/src/main/scala-3/com/typesafe/scalalogging/LoggerImpl.scala

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.typesafe.scalalogging
22

33
import org.slf4j.{Marker, Logger as Underlying }
4+
import scala.language.experimental.macros
45

56
trait LoggerImpl {
67
def underlying: Underlying
@@ -54,4 +55,87 @@ trait LoggerImpl {
5455
inline def trace(inline marker: Marker, inline message: String, inline cause: Throwable): Unit = ${LoggerMacro.traceMessageCauseMarker('underlying, 'marker, 'message, 'cause)}
5556
inline def trace(inline marker: Marker, inline message: String, inline args: Any*): Unit = ${LoggerMacro.traceMessageArgsMarker('underlying, 'marker, 'message, 'args)}
5657
inline def whenTraceEnabled(inline body: Unit): Unit = ${LoggerMacro.traceCode('underlying, 'body)}
58+
59+
//scala 2
60+
61+
// Error
62+
63+
def error(message: String): Unit = macro Scala2LoggerMacro.errorMessage
64+
65+
def error(message: String, cause: Throwable): Unit = macro Scala2LoggerMacro.errorMessageCause
66+
67+
def error(message: String, args: Any*): Unit = macro Scala2LoggerMacro.errorMessageArgs
68+
69+
def error(marker: Marker, message: String): Unit = macro Scala2LoggerMacro.errorMessageMarker
70+
71+
def error(marker: Marker, message: String, cause: Throwable): Unit = macro Scala2LoggerMacro.errorMessageCauseMarker
72+
73+
def error(marker: Marker, message: String, args: Any*): Unit = macro Scala2LoggerMacro.errorMessageArgsMarker
74+
75+
def whenErrorEnabled(body: Unit): Unit = macro Scala2LoggerMacro.errorCode
76+
77+
// Warn
78+
79+
def warn(message: String): Unit = macro Scala2LoggerMacro.warnMessage
80+
81+
def warn(message: String, cause: Throwable): Unit = macro Scala2LoggerMacro.warnMessageCause
82+
83+
def warn(message: String, args: Any*): Unit = macro Scala2LoggerMacro.warnMessageArgs
84+
85+
def warn(marker: Marker, message: String): Unit = macro Scala2LoggerMacro.warnMessageMarker
86+
87+
def warn(marker: Marker, message: String, cause: Throwable): Unit = macro Scala2LoggerMacro.warnMessageCauseMarker
88+
89+
def warn(marker: Marker, message: String, args: Any*): Unit = macro Scala2LoggerMacro.warnMessageArgsMarker
90+
91+
def whenWarnEnabled(body: Unit): Unit = macro Scala2LoggerMacro.warnCode
92+
93+
// Info
94+
95+
def info(message: String): Unit = macro Scala2LoggerMacro.infoMessage
96+
97+
def info(message: String, cause: Throwable): Unit = macro Scala2LoggerMacro.infoMessageCause
98+
99+
def info(message: String, args: Any*): Unit = macro Scala2LoggerMacro.infoMessageArgs
100+
101+
def info(marker: Marker, message: String): Unit = macro Scala2LoggerMacro.infoMessageMarker
102+
103+
def info(marker: Marker, message: String, cause: Throwable): Unit = macro Scala2LoggerMacro.infoMessageCauseMarker
104+
105+
def info(marker: Marker, message: String, args: Any*): Unit = macro Scala2LoggerMacro.infoMessageArgsMarker
106+
107+
def whenInfoEnabled(body: Unit): Unit = macro Scala2LoggerMacro.infoCode
108+
109+
// Debug
110+
111+
def debug(message: String): Unit = macro Scala2LoggerMacro.debugMessage
112+
113+
def debug(message: String, cause: Throwable): Unit = macro Scala2LoggerMacro.debugMessageCause
114+
115+
def debug(message: String, args: Any*): Unit = macro Scala2LoggerMacro.debugMessageArgs
116+
117+
def debug(marker: Marker, message: String): Unit = macro Scala2LoggerMacro.debugMessageMarker
118+
119+
def debug(marker: Marker, message: String, cause: Throwable): Unit = macro Scala2LoggerMacro.debugMessageCauseMarker
120+
121+
def debug(marker: Marker, message: String, args: Any*): Unit = macro Scala2LoggerMacro.debugMessageArgsMarker
122+
123+
def whenDebugEnabled(body: Unit): Unit = macro Scala2LoggerMacro.debugCode
124+
125+
// Trace
126+
127+
def trace(message: String): Unit = macro Scala2LoggerMacro.traceMessage
128+
129+
def trace(message: String, cause: Throwable): Unit = macro Scala2LoggerMacro.traceMessageCause
130+
131+
def trace(message: String, args: Any*): Unit = macro Scala2LoggerMacro.traceMessageArgs
132+
133+
def trace(marker: Marker, message: String): Unit = macro Scala2LoggerMacro.traceMessageMarker
134+
135+
def trace(marker: Marker, message: String, cause: Throwable): Unit = macro Scala2LoggerMacro.traceMessageCauseMarker
136+
137+
def trace(marker: Marker, message: String, args: Any*): Unit = macro Scala2LoggerMacro.traceMessageArgsMarker
138+
139+
def whenTraceEnabled(body: Unit): Unit = macro Scala2LoggerMacro.traceCode
140+
57141
}
File renamed without changes.

0 commit comments

Comments
 (0)