84 lines
2.1 KiB
Plaintext
84 lines
2.1 KiB
Plaintext
|
|
|
|
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.
|