

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.
