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.
 |