Tcl Source Code

View Ticket
Login
Bounty program for improvements to Tcl and certain Tcl packages.
Tcl 2018 Conference, Houston/TX, US, Oct 15-19
Send your abstracts to tclconference@googlegroups.com
or submit via the online form by Aug 20.
Ticket UUID: d22ad202055093292992c6aea053188f8b3d4abe
Title: "dict unset d key subkey" fails if key does not exist
Type: Bug Version: >= 8.5
Submitter: oehhar Created on: 2018-07-02 10:24:28
Subsystem: 15. Dict Object Assigned To: nobody
Priority: 5 Medium Severity: Minor
Status: Open Last Modified: 2018-07-02 11:04:59
Resolution: None Closed By: nobody
    Closed on:
Description:

If a dictionary key is unset, there is no error, if it does not exist:

% set d {}
% dict unset d a

There is an error raised, if a key on the path of the subkey does not exist:

% set d {}
% dict unset d a b
key "a" not known in dictionary

IMHO this is inconsistent and should not rise an error.

At least the documentation should write about error behaviour.


I can understand, that an error is raised, if the (sub)dict is not a valid dict.

% set d {1}
% dict unset d a
missing value to go with key
% set d {a 1}
% dict unset d a b
missing value to go with key

User Comments: sebres added on 2018-07-02 11:03:13:

Still worse (as regards the inconsistency), it does not produce any error if dictionary self (variable) does not exists:

% unset -nocomplain d
% catch { dict unset d a }
0

So I'm agree with Harald's conclusion, the `dict unset` must not produce an error if sub-key does not exists also.