digitalmars.D - ModuleInfo.unitTest cannot be called twice
- Jacob Carlborg <doob me.com> Dec 12 2012
- Jacob Carlborg <doob me.com> Dec 12 2012
- Johannes Pfau <nospam example.com> Dec 12 2012
- Jacob Carlborg <doob me.com> Dec 13 2012
It seems it's not possible to call ModuleInfo.unitTest more than once.
The following code will not run the unit tests:
foreach (m ; ModuleInfo)
if (m && m.unitTest)
m.unitTest();
But this code will:
foreach (m ; ModuleInfo)
if (m)
if (auto fp = m.unitTest)
fp();
Not that I'm storing the result of "m.unitTest" in a variable in the
second example.
Am I doing something wrong here or is this a bug?
--
/Jacob Carlborg
Dec 12 2012
On 2012-12-12 22:00, Jacob Carlborg wrote:It seems it's not possible to call ModuleInfo.unitTest more than once. The following code will not run the unit tests: foreach (m ; ModuleInfo) if (m && m.unitTest) m.unitTest(); But this code will: foreach (m ; ModuleInfo) if (m) if (auto fp = m.unitTest) fp(); Not that I'm storing the result of "m.unitTest" in a variable in the second example. Am I doing something wrong here or is this a bug?
I see what I did wrong. ModuleInfo.unitTest is a method these days, instead of a field like before. Due two how properties work in D it will only call the "unitTest" method and not the returned function pointer. -- /Jacob Carlborg
Dec 12 2012
Am Wed, 12 Dec 2012 22:00:55 +0100 schrieb Jacob Carlborg <doob me.com>:It seems it's not possible to call ModuleInfo.unitTest more than once. The following code will not run the unit tests: foreach (m ; ModuleInfo) if (m && m.unitTest) m.unitTest(); But this code will: foreach (m ; ModuleInfo) if (m) if (auto fp = m.unitTest) fp(); Not that I'm storing the result of "m.unitTest" in a variable in the second example. Am I doing something wrong here or is this a bug?
I don't remember a reason why calling that function more than once shouldn't work. But: unitTest is a property returning a function so it might be related to the optional parentheses / broken properties stuff. Does "m.unitTest()()" compile?
Dec 12 2012
On 2012-12-13 08:58, Johannes Pfau wrote:I don't remember a reason why calling that function more than once shouldn't work. But: unitTest is a property returning a function so it might be related to the optional parentheses / broken properties stuff. Does "m.unitTest()()" compile?
Yeah, that was the problem. I though unitTest was a field. -- /Jacob Carlborg
Dec 13 2012









Jacob Carlborg <doob me.com> 