1
0
mirror of https://github.com/golang/go synced 2024-11-07 10:26:20 -07:00
Commit Graph

965 Commits

Author SHA1 Message Date
Alan Donovan
e590cdbdf8 go.tools/ssa: doc tweaks + a sanity check.
R=gri
CC=golang-dev
https://golang.org/cl/14454053
2013-10-09 12:47:30 -04:00
Alan Donovan
2299ac6bf3 go.tools/pointer: make sole callsite available to intrinsics in non-shared contours.
This information can be used to specialize such calls, e.g.
- report location of unsound calls (done for reflect.NewAt)
- exploit argument information (done for constant 'dir' parameter to reflect.ChanOf)

+ tests.

R=crawshaw
CC=golang-dev
https://golang.org/cl/14517046
2013-10-09 12:41:55 -04:00
Alan Donovan
cd908f1108 go.tools/ssa/interp: capture stdout/err of target programs and check for "BUG".
The $GOROOT/tests may print "BUG" on failure but do not
necessarily exit zero, so we must capture their output too.

Details:
- make plan9 use unix's valueToBytes function (now in externals.go)
- direct the target's syscall.Write and print/println built-ins to a new utility, write().  This may capture the output into a global variable.

R=gri, r
CC=golang-dev
https://golang.org/cl/14550044
2013-10-08 14:35:39 -04:00
Alan Donovan
068f017092 go.tools/ssa: s/Ret/Return/g
R=gri
CC=golang-dev
https://golang.org/cl/14526044
2013-10-08 12:31:39 -04:00
Alan Donovan
8ae5d36d2a go.tools: clear DeclarationErrors flag; it's redundant w.r.t go/types checking.
R=gri
CC=golang-dev
https://golang.org/cl/14147043
2013-10-08 10:34:36 -04:00
Tw
da6f00a60b go.tools/blog: replace "\\" with "/" in path string to be compatible with windows platform
Fixes golang/go#6539

The problem happens on my win7,
for example, the path is "/content\\foo.article".
It leads to the wrong link in generated html page.
So I think we should replace all"\\" with "/" in path string at first.

