Request: Implement constant folding for .dup
Don Clugston
dac at nospam.com.au
Wed Feb 21 03:23:32 PST 2007
Frits van Bommel wrote:
> Don Clugston wrote:
>> Stewart Gordon wrote:
>>> Don Clugston Wrote:
>>>> Since COW is used so much in D, especially with strings, allowing
>>>> "abc".dup to be constant-folded would greatly increase the amount of
>>>> existing code which could be used at compile-time.
>>>
>>> What would the semantics be exactly?
>>
>> Just create a new const with the same value as the first one -- all
>> compile-time consts have value semantics.
>>
>> ie,
>> char [] a = "xyz";
>> char [] b = a.dup;
>>
>> would be the same as
>> char [] a = "xyz";
>> char [] b = "xyz";
>
> I see no problem with allowing this in compile-time functions. However,
> I can't think of any situation in which this would actually be useful.
> Since compile-time functions aren't allowed to use non-const arrays,
> they aren't allowed to modify elements of any arrays they have access
> to, right? So why would they need .dup?
Yes, .dup is useless at compile time. But sometimes you have runtime
code that contains things like:
char [] s;
:
return s.dup;
With .dup allowable, that existing code can be used at compile time.
More information about the Digitalmars-d
mailing list