digitalmars.D.bugs - [Issue 11220] New: Regression in master: XXX__lambda2 cannot access frame of function XXX
- d-bugmail puremagic.com (46/46) Oct 10 2013 http://d.puremagic.com/issues/show_bug.cgi?id=11220
- d-bugmail puremagic.com (8/8) Oct 10 2013 http://d.puremagic.com/issues/show_bug.cgi?id=11220
- d-bugmail puremagic.com (33/33) Oct 10 2013 http://d.puremagic.com/issues/show_bug.cgi?id=11220
- d-bugmail puremagic.com (9/9) Oct 10 2013 http://d.puremagic.com/issues/show_bug.cgi?id=11220
- d-bugmail puremagic.com (16/16) Oct 10 2013 http://d.puremagic.com/issues/show_bug.cgi?id=11220
- d-bugmail puremagic.com (13/13) Oct 10 2013 http://d.puremagic.com/issues/show_bug.cgi?id=11220
- d-bugmail puremagic.com (8/8) Oct 10 2013 http://d.puremagic.com/issues/show_bug.cgi?id=11220
- d-bugmail puremagic.com (20/20) Oct 10 2013 http://d.puremagic.com/issues/show_bug.cgi?id=11220
- d-bugmail puremagic.com (10/10) Oct 10 2013 http://d.puremagic.com/issues/show_bug.cgi?id=11220
- d-bugmail puremagic.com (7/8) Oct 10 2013 http://d.puremagic.com/issues/show_bug.cgi?id=11220
- d-bugmail puremagic.com (11/12) Oct 10 2013 http://d.puremagic.com/issues/show_bug.cgi?id=11220
- d-bugmail puremagic.com (8/19) Oct 10 2013 http://d.puremagic.com/issues/show_bug.cgi?id=11220
- d-bugmail puremagic.com (9/24) Oct 11 2013 http://d.puremagic.com/issues/show_bug.cgi?id=11220
- d-bugmail puremagic.com (11/11) Oct 11 2013 http://d.puremagic.com/issues/show_bug.cgi?id=11220
- d-bugmail puremagic.com (9/9) Oct 11 2013 http://d.puremagic.com/issues/show_bug.cgi?id=11220
- d-bugmail puremagic.com (11/11) Oct 18 2013 http://d.puremagic.com/issues/show_bug.cgi?id=11220
- d-bugmail puremagic.com (12/13) Oct 18 2013 http://d.puremagic.com/issues/show_bug.cgi?id=11220
http://d.puremagic.com/issues/show_bug.cgi?id=11220 Summary: Regression in master: XXX__lambda2 cannot access frame of function XXX Product: D Version: future Platform: All OS/Version: All Status: NEW Severity: normal Priority: P2 Component: DMD AssignedTo: nobody puremagic.com ReportedBy: deadalnix gmail.com auto lex(R)(R ) { struct Lexer { int t; property auto front() { return t; } } auto lexer = Lexer(); return lexer; } auto flattenMixin() { auto trange = lex('\0'); trange.parsePrimaryExpression(); } void parsePrimaryExpression(R)(R trange) { trange.parseAmbiguous!((parsed) { trange.front; }); } typeof(handler(null)) parseAmbiguous(alias handler, R)(R trange) { return handler(trange.parsePrimaryExpression()); } Trying to compile this with DMD from master gives src/d/semantic/declaration.d(24): Error: function declaration.parsePrimaryExpression!(Lexer).parsePrimaryExpression.__lambda2!(typeof(null)).__lambda2 cannot access frame of function declaration.parsePrimaryExpression!(Lexer).parsePrimaryExpression This used to compile (this is a reduction of actual code in SDC). -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Oct 10 2013
http://d.puremagic.com/issues/show_bug.cgi?id=11220 deadalnix <deadalnix gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Severity|normal |regression -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Oct 10 2013
http://d.puremagic.com/issues/show_bug.cgi?id=11220 Slightly verified test case. 1. Remove UFCS in order to compile the code by using old compiler. 2. Add dummy return type 'int' to parsePrimaryExpression function. Compilation succeeds until 2.059. but with 2.060 and later, it causes "cannot access frame of function" error. auto lex(R)(R ) { struct Lexer { int t; property auto front() { return t; } } auto lexer = Lexer(); return lexer; } auto flattenMixin() { auto trange = lex('\0'); parsePrimaryExpression(trange); } int parsePrimaryExpression(R)(R trange) { parseAmbiguous!(/*delegate*/(parsed) { trange.front; })(trange); return 1; } typeof(handler(null)) parseAmbiguous(alias handler, R)(R trange) { return handler(parsePrimaryExpression(trange)); } void main() {} -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Oct 10 2013
http://d.puremagic.com/issues/show_bug.cgi?id=11220 This is surprising because I'm working with 2.063.2 . I guess I'm somehow being lucky. It may be dependant on the compilation order or the way things are spread accross modules. Anyway, this is quite a showstopper. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Oct 10 2013
http://d.puremagic.com/issues/show_bug.cgi?id=11220 20:05:50 PDT --- Even smaller test case: struct Lexer { int x; } int parsePrimaryExpression(Lexer trange) { parseAmbiguous!( (parsed){ trange.x += 1; } )(trange); return 1; } typeof(handler(null)) parseAmbiguous(alias handler)(Lexer trange) { return handler(parsePrimaryExpression(trange)); } -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Oct 10 2013
http://d.puremagic.com/issues/show_bug.cgi?id=11220 20:39:04 PDT --- And smaller still: int parsePrimaryExpression(int x) { parseAmbiguous!( (parsed){ x += 1; } )(); return 1; } typeof(handler(1)) parseAmbiguous(alias handler)() { return handler(parsePrimaryExpression(1)); } -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Oct 10 2013
http://d.puremagic.com/issues/show_bug.cgi?id=11220 20:41:53 PDT --- The trouble is in the "typeof(handler(1))". The type is "void", but the compiler instantiates the template "handler" along the way, and "handler" needs a frame pointer, and doesn't have one, hence the error. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Oct 10 2013
http://d.puremagic.com/issues/show_bug.cgi?id=11220 21:29:11 PDT --- If I write it this way: int parsePrimaryExpression(int x) { parseAmbiguous!( (parsed){ x += 1; } )(); return 1; } template parseAmbiguous(alias handler) { typeof(handler(1)) //void parseAmbiguous() { return handler(1); } } We can see that instantiating handler(1) outside the function parseAmbiguous() is what causes the error, because it needs the frame of parseAmbiguous(). -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Oct 10 2013
http://d.puremagic.com/issues/show_bug.cgi?id=11220 Kenji Hara <k.hara.pg gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |pull, rejects-valid https://github.com/D-Programming-Language/dmd/pull/2652 -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Oct 10 2013
http://d.puremagic.com/issues/show_bug.cgi?id=11220 21:56:11 PDT ---https://github.com/D-Programming-Language/dmd/pull/2652It's sure a pleasure working with you, Kenji! -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Oct 10 2013
http://d.puremagic.com/issues/show_bug.cgi?id=11220https://github.com/D-Programming-Language/dmd/pull/2652Awesome ! You really impress me Kenji ! Sadly I know have dmd: struct.c:876: virtual void StructDeclaration::semantic(Scope*): Assertion `type->ty != Tstruct || ((TypeStruct *)type)->sym == this' failed. I'll try to reduce that new error to something manageable. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Oct 10 2013
http://d.puremagic.com/issues/show_bug.cgi?id=11220 ---Right now, I fixed bug 11075 by merging Walter's PR. Could you try again with the current git head? -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------https://github.com/D-Programming-Language/dmd/pull/2652Awesome ! You really impress me Kenji ! Sadly I know have dmd: struct.c:876: virtual void StructDeclaration::semantic(Scope*): Assertion `type->ty != Tstruct || ((TypeStruct *)type)->sym == this' failed. I'll try to reduce that new error to something manageable.
Oct 10 2013
http://d.puremagic.com/issues/show_bug.cgi?id=11220Ok, I did some digging, and it turns out that this is another regression, completely unrelated to this problem. Awesome work Kenji ! You can close that one. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------Right now, I fixed bug 11075 by merging Walter's PR. Could you try again with the current git head?https://github.com/D-Programming-Language/dmd/pull/2652Awesome ! You really impress me Kenji ! Sadly I know have dmd: struct.c:876: virtual void StructDeclaration::semantic(Scope*): Assertion `type->ty != Tstruct || ((TypeStruct *)type)->sym == this' failed. I'll try to reduce that new error to something manageable.
Oct 11 2013
http://d.puremagic.com/issues/show_bug.cgi?id=11220 Commits pushed to master at https://github.com/D-Programming-Language/dmd https://github.com/D-Programming-Language/dmd/commit/b83b82f635bc6f4f59f63bf2273de0923841cb65 fix Issue 11220 - XXX__lambda2 cannot access frame of function XXX https://github.com/D-Programming-Language/dmd/commit/2df10899d4ae364abc42e9dd611b6982b2bb52fc [REG2.060] Issue 11220 - XXX__lambda2 cannot access frame of function XXX -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Oct 11 2013
http://d.puremagic.com/issues/show_bug.cgi?id=11220 Walter Bright <bugzilla digitalmars.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Oct 11 2013
http://d.puremagic.com/issues/show_bug.cgi?id=11220 deadalnix <deadalnix gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |REOPENED Resolution|FIXED | I reoppen as, sadly, this one is back in master. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Oct 18 2013
http://d.puremagic.com/issues/show_bug.cgi?id=11220 deadalnix <deadalnix gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|REOPENED |RESOLVED Resolution| |FIXEDI reoppen as, sadly, this one is back in master.And reclose because I messed up my dmd repo, and it is really closed. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Oct 18 2013