R=golang-dev, dsymonds, mirtchovski, dave, adg, alex.brainman
CC=golang-dev
https://golang.org/cl/14023043
2013-10-08 16:55:56 +11:00
Robert Griesemer
5d9b86d6ce go.tools/go/types: range iteration variables are typed (not untyped)
R=adonovan
CC=golang-dev
https://golang.org/cl/14516044
2013-10-07 20:27:21 -07:00
Dominik Honnef
d5044c7ed2 go.tools/cmd/vet: Update canonical method check for new xml.Marshaler/Unmarshaler interfaces
R=golang-dev, r
CC=golang-dev
https://golang.org/cl/14484043
2013-10-07 11:10:36 -07:00
Chris Manghane
1d4de00292 go.tools/dashboard: clone main repo from local path if it already exists locally.
R=adg, minux.ma
CC=golang-dev
https://golang.org/cl/14462049
2013-10-07 09:06:32 -07:00
Alan Donovan
eb632ebaca go.tools/ssa/interp: enable tests of builtin(f()) where f has multiple results.
R=gri
CC=golang-dev
https://golang.org/cl/14408043
2013-10-04 16:52:12 -04:00
Robert Griesemer
5d0990f591 go.tools/go/types: built-in calls of the form builtin(f())
- factor out argument extraction logic
- cleaned up error handling in builtin.go (no need for goto's anymore)
- lots of additional test cases
- various cleanups, better documentation

Fixes golang/go#5795.

R=adonovan
CC=golang-dev
https://golang.org/cl/14312044
2013-10-04 13:32:21 -07:00
Matt Reiferson
6af036a659 go.tools/vcs: allow compilation with go 1.0
It would be nice to be able to use this package
as a dependency (or other go utilities in the
ecosystem that depend on this package) in
environments which have not (or cannot) for
whatever reason upgraded to newer versions of
golang.

R=golang-dev, adg
CC=golang-dev
https://golang.org/cl/14283043
2013-10-04 11:46:57 +10:00
Andrew Gerrand
c8494e30f9 go.tools/godoc/redirect: remove redundant redirect rules
R=golang-dev, r
CC=golang-dev
https://golang.org/cl/14365043
2013-10-04 09:49:25 +10:00
Andrew Gerrand
0ccb6234c3 undo CL 14368043 / 7750fc1a6bd2
Not the right approach.

««« original CL description
go.tools/godoc: reverse reversed redirects

Make godoc work again for go spec and memory model doc.

TBR=rsc
CC=golang-dev
https://golang.org/cl/14368043
»»»

R=gri
CC=golang-dev
https://golang.org/cl/14370043
2013-10-04 09:48:07 +10:00
Rob Pike
51613a10d7 go.tools/cmd/cover: sort the file names in the output presentation
Present the files in lexical order so the output is reproducible
and easier to navigate. Do a little type rearrangement to simplify
things while we're there.

R=adg
CC=golang-dev
https://golang.org/cl/14357043
2013-10-03 16:37:34 -07:00
Robert Griesemer
40ede1040a go.tools/godoc: reverse reversed redirects
Make godoc work again for go spec and memory model doc.

TBR=rsc
CC=golang-dev
https://golang.org/cl/14368043
2013-10-03 16:36:34 -07:00
Russ Cox
5785dc19d7 godoc: redirect bogus /doc/spec links to /ref/spec
It was not enough to make /ref/spec work (which it now does),
because some of the docs on golang.org (in particular golang.org/doc)
are pulled from tip, and tip links to /doc/spec now.
Make those "too new" links work by redirecting /doc/spec
back to /ref/spec for now.

TBR=adg
CC=golang-dev
https://golang.org/cl/14348043
2013-10-03 13:41:38 -04:00
Russ Cox
c11b695c55 go.tools/godoc: remove Go 1.2 redirects
They are breaking golang.org
(try loading golang.org/ref/spec).

TBR=adg
CC=golang-dev
https://golang.org/cl/14165044
2013-10-03 13:16:17 -04:00
Andrew Gerrand
dcad628c68 go.tools/cmd/blog: handle "/blog/" redirect properly
The redirect.PrefixHandler redirects "/foo/" to "/foo", which is what
we want in most cases ("/cl/", "/change/", etc) but not here.
So wrap it with a handler that handles "/blog/" explictly.

R=dsymonds
CC=golang-dev
https://golang.org/cl/14326043
2013-10-03 18:10:57 +10:00
Andrew Gerrand
228e3cbbaa go.tools/blog: remove playground package import
This is the responsibility of the godoc or blog binary,
not the blog package.

R=golang-dev, dsymonds
CC=golang-dev
https://golang.org/cl/14323043
2013-10-03 15:07:29 +10:00
Andrew Gerrand
3a3a765782 go.tools/cmd/godoc: fix app engine version; update build script and readme
R=golang-dev, dsymonds, bradfitz
CC=golang-dev
https://golang.org/cl/12897045
2013-10-03 14:29:16 +10:00
Russ Cox
1d95d02fef go.tools/cmd/godoc: point at doc.ToHTML documentation for formatting rules
Fixes golang/go#5429.

R=golang-dev, r
CC=golang-dev
https://golang.org/cl/14292043
2013-10-02 22:08:24 -04:00
Robert Griesemer
b9b3bed16e go.tools/go/types: fix build (gc export format changed)
Revision f280b8a485fd of the std library changed the
gc export format: anonymous fields may be qualified
with a package.

R=rsc
TBR=rsc
CC=golang-dev
https://golang.org/cl/14312043
2013-10-02 16:53:34 -07:00
Chris Manghane
63365376db go.tools/dashboard: Don't keep unversioned directories in gcc copy.
`svn update` would fail if the updated files were in the gcc/libgo or gcc/go/gofrontend because unrevisioned versions of those files had been inserted in the last build of gcc.

R=adg, adg
CC=golang-dev
https://golang.org/cl/14299043
2013-10-02 15:56:27 -07:00
Chris Manghane
691b055ea6 go.tools/dashboard: Make sure links to commits and logs are dashboard specific.
R=adg
CC=golang-dev
https://golang.org/cl/14297043
2013-10-02 15:55:44 -07:00
Andrew Gerrand
401293d22c go.tools/godoc: provide an explicit mux to register redirects
R=golang-dev, dsymonds
CC=golang-dev
https://golang.org/cl/14199043
2013-10-02 13:13:34 +10:00
Robert Griesemer
a32c2633d0 go.tools/go/types: complete checking of append built-in
R=adonovan
CC=golang-dev
https://golang.org/cl/14238043
2013-10-01 18:14:15 -07:00
Caine Tighe
d7d04a24e8 present/code.go: remove residual file from an hg merge.
R=adg
CC=golang-dev
https://golang.org/cl/14043043
2013-10-02 11:02:33 +10:00
Alan Donovan
2bd0ec31c0 go.tools/oracle: fix minor but confusing bug in test driver.
Since rev 4c5f46cc7b9d, error messages no longer contain
"file:line:col: " prefixes, so applying stripLocation to them
is incorrect.

Also: add rationale comment to callgraph2.go test.

R=crawshaw
CC=golang-dev
https://golang.org/cl/13888044
2013-10-01 10:17:26 -04:00
Alan Donovan
ae060fe849 go.tools/pointer: make os.Args point to something.
Since the Go runtime treats it specially, so must the pointer analysis.

Details:
- Combine object.{val,typ} fields into 'data interface{}'.
  It may now hold a string, describing an instrinsically
  allocated object such as the command-line args.
- extend Label accordingly; add Label.ReflectType() accessor.

Also: document pointer analysis algorithm classification.

R=crawshaw
CC=golang-dev
https://golang.org/cl/14156043
2013-10-01 09:46:33 -04:00
Andrew Gerrand
d20f86cc8e go.tools/godoc: move redirect helpers to new package
Update golang/go#6512

R=golang-dev, dsymonds
CC=golang-dev
https://golang.org/cl/14193043
2013-10-01 16:32:13 +10:00
Robert Griesemer
35e395da09 go.tools/go/types: more flexible error checking
- permit ERROR markers to be in full or line comments
- don't require ""s in /* ERROR "foo" */
- enable more std tests
- some minor cleanups

R=adonovan
CC=golang-dev
https://golang.org/cl/14169044
2013-09-30 21:47:05 -07:00
Andrew Gerrand
f8e922be8e go.tools/godoc/static: make this the canonical source for playground JS
R=golang-dev, dsymonds
CC=golang-dev
https://golang.org/cl/14184043
2013-10-01 12:11:47 +10:00
Andrew Gerrand
04d74c081e go.tools: sync play.js from go.talks
R=golang-dev, dsymonds
CC=golang-dev
https://golang.org/cl/14177043
2013-10-01 11:20:35 +10:00
Andrew Gerrand
c635598ddf go.tools: sync play.js with go.talks
R=golang-dev
CC=golang-dev
https://golang.org/cl/14167044
2013-10-01 10:43:07 +10:00
Robert Griesemer
c92471fb85 go.tools/go/types: improved error messages for invalid labels
In general, if a break or continue label is not found, we don't
know if a correspondingly named label was not declared, was declared
but is not visible, or will be declared (and won't be visible).
Complain about "invalid" rather than "not declared" label.

Added more tests.

R=adonovan
CC=golang-dev
https://golang.org/cl/14149043
2013-09-30 14:03:33 -07:00
Robert Griesemer
49904d9a2c go.tools/cmd/gotype: use go/types identifier resolution
R=adonovan
CC=golang-dev
https://golang.org/cl/14146043
2013-09-30 12:59:02 -07:00
Robert Griesemer
3daa579643 go.tools/go/types: implement label checks
R=adonovan
CC=golang-dev
https://golang.org/cl/14036046
2013-09-30 11:05:30 -07:00
Alan Donovan
06c4192423 go.tools/pointer: minor API simplifications.
Details:
- Warnings are reported as values in Result, not a callback in Config.
- remove TODO to eliminate Print callback.  It's better than the alternative.
- remove unused Config.root field.
- hang Result off analysis object (impl. detail)
- reword TODO.

R=crawshaw
CC=golang-dev
https://golang.org/cl/14128043
2013-09-30 12:39:54 -04:00
Robert Griesemer
0730d79f0f go.tools/go/types: check unlabeled break, continue statements
This CL temporarily removes some preliminary label checks.
They will be implemented completely in a subsequent CL.

R=adonovan
CC=golang-dev
https://golang.org/cl/14055043
2013-09-27 13:43:11 -07:00
Robert Griesemer
27b698bc2a go.tools/go/types: x.f is addressable if x is addressable or x.f contains an indirection
Fixes golang/go#6487.

R=adonovan
CC=golang-dev
https://golang.org/cl/14047043
2013-09-27 09:33:00 -07:00
Alan Donovan
5b55a71008 go.tools/pointer: strength reduction during constraint generation.
Motivation: simple constraints---copy and addr---are more
amenable to pre-solver optimizations (forthcoming) than
complex constraints: load, store, and all others.

In code such as the following:

         t0 = new struct { x, y int }
         t1 = &t0.y
         t2 = *t1

there's no need for the full generality of a (complex)
load constraint for t2=*t1 since t1 can only point to t0.y.
All we need is a (simple) copy constraint t2 = (t0.y)
where (t0.y) is the object node label for that field.

For all "addressable" SSA instructions, we tabulate
whether their points-to set is necessarily a singleton.  For
some (e.g. Alloc, MakeSlice, etc) this is always true by
design.  For others (e.g. FieldAddr) it depends on their
operands.

We exploit this information when generating constraints:
all load-form and store-form constraints are reduced to copy
constraints if the pointer's PTS is a singleton.
Similarly all FieldAddr (y=&x.f) and IndexAddr (y=&x[0])
constraints are reduced to offset addition, for singleton
operands.

Here's the constraint mix when running on the oracle itself.
The total number of constraints is unchanged but the fraction
that are complex has gone down to 21% from 53%.

                before    after
--simple--
 addr		20682     46949
 copy        	61454     91211
--complex--
 offsetAddr  	41621     15325
 load        	18769     12925
 store       	30758     6908
 invoke      	758       760
 typeAssert  	1688      1689
total           175832    175869

Also:
- Add Pointer.Context() for local variables,
  since we now plumb cgnodes throughout. Nice.
- Refactor all load-form (load, receive, lookup) and
  store-form (Store, send, MapUpdate) constraints to use
  genLoad and genStore.
- Log counts of constraints by type.
- valNodes split into localval and globalval maps;
  localval is purged after each function.
- analogous maps localobj[v] and globalobj[v] hold sole label
  for pts(v), if singleton.
- fnObj map subsumed by globalobj.
- make{Function/Global/Constant} inlined into objectValue.
  Much cleaner.

R=crawshaw
CC=golang-dev
https://golang.org/cl/13979043
2013-09-27 11:33:01 -04:00
Robert Griesemer
ca3d62b66d go.tools/go/types: fix incorrect argument to fmt.Printf
(found by r using the vet tool)

R=adonovan
CC=golang-dev
https://golang.org/cl/14013043
2013-09-26 20:34:35 -07:00
Andrew Gerrand
0ebdd2c316 go.tools/cmd/html2article: move command from go.blog repository
R=golang-dev, r
CC=golang-dev
https://golang.org/cl/14009043
2013-09-27 10:40:53 +10:00
Andrew Gerrand
88be67fd25 go.tools/present: add -edit and -numbers flags to .code/.play
Also update style.css to hide outline of editable text areas and apply
correct styles to line numbers in non-playground snippets.

R=golang-dev, r
CC=golang-dev
https://golang.org/cl/13946043
2013-09-27 09:46:08 +10:00
Russ Cox
577fe73c91 go.tools/go/types: fix build for Go 1.1 users
Fixes golang/go#6485.

R=gri
CC=golang-dev
https://golang.org/cl/13901045
2013-09-26 12:45:44 -04:00
Alan Donovan
d7287a0289 go.tool.pointer: fix regression in pointer.cgraph.Root().
The previous CL made the assumption that Root is the first
node, which is false for programs that import "reflect".
Reverted to the previous way: an explicit root field.

Added regression test (callgraph2) via oracle.

R=crawshaw
TBR=crawshaw
CC=golang-dev
https://golang.org/cl/13967043
2013-09-26 09:31:39 -04:00
Nathan John Youngman
cb07517a77 go.tools/cover: validate flags with appropriate error messages
Fixes golang/go#6444.

R=golang-dev, r
CC=golang-dev
https://golang.org/cl/13956043
2013-09-26 18:11:03 +10:00
Alan Donovan
785cfaa938 go.tools/pointer: use new callgraph API.
Also: pointer.Analyze now returns a pointer.Result object,
containing the callgraph and the results of ssa.Value queries.

The oracle has been updated to use the new call and pointer APIs.

R=crawshaw, gri
CC=golang-dev
https://golang.org/cl/13915043
2013-09-25 17:17:42 -04:00
Alan Donovan
3a4c0462d8 go.tools/oracle: change -mode argument into subcommand.
e.g. "oracle callgraph <package>"

Also: simplified error handling.
Eliminated oracle.errorf because it prepends "file:line:col: "
to the error message so the main function can't safely prepend "Error: ".
The position wasn't interesting though: it was just -pos, more or less.

R=crawshaw, dominik.honnef, r
CC=golang-dev
https://golang.org/cl/13864044
2013-09-25 14:34:39 -04:00