From 3db64cb057121cbae9871779664ec6f0f853feb4 Mon Sep 17 00:00:00 2001 From: Jakob Odersky Date: Mon, 16 May 2016 11:41:56 -0700 Subject: Hide injected code in a new block --- macros/src/main/scala/ch/jodersky/jni/annotations.scala | 17 ++++++----------- 1 file 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") -- cgit v1.2.3