CTFE and DI: The Crossroads of D

deadalnix deadalnix at gmail.com
Thu May 10 11:32:27 PDT 2012


Le 10/05/2012 20:22, Timon Gehr a écrit :
> On 05/10/2012 08:15 PM, Adam Wilson wrote:
>> On Thu, 10 May 2012 11:10:15 -0700, David Gileadi
>> <gileadis at nspmgmail.com> wrote:
>>
>>> On 5/10/12 11:01 AM, Adam Wilson wrote:
>>>> It does require some semantic information. And the solution I've seen
>>>> seen most talked about here is some kind of attribute similar to @pure
>>>> that tells the compiler to include the implementation in the DI file.
>>>
>>> I may be off-base here, but this strikes me as a good case for a
>>> pragma. No?
>>
>> Well, it's needs to be at a function level to be useful.
>>
>
> pragmas can apply to declarations.
>
> The syntax is
>
> pragma(identifier,...) Declaration
>
> (Where Declaration can be the empty declaration, ';')
>
> pragma(keepImplementation) void foo(){ ... }

You want to specify strip implementation, not keep implementation.

Strip implementation may break things. Keeping it cannot. The default 
behavior should be on the safe side of the medal.

The DIfier can remove code if it knows that it isn't CTFEable or don't 
worth inlining by default. Additional code removal can be specified by 
attributes.


More information about the Digitalmars-d mailing list