| |
| |
| ORACLE TODO |
| =========== |
| |
| General |
| ======= |
| |
| Save unsaved editor buffers into an archive and provide that to the |
| tools, which should act as if they were saved. |
| |
| Include complete pos/end information Serial output. |
| But beware that sometimes a single token (e.g. +) is more helpful |
| than the pos/end of the containing expression (e.g. x \n + \n y). |
| |
| Specific queries |
| ================ |
| |
| callers, callees |
| |
| Use a type-based (e.g. RTA) callgraph when a callers/callees query is |
| outside the analysis scope. |
| |
| implements |
| |
| Make it require that the selection is a type, and show only the |
| implements relation as it applies to that type. |
| |
| definition, referrers |
| |
| definition: Make it work with qualified identifiers (SelectorExpr) too. |
| |
| references: Make it work on things that are implicit idents, like |
| import specs, perhaps? |
| |
| what |
| |
| Report def/ref info if available. |
| Editors could use it to highlight all idents of the same local var. |
| |
| More tests. |
| |
| pointsto |
| |
| When invoked on a function Ident, we get an error. |
| |
| When invoked on a named return parameter, we get an error. |
| |
| describe |
| |
| When invoked on a var, we want to see the type and its methods. |
| |
| Split "show type" and "describe syntax" into separate commands? |
| |
| peers |
| |
| Permit querying from a makechan, for...range, or reflective op. |
| |
| Report aliasing reflect.{Send,Recv,Close} and close() operations. |
| |
| New queries |
| |
| "updaters": show all statements that may update the selected lvalue |
| (local, global, field, etc). |
| |
| "creators": show all places where an object of type T is created |
| (&T{}, var t T, new(T), new(struct{array [3]T}), etc. |
| (Useful for datatypes whose zero value is not safe) |
| |
| |
| Editor-specific |
| =============== |
| |
| Add support for "what" to .el; clean up. |
| |
| Emacs: use JSON to get the raw information from the oracle. Don't |
| open an editor buffer for simpler queries, just jump to the result |
| and/or display it in the modeline. |
| |
| Emacs: go-root-and-paths depends on the current buffer, so be sure to |
| call it from within the source file, not the *go-oracle* buffer: |
| the user may have switched workspaces and the oracle should run in |
| the new one. |