digitalmars.D.bugs - [Issue 4891] New: Assignment from non-pure function to pure function pointer compiles when it shouldn't
- d-bugmail puremagic.com (44/44) Sep 18 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4891
- d-bugmail puremagic.com (8/8) Sep 18 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4891
- d-bugmail puremagic.com (10/10) Sep 19 2010 http://d.puremagic.com/issues/show_bug.cgi?id=4891
- d-bugmail puremagic.com (21/21) Jun 06 2011 http://d.puremagic.com/issues/show_bug.cgi?id=4891
http://d.puremagic.com/issues/show_bug.cgi?id=4891
Summary: Assignment from non-pure function to pure function
pointer compiles when it shouldn't
Product: D
Version: unspecified
Platform: Other
OS/Version: Linux
Status: NEW
Severity: normal
Priority: P2
Component: DMD
AssignedTo: nobody puremagic.com
ReportedBy: jmdavisProg gmx.com
PDT ---
Take this program
struct S
{
public:
this(int function(int) pure func)
{
_func = func;
}
property int function(int) pure func()
{
return func;
}
private:
int function(int) pure _func;
}
int add1(int num)
{
return num + 1;
}
void main()
{
auto s = S(&add1);
}
The construction of s should not compile because add1() is not a pure function.
Granted, it could be pure if I declared it as such, but I didn't. And the
compiler isn't figuring out that add1() could be pure and letting it through
because of that because if I add a writeln() call to add1(), it still compiles.
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Sep 18 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4891 PDT --- Oh, there's an error in my example - func return func instead of _func, resulting infinite recursion and therefore a segfault. I could have removed that function for the bug report anyway. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Sep 18 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4891
bearophile_hugs eml.cc changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |bearophile_hugs eml.cc
See bug 3833
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Sep 19 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4891
yebblies <yebblies gmail.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
CC| |yebblies gmail.com
Resolution| |DUPLICATE
This is a dupe of 3797, the purity of a function pointer (among other things)
is not checked when performing implicit conversions.
With dmd pull 88 you get the following error from dmd:
testx.d(26): Error: constructor testx.S.this (int function(int) pure func) is
no
t callable using argument types (int function(int num))
testx.d(26): Error: cannot implicitly convert expression (& add1) of type int
fu
nction(int num) to int function(int) pure
*** This issue has been marked as a duplicate of issue 3797 ***
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jun 06 2011









d-bugmail puremagic.com 