diff options
author | lorch <lorch@epfl.ch> | 2008-07-14 13:28:06 +0000 |
---|---|---|
committer | lorch <lorch@epfl.ch> | 2008-07-14 13:28:06 +0000 |
commit | 66a97fea14a5c6e248b86ce00dc6198623825894 (patch) | |
tree | e43dccd28d9cd492e476f2016e7ff2ae5ad75981 /src | |
parent | 78b4ab415c3ae43726abeac74da525359ad01d4b (diff) | |
download | scala-66a97fea14a5c6e248b86ce00dc6198623825894.tar.gz scala-66a97fea14a5c6e248b86ce00dc6198623825894.tar.bz2 scala-66a97fea14a5c6e248b86ce00dc6198623825894.zip |
Seperate compilation (Part 2 of 2): scalac
Validated by Lukas Rytz
Diffstat (limited to 'src')
-rw-r--r-- | src/build/msil.xml | 4 | ||||
-rw-r--r-- | src/compiler/scala/tools/nsc/backend/msil/GenMSIL.scala | 22 |
2 files changed, 18 insertions, 8 deletions
diff --git a/src/build/msil.xml b/src/build/msil.xml index 825c890b0b..e020537a46 100644 --- a/src/build/msil.xml +++ b/src/build/msil.xml @@ -158,7 +158,7 @@ PACKED MSIL BUILD (MSIL-PACK) <target name="msil-pack.lib" depends="msil-pack.start"> <mkdir dir="${build-msil-pack.dir}/lib"/> <pathconvert property="ilasm.infiles" pathsep=" "> - <fileset dir="${build-msil.dir}/library" includes="*.msil"/> + <fileset dir="${build-msil.dir}/library" includes="**/*.msil"/> </pathconvert> <property name="msil-pack-lib.file" value="${build-msil-pack.dir}/lib/predef.dll"/> <!-- spawn="true" will prevent the ilasm command from printing anything to @@ -166,7 +166,7 @@ PACKED MSIL BUILD (MSIL-PACK) <exec executable="${ilasm.cmd}" vmlauncher="no"> <!-- spawn="true" --> - <arg line="${ilasm.args}${msil-pack-lib.file} ${ilasm.infiles}"/> + <arg line="${ilasm.args}${msil-pack-lib.file} ${ilasm.infiles}"/> </exec> </target> diff --git a/src/compiler/scala/tools/nsc/backend/msil/GenMSIL.scala b/src/compiler/scala/tools/nsc/backend/msil/GenMSIL.scala index 5ff1123d78..d6d7f5eef4 100644 --- a/src/compiler/scala/tools/nsc/backend/msil/GenMSIL.scala +++ b/src/compiler/scala/tools/nsc/backend/msil/GenMSIL.scala @@ -7,9 +7,8 @@ package scala.tools.nsc.backend.msil -import java.io.File +import java.io.{File, IOException} import java.nio.{ByteBuffer, ByteOrder} -import java.io.IOException import scala.collection.mutable.{Map, HashMap, HashSet, Stack} import scala.tools.nsc.symtab._ @@ -217,6 +216,7 @@ abstract class GenMSIL extends SubComponent { var assemName: String = _ var firstSourceName = "" var outDir: File = _ + var srcPath: File = _ var moduleName: String = _ def initAssembly() { @@ -244,6 +244,8 @@ abstract class GenMSIL extends SubComponent { outDir = new File(settings.outdir.value) + srcPath = new File(settings.sourcepath.value) + val assemblyName = new AssemblyName() assemblyName.Name = assemName massembly = AssemblyBuilderFactory.DefineDynamicAssembly(assemblyName) @@ -449,11 +451,11 @@ abstract class GenMSIL extends SubComponent { code.Emit(OpCodes.Ret) } createTypes() - val filename = new File(outDir, assemName + ".msil").getPath() + val filename = outDir.getPath() if (settings.debug.value) log("Output path: " + filename) try { - massembly.Save(filename) + massembly.Save(filename, srcPath.getPath()) val ilasm = Properties.msilILasm if (ilasm != "") { val generatedFiles = List.fromArray(massembly.GetGeneratedFiles) @@ -475,9 +477,14 @@ abstract class GenMSIL extends SubComponent { private def createTypes() { for (sym <- classes.keys) { + val iclass = classes(sym) + val tBuilder = types(sym.asInstanceOf[clrTypes.global.Symbol]).asInstanceOf[TypeBuilder] + if (settings.debug.value) - log("Calling CreatType for " + sym + ", " + types(sym.asInstanceOf[clrTypes.global.Symbol])) - types(sym.asInstanceOf[clrTypes.global.Symbol]).asInstanceOf[TypeBuilder].CreateType() + log("Calling CreatType for " + sym + ", " + tBuilder.toString) + + tBuilder.CreateType() + tBuilder.setSourceFilepath(iclass.cunit.source.file.path) } } @@ -2210,6 +2217,8 @@ abstract class GenMSIL extends SubComponent { MOBJECT, MsilType.EmptyTypes) + val iclass = classes(sym) + for (m <- sym.tpe.nonPrivateMembers if m.owner != definitions.ObjectClass && !m.hasFlag(Flags.PROTECTED) && m.isMethod && !m.isClassConstructor && !m.isStaticMember && !m.hasFlag(Flags.CASE)) @@ -2245,6 +2254,7 @@ abstract class GenMSIL extends SubComponent { addSymtabAttribute(sym.sourceModule, mirrorTypeBuilder) mirrorTypeBuilder.CreateType() + mirrorTypeBuilder.setSourceFilepath(iclass.cunit.source.file.path) } |