aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakob Odersky <jakob@odersky.com>2016-05-16 11:41:56 -0700
committerJakob Odersky <jakob@odersky.com>2016-05-16 11:41:56 -0700
commit3db64cb057121cbae9871779664ec6f0f853feb4 (patch)
treef6be52ef9c8e65e9ad91d1e57dc2f62d93c64457
parent483ba76508e6c715a1fa199a48e1c120a9dbd6b1 (diff)
downloadsbt-jni-3db64cb057121cbae9871779664ec6f0f853feb4.tar.gz
sbt-jni-3db64cb057121cbae9871779664ec6f0f853feb4.tar.bz2
sbt-jni-3db64cb057121cbae9871779664ec6f0f853feb4.zip
Hide injected code in a new block
-rw-r--r--macros/src/main/scala/ch/jodersky/jni/annotations.scala17
1 files changed, 6 insertions, 11 deletions
diff --git a/macros/src/main/scala/ch/jodersky/jni/annotations.scala b/macros/src/main/scala/ch/jodersky/jni/annotations.scala
index c7a6555..ffc262e 100644
--- a/macros/src/main/scala/ch/jodersky/jni/annotations.scala
+++ b/macros/src/main/scala/ch/jodersky/jni/annotations.scala
@@ -37,8 +37,8 @@ object nativeLoaderMacro {
//q"$mods object $name extends ..$parents {$self => ..$body }" :: Nil =>
case ModuleDef(mods, name, Template(parents, self, body)) :: Nil =>
- val loadPackagedDef: DefDef = q"""
- private def loadPackaged(): Unit = {
+ val extra = q"""{
+ def loadPackaged(): Unit = {
import java.io.File
import java.nio.file.{Files, Path}
@@ -65,22 +65,17 @@ object nativeLoaderMacro {
System.load(extractedPath.toAbsolutePath.toString)
}
- """
- val loadDef: DefDef = q"""
- private def load(): Unit = try {
+
+ def load(): Unit = try {
System.loadLibrary($nativeLibrary)
} catch {
case ex: UnsatisfiedLinkError => loadPackaged()
}
- """
- val extraBody = q"""
- $loadPackagedDef
- $loadDef
load()
- """
+ }"""
- ModuleDef(mods, name, Template(parents, self, body :+ extraBody)) :: Nil
+ ModuleDef(mods, name, Template(parents, self, body :+ extra)) :: Nil
case _ =>
c.abort(c.enclosingPosition, "nativeLoader can only be annotated to classes and singleton objects")