From 66a97fea14a5c6e248b86ce00dc6198623825894 Mon Sep 17 00:00:00 2001 From: lorch Date: Mon, 14 Jul 2008 13:28:06 +0000 Subject: Seperate compilation (Part 2 of 2): scalac Validated by Lukas Rytz --- lib/msil.jar.desired.sha1 | 2 +- src/build/msil.xml | 4 ++-- .../scala/tools/nsc/backend/msil/GenMSIL.scala | 22 ++++++++++++++++------ 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/lib/msil.jar.desired.sha1 b/lib/msil.jar.desired.sha1 index 439cc788c7..1ecdd55331 100644 --- a/lib/msil.jar.desired.sha1 +++ b/lib/msil.jar.desired.sha1 @@ -1 +1 @@ -0ddc1d99705e2202fd07212fc6eaf46266229d4f ?msil.jar +85e623e19ac0cdb0e3ec99e194b74397c8cdfc0c ?msil.jar 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) - + - + 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) } -- cgit v1.2.3