|
Re: Completion thoughts: msg#00052lang.nemerle.devel
I'm not sure why didn't you want to just return compiler's internal interfaces, like TypeInfo, IMember, IMethod, etc. They already have most methods you would need for filtering and obtaining full information about them. As you said, we should have a good way to obtain the type of given expression in program, but I think it should be returned directly as compiler API uses it. Then in any specific IDE integration it can be analysed and also compiler can be asked to provide any additional information. If compiler's interfaces lack some properties or methods, like IsVolatile, etc. we should add it there, not create artificial wrappers. - The members the object is allowed to call because of it context. For Such things can be easily filtered when we operate on compiler's structures.
Problem with Save / RestoreState is that there is no clear sign when we can cleanup this storage. There are several fields, which must be saved in lexer: - line and column number - preparser stack state - indentation syntax fields
The Manager should now completely contain its state. I didn't try to run two instances yet, but it should work. Manager.Instance is here to stay as there are many places where we cannot easily access current ManageClass object. But this should be not a problem, if it will be assigned with current manager object on every operation performed on Manager. We will also mark it with a special attribute, which makes this static field unique in every thread, so it should be even possible to run two Managers in parallel. - Add / remove references on the fly I think this requires rebuilding of any cached information in compiler, as changing referenced assemblies can invalidate any information used by compiler. But this is not bad, since usually references are not changed often. - Add / remove / replace code files, making the neccessary changes in Also classes subtyping changed one. But in general it is now possible to just remove the program nodes and leave all information about external types intact. This is how Options.PersistentLibraries work. I will try to enable it in CompletionEngine. - I would remove the information about Defines, as IDEs usually don't Standard Lexer uses it, so I don't see the point in removing it just for completion engine. - Get the actual type tree in any moment, wrapping it in some way I see it in form of extending compiler's API or just adding utility methods in CompletionEngine, which would make such things easier, but still operate on compiler's structures. And thanks a lot for working on it! :-) -- Kamil Skalski http://nazgul.omega.pl
|
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| Previous by Date: | Completion thoughts, Alejandro Serrano |
|---|---|
| Next by Date: | Re: Completion thoughts, Kamil Skalski |
| Previous by Thread: | Completion thoughts, Alejandro Serrano |
| Next by Thread: | Re: Completion thoughts, Kamil Skalski |
| Indexes: | [Date] [Thread] [Top] [All Lists] |
| News | FAQ | advertise |