Taunting

Ary Borenszweig ary at esperanto.org.ar
Fri May 29 17:27:21 PDT 2009


Ary Borenszweig escribió:
> http://www.youtube.com/watch?v=rtYCFVPfx4M

Bah... I just realized debugging that kind of things might be really 
hart to do. Imagine this:

---
char[] something() {
	return "x *= 3; x += 4;";
}

mixin("int bla(int x) { x *= 2; " ~ something ~ " return 4; }");

void main() {
	const something = bla(2);
}
---

Now I want to debug the invocation of bla: how the variable x is being 
modified. But there's no such place in the source code for that 
definition (well, there is, but it's split in pieces, and obviously 
you'll get lost when debugging).

So I'm starting to think that the compile-time debugger should work on 
the (formatted) compile-time view of the modules. So you'll end up 
debugging code like this:

---
char[] something() {
	return "x *= 3; x += 4;";
}

int bla(int x) {
	x *= 2;
	x *= 3;
	x += 4;
	return x;
}

void main() {
	const something = bla(2);
}
---

But that's way more hard to do than what I'm doing right now.

Finally, you might want to have both worlds together, like:

---
char[] someOtherFunc() {
   return "char[] x = \"whatever\";";
}

char[] someFunc() {
   mixin(someOtherFunc());
   return x;
}


mixin(someFunc());
---

Now I want to debug someFunc(). But I also want to see that 
someOtherFunc() is expanded well, so I can't just show the compile-time 
view of the module, because doing this might have an error already (the 
error I want to debug, for example!). (and also the compile-time view 
dependens on the function I'm trying to debug)

Aaah... I give up.

(I came to this conclusion when trying to debug the scrappes:units project).


More information about the Digitalmars-d-announce mailing list