However, there is (in Dwarf) no direct indication if a parameter is declared const/var/...
I think that's a problem because it causes an incorrect definition to be displayed.
It needs to be addressed in FPC...
Well, FpDebug already has tiny bits of code, that rely on "implementation detail" => e.g., IIRC the difference between "array of char" and "string" is, if fpc wrote a default value or omitted it.... Or something like this. This is something that can break with any new fpc version. But so far, FPC does not encode that difference. (It may be either string<>array or string<>pchar or something of that kind....). It only works for Dwarf 3.
I really don't want to add to much "magic" of that kind. It will end up breaking, and may then not even be fixable....
And yes, it sound like it couldn't break: if there is a deref somewhere then it must have a hidden pointer. => But so does a TObject, which could be encoded that way (currently is not).
And if you have a nested function, the proper way to encode visible locals of the outer function would be using the same deref. (Also currently not done).
So looking for a hidden deref is not a good solution.
refer to the attachment for this next part. The yellow window shows a bunch of stuff that I suppose is determined by the definition of TRect but, the contents are not really useful (lacks detail) and it makes the window take a fair amount of space. I'd say the window should just show that a PRECT is a pointer to a TRECT (which is probably obvious but, at least it's only 1 or 2 lines) or show the complete definition of TRECT as well (which will definitely take some space but, could sometimes come in quite handy.) I think either way is fine except for what it's showing right now (which consumes a fair amount of space yet gives very little useful information.)
Ah, yes that looks like a bug. Displaying types really did not have much attention so far. The function names (and declarations) do exist in the dwarf info.
I don't know if removing the deref of the info is really going to help much. You still get the entire bunch if you hover over TRect instead of PRect. And then there is on deref to omit.
But which ever way that is going to be solved, please report a bug. (Hovering over TRect should include function names and declaration).
About the inclusion of function in any structured typed (record, object, class) => that could be optional. But that is a separate matter.