Bug 12064 – std.typecons.wrap doesn't handle NVI

Status
RESOLVED
Resolution
FIXED
Severity
normal
Priority
P2
Component
phobos
Product
D
Version
D2
Platform
All
OS
All
Creation time
2014-02-02T09:26:38Z
Last change time
2020-03-21T03:56:38Z
Keywords
pull
Assigned to
No Owner
Creator
Matthew Dudley

Comments

Comment #0 by pontifechs — 2014-02-02T09:26:38Z
Here's an example: import std.typecons; //wrap import std.stdio; interface FooBar { public: void foo(); void bar(); final void both() // NVI { foo(); bar(); } } class Baz { public: void foo() { writeln("foo"); } void bar() { writeln("bar"); } } void main() { auto baz = new Baz(); auto foobar = baz.wrap!(FooBar)(); // causes this wall-o-text error -- http://pastebin.com/Pa5dHQtN // Which at the end says: // /usr/local/Cellar/dmd/2.064.2/import/std/typecons.d(2779): Error: static assert "Source Baz does not have structural conformance to (FooBar)" } It looks like wrap is trying to override the NVI method, but since it's final, it doesn't work.
Comment #1 by b2.temp — 2017-11-13T02:00:24Z
Comment #2 by b2.temp — 2017-11-13T12:51:50Z
This was actually a bug that prevented certain case of wrap to compile.
Comment #3 by github-bugzilla — 2017-11-14T16:01:46Z
Commits pushed to master at https://github.com/dlang/phobos https://github.com/dlang/phobos/commit/c9f2158b59a460350e993a2deccad9dbcafc7a51 fix issue 12064 - std.typecons.wrap doesn't handle NVI https://github.com/dlang/phobos/commit/d1a0a32e7997a15b646bfff81e1514458ae6cf1f Merge pull request #5858 from BBasile/issue-12064 fix issue 12064 - std.typecons.wrap doesn't handle NVI merged-on-behalf-of: MetaLang <[email protected]>
Comment #4 by github-bugzilla — 2017-12-18T22:56:51Z
Commits pushed to stable at https://github.com/dlang/phobos https://github.com/dlang/phobos/commit/c9f2158b59a460350e993a2deccad9dbcafc7a51 fix issue 12064 - std.typecons.wrap doesn't handle NVI https://github.com/dlang/phobos/commit/d1a0a32e7997a15b646bfff81e1514458ae6cf1f Merge pull request #5858 from BBasile/issue-12064