[Issue 5601] A template forward reference error

2013-11-22 Thread d-bugmail
https://d.puremagic.com/issues/show_bug.cgi?id=5601


Kenji Hara k.hara...@gmail.com changed:

   What|Removed |Added

 Status|NEW |RESOLVED
Version|D1  D2 |D2
 Resolution||INVALID


--- Comment #3 from Kenji Hara k.hara...@gmail.com 2013-11-22 01:47:37 PST ---
(In reply to comment #0)
 A case of forward template forward reference (I am not sure this is actually a
 bug):
 
 
 import std.traits;
 auto foo() {
 alias ReturnType!foo T;
 return 0;
 }
 void main() {}
 
 
 DMD 2.052 shows (it's not a regression):
 
 ...\dmd\src\phobos\std\traits.d(122): Error: template instance forward
 reference of foo
 ...\dmd\src\phobos\std\traits.d(105): Error: forward reference to foo
 ...\dmd\src\phobos\std\traits.d(122): Error: template instance
 std.traits.staticLength!(foo) error instantiating

This is correct behavior. Before function body semantic finished, getting type
of auto function will cause forward reference error since its return type is
not determined.

-- 
Configure issuemail: https://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 5601] A template forward reference error

2013-11-22 Thread d-bugmail
https://d.puremagic.com/issues/show_bug.cgi?id=5601



--- Comment #4 from bearophile_h...@eml.cc 2013-11-22 02:52:35 PST ---
(In reply to comment #3)

 Before function body semantic finished, getting type
 of auto function will cause forward reference error since its return type is
 not determined.

Can't the type inferencer become a little smarter and see that the return type
of foo is something defined in terms of itself, but it's also an int, and so
decide it's an int?

-- 
Configure issuemail: https://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 5601] A template forward reference error

2013-11-22 Thread d-bugmail
https://d.puremagic.com/issues/show_bug.cgi?id=5601



--- Comment #5 from Kenji Hara k.hara...@gmail.com 2013-11-22 03:31:55 PST ---
(In reply to comment #4)
 (In reply to comment #3)
 
  Before function body semantic finished, getting type
  of auto function will cause forward reference error since its return type is
  not determined.
 
 Can't the type inferencer become a little smarter and see that the return type
 of foo is something defined in terms of itself, but it's also an int, and so
 decide it's an int?

No. In statement scope, all of statements are ordered from top to the bottom.
We can regard as the return type of auto function is declared at the end of the
function body. So seeing return type inside auto-function is exactly same as
forward reference issue.

Consider the following invalid code. If the return type is visible inside
function, compiler cannot determine the return type of foo.

auto foo(int n)
{
if (n == 1)
return 1;

// forward reference to return type
static if (is(ReturnType!foo == int))
return ;

assert(0);
}

Therefore it is necessary limitation to avoid indeterminate case.

-- 
Configure issuemail: https://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 5601] A template forward reference error

2011-04-24 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=5601


kenn...@gmail.com changed:

   What|Removed |Added

 CC||kenn...@gmail.com
   Platform|x86 |All
Version|D2  |D1  D2
 Blocks||340
 OS/Version|Windows |All


--- Comment #1 from kenn...@gmail.com 2011-04-24 00:12:34 PDT ---
Also happens in D1, as described in issue 2885. (I'm closing 2885 as the report
there isn't quite to-the-point.)

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---


[Issue 5601] A template forward reference error

2011-04-24 Thread d-bugmail
http://d.puremagic.com/issues/show_bug.cgi?id=5601


kenn...@gmail.com changed:

   What|Removed |Added

 CC||cbkbbej...@mailinator.com


--- Comment #2 from kenn...@gmail.com 2011-04-24 00:14:44 PDT ---
*** Issue 2885 has been marked as a duplicate of this issue. ***

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
--- You are receiving this mail because: ---