On Tue, 27 Sep 2011 11:05:12 +0100, Mehrdad <[email protected]> wrote:

On 9/27/2011 2:37 AM, Regan Heath wrote:
On Mon, 26 Sep 2011 19:07:59 +0100, Mehrdad <[email protected]> wrote:

Nah, that's not the issue. Originally it was a different name, it just so happened that I didn't notice this in the simplification.

However, I DID find the problem -- it's because the function is recursive. :( What I _meant_ to say was a.get(args) + b.get(args), but I said (a + b).get(args). So it was pretty much calling itself.

So.. bug report for the bad error message then?

I... guess? But I'm not sure how to improve it. Something along the lines of "foo is currently being defined" might be clearer, but then again it's not like I didn't figure that out myself -- it's just that I thought it's for a different instantiation of the template.

Hmm.. I don't really know either, trying to untangle templates does my head in. Would it have helped if the error mentioned the "inferred return type" i.e. "Error: forward reference to inferred return type <file>.Sum!(Test,Test) of function call this.a.opAdd(this.b).get(_param_0)"

the next error does mention the template it was instantiating, e.g.
"Error: template instance <file>.Sum!(Test,Test).Sum.get!(double) error instantiating"

so, provided you noticed that the inferred return type matched the template you would expect that to be the forward reference/problem..

--
Using Opera's revolutionary email client: http://www.opera.com/mail/

Reply via email to