Add Expression.Check.
Check Literal and Identifier nodes.
Add constSpecView.Check.
Add a placeholder for ConstSpec.Check.

Add comments about what the method needs to do, and add a comment on
constSpecView.Check() noting that it expects its ConstSpec to have
been previously checked.
Track all views into each ConstSpec.
Rename SourceFile to File.
Set File.syms.
Add Check.

Currently it only populates the file-level symbol tables and calls
Check on ConstSpecs.
Add errors.All.
Remove errors.Add.

This method was cute, but made the code harder to read and harder to
test. Harder to read, because it looks like it unconditionally added
the error, but it only added it if non-nil. Harder to test, because it
hid err != nil branches that could be flagged as untested by a
coverage tool.
Add TestCheckErrors.

It's incomplete, as the Check pass itself is incomplete.
Don't pass needless arguments to Declaration Checks.

ConstSpec and constSpecView already have access to Iota. They don't
need it again. Also, Declarations don't need their symbol table,
because they already have it as a field. This was necessary for
package-level declarations that needed their file-level symbol table,
which would not be passed via a recursive call from a declaration in a
separate file. For Declarations that appear in blocks,
DeclarationStatement will need to set their syms field. Not a problem.
Add TestConstFolding.
Fix a bug when folding iota.

ConstSpecs.Values may be shared among multiple ConstSpecs. This
happens when one spec in a const block has expressions and subsequent
ones do not. Check cannot overwrite the values in the slice; it may
contain iotas, and they may evaluate to different values for each
spec. Instead, each constSpecView has its own Value field that
contains its folded value.
Merge pull request #52 from velour/check

Start Check