I need to use delete as the method name. But now it's still a keyword, right?

Steven Schveighoffer schveiguy at gmail.com
Wed May 18 15:33:09 UTC 2022


On 5/18/22 2:13 AM, bauss wrote:
> On Wednesday, 18 May 2022 at 02:12:42 UTC, zoujiaqing wrote:
>> https://dlang.org/changelog/2.100.0.html#deprecation_delete
>>
>> My code:
>>
>> ```D
>> import std.stdio;
>>
>> class HttpClient
>> {
>>     string get(string url)
>>     {
>>         return "";
>>     }
>>
>>     string delete(string url)
>>     {
>>         return "";
>>     }
>> }
>>
>> void main()
>> {
>>     auto http = new HttpClient;
>>
>>     string content = http.get("https://forum.dlang.org/group/general");
>>     string content = 
>> http.delete("https://forum.dlang.org/newpost/general?");
>> }
>> ```
>>
>> error message
>> ```bash
>> % dub build --compiler=dmd
>> Performing "debug" build using dmd for x86_64.
>> test ~master: building configuration "application"...
>> source/app.d(10,9): Error: no identifier for declarator `string`
>> source/app.d(10,9): Error: declaration expected, not `delete`
>> source/app.d(14,1): Error: unmatched closing brace
>> dmd failed with exit code 1.
>> ```
>>
>> I wonder when I can use it. Because this will cause a software naming 
>> problem.
> 
> Considering the deprecation period has ended then IMO it should be able 
> to be used as an identifier.
> 
> I would consider this a bug.

No, it's intentional.

https://dlang.org/changelog/2.100.0.html#deprecation_delete

 > Starting with this release, using the delete *keyword* will result in 
a *compiler error*.

It's still a keyword according to that. I'm assuming a future release 
will remove the error, and then you can use it as a symbol.

-Steve


More information about the Digitalmars-d-learn mailing list