@@ -141,7 +141,7 @@ object Splicer {
141141 loadModule(fn.moduleClass)
142142
143143 protected def interpretNew (fn : Symbol , args : => List [Result ])(implicit env : Env ): Object = {
144- val clazz = loadClass(fn.owner.fullName)
144+ val clazz = loadClass(fn.owner.fullName.toString )
145145 val constr = clazz.getConstructor(paramsSig(fn): _* )
146146 constr.newInstance(args : _* ).asInstanceOf [Object ]
147147 }
@@ -152,11 +152,18 @@ object Splicer {
152152 private def loadModule (sym : Symbol ): Object = {
153153 if (sym.owner.is(Package )) {
154154 // is top level object
155- val moduleClass = loadClass(sym.fullName)
155+ val moduleClass = loadClass(sym.fullName.toString )
156156 moduleClass.getField(str.MODULE_INSTANCE_FIELD ).get(null )
157157 } else {
158158 // nested object in an object
159- val clazz = loadClass(sym.fullNameSeparated(FlatName ))
159+ val className = {
160+ val pack = sym.topLevelClass.owner
161+ val prefix =
162+ if (pack == defn.RootPackage || pack == defn.EmptyPackageClass ) " "
163+ else pack.showFullName + " ."
164+ prefix + sym.fullNameSeparated(FlatName )
165+ }
166+ val clazz = loadClass(className)
160167 clazz.getConstructor().newInstance().asInstanceOf [Object ]
161168 }
162169 }
@@ -166,8 +173,8 @@ object Splicer {
166173 lineClassloader.loadClass(moduleClass.name.firstPart.toString)
167174 }
168175
169- private def loadClass (name : Name ): Class [_] = {
170- try classLoader.loadClass(name.toString )
176+ private def loadClass (name : String ): Class [_] = {
177+ try classLoader.loadClass(name)
171178 catch {
172179 case _ : ClassNotFoundException =>
173180 val msg = s " Could not find class $name in classpath $extraMsg"
0 commit comments