Jump to page: 1 2
Thread overview
Should `pragma(inline, expression)` be allowed ?
Oct 14, 2020
Basile B.
Oct 14, 2020
Basile B.
Oct 15, 2020
Per Nordlöw
Oct 15, 2020
Basile B.
Oct 17, 2020
Walter Bright
Oct 20, 2020
James Blachly
Oct 20, 2020
Basile B.
Oct 20, 2020
H. S. Teoh
Oct 20, 2020
Basile B.
Oct 20, 2020
Max Samukha
Oct 20, 2020
Basile B.
Nov 12, 2020
Nicholas Wilson
Nov 12, 2020
Basile B.
October 14, 2020
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
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
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
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
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
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
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
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
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
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.
« First   ‹ Prev
1 2