Overview
Artifact ID: | f1457e894220a9584b3fdf83f8f9608a032c52d53e85d1e88e50a83ad88112ce |
---|---|
Ticket: | 2d2a32124406e8494a9d73cf2b668dcddc75fdf6
info frame does not correct recognize current type of execution scope |
User & Date: | sebres 2019-03-15 14:18:16 |
Changes
- assignee changed to: "nobody"
- closer changed to: "nobody"
- cmimetype changed to: "text/x-fossil-wiki"
- comment changed to:
If frame level is provided as value, it is confused: <code><pre style="padding-left:10"> % proc test {} { puts pr:[info frame [info frame]]; namespace eval ::test {puts ns:[info frame [info frame]]} }; test pr:type proc line 1 cmd {info frame [info frame]} proc ::test level 0 ns:type <b style="color:red">proc</b> line 1 cmd {info frame [info frame]} level 0 </pre></code> totally unexpected type (red marked), imho - should not type be something like "eval" or "namespace" in the second case? If one gives the 0 (so as current frame level), it works correct: <code><pre style="padding-left:10"> % proc test {} { puts pr:[info frame 0]; namespace eval ::test {puts ns:[info frame 0]} }; test pr:type proc line 1 cmd {info frame 0} proc ::test level 0 ns:type <b style="color:green">eval</b> line 1 cmd {info frame 0} level 0 </pre></code> But still worse, the things change also in this case if something else is involved around `info frame` additionally.<br/> So adding a `dict get ... type` around confuses it again: <code><pre style="padding-left:10"> % proc test {} { puts pr:[dict get [info frame 0] type]; namespace eval ::test {puts ns:[dict get [info frame 0] type]} }; test pr:proc ns:<b style="color:red">proc</b> </pre></code> As well as just usage of set, so set to variable (despite it is compiled in NS) causes completely wrong type recognition: <pre style="padding-left:10"> % proc test {} { namespace eval ::test {puts ns:[info frame 0]} }; test ns:type <b style="color:green">eval</b> line 1 cmd {info frame 0} level 0 % proc test {} { namespace eval ::test {puts ns:[set f [info frame 0]]} }; test ns:type <b style="color:red">proc</b> line 1 cmd {info frame 0} level 0 </pre> So it looks like `info frame` is totally unusable at the moment (or at least pointing at the wrong frame, if one wants to retrieve the type of the scope).
- foundin changed to: "all"
- is_private changed to: "0"
- login: "sebres"
- priority changed to: "5 Medium"
- resolution changed to: "None"
- severity changed to: "Severe"
- status changed to: "Open"
- submitter changed to: "sebres"
- subsystem changed to: "16. Commands A-H"
- title changed to:
info frame does not correct recognize current type of execution scope
- type changed to: "Bug"