changeset 1278:8fb39f7f1a7c

Fixed file name in imported mixins containing assertions.
author Tomas Lindquist Olsen <tomas.l.olsen gmail com>
date Wed, 29 Apr 2009 18:39:59 +0200
parents 6bd5ce91b136
children 04c36605feb9
files gen/llvmhelpers.cpp gen/structs.cpp ir/irclass.cpp ir/irtypeclass.cpp ir/irtypestruct.cpp
diffstat 5 files changed, 15 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/gen/llvmhelpers.cpp	Wed Apr 29 17:47:24 2009 +0200
+++ b/gen/llvmhelpers.cpp	Wed Apr 29 18:39:59 2009 +0200
@@ -128,9 +128,16 @@
     // file param
 
     // we might be generating for an imported template function
-    IrModule* irmod = getIrModule(M);
-
-    args.push_back(DtoLoad(irmod->fileName));
+    const char* cur_file = M->srcfile->name->toChars();
+    if (loc.filename && strcmp(loc.filename, cur_file) != 0)
+    {
+        args.push_back(DtoConstString(loc.filename));
+    }
+    else
+    {
+        IrModule* irmod = getIrModule(M);
+        args.push_back(DtoLoad(irmod->fileName));
+    }
 
     // line param
     LLConstant* c = DtoConstUint(loc.linnum);
@@ -794,7 +801,7 @@
     if (vd->ir.initialized) return;
     vd->ir.initialized = gIR->dmodule;
 
-    Logger::println("DtoConstInitGlobal(%s) @ %s", vd->toChars(), vd->locToChars());
+    Logger::println("DtoConstInitGlobal(%s) @ %s", vd->toChars(), vd->loc.toChars());
     LOG_SCOPE;
 
     Dsymbol* par = vd->toParent();
--- a/gen/structs.cpp	Wed Apr 29 17:47:24 2009 +0200
+++ b/gen/structs.cpp	Wed Apr 29 18:39:59 2009 +0200
@@ -30,7 +30,7 @@
     sd->ir.resolved = true;
 
     // log what we're doing
-    Logger::println("Resolving struct type: %s (%s)", sd->toChars(), sd->locToChars());
+    Logger::println("Resolving struct type: %s (%s)", sd->toChars(), sd->loc.toChars());
     LOG_SCOPE;
 
     // make sure type exists
--- a/ir/irclass.cpp	Wed Apr 29 17:47:24 2009 +0200
+++ b/ir/irclass.cpp	Wed Apr 29 18:39:59 2009 +0200
@@ -252,7 +252,7 @@
     ClassDeclaration* cd = aggrdecl->isClassDeclaration();
     assert(cd && "invalid class aggregate");
 
-    IF_LOG Logger::println("Building class default initializer %s @ %s", cd->toPrettyChars(), cd->locToChars());
+    IF_LOG Logger::println("Building class default initializer %s @ %s", cd->toPrettyChars(), cd->loc.toChars());
     LOG_SCOPE;
     IF_LOG Logger::println("Instance size: %u", cd->structsize);
 
--- a/ir/irtypeclass.cpp	Wed Apr 29 17:47:24 2009 +0200
+++ b/ir/irtypeclass.cpp	Wed Apr 29 18:39:59 2009 +0200
@@ -226,7 +226,7 @@
 
 const llvm::Type* IrTypeClass::buildType()
 {
-    IF_LOG Logger::println("Building class type %s @ %s", cd->toPrettyChars(), cd->locToChars());
+    IF_LOG Logger::println("Building class type %s @ %s", cd->toPrettyChars(), cd->loc.toChars());
     LOG_SCOPE;
     IF_LOG Logger::println("Instance size: %u", cd->structsize);
 
--- a/ir/irtypestruct.cpp	Wed Apr 29 17:47:24 2009 +0200
+++ b/ir/irtypestruct.cpp	Wed Apr 29 18:39:59 2009 +0200
@@ -76,7 +76,7 @@
 const llvm::Type* IrTypeStruct::buildType()
 {
     IF_LOG Logger::println("Building struct type %s @ %s",
-        sd->toPrettyChars(), sd->locToChars());
+        sd->toPrettyChars(), sd->loc.toChars());
     LOG_SCOPE;
 
     // if it's a forward declaration, all bets are off, stick with the opaque