-
-
Notifications
You must be signed in to change notification settings - Fork 421
D new
wrapper
#2456
base: master
Are you sure you want to change the base?
D new
wrapper
#2456
Conversation
Thanks for your pull request and interest in making D better, @TurkeyMan! We are looking forward to reviewing it, and you should be hearing from a maintainer soon.
Please see CONTRIBUTING.md for more information. If you have addressed all reviews or aren't sure how to proceed, don't hesitate to ping us with a simple comment. Bugzilla referencesYour PR doesn't reference any Bugzilla issue. If your PR contains non-trivial changes, please reference a Bugzilla issue or create a manual changelog. Testing this PR locallyIf you don't have a local development environment setup, you can use Digger to test this PR: dub fetch digger
dub run digger -- build "master + druntime#2456" |
94a1d7f
to
36d742d
Compare
@WalterBright Perhaps you can help me understand what's going on here? Now, that issue aside, these functions have no reason to exist in physical form in the first place! I tried an alternative strategy making a dummy template argument, so that I could guarantee no codegen without instantiation; except that lead to this issue: https://issues.dlang.org/show_bug.cgi?id=19569 I'm out of ideas... I've run into this issue a lot with the C++ stuff... I need to write a function that should not gen code unless it's called, and it doesn't always need to be a template. I thought that's what |
On Posix all symbols are visible outside of the object files. There's nothing stopping code in other object files from using that symbol. Therefore code most be generated. |
An inline shouldn't be code until it's called... it should be like a template, but without the |
Whether The build errors here are from building the shared library that exports all symbols, so none can be removed by the linker. |
even if it doesn't actually inline for whatever reason and does get generated, the compiler could emit the function on the first reference, rather than doing so eagerly. Point is, implementation details aside, the semantic patterns don't actually match. The inline function shouldn't exist in the |
This is blocked on: |
Seems like a mistake to allow overloads that only differ in that they are |
No description provided.