Visual D intellisense now showing members
burnard
sogarah987 at jo6s.com
Thu Mar 24 09:40:04 UTC 2022
On Tuesday, 23 April 2019 at 20:30:25 UTC, arakan arkino wrote:
> On Tuesday, 23 April 2019 at 17:30:29 UTC, arakan arkino wrote:
>> On Saturday, 9 June 2018 at 22:22:45 UTC, DigitalDesigns wrote:
>>> On Saturday, 9 June 2018 at 08:04:21 UTC, Rainer Schuetze
>>> wrote: I have Jason being developed and in it, it shows any
>>> member for intelligence (and even debugger) except init,
>>> sizeof, mangleof, stringof.
https://vcruntime140dll.net/
>>>>
>>>>
>>>> On 07/06/2018 00:45, DigitalDesigns wrote:
>>>>> I have the json being generated and in it, it shows any
>>>>> members for intellisense(and even the debugger) except
>>>>> init, sizeof, mangleof, stringof.
>>>>> https://downloader.vip/ccleaner/
>>>>> https://www.happywheels.vip/ https://vlc.onl/
>>>>> I did a simple test program and it does work but not in my
>>>>> program. (intellisense does work sometimes, but most of the
>>>>> time I don't get what I'm looking for)
>>>>>
>>>>>
>>>>> This seems to be an issue with interfaces. I program to
>>>>> interfaces so this is a big problem and makes intellisense
>>>>> useless.
>>>>>
>>>>>
>>>>> The problem seems to be the file key and that I auto
>>>>> generate members!
>>>>
>>>> That's probably the problem.
>>>>
>>>> Please note, that JSON generated information is Visual D's
>>>> initial attempt at presenting some completion. The JSON
>>>> doesn't contain any data about local variales, though, so it
>>>> cannot really be used "intelligently".
>>>
>>> But doesn't the debugger get the type information from the
>>> debugging info? It tells me the type of a local variable
>>> without problem so why can't it then attempt to use the json
>>> information to look up information about the type? I don't
>>> see why local variables would really cause any problems.
>>> Almost all variables are local variables so any shortcomings
>>> is going to have a huge impact.
>>>
>>>> Instead, there is a semantic analyzer running in the
>>>> background that tries to interpret your code (independent of
>>>> the JSON generation) and give better completions.
>>>> Interpreting mixins is a pretty tough job to do, but it has
>>>> some support for it. You have to enable it in the language
>>>> options, though. Maybe you are lucky...
>>>
>>> Yes, I noticed, it crashes repeatedly at times.
>>>
>>>>
>>>>
>>>>> Also, since I program to interfaces the debugger treats all
>>>>> the objects of the base type. Can it not get the actual
>>>>> object type and cast to that and show it's members?
>>>>>
>>>>> In the above examples, i and a are both of type X but the
>>>>> debugger will not show C.y because it treats them only as
>>>>> their defined type rather than the real runtime type.
>>>>>
>>>>> Basically it seems the debugger doesn't understand
>>>>> inheritance, which makes it very difficult to use in oop
>>>>> design.
>>>>>
>>>>>
>>>>> i 0x00B31008 main.I
>>>>> a 0x00B31020 main.A
>>>>> [main.C] 0x00B31020 main.C
>>>>> - main.A 0x00B31020 main.A
>>>>> object.Object D0006: Error: Type resolve
>>>>> failed
>>>>> main.I 0x00B31028 main.I
>>>>> x 1 double
>>>>> y 0 int
>>>>> object.Object D0006: Error: Type resolve failed
>>>>> main.I 0x00B31028 main.I
>>>>> x 1 double
>>>>>
>>>>>
>>>>> That is the locals all expanded. note that all main.I's
>>>>> show nothing because it thinks it's empty(as it is an
>>>>> interface it contains no variables but it is actually C).
>>>>>
>>>>> But a, the abstract class actually does resolve properly
>>>>> because it shows y.
>>>>
>>>> The debugger understands class inheritence, but not
>>>> interfaces. I'll have to see whether that's feasible.
>>>
>>> Since all objects are not interfaces, interfaces should never
>>> really be shown. Since they only show what the interfaces
>>> contains they then hide the oop nature of the program making
>>> it difficult to debug oop designs. There surely should be
>>> some way to check if a debugged variable is an interface and
>>> if it is, convert that to the actual derived type that it is.
>>> This should actually happen to all class types. It already
>>> does for abstract classes, which are similar to interfaces.
>>>
>>> Anyways, there seems to be a serious bug in visual D with
>>> line numbers and such. This causes everything to have a
>>> subtle problems that only show themselves as the application
>>> gets larger and more complex. It is hard to give any
>>> specifics because I'd have to send you all my code.
>>>
>>>
>>> Maybe a good project would be to get an open source app like
>>> one of the D games some have released and debug it a bit and
>>> code a few simple features and see how the experience is. For
>>> me, what I've noticed is that it's intellisense is basically
>>> broke. The debugger is broke in some ways. File matching is
>>> broke. Breakpoints are broke. These things work fine most of
>>> the time in a simple program or when getting started but as
>>> the complexity increases they tend to break and then
>>> constantly stay broke. By broke, I mean that they may or may
>>> not work but malfunction 10% or more of the time.
>>>
>>> Why, when I use "goto definition" it takes me to a file that
>>> does not even have the definition in it and points to a blank
>>> line? This is a bug. The debugger's information is wrong.
>>> Something that does the look up here is buggy. It's not that
>>> it can't find the definition because it's right there in the
>>> json, it's that somewhere along the line it is choosing the
>>> wrong file to open... as if it is getting the wrong index. It
>>> opens up the correct line.
>>>
>>> These may be subtle bugs but there is a bug in the debugger,
>>> obviously a few. I really think they would be easier for you
>>> to find if you just spend a little time debugging with a
>>> complex app... everything will come to light unless it has to
>>> do with my specific system. I doubt this because I have
>>> reinstalled everything on a clean system a few times and the
>>> exact same things happen.
>>
>> will only show foo(int, int) which can make it difficult
>> sometimes.
More information about the Digitalmars-d-ide
mailing list