Replace druntime Hooks with Templates: Milestone 1, Week 2

Steven Schveighoffer schveiguy at gmail.com
Fri Oct 7 14:06:39 UTC 2022


On 10/3/22 6:28 PM, Johan wrote:
> On Monday, 3 October 2022 at 20:28:19 UTC, Teodor Dutu wrote:
>> Hi,
>>
>> This week I faced a few setbacks with `_d_arraycatnTX` due to type 
>> mismatches.
>> Due to the hustle of moving house, I haven't made much progress on 
>> this front.
>>
>> To take a break from this, I temporarily moved on to the 
>> `_d_newitem{T,iT,U}` hooks.
>> I implemented templated one templated hook for `_d_newitemT` and added 
>> unittests for it.
>> The difference will now be made by the compiler during the lowering, 
>> by calling the constructor, copying the default initialiser, or doing 
>> nothing (`void` initialisation).
> 
> Hi Teodor,
>    Are you aware about the capability to override these implementations 
> by the user? DMD itself is using this, see for example: 
> https://github.com/dlang/dmd/blob/16fad687b0e894879564864d7eb75747fb41a057/compiler/src/dmd/root/rmem.d#L257-L262 
> 
> 
> Is this still possible after your work?

Given that one of the purposes is to remove the dependence on `TypeInfo` 
for such things, is there a way to do this override without it?

Otherwise, you could potentially provide a function pointer that you can 
set if you want to override the hook, and the hook can first check that 
pointer to see if it should call that first.

Another idea is provide an easier way to override object things, like 
maybe if you plop a `customobject.d` into the dmd import path, it can 
provide overrides of things that `object` looks for.

-Steve


More information about the Digitalmars-d mailing list