digitalmars.D.bugs - [Issue 5469] New: Limitation when instantiating templates in the context of a function
- d-bugmail puremagic.com (38/38) Jan 20 2011 http://d.puremagic.com/issues/show_bug.cgi?id=5469
- d-bugmail puremagic.com (11/11) Feb 06 2011 http://d.puremagic.com/issues/show_bug.cgi?id=5469
- d-bugmail puremagic.com (18/18) Apr 26 2011 http://d.puremagic.com/issues/show_bug.cgi?id=5469
- d-bugmail puremagic.com (10/10) May 27 2011 http://d.puremagic.com/issues/show_bug.cgi?id=5469
- d-bugmail puremagic.com (16/16) Jan 12 2012 http://d.puremagic.com/issues/show_bug.cgi?id=5469
- d-bugmail puremagic.com (12/12) Apr 20 2012 http://d.puremagic.com/issues/show_bug.cgi?id=5469
- d-bugmail puremagic.com (29/29) Feb 09 2013 http://d.puremagic.com/issues/show_bug.cgi?id=5469
- d-bugmail puremagic.com (12/12) Oct 08 2013 http://d.puremagic.com/issues/show_bug.cgi?id=5469
- d-bugmail puremagic.com (7/8) Oct 09 2013 http://d.puremagic.com/issues/show_bug.cgi?id=5469
http://d.puremagic.com/issues/show_bug.cgi?id=5469 Summary: Limitation when instantiating templates in the context of a function Product: D Version: D2 Platform: x86_64 OS/Version: Linux Status: NEW Severity: enhancement Priority: P2 Component: DMD AssignedTo: nobody puremagic.com ReportedBy: jens.k.mueller gmx.de The following code does not compile (tried with dmd v2.050 on Linux). import std.functional; import std.algorithm; void main() { auto numbers = [0, 1, 2, 3, 4, 5]; bool var = true; bool returnVar(uint a) { return var; } alias not!(returnVar) notReturnVar; //bool notReturnVar(uint a) { return not!returnVar(a); } // workaround filter!(returnVar)(numbers); filter!(notReturnVar)(numbers); // does not compile } It fails with: /path/to/src/phobos/std/algorithm.d(854): Error: constructor std.algorithm.Filter!(not,int[]).Filter.this cannot get frame pointer to not /path/to/src/phobos/std/algorithm.d(866): Error: function std.algorithm.Filter!(not,int[]).Filter.popFront cannot get frame pointer to not It has problems getting the frame pointer to the template function not!(returnVar). As far as I understand it. A workaround is to define a non-template function. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jan 20 2011
http://d.puremagic.com/issues/show_bug.cgi?id=5469 Brad Roberts <braddr puremagic.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Platform|x86_64 |x86 --- Mass migration of bugs marked as x86-64 to just x86. The platform run on isn't what's relevant, it's if the app is a 32 or 64 bit app. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Feb 06 2011
http://d.puremagic.com/issues/show_bug.cgi?id=5469 kennytm gmail.com changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |ice-on-valid-code, | |rejects-valid CC| |kennytm gmail.com OS/Version|Linux |All Severity|enhancement |normal IMO this is definitely not just an enhancement request. The code *should* compile. Also, as of current git master the code ICE with Internal error: toir.c 190 Probably related to issue 4504 or issue 5499. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Apr 26 2011
http://d.puremagic.com/issues/show_bug.cgi?id=5469 kennytm gmail.com changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |bearophile_hugs eml.cc *** Issue 6065 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: -------
May 27 2011
http://d.puremagic.com/issues/show_bug.cgi?id=5469 Trass3r <mrmocool gmx.de> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |mrmocool gmx.de I get std/algorithm.d(1086): Error: template test.main.not!(returnVar).not(T...) if (is(typeof(!unaryFun!(pred)(args))) || is(typeof(!binaryFun!(pred)(args)))) does not match any function template declaration std/algorithm.d(1086): Error: template test.main.not!(returnVar).not(T...) if (is(typeof(!unaryFun!(pred)(args))) || is(typeof(!binaryFun!(pred)(args)))) cannot deduce template function from argument types !()(int) -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jan 12 2012
http://d.puremagic.com/issues/show_bug.cgi?id=5469 SomeDude <lovelydear mailmetrash.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |lovelydear mailmetrash.com PDT --- On 2.059 Win32, I get a similar result as in comment 2 PS E:\DigitalMars\dmd2\samples> rdmd -w bug.d Internal error: toir.c 178 -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Apr 20 2012
http://d.puremagic.com/issues/show_bug.cgi?id=5469 Andrej Mitrovic <andrej.mitrovich gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |andrej.mitrovich gmail.com 13:08:17 PST --- DMD 2.062 git-head now crashes without giving any errors. The cause of the crash: void markAsNeedingClosure(Dsymbol *f, FuncDeclaration *outerFunc) { int x = 0; for (Dsymbol *sx = f; sx != outerFunc; sx = sx->parent) { FuncDeclaration *fy = sx->isFuncDeclaration(); if (fy && fy->closureVars.dim) { /* fy needs a closure if it has closureVars[], * because the frame pointer in the closure will be accessed. */ fy->requiresClosure = true; } } } 'sx' is never checked if it's null, the for loop might have to be: for (Dsymbol *sx = f; sx /* <- added */ && sx != outerFunc; sx = sx->parent) -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Feb 09 2013
http://d.puremagic.com/issues/show_bug.cgi?id=5469 Walter Bright <bugzilla digitalmars.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED CC| |bugzilla digitalmars.com Resolution| |WORKSFORME 23:28:59 PDT --- Compiles without error on 2.064 head. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Oct 08 2013
http://d.puremagic.com/issues/show_bug.cgi?id=5469 05:56:39 PDT ---Compiles without error on 2.064 head.P.S. It looks like it was deliberately fixed, the `sx` check is in git-head. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Oct 09 2013