<div dir="ltr"><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, 25 Aug 2024 at 19:26, Dom DiSc via Digitalmars-d <<a href="mailto:digitalmars-d@puremagic.com">digitalmars-d@puremagic.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Saturday, 24 August 2024 at 17:10:39 UTC, Manu wrote:<br>
> We need to have:<br>
><br>
> @trusted {<br>
>   some_code;<br>
> }<br>
<br>
We have:<br>
<br>
() @trusted {<br>
    some_code;<br>
}();<br>
<br>
Which works kind of the same, beside it's ugly as hell.<br>
Until we have real trusted blocks, I use this (heavily).</blockquote><div><br></div><div><br></div><div>..."kind of the same"</div><div><br></div><div><br></div><div>
<div style="color:rgb(0,0,0);background-color:rgb(255,255,254);font-family:Consolas,"Liberation Mono",Courier,monospace,Consolas,"Courier New",monospace;font-weight:normal;font-size:14px;line-height:19px;white-space:pre"><div><span style="color:rgb(0,0,255)">int</span><span style="color:rgb(0,0,0)"> normal_scope(</span><span style="color:rgb(0,0,255)">int</span><span style="color:rgb(0,0,0)"> x, </span><span style="color:rgb(0,0,255)">int</span><span style="color:rgb(0,0,0)"> y)</span></div><div><span style="color:rgb(0,0,0)">{</span></div><div><span style="color:rgb(0,0,0)">    </span><span style="color:rgb(0,0,255)">int</span><span style="color:rgb(0,0,0)"> t;</span></div><br><div><span style="color:rgb(0,0,0)">    </span><span style="color:rgb(0,128,0)">// normal scope</span></div><div><span style="color:rgb(0,0,0)">    {</span></div><div><span style="color:rgb(0,0,0)">        t = x + y;</span></div><div><span style="color:rgb(0,0,0)">    }</span></div><br><div><span style="color:rgb(0,0,0)">    </span><span style="color:rgb(0,0,255)">return</span><span style="color:rgb(0,0,0)"> t;</span></div><div><span style="color:rgb(0,0,0)">}</span></div></div><div style="color:rgb(0,0,0);background-color:rgb(255,255,254);font-family:Consolas,"Liberation Mono",Courier,monospace,Consolas,"Courier New",monospace;font-weight:normal;font-size:14px;line-height:19px;white-space:pre"><br></div><div style="color:rgb(0,0,0);background-color:rgb(255,255,254);font-family:Consolas,"Liberation Mono",Courier,monospace,Consolas,"Courier New",monospace;font-weight:normal;font-size:14px;line-height:19px;white-space:pre"><div style="color:rgb(0,0,0);background-color:rgb(255,255,254);font-family:Consolas,"Liberation Mono",Courier,monospace,Consolas,"Courier New",monospace;font-weight:normal;font-size:14px;line-height:19px;white-space:pre"><div><span style="color:rgb(0,0,0)">        </span><span style="color:rgb(0,0,255)">assume</span><span style="color:rgb(0,0,0)">  </span><span style="color:rgb(0,128,128)">CS</span><span style="color:rgb(0,0,0)">:</span><span style="color:rgb(0,128,128)">.text._D7example12normal_scopeFiiZi</span></div><div><span style="color:rgb(0,0,0)">                </span><span style="color:rgb(0,0,255)">push</span><span style="color:rgb(0,0,0)">    </span><span style="color:rgb(0,128,128)">RBP</span></div><div><span style="color:rgb(0,0,0)">                </span><span style="color:rgb(0,0,255)">mov</span><span style="color:rgb(0,0,0)">     </span><span style="color:rgb(0,128,128)">RBP</span><span style="color:rgb(0,0,0)">,</span><span style="color:rgb(0,128,128)">RSP</span></div><div><span style="color:rgb(0,0,0)">                </span><span style="color:rgb(0,0,255)">sub</span><span style="color:rgb(0,0,0)">     </span><span style="color:rgb(0,128,128)">RSP</span><span style="color:rgb(0,0,0)">,</span><span style="color:rgb(9,134,88)">020</span><span style="color:rgb(0,128,128)">h</span></div><div><span style="color:rgb(0,0,0)">                </span><span style="color:rgb(0,0,255)">mov</span><span style="color:rgb(0,0,0)">     -</span><span style="color:rgb(9,134,88)">010</span><span style="color:rgb(0,128,128)">h</span><span style="color:rgb(0,0,0)">[</span><span style="color:rgb(0,128,128)">RBP</span><span style="color:rgb(0,0,0)">],</span><span style="color:rgb(0,128,128)">EDI</span></div><div><span style="color:rgb(0,0,0)">                </span><span style="color:rgb(0,0,255)">mov</span><span style="color:rgb(0,0,0)">     -</span><span style="color:rgb(9,134,88)">8</span><span style="color:rgb(0,0,0)">[</span><span style="color:rgb(0,128,128)">RBP</span><span style="color:rgb(0,0,0)">],</span><span style="color:rgb(0,128,128)">ESI</span></div><div><span style="color:rgb(0,0,0)">                </span><span style="color:rgb(0,0,255)">mov</span><span style="color:rgb(0,0,0)">     </span><span style="color:rgb(0,128,128)">dword</span><span style="color:rgb(0,0,0)"> </span><span style="color:rgb(0,128,128)">ptr</span><span style="color:rgb(0,0,0)"> -</span><span style="color:rgb(9,134,88)">018</span><span style="color:rgb(0,128,128)">h</span><span style="color:rgb(0,0,0)">[</span><span style="color:rgb(0,128,128)">RBP</span><span style="color:rgb(0,0,0)">],</span><span style="color:rgb(9,134,88)">0</span></div><div><span style="color:rgb(0,0,0)">                </span><span style="color:rgb(0,0,255)">mov</span><span style="color:rgb(0,0,0)">     </span><span style="color:rgb(0,128,128)">EAX</span><span style="color:rgb(0,0,0)">,-</span><span style="color:rgb(9,134,88)">8</span><span style="color:rgb(0,0,0)">[</span><span style="color:rgb(0,128,128)">RBP</span><span style="color:rgb(0,0,0)">]</span></div><div><span style="color:rgb(0,0,0)">                </span><span style="color:rgb(0,0,255)">add</span><span style="color:rgb(0,0,0)">     </span><span style="color:rgb(0,128,128)">EAX</span><span style="color:rgb(0,0,0)">,-</span><span style="color:rgb(9,134,88)">010</span><span style="color:rgb(0,128,128)">h</span><span style="color:rgb(0,0,0)">[</span><span style="color:rgb(0,128,128)">RBP</span><span style="color:rgb(0,0,0)">]</span></div><div><span style="color:rgb(0,0,0)">                </span><span style="color:rgb(0,0,255)">mov</span><span style="color:rgb(0,0,0)">     -</span><span style="color:rgb(9,134,88)">018</span><span style="color:rgb(0,128,128)">h</span><span style="color:rgb(0,0,0)">[</span><span style="color:rgb(0,128,128)">RBP</span><span style="color:rgb(0,0,0)">],</span><span style="color:rgb(0,128,128)">EAX</span></div><div><span style="color:rgb(0,0,0)">                </span><span style="color:rgb(0,0,255)">leave</span></div><div><span style="color:rgb(0,0,0)">                </span><span style="color:rgb(0,0,255)">ret</span></div></div>

</div><div style="color:rgb(0,0,0);background-color:rgb(255,255,254);font-family:Consolas,"Liberation Mono",Courier,monospace,Consolas,"Courier New",monospace;font-weight:normal;font-size:14px;line-height:19px;white-space:pre"><br></div><div style="color:rgb(0,0,0);background-color:rgb(255,255,254);font-family:Consolas,"Liberation Mono",Courier,monospace,Consolas,"Courier New",monospace;font-weight:normal;font-size:14px;line-height:19px;white-space:pre"><br></div><div style="color:rgb(0,0,0);background-color:rgb(255,255,254);font-family:Consolas,"Liberation Mono",Courier,monospace,Consolas,"Courier New",monospace;font-weight:normal;font-size:14px;line-height:19px;white-space:pre"><br><div><span style="color:rgb(0,0,255)">int</span><span style="color:rgb(0,0,0)"> stupid_hack(</span><span style="color:rgb(0,0,255)">int</span><span style="color:rgb(0,0,0)"> x, </span><span style="color:rgb(0,0,255)">int</span><span style="color:rgb(0,0,0)"> y)</span></div><div><span style="color:rgb(0,0,0)">{</span></div><div><span style="color:rgb(0,0,0)">    </span><span style="color:rgb(0,0,255)">int</span><span style="color:rgb(0,0,0)"> t;</span></div><br><div><span style="color:rgb(0,0,0)">    </span><span style="color:rgb(0,128,0)">// stupid hack</span></div><div><span style="color:rgb(0,0,0)">    () </span><span style="color:rgb(205,49,49)">@</span><span style="color:rgb(0,0,0)">trusted {</span></div><div><span style="color:rgb(0,0,0)">        t = x + y;</span></div><div><span style="color:rgb(0,0,0)">    }();</span></div><br><div><span style="color:rgb(0,0,0)">    </span><span style="color:rgb(0,0,255)">return</span><span style="color:rgb(0,0,0)"> t;</span></div><div><span style="color:rgb(0,0,0)">}</span></div></div>

</div><div><br></div><div> </div><div>
<div style="color:rgb(0,0,0);background-color:rgb(255,255,254);font-family:Consolas,"Liberation Mono",Courier,monospace,Consolas,"Courier New",monospace;font-weight:normal;font-size:14px;line-height:19px;white-space:pre"><div><span style="color:rgb(0,0,0)">        </span><span style="color:rgb(0,0,255)">assume</span><span style="color:rgb(0,0,0)">  </span><span style="color:rgb(0,128,128)">CS</span><span style="color:rgb(0,0,0)">:</span><span style="color:rgb(0,128,128)">.text._D7example11stupid_hackFiiZi</span></div><div><span style="color:rgb(0,0,0)">                </span><span style="color:rgb(0,0,255)">push</span><span style="color:rgb(0,0,0)">    </span><span style="color:rgb(0,128,128)">RBP</span></div><div><span style="color:rgb(0,0,0)">                </span><span style="color:rgb(0,0,255)">mov</span><span style="color:rgb(0,0,0)">     </span><span style="color:rgb(0,128,128)">RBP</span><span style="color:rgb(0,0,0)">,</span><span style="color:rgb(0,128,128)">RSP</span></div><div><span style="color:rgb(0,0,0)">                </span><span style="color:rgb(0,0,255)">sub</span><span style="color:rgb(0,0,0)">     </span><span style="color:rgb(0,128,128)">RSP</span><span style="color:rgb(0,0,0)">,</span><span style="color:rgb(9,134,88)">020</span><span style="color:rgb(0,128,128)">h</span></div><div><span style="color:rgb(0,0,0)">                </span><span style="color:rgb(0,0,255)">mov</span><span style="color:rgb(0,0,0)">     -</span><span style="color:rgb(9,134,88)">010</span><span style="color:rgb(0,128,128)">h</span><span style="color:rgb(0,0,0)">[</span><span style="color:rgb(0,128,128)">RBP</span><span style="color:rgb(0,0,0)">],</span><span style="color:rgb(0,128,128)">EDI</span></div><div><span style="color:rgb(0,0,0)">                </span><span style="color:rgb(0,0,255)">mov</span><span style="color:rgb(0,0,0)">     -</span><span style="color:rgb(9,134,88)">8</span><span style="color:rgb(0,0,0)">[</span><span style="color:rgb(0,128,128)">RBP</span><span style="color:rgb(0,0,0)">],</span><span style="color:rgb(0,128,128)">ESI</span></div><div><span style="color:rgb(0,0,0)">                </span><span style="color:rgb(0,0,255)">mov</span><span style="color:rgb(0,0,0)">     </span><span style="color:rgb(0,128,128)">dword</span><span style="color:rgb(0,0,0)"> </span><span style="color:rgb(0,128,128)">ptr</span><span style="color:rgb(0,0,0)"> -</span><span style="color:rgb(9,134,88)">018</span><span style="color:rgb(0,128,128)">h</span><span style="color:rgb(0,0,0)">[</span><span style="color:rgb(0,128,128)">RBP</span><span style="color:rgb(0,0,0)">],</span><span style="color:rgb(9,134,88)">0</span></div><div><span style="color:rgb(0,0,0)">                </span><span style="color:rgb(0,0,255)">mov</span><span style="color:rgb(0,0,0)">     </span><span style="color:rgb(0,128,128)">RDI</span><span style="color:rgb(0,0,0)">,</span><span style="color:rgb(0,128,128)">RBP</span></div><div><span style="color:rgb(0,0,0)">                </span><span style="color:rgb(0,0,255)">call</span><span style="color:rgb(0,0,0)">    </span><span style="color:rgb(0,128,128)">qword</span><span style="color:rgb(0,0,0)"> </span><span style="color:rgb(0,128,128)">ptr</span><span style="color:rgb(0,0,0)"> </span><span style="color:rgb(0,128,128)">pure</span><span style="color:rgb(0,0,0)"> </span><span style="color:rgb(0,128,128)">nothrow</span><span style="color:rgb(0,0,0)"> </span><span style="color:rgb(0,128,128)">@nogc</span><span style="color:rgb(0,0,0)"> </span><span style="color:rgb(0,128,128)">@trusted</span><span style="color:rgb(0,0,0)"> </span><span style="color:rgb(0,128,128)">void</span><span style="color:rgb(0,0,0)"> </span><span style="color:rgb(0,128,128)">example.stupid_hack</span><span style="color:rgb(0,0,0)">(</span><span style="color:rgb(0,128,128)">int</span><span style="color:rgb(0,0,0)">, </span><span style="color:rgb(0,128,128)">int</span><span style="color:rgb(0,0,0)">)</span><span style="color:rgb(0,128,128)">.__lambda4</span><span style="color:rgb(0,0,0)">()</span><span style="color:rgb(0,128,128)">@GOTPCREL</span><span style="color:rgb(0,0,0)">[</span><span style="color:rgb(0,128,128)">RIP</span><span style="color:rgb(0,0,0)">]</span></div><div><span style="color:rgb(0,0,0)">                </span><span style="color:rgb(0,0,255)">mov</span><span style="color:rgb(0,0,0)">     </span><span style="color:rgb(0,128,128)">EAX</span><span style="color:rgb(0,0,0)">,-</span><span style="color:rgb(9,134,88)">018</span><span style="color:rgb(0,128,128)">h</span><span style="color:rgb(0,0,0)">[</span><span style="color:rgb(0,128,128)">RBP</span><span style="color:rgb(0,0,0)">]</span></div><div><span style="color:rgb(0,0,0)">                </span><span style="color:rgb(0,0,255)">leave</span></div><div><span style="color:rgb(0,0,0)">                </span><span style="color:rgb(0,0,255)">ret</span></div><div><span style="color:rgb(0,0,0)">        </span><span style="color:rgb(0,0,255)">assume</span><span style="color:rgb(0,0,0)">  </span><span style="color:rgb(0,128,128)">CS</span><span style="color:rgb(0,0,0)">:</span><span style="color:rgb(0,128,128)">.text.pure</span><span style="color:rgb(0,0,0)"> </span><span style="color:rgb(0,128,128)">nothrow</span><span style="color:rgb(0,0,0)"> </span><span style="color:rgb(0,128,128)">@nogc</span><span style="color:rgb(0,0,0)"> </span><span style="color:rgb(0,128,128)">@trusted</span><span style="color:rgb(0,0,0)"> </span><span style="color:rgb(0,128,128)">void</span><span style="color:rgb(0,0,0)"> </span><span style="color:rgb(0,128,128)">example.stupid_hack</span><span style="color:rgb(0,0,0)">(</span><span style="color:rgb(0,128,128)">int</span><span style="color:rgb(0,0,0)">, </span><span style="color:rgb(0,128,128)">int</span><span style="color:rgb(0,0,0)">)</span><span style="color:rgb(0,128,128)">.__lambda4</span><span style="color:rgb(0,0,0)">()</span></div><div><span style="color:rgb(0,128,128)">pure nothrow @nogc @trusted void example.stupid_hack(int, int).__lambda4():</span></div><div><span style="color:rgb(0,0,0)">                </span><span style="color:rgb(0,0,255)">push</span><span style="color:rgb(0,0,0)">    </span><span style="color:rgb(0,128,128)">RBP</span></div><div><span style="color:rgb(0,0,0)">                </span><span style="color:rgb(0,0,255)">mov</span><span style="color:rgb(0,0,0)">     </span><span style="color:rgb(0,128,128)">RBP</span><span style="color:rgb(0,0,0)">,</span><span style="color:rgb(0,128,128)">RSP</span></div><div><span style="color:rgb(0,0,0)">                </span><span style="color:rgb(0,0,255)">sub</span><span style="color:rgb(0,0,0)">     </span><span style="color:rgb(0,128,128)">RSP</span><span style="color:rgb(0,0,0)">,</span><span style="color:rgb(9,134,88)">010</span><span style="color:rgb(0,128,128)">h</span></div><div><span style="color:rgb(0,0,0)">                </span><span style="color:rgb(0,0,255)">mov</span><span style="color:rgb(0,0,0)">     -</span><span style="color:rgb(9,134,88)">8</span><span style="color:rgb(0,0,0)">[</span><span style="color:rgb(0,128,128)">RBP</span><span style="color:rgb(0,0,0)">],</span><span style="color:rgb(0,128,128)">RDI</span></div><div><span style="color:rgb(0,0,0)">                </span><span style="color:rgb(0,0,255)">mov</span><span style="color:rgb(0,0,0)">     </span><span style="color:rgb(0,128,128)">RAX</span><span style="color:rgb(0,0,0)">,-</span><span style="color:rgb(9,134,88)">8</span><span style="color:rgb(0,0,0)">[</span><span style="color:rgb(0,128,128)">RBP</span><span style="color:rgb(0,0,0)">]</span></div><div><span style="color:rgb(0,0,0)">                </span><span style="color:rgb(0,0,255)">mov</span><span style="color:rgb(0,0,0)">     </span><span style="color:rgb(0,128,128)">ECX</span><span style="color:rgb(0,0,0)">,-</span><span style="color:rgb(9,134,88)">8</span><span style="color:rgb(0,0,0)">[</span><span style="color:rgb(0,128,128)">RAX</span><span style="color:rgb(0,0,0)">]</span></div><div><span style="color:rgb(0,0,0)">                </span><span style="color:rgb(0,0,255)">add</span><span style="color:rgb(0,0,0)">     </span><span style="color:rgb(0,128,128)">ECX</span><span style="color:rgb(0,0,0)">,-</span><span style="color:rgb(9,134,88)">010</span><span style="color:rgb(0,128,128)">h</span><span style="color:rgb(0,0,0)">[</span><span style="color:rgb(0,128,128)">RAX</span><span style="color:rgb(0,0,0)">]</span></div><div><span style="color:rgb(0,0,0)">                </span><span style="color:rgb(0,0,255)">mov</span><span style="color:rgb(0,0,0)">     -</span><span style="color:rgb(9,134,88)">018</span><span style="color:rgb(0,128,128)">h</span><span style="color:rgb(0,0,0)">[</span><span style="color:rgb(0,128,128)">RAX</span><span style="color:rgb(0,0,0)">],</span><span style="color:rgb(0,128,128)">ECX</span></div><div><span style="color:rgb(0,0,0)">                </span><span style="color:rgb(0,0,255)">leave</span></div><div><span style="color:rgb(0,0,0)">                </span><span style="color:rgb(0,0,255)">ret</span></div><div><span style="color:rgb(0,0,0)">                </span><span style="color:rgb(0,0,255)">add</span><span style="color:rgb(0,0,0)">     [</span><span style="color:rgb(0,128,128)">RAX</span><span style="color:rgb(0,0,0)">],</span><span style="color:rgb(0,128,128)">AL</span></div><div><span style="color:rgb(0,128,128)"><br></span></div><div><span style="color:rgb(0,128,128)"><br></span></div><div>I hope we can agree that this is definitely not 'kind of the same'...</div><div><br></div><div>And that's to say nothing about the damage it causes to the debug info, and the ability to breakpoint and step through the code in a sane way.</div><div>Completely unacceptable hack. I won't give this pattern the dignity of my fingertips approval under any circumstances. It should not be legitimised.<br></div></div>

</div></div></div>