Граф коммитов

5574 Коммитов

Автор SHA1 Сообщение Дата
Alan Donovan 6c7ce1c2d3 go.tools/ssa: Value.Pos() method + remaining source position plumbing.
Implement Pos() method for
  Values:       Parameter, Capture, Phi.  (Not Literal, Builtin.)
  Instructions: UnOp, BinOp, Store.

'address' (an lvalue) now needs position of '*' in "*addr".

Also:
- Un-export fields Pos_ Type_ Name_ Block_ from various values/instructions.
  Define NewFunction() as a temporary measure.
  Will try to eliminate calls from clients...
- Remove Implements{Value,Member,Interface} marker methods.
  I've decided I don't like them.
- Func.addParamObj helper.
- Various comment fixes.

R=gri
CC=golang-dev
https://golang.org/cl/9740046
2013-05-30 09:59:17 -04:00
Rob Pike d6c1c75eab go.tools/cmd/vet: say ./testvet instead of testvet
I bet "." is not in the default PATH.

R=golang-dev, minux.ma
CC=golang-dev
https://golang.org/cl/9867043
2013-05-29 15:00:51 -04:00
Rob Pike f91ca66179 go.tools/cmd/vet: attempt to fix build
Can't reproduce the failure outside the builder, but attempt a fix
by changing the criterion for failure: FAIL iff the output contains "BUG".

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/9798050
2013-05-29 11:28:19 -04:00
Rob Pike 2b48cfca08 cmd/vet: use length of output from errchk to check PASS/FAIL
errchk is itself a FAIL: it doesn't exit non-zero on error!

R=golang-dev, iant
CC=golang-dev
https://golang.org/cl/9842044
2013-05-28 16:51:47 -04:00
Rob Pike c7f7fa1381 cmd/vet: simplify format checker
Simplify the code a bit, get it working after recent go/types changes,
and handle "%*%" just in case. Preparation for handling argument indexing.

R=gri
CC=golang-dev
https://golang.org/cl/9747045
2013-05-28 15:37:34 -04:00
Alan Donovan 20029fe5f7 go.tools/ssa: utility functions mapping source intervals to ast.Nodes.
PathEnclosingInterval: 	maps a source position to an ast.Node.
EnclosingFunction:   	finds ssa.Function enclosing an ast.Node.
HasEnclosingFunction:   cheaper impl of EnclosingFunction()!=nil
NodeDescription:        user friendly node type descriptions.

+ tests.

Also: make ssa.Package.TypeInfo field a pointer.

R=gri, r
CC=golang-dev
https://golang.org/cl/9639045
2013-05-28 15:28:46 -04:00
Robert Griesemer b52cce75f3 adonovan: first round of cleanups: remove 'resolve' internal flag and respective dead code
No other changes besides documentation updates for now.

R=golang-dev, adonovan
CC=golang-dev
https://golang.org/cl/9780045
2013-05-28 11:39:15 -07:00
Robert Griesemer 5c2bbcb0fd go.tools/go/types: enable resolution of objects in type checker
R=adonovan
CC=golang-dev
https://golang.org/cl/9838043
2013-05-28 10:25:11 -07:00
Robert Griesemer 3df6f127f0 go.tools/go/types: resolve objects in type checker
By setting resolve = true in check.go, the type checker
will do all identifier resolution during type checking
time and ignore (and not depend on) parser objects. This
permits the type checker to run easily on ASTs that are
not generated with invariants guaranteed by the parser.

There is a lot of new code; much of it slightly modified
copies of old code. There is also a lot of duplication.
After removing the dead code resulting from resolve = true
permanently (and removing the flag as well), it will be
easier to perform a thorough cleanup. As is, there are
too many intertwined code paths.

For now resolve = false. To be enabled in a successor CL.

R=adonovan
CC=golang-dev
https://golang.org/cl/9606045
2013-05-28 10:06:37 -07:00
Robert Griesemer 98bcbfbab7 go.tools/ssa: print identifer location if not found in TypeInfo
R=adonovan, r
CC=golang-dev
https://golang.org/cl/9703044
2013-05-25 10:04:20 -07:00
Robert Griesemer 7a48931508 go.tools/ssa: fix debug printing
R=adonovan, r
CC=golang-dev
https://golang.org/cl/9774043
2013-05-25 09:51:29 -07:00
Alan Donovan 8cdf1f1cb1 go.tools/ssa: add support for bound-method closures.
Extracted Builder.findMethod function to handle
methodset/receiver logic common to
function calls (Builder.setCall) and
bound method closure creation (Builder.selector).

Capture: added explicit Name, Type fields to Capture instead
of relying on Outer field, which is now un-exported since its
only purpose is to let Builder.expr(case *ast.FuncLit) know
which values to put in the closure; it is nilled immediately
after.

Simplified Function.lookup() logic: there's no need to walk
the Outer chain each time to set Alloc.Heap=true, as it's
already set during creation of the outermost
Capture{outer:*Alloc}.

Added interp/testdata/boundmeth.go test.

Cosmetic changes:
- add support for bound method thunks to Function.FullName().
- Simplified {Literal,Global,Builtin,Function}.String()
- doc: Captures are no longer necessarily addresses.
- added yet another missing pair of "()" (go/types accessors).
- print "Synthetic" not "Declared at -" for synthetic functions.
- use '$' not center-dot in synthetic identifiers (easier to type).

R=gri
CC=golang-dev
https://golang.org/cl/9654043
2013-05-22 17:56:18 -04:00
Rob Pike bf87b9f0f5 go.tools/cmd/vet: use "go test" to test
- remove Makefile
- move test data into a subdirectory
- encapsulate the invocation of errchk into a standard Test using os.exec

R=golang-dev, minux.ma, rsc
CC=golang-dev
https://golang.org/cl/9509045
2013-05-22 10:20:50 -07:00
Robert Griesemer 08ee2985d7 go.tools/go.types: check for redeclarations across package files
Fixes golang/go#5506.

R=adonovan
CC=golang-dev
https://golang.org/cl/9600044
2013-05-20 14:29:57 -07:00
Robert Griesemer ad2dafcf8f go.tools/gotype: fix build
Move from go.exp brought over an old version.

R=golang-dev, dsymonds
CC=golang-dev
https://golang.org/cl/9594043
2013-05-20 12:56:17 -07:00
Rob Pike 08cc526448 go.tools/cmd/vet: update to new go/types package
Now that it's in the same repository as the go/types package we can delete
the mechanism to build it without type checking.

Add a make rule to install it where the go tool can find it.
Why doesn't "go install" take a -o flag?

R=gri
CC=gobot, golang-dev
https://golang.org/cl/9526043
2013-05-20 12:20:05 -07:00
Alan Donovan 113d6d30b1 code.google.com/p/go.tools/ssa: include ssa.Package and init() function in example output.
Also:
- remove redundant text in doc.go.
- fix (yet more) cases of missing parens in Printf, fallout from
  go/types accessors refactoring.
- don't mix spaces and tabs within lines printed by ssa.Function.DumpTo:
  it makes it too hard to constructed expected outputs for tests.
  (Tabs may appear at line start though.)

Sadly godoc -play won't run this program; it complains it
can't import "code.google.com/p/go.exp/ssa".  Any idea why?

R=gri
CC=golang-dev
https://golang.org/cl/9481044
2013-05-17 17:33:09 -04:00
Rob Pike 87334f402b go.tools: bring up to date
Repo was copied from old point.  Bad r.

R=golang-dev, gri
CC=golang-dev
https://golang.org/cl/9504043
2013-05-17 14:02:47 -07:00
Rob Pike 83f21b9226 go.tools: add missing files ssa/*.go
R=golang-dev, adonovan
CC=golang-dev
https://golang.org/cl/9500043
2013-05-17 13:25:48 -07:00
Rob Pike 01f8cd246d go.tools: add go/types, ssa, and cmd/vet
They will be deleted from their current homes once this has landed.
Changes made to import paths to make the code compile, and to find
errchk in the right place in cmd/vet's Makefile.
TODO in a later CL: tidy up vet.

R=golang-dev, gri
CC=golang-dev
https://golang.org/cl/9495043
2013-05-17 13:20:39 -07:00
Rob Pike 9f31513c92 go.tools: provide the right README
R=golang-dev, minux.ma
CC=golang-dev
https://golang.org/cl/9479044
2013-05-17 12:55:10 -07:00
Nigel Tao ca8b903872 go.empty: add PATENTS file to the subrepo.
R=r
CC=golang-dev
https://golang.org/cl/6026043
2012-04-16 11:24:04 +10:00
Rob Pike b38d45f7ff LICENSE: add
R=golang-dev, dsymonds
CC=golang-dev
https://golang.org/cl/5845057
2012-03-17 15:20:58 +11:00
Russ Cox f61fbb80d2 go.empty: prototype for new subrepository
R=golang-dev, r
CC=golang-dev
https://golang.org/cl/5572056
2012-01-25 14:45:13 -05:00