Thread overview | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
October 14, 2020 Should `pragma(inline, expression)` be allowed ? | ||||
---|---|---|---|---|
| ||||
Example usage, probably the only that's interesting at first glance. --- version(D_Coverage) enum do_inline = true; else enum do_inline = false; pragma(inline, do_inline) void stuff(){} --- Although this could be controlled from the command line side, i.e if -cov is there then be smart and dont put -inline. |
October 14, 2020 Re: Should `pragma(inline, expression)` be allowed ? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Basile B. | On Wednesday, 14 October 2020 at 17:20:46 UTC, Basile B. wrote:
> Example usage, probably the only that's interesting at first glance.
>
> ---
> version(D_Coverage)
> enum do_inline = true;
> else
> enum do_inline = false;
sorry I meant
version(D_Coverage)
enum do_inline = false;
else
enum do_inline = true;
obviously...
|
October 15, 2020 Re: Should `pragma(inline, expression)` be allowed ? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Basile B. | On Wednesday, 14 October 2020 at 17:22:40 UTC, Basile B. wrote:
>> version(D_Coverage)
>> enum do_inline = true;
>> else
>> enum do_inline = false;
This has been discussed but Walter is against it if I remember correctly.
I use
void foo()
{
version(D_Coverage) {} else pragma(inline, true);
}
|
October 15, 2020 Re: Should `pragma(inline, expression)` be allowed ? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Per Nordlöw | On Thursday, 15 October 2020 at 09:14:05 UTC, Per Nordlöw wrote: > On Wednesday, 14 October 2020 at 17:22:40 UTC, Basile B. wrote: >>> version(D_Coverage) >>> enum do_inline = true; >>> else >>> enum do_inline = false; > > This has been discussed but Walter is against it if I remember correctly. That's exactly why I ask here be fore opening an issue > I use > > void foo() > { > version(D_Coverage) {} else pragma(inline, true); > } Ah yeah ? this works to attach or not the pragma to a func in particular? I didn't think to that |
October 15, 2020 Re: Should `pragma(inline, expression)` be allowed ? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Basile B. | On 10/15/20 9:23 AM, Basile B. wrote:
> On Thursday, 15 October 2020 at 09:14:05 UTC, Per Nordlöw wrote:
>> On Wednesday, 14 October 2020 at 17:22:40 UTC, Basile B. wrote:
>>>> version(D_Coverage)
>>>> enum do_inline = true;
>>>> else
>>>> enum do_inline = false;
>>
>> This has been discussed but Walter is against it if I remember correctly.
>
> That's exactly why I ask here be fore opening an issue
I think this falls in the "gratuitous limitations" category and should be fixed. Any place where a compile-time Boolean fits, a compile-time-computable expression should fit. Same about numbers, strings etc.
I'm glad that the related issue with `align(number)` has been fixed. Up until recently only literals were allowed.
|
October 16, 2020 Re: Should `pragma(inline, expression)` be allowed ? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Andrei Alexandrescu | On 10/15/2020 7:05 AM, Andrei Alexandrescu wrote:
> On 10/15/20 9:23 AM, Basile B. wrote:
>> On Thursday, 15 October 2020 at 09:14:05 UTC, Per Nordlöw wrote:
>>> On Wednesday, 14 October 2020 at 17:22:40 UTC, Basile B. wrote:
>>>>> version(D_Coverage)
>>>>> enum do_inline = true;
>>>>> else
>>>>> enum do_inline = false;
>>>
>>> This has been discussed but Walter is against it if I remember correctly.
>>
>> That's exactly why I ask here be fore opening an issue
>
> I think this falls in the "gratuitous limitations" category and should be fixed. Any place where a compile-time Boolean fits, a compile-time-computable expression should fit. Same about numbers, strings etc.
I don't remember why I was against it, but it would be worth finding out why before going ahead and missing something important.
|
October 20, 2020 Re: Should `pragma(inline, expression)` be allowed ? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Andrei Alexandrescu | On Thursday, 15 October 2020 at 14:05:20 UTC, Andrei Alexandrescu wrote:
> On 10/15/20 9:23 AM, Basile B. wrote:
>> On Thursday, 15 October 2020 at 09:14:05 UTC, Per Nordlöw wrote:
>>> On Wednesday, 14 October 2020 at 17:22:40 UTC, Basile B. wrote:
>>>>> version(D_Coverage)
>>>>> enum do_inline = true;
>>>>> else
>>>>> enum do_inline = false;
>>>
>>> This has been discussed but Walter is against it if I remember correctly.
>>
>> That's exactly why I ask here be fore opening an issue
>
> I think this falls in the "gratuitous limitations" category and should be fixed. Any place where a compile-time Boolean fits, a compile-time-computable expression should fit. Same about numbers, strings etc.
>
This would solve a problem I had whereby we had several compile time backends available and wanted to do
version(A || B)
|
October 20, 2020 Re: Should `pragma(inline, expression)` be allowed ? | ||||
---|---|---|---|---|
| ||||
Posted in reply to James Blachly | On Tuesday, 20 October 2020 at 01:32:23 UTC, James Blachly wrote:
> This would solve a problem I had whereby we had several compile time backends available and wanted to do
>
> version(A || B)
I would not bet too much on this one if I were you...
|
October 19, 2020 Re: Should `pragma(inline, expression)` be allowed ? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Basile B. | On Tue, Oct 20, 2020 at 01:54:38AM +0000, Basile B. via Digitalmars-d wrote: > On Tuesday, 20 October 2020 at 01:32:23 UTC, James Blachly wrote: > > This would solve a problem I had whereby we had several compile time backends available and wanted to do > > > > version(A || B) > > I would not bet too much on this one if I were you... This has cropped up countless times over the years, and so far, the answer has been an adamant No. I'm not holding my breath on this one. If you *really* can't live without ||, use static if instead. (Yes, it's uglier, but no, I don't have a better idea.) T -- Without outlines, life would be pointless. |
October 20, 2020 Re: Should `pragma(inline, expression)` be allowed ? | ||||
---|---|---|---|---|
| ||||
Posted in reply to H. S. Teoh | On Tuesday, 20 October 2020 at 05:18:50 UTC, H. S. Teoh wrote: > On Tue, Oct 20, 2020 at 01:54:38AM +0000, Basile B. via Digitalmars-d wrote: >> On Tuesday, 20 October 2020 at 01:32:23 UTC, James Blachly wrote: >> > This would solve a problem I had whereby we had several compile time backends available and wanted to do >> > >> > version(A || B) >> >> I would not bet too much on this one if I were you... > > This has cropped up countless times over the years, and so far, the answer has been an adamant No. I'm not holding my breath on this one. > > If you *really* can't live without ||, use static if instead. (Yes, it's uglier, but no, I don't have a better idea.) > > > T yeah, CTFE on `version()` would be basically like `static if (ident <op> ident)` and alikes, so `version()` much less justified because not special anymore. By the way, to the attention of James, the other day I've found this nice helper by Simons K: https://forum.dlang.org/post/tghdaffyugrajmenddav@forum.dlang.org, allowing to use version idents in static if expressions, the easiest way possible. |
Copyright © 1999-2021 by the D Language Foundation