Commit Graph

865 Commits

Author SHA1 Message Date
Ian Lance Taylor f84eaba4be go/loader: only run examples on 1.8
Tip introduces a new internal/poll package that breaks the expected
output.

Fixes golang/go#19150
Updates golang/go#19152

Change-Id: I5ff7e8a92afe4d25feb6365933062e931c9b435f
Reviewed-on: https://go-review.googlesource.com/37148
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Alan Donovan <adonovan@google.com>
2017-02-17 19:31:53 +00:00
David R. Jenni be0fcc31ae x/tools/go: gofmt -s -w
Change-Id: I978b981d95909f2590c1e1db05e8a95e232a67d5
Reviewed-on: https://go-review.googlesource.com/32794
Reviewed-by: Alan Donovan <adonovan@google.com>
2017-02-15 21:43:35 +00:00
Alan Donovan 6e7ee5a9ec x/tools: support Go 1.9 type aliases
For #18130.

Change-Id: Ice695602619dbbf851af970e790f07ff2ac2c141
Reviewed-on: https://go-review.googlesource.com/36623
Reviewed-by: Robert Griesemer <gri@golang.org>
2017-02-13 21:46:59 +00:00
haya14busa 8524ce5143 imports, go/ast/astutil: do not make grouped imports non-grouped when removing
import (
		"fmt"
		"strings"
	)

When deleting "fmt" import statement, code should be converted to the
following code.

	import (
		"strings"
	)

Instead of

	import "strings"

Diff becomes nicer by this change and it avoids that rewriting grouped
imports non-grouped may result in confusion comments.

Example:

	// comment 1
	import (
		"fmt"
	        // comment 2
		"strings"
	)

should be

	// comment 1
	import (
	        // comment 2
		"strings"
	)

instead of

	// comment 1
        // comment 2
	import "strings"

Fixes golang/go#18051

Change-Id: I3c07b70b657191eacf83c3197a965e587286c950
Reviewed-on: https://go-review.googlesource.com/36853
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
Reviewed-by: Robert Griesemer <gri@golang.org>
2017-02-13 18:56:44 +00:00
Alan Donovan b56ef30191 tools: updates for minimum Go version 1.6
Details:
- remove go1.5 "default version" labels on most files
- remove go1.6 labels on a few files
- go/loader: use conf.Cwd not "." in a couple places; update faulty
  test expectations.  (Not sure why this wasn't caught sooner.)
- go/ssa/interp: add 'mono' result to time.now intrinsic
- go/gcimporter15/bimport.go: make consistent with the version in gc
- go/ssa/interp: update test error message
- go/ssa: update a comment

The go/gcimporter15/bexport.go logic is stale and needs to be brought
up to date.  Needs a separate CL since it's tricky.

Tested on go1.6, go1.7, go1.8.

Change-Id: I841189d30e131b7c49a4e8690ea7c40b55041bae
Reviewed-on: https://go-review.googlesource.com/36540
Reviewed-by: Robert Griesemer <gri@golang.org>
2017-02-07 21:06:19 +00:00
Alan Donovan 1977f1cf7d go/ssa/interp: remove old TODO
Change-Id: Ia518721769048a5f7413eb90265cc27128cc9c10
Reviewed-on: https://go-review.googlesource.com/36537
Reviewed-by: Robert Griesemer <gri@golang.org>
2017-02-07 19:36:57 +00:00
Robert Griesemer b55a2aaa40 go/internal/gccgoimporter: add missing testfile (fix 1.9 build)
Change-Id: Icba8d6917dcac4b8f541fc11305981539a12924a
Reviewed-on: https://go-review.googlesource.com/36116
Run-TryBot: Robert Griesemer <gri@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2017-02-01 22:16:26 +00:00
Robert Griesemer fcfba28e23 go/internal/gccgoimporter: support for type aliases
This is essentially a copy of the changes in https://golang.org/cl/35268/
but with Go1.9 specific tests factored out into a separate file with build
tag.

For golang/go#18130.

Change-Id: I235693e1bc6145bb53bfd3b343647704c8e82e61
Reviewed-on: https://go-review.googlesource.com/35269
Run-TryBot: Robert Griesemer <gri@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Alan Donovan <adonovan@google.com>
2017-01-20 05:57:59 +00:00
Robert Griesemer de557280a1 go/gcimporter15: update import/export to handle type aliases
- bimport.go is a 1:1 copy of the respective version in the std
  library: $GOROOT/src/go/internal/gcimporter/bimport.go .

- bexport.go is mimicking the respective code in the cmd/compile.

- isAlias18/19.go are needed because types.TypeName.IsAlias does
  not exist before Go 1.9.

Tested against Go 1.6, 1.7, 1.8, 1.9 (dev.typealias branch).

For golang/go#18130.

Change-Id: Ic46c5850923fab2a35d4dc33850f2b0667c30398
Reviewed-on: https://go-review.googlesource.com/35104
Run-TryBot: Robert Griesemer <gri@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Alan Donovan <adonovan@google.com>
2017-01-11 20:35:34 +00:00
Samuel Tan dd79664177 go/internal/gccgoimporter: accept missed portions of v2 format
Same as https://go-review.googlesource.com/c/34371/ in the standard library.

Fixes #18301.

Change-Id: I132585e0f98c53437fdef44ac36af8f21d141a83
Reviewed-on: https://go-review.googlesource.com/34387
Run-TryBot: Robert Griesemer <gri@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-12-15 00:32:54 +00:00
Brad Fitzpatrick a888bfdffa go/loader: fix broken tests after context removal from testing package
Updates golang/go#11811
Updates golang/go#18199

Change-Id: I2ce4615653034563a64b9c126651d2a6ce2aef50
Reviewed-on: https://go-review.googlesource.com/34274
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
2016-12-10 02:42:22 +00:00
Alan Donovan 3d92dd6003 go/internal/gccgoimporter: handle conversions in exported const values
Same as https://go-review.googlesource.com/c/33412/ in the standard library.

Fixes #17981.

Change-Id: Iaf47872840a4456d824ed5d7b3eda205c043e4cf
Reviewed-on: https://go-review.googlesource.com/34110
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-12-07 20:12:13 +00:00
Rebecca Stambler 99be5a0b85 go/buildutil, cmd/guru: resolve symlinks in filenames through build.Context
Resolve symlinks in source directories (GOPATH, GOROOT, etc.) and source
files in order to find correct package. All I/O performed through
build.Context. Also add minor fix to guru unit tests in order to pass on
Windows.

Change-Id: Ie6134b9cd74eb7386e1d93603eb37c8e44b083b8
Reviewed-on: https://go-review.googlesource.com/33924
Reviewed-by: Alan Donovan <adonovan@google.com>
2016-12-06 21:45:43 +00:00
Rebecca Stambler ae1141fc8b Revert "go/buildutil: handle symlinks in filenames"
Reason: ContainingPackage should do all I/O through build.Context.

This reverts commit 3a9a2cbbc4.

Change-Id: I3897d8da5026ddc470989e3f239540286e89df4d
Reviewed-on: https://go-review.googlesource.com/33922
Reviewed-by: Alan Donovan <adonovan@google.com>
2016-12-05 22:44:39 +00:00
Rebecca Stambler 07e766bf81 Revert "go/buildutil, cmd/guru: fix tests for symlinks in guru and gorename to account for windows."
Reason: ContainingPackage must do all I/O through build.Context.

This reverts commit c945ee3be4.

Change-Id: I625410bc754ea2d150be097bf424de2be42acde4
Reviewed-on: https://go-review.googlesource.com/33921
Reviewed-by: Alan Donovan <adonovan@google.com>
2016-12-05 22:43:53 +00:00
Rebecca Stambler c945ee3be4 go/buildutil, cmd/guru: fix tests for symlinks in guru and gorename to account for windows
Restructure tests to account for possibility of being run on Windows
(which doesn't handle symlinks).

Change-Id: I428db26c9a1aad337d8972baa2b71468be3a2e58
Reviewed-on: https://go-review.googlesource.com/33920
Reviewed-by: Alan Donovan <adonovan@google.com>
2016-12-05 21:18:37 +00:00
Rebecca Stambler 3a9a2cbbc4 go/buildutil: handle symlinks in filenames
Resolve symlinks in source directories (GOPATH, GOROOT, etc.) and source
files in order to find correct package.

Fixes golang/go#16219

Change-Id: I6fae14908827d5ebac55dfe455eaf616f71f8767
Reviewed-on: https://go-review.googlesource.com/33919
Reviewed-by: Alan Donovan <adonovan@google.com>
2016-12-05 20:02:40 +00:00
Zac Bergquist 8462b1669f go/buildutil: fix doc reference
Fix reference to OverlayContext in the doc for
ParseOverlayArchive.

Change-Id: I0b1db478489764fa309cb2e2f788865ac7ff71bb
Reviewed-on: https://go-review.googlesource.com/33916
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-12-05 17:11:22 +00:00
Alan Donovan 34fe8ce027 go/gcexportdata: better error when reading exportdata directly from archive
Change-Id: Iaa6fe8a33bee852be4e2414c6db7ca5df17006b6
Reviewed-on: https://go-review.googlesource.com/33715
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-11-30 19:52:27 +00:00
Alan Donovan 6c803ab014 go/loader: resolve imports in "created" packages w.r.t. parent dir not cwd
Fixes golang/go#16580

Change-Id: Id891f40659257eac9dbb0d70dae17f725e911f9b
Reviewed-on: https://go-review.googlesource.com/33589
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-11-28 22:26:25 +00:00
Alan Donovan 89662b06bc go/ssa/interp: add several intrinsics for Darwin
Also: drop all pretense of support for platforms other than darwin and linux.
This package is just a test of go/ssa, not a portable interpreter, and these
are the only platforms to which I have easy access.

Builds on: freebsd darwin plan9 linux windows

Change-Id: I965abc67b1280d33e933b83607a4372d65e070cf
Reviewed-on: https://go-review.googlesource.com/33163
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-11-28 17:49:04 +00:00
Alan Donovan 167995c67f go/ssa: avoid no-arg println(), for gccgo compatibility
Change-Id: I5f789ae492ff0f0ad62d89e3ae762ece6c867d20
Reviewed-on: https://go-review.googlesource.com/33573
Reviewed-by: Alan Donovan <adonovan@google.com>
2016-11-23 22:44:20 +00:00
Alan Donovan 5e2ae75eb7 go/ssa/interp: add syscall.Readlink intrinsic, needed by os package
Change-Id: Ie408fd5ffb2be2d60773eb3fda91912887df0a7e
Reviewed-on: https://go-review.googlesource.com/33147
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-11-11 21:41:07 +00:00
Alan Donovan 22ba3f367c go/gcimporter15: pretend blank fields have same owner
The export data formats (text and binary) emitted by gc in Go 1.7 did
not record the package that "owns" each blank field, even though blank
is an unexported identifier.  Before, gcimporter would assume the
package of the export data file owns blank fields within it, even
blank fields reexported from another package.  As a result, identical
types would become nonidentical during reexporting.

For bug compatibility with gc, gcimporter now treats blank fields as
if they all belong to the same dummy package, avoiding spurious "can't
assign A to B" errors in tools based on go/types.

Change-Id: I0dbf71491a0ec0f376e9dc8a91efe0376c855a28
Reviewed-on: https://go-review.googlesource.com/33146
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-11-11 21:27:08 +00:00
Robert Griesemer a69656e0e2 go/gcimporter: update export data format version
We already are compatible with the latest format. Update version.

Tested against 1.6, 1.7, and tip.

Fixes golang/go#17734.

Change-Id: Ia167adf0ed1de371c348329513819fb9e8ca2628
Reviewed-on: https://go-review.googlesource.com/33113
Reviewed-by: Alan Donovan <adonovan@google.com>
2016-11-11 18:00:05 +00:00
Robert Griesemer c959b77b38 go/gcimporter15: update build tags and comments
We don't support Go1.5 anymore.

Tested with 1.6, 1.7, and tip.

For golang/go#17734.

Change-Id: I718c7996b99f9b98744346e119ee209b4709a070
Reviewed-on: https://go-review.googlesource.com/33111
Reviewed-by: Alan Donovan <adonovan@google.com>
2016-11-11 17:55:17 +00:00
Alan Donovan 5061f921c7 go/gccgoexportdata: correctly handle archive files containing string tables
If the name of an archive member is longer than 16 bytes, an ELF archive
file contains a string table of file names under the name "//", and this
member has no mode.  Skip such members.

+ Test.

Change-Id: Ib10db1cc42816c9002433be6176240e490678560
Reviewed-on: https://go-review.googlesource.com/32973
Reviewed-by: Ian Lance Taylor <iant@golang.org>
2016-11-09 21:28:38 +00:00
Alan Donovan 7ce0cddaad go/ssa: synthesize Go 1.8-compatible test main package
...to match the new interface between "go test" and the standard testing
package.

Rather than generate SSA code directly, which was tricky and fragile, we
now generate source just as "go test" does, type-check it, and build an
SSA package from it.  crawshaw suggested I do this in the very first
version of testmain.go, but at the time I believed it to be infeasible.

The testMainStartBodyHook mechanism has gone away; installations that
needed it can now achieve the same results more easily by overriding the
templates.

Tested with Go 1.6, 1.7 and 1.8.

Fixes golang/go#17722

Change-Id: I3ffd25f01157f6fb7a39acd18af46f17e9c07b99
Reviewed-on: https://go-review.googlesource.com/32888
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-11-08 18:33:05 +00:00
Samuel Tan 09079c88dc go/gccgoexportdata: plumb additional arguments to gccgo compiler
Allow extra arguments to be passed to the specified gccgo compiler
when it is called in GccgoInstallation.InitFromDriver. This allows
the call to gccgo to be adjusted depending on the build environment.

For example, some build environments require the
'no-canonical-prefixes' option to prevent gccgo from resolving
symlinks when generating relative prefixes.

Change-Id: I0ecf338ee7a3780f1f65b30e214e69c1698041bb
Reviewed-on: https://go-review.googlesource.com/32874
Reviewed-by: Alan Donovan <adonovan@google.com>
2016-11-07 23:39:01 +00:00
Robert Griesemer 46c63f3841 go/gcimporter15: revert user-visible changes related to aliases
Reason: Decision to back out current alias implementation.
For golang/go#16339 (comment).

Change-Id: Id2a394d78a8661c767bcc05370b81f79d9bfb714
Reviewed-on: https://go-review.googlesource.com/32756
Run-TryBot: Robert Griesemer <gri@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Chris Manghane <cmang@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
2016-11-05 01:00:22 +00:00
Alan Donovan 58ec10c513 go/ssa/interp: handle nil *hashmap cleanly
Change-Id: I2cb8eef79bc011b209b3df0b859bcddefd4c8337
Reviewed-on: https://go-review.googlesource.com/32818
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-11-04 21:49:12 +00:00
Alan Donovan 2e348630fd go/loader: fix fragile example test
Change-Id: Ib6313cdba54da8911b8a2ec9e1bc115c30ea6afe
Reviewed-on: https://go-review.googlesource.com/32817
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-11-04 21:44:43 +00:00
Alan Donovan 701d657347 tools: remove go1.8-tagged files
Change-Id: Ib52b85e1c981b6fca55c472120371a0cd37d2dc9
Reviewed-on: https://go-review.googlesource.com/32816
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-11-04 21:29:52 +00:00
Alan Donovan fe1fa38300 go/ssa: remove go1.8 tagged files
Change-Id: Iac37a0dba27459f0484aa4e286c21bb618116619
Reviewed-on: https://go-review.googlesource.com/32836
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-11-04 21:18:10 +00:00
Alan Donovan e2e4d7aa62 go/ast/astutil: revert support for Go 1.8 type aliases
This reverts commit 50193ec1c5.

Reason for revert: aliases will not be part of Go 1.8

Change-Id: Idb3b74243eeb8dbeb2a2f4bd69a248c1dafa5348
Reviewed-on: https://go-review.googlesource.com/32835
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-11-04 21:17:24 +00:00
Alan Donovan 50193ec1c5 go/ast/astutil: support Go 1.8 type aliases
Change-Id: I67d561755c1c06c0438f2b42e6a13efb024558c4
Reviewed-on: https://go-review.googlesource.com/32732
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-11-03 21:54:53 +00:00
Robert Griesemer f08d70c2ed go/gcimporter15: support export/import of invalid aliases
+ test

Tested on 1.6, 1.7, and 1.8.

Fixes golang/go#17731.

Change-Id: I06dff4a72ff08ed5e8ae1d23a1e65fe719c03180
Reviewed-on: https://go-review.googlesource.com/32581
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
Reviewed-by: Alan Donovan <adonovan@google.com>
2016-11-03 15:57:31 +00:00
Robert Griesemer c3ce94f8a8 go/gcimporter15: update importer test (fix build)
The -newexport flag is on by default for 1.7,
no need to special-case it anymore.

Tested against 1.6, 1.7, and 1.8.

Change-Id: I9c4a31f80d1309564e2a01514fca4b17e4378b9c
Reviewed-on: https://go-review.googlesource.com/32582
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
2016-11-02 23:36:01 +00:00
Robert Griesemer d54c98191e go/loader: fix ExampleConfig_Import (fix build)
TBR=adonovan

Tested against 1.6, 1.7, and 1.8.

Change-Id: Ifd8e02a83e7b92c00a746f10475ab725801199e2
Reviewed-on: https://go-review.googlesource.com/32638
Run-TryBot: Robert Griesemer <gri@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
2016-11-02 23:31:09 +00:00
Matthew Dempsky d4397e8931 go/gcimporter15: backport double-export fix for aliased objects
Backport of https://golang.org/cl/32575.

Change-Id: Ic4b0794ee440b7ac6275f0ef7dacda20de4fdad0
Reviewed-on: https://go-review.googlesource.com/32577
Reviewed-by: Alan Donovan <adonovan@google.com>
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-11-02 20:38:00 +00:00
Robert Griesemer a829b5068d go/gcimporter15: remove support for Go1.5
Change-Id: I183090131a675237be42cc005719554399704f8d
Reviewed-on: https://go-review.googlesource.com/32541
Reviewed-by: Alan Donovan <adonovan@google.com>
2016-11-02 18:31:16 +00:00
Robert Griesemer a4fe4f6140 go/gcimporter15: implement support for exporting aliases
Tested with 1.6, 1.7, 1.8.

Change-Id: Ib0f751484c360b02aa34c993ce795cb94656705f
Reviewed-on: https://go-review.googlesource.com/32540
Reviewed-by: Alan Donovan <adonovan@google.com>
2016-11-02 18:30:30 +00:00
Robert Griesemer 5b3db00587 go/gcimporter15: implement support for importing aliases
- backport of changes made to std lib:
  https://go-review.googlesource.com/32350/
  https://go-review.googlesource.com/32538

- factored out newAlias for non-Go1.8 builds

- tested against 1.6, 1.7, 1.8

Change-Id: I538b2d4a0f0c93c517a7aaa3b1562aa3afd154dd
Reviewed-on: https://go-review.googlesource.com/32470
Reviewed-by: Alan Donovan <adonovan@google.com>
2016-11-02 17:35:51 +00:00
Alan Donovan 4549178751 x/tools: clone some files in preparation for alias changes
This CL only copies files and updates build tags.
Substantive changes will come in follow-ups.
This is a workaround for git's lack of rename/copy tracking.

Tested with go1.6, go1.7, and tip (go1.8).

Change-Id: Id88a05273fb963586b228d5e5dfacab32133a960
Reviewed-on: https://go-review.googlesource.com/32630
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-11-02 16:57:37 +00:00
Alan Donovan b814a3b030 go/internal/gccgoimporter: use 0 not io.SeekStart for Go 1.6 compatibility.
Change-Id: I396e221217c7fac5e7a9d66cbd97ef51782b0dd8
Reviewed-on: https://go-review.googlesource.com/32298
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-10-28 18:18:45 +00:00
Alan Donovan f24fea3cd4 go/gcexportdata: suppress example_test.go on Go 1.6
because its export data doesn't contain file position information.

Change-Id: Ia3ab54ae8a493666b9ad63577aa8fad513385052
Reviewed-on: https://go-review.googlesource.com/32299
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-10-28 18:18:30 +00:00
Alan Donovan 6d7cee0134 go/gcimporter15: read v3 export data not containing type aliases
This is a short-term stop-gap to keep the builders happy.

Change-Id: I87171c20bf44f36fd2c4d7213211217de6110fdd
Reviewed-on: https://go-review.googlesource.com/32293
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-10-28 16:05:56 +00:00
Alan Donovan 0db92ca630 go/gcexportdata: make example portable to MS Windows, 2nd attempt
(The first was go-review.googlesource.com/c/31813)

Fixes issue golang/go#17565

Change-Id: I61c124e041af689913aedebdde654197c5526228
Reviewed-on: https://go-review.googlesource.com/32034
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-10-25 20:54:37 +00:00
Alan Donovan 17d0fe57ec go/gccgoexportdata: lost edits from review of CL 31822
Change-Id: I4d1eb36c2da5c7ad51989a1c9ab09b03019fd8f0
Reviewed-on: https://go-review.googlesource.com/31971
Reviewed-by: Alan Donovan <adonovan@google.com>
2016-10-25 15:10:52 +00:00
Alan Donovan 5e7fa1cbaa go/gccgoexporter: an API for parsing gccgo export data
This package is provided as a stop-gap until gccgo uses the same export
data format as gc.  Once that occurs, this package will be deprecated
and eventually deleted.  The API is similar to (a subset of) gcexportdata.

Change-Id: I3398dbb8eab508a24d12036bbadaa60c2c1e77b3
Reviewed-on: https://go-review.googlesource.com/31822
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-10-25 15:07:10 +00:00
Alan Donovan 20055e012d go/internal/gccgoimporter: fork go/internal/gccgoimporter
The standard go/internal/gccgoimporter package is essentially unusable
behind the go/importer.For API, so this change makes a copy of it in
x/tools.  A follow-up change will expose a small but usable API to it.

Change-Id: Ica5092267ecafb78e1d983c86aa46e4e0bef02d5
Reviewed-on: https://go-review.googlesource.com/31854
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-10-24 21:32:26 +00:00
Alan Donovan b5ed9db83f go/gcexportdata: support old export data (again), needed by AE1.6
+ test

Change-Id: I0842795ece634e4441b17a10009d26bfc2a8481a
Reviewed-on: https://go-review.googlesource.com/31818
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-10-24 17:37:43 +00:00
Alan Donovan 0f7f54c9d9 go/gcexportdata: make test portable to MS Windows
Fixes issue #17565

Change-Id: I67d2e11acae873ac47694a73ced40d2db38c0fc0
Reviewed-on: https://go-review.googlesource.com/31813
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-10-24 16:32:43 +00:00
Alan Donovan 1a954d519b go/gcexportdata: a new simpler API for the deprecated go/gcimporter15
Fixes golang/go#15651

Change-Id: I7dc7ba731a22c677e3c01bf13e91ecfff9e46765
Reviewed-on: https://go-review.googlesource.com/30612
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-10-19 20:22:14 +00:00
Alan Donovan 8e53eb937b go/ssa: support custom TestMain functions in test packages
Supporting user-defined TestMain functions requires that we generate a
"testmain" package for each testable package, rather than a single one
for the entire program.  This entails these API changes:

1. (*ssa.Program).{CreateTestMainPackage,FindTests} both now
   accept only a single package.  Existing clients that pass them
   multiple packages must call them from a loop.

2. (*ssa.Program).FindTests returns an additional result, the the
   optional TestMain *ssa.Function.  Existing clients may discard it.

Also:
- Test the new logic using the SSA interpreter
- add ssautil.MainPackages helper
- callgraph: allow multiple main packages, and analyze them all
- ssadump -run: allow multiple main/test packages, and run each in a new interpreter
- minor simplifications to some callers (e.g. guru)

Fixes golang/go#9553

Change-Id: Ia7de9bd27448fb08b8d172ba5cdbcf37a762b7a0
Reviewed-on: https://go-review.googlesource.com/25102
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-10-19 17:50:59 +00:00
Rhys Hiltner af95c112ad go/ast/astutil: do not remove imports in AddNamedImport
When adding imports to an existing import declaration, ensure that
the target declaration will be printed with parentheses. This allows
all of the imported packages to be printed, not just the first one.

Fixes golang/go#17212

Change-Id: Ie5de5ec9bca6169650336ee2ea98334817e64e48
Reviewed-on: https://go-review.googlesource.com/29688
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-10-18 18:48:44 +00:00
Alan Donovan 2f93937767 x/tools: s/oracle/guru/g in various comments
Change-Id: Ie0da80db4f58d9f6e7d9675c89f106d1cd01710a
Reviewed-on: https://go-review.googlesource.com/30983
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-10-13 18:54:04 +00:00
Russ Cox b44548ae6a go/vcs: accept plain file for .vcs (instead of directory)
Sometimes .git is a plain file; maybe others will follow.

Fixes golang/go#10322.

Change-Id: Id57424998c207080c3ed5826b1e5e091fa26aad5
Reviewed-on: https://go-review.googlesource.com/21430
Run-TryBot: Russ Cox <rsc@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-10-13 13:57:49 +00:00
Alan Donovan 992f6f9bcc go/loader: fix CreateFromFilenames example
The "sort" package is no longer quite as low-level as it once was.

Change-Id: Ic62d780841ef1172f65d4c00ec500994f94cb4b7
Reviewed-on: https://go-review.googlesource.com/30931
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-10-12 15:34:52 +00:00
David R. Jenni f4e1751b91 go/ast/astutil: handle documentation of imports in DeleteNamedImport.
If the parens of an ast.GenDecl are dropped, move the documentation
of the ImportSpec above the import statement, otherwise the the
code is invalid.

Fixes golang/go#15432.

Change-Id: I715750b8f528380b96a6bc8b5f216043937976c2
Reviewed-on: https://go-review.googlesource.com/22415
Run-TryBot: Russ Cox <rsc@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-10-12 15:09:30 +00:00
Robert Griesemer b5358b5fee go/gcimporter15: update exportdata.go to match latest version from std lib
For golang/go#17281.

Change-Id: I7bed233368939719672eb331cca1d6aef01e807d
Reviewed-on: https://go-review.googlesource.com/30591
Reviewed-by: Alan Donovan <adonovan@google.com>
2016-10-06 19:19:18 +00:00
Alan Donovan 03663480fa go/buildutil: ExpandPatterns: ignore a trailing slash in a pattern
Previously, a trailing slash would cause "foo/" to be treated as the
name of a package, with comical results.

Fixed golang/go#14584

Change-Id: I660f8a079bbd63d3645812e516a9264c8e080e61
Reviewed-on: https://go-review.googlesource.com/30452
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-10-05 19:34:25 +00:00
Rhys Hiltner c2ef61f450 go/ast/astutil: fix loop logic in AddNamedImport
When merging import declarations into a single block, AddNamedImport
modifies the list of declarations in the provided file while
iterating over the list. Take care to adjust the index into the list
so as to not skip entries or fall off the end.

Fixes golang/go#17213

Change-Id: I807246f762c965ea1fc51eb57759f6088336db86
Reviewed-on: https://go-review.googlesource.com/29681
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-09-24 00:48:36 +00:00
Alan Donovan 86ad1193da go/ssa/interp: turn {strings,bytes}.init into no-ops
...to avoid executing the supportAVX2 assembly function.

Also, combine all no-op intrinsics into a single function.

Change-Id: Ic65a80d3a6df52c3850c34406f034781057a0991
Reviewed-on: https://go-review.googlesource.com/28711
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-09-07 20:36:55 +00:00
Robert Griesemer 9deed8c6c1 go/gcimporter15: update to recognize export format version 2
Port of https://go-review.googlesource.com/#/c/27999/.

Change-Id: I71c4553e925fcf943ecafdef307591f63136d432
Reviewed-on: https://go-review.googlesource.com/28001
Reviewed-by: Alan Donovan <adonovan@google.com>
2016-08-29 18:38:39 +00:00
Robert Griesemer a832035fe5 go/gcimporter15: update to match latest changes to cmd/compiler exporter
Backport of https://go-review.googlesource.com/27814 changes to
bexport.go.

With this, the gcimporter15 is again up-to-date and in sync with both
the compiler's export code, and the compiler's and std lib gcimporter's
import code.

Change-Id: I8e229660eb78ddc1506b7b96a89c81ff083e0412
Reviewed-on: https://go-review.googlesource.com/27914
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
2016-08-26 22:16:59 +00:00
Robert Griesemer e545a4ce60 go/gcimporter15: update to match latest changes to std lib gcimporter
Mostly a backport of https://go-review.googlesource.com/27816.
Includes an update to TestIssue13898 to match the std lib gcimporter
test.

Change-Id: I790123a49deb2d52f19e51c84bbc7ee74c99156e
Reviewed-on: https://go-review.googlesource.com/27913
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
2016-08-26 22:16:48 +00:00
Robert Griesemer b2560d12f6 go/gcimporter15: backport compiler exporter fix for golang/go#15514
Code from https://go-review.googlesource.com/#/c/27639/ .

Remain backward-compatible with possibly installed packages
that remain in Go1.6 format.

Change-Id: If424e7a881c81bbfcacf38c0946542793c406abd
Reviewed-on: https://go-review.googlesource.com/27640
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
2016-08-23 23:43:11 +00:00
Robert Griesemer 2bbdb4568e go/gcimporter15: update to match std lib gcimporter (fix build)
TBR=adonovan

Change-Id: Ib2464def48932e0d0fc24f67c76a10e8918acb9d
Reviewed-on: https://go-review.googlesource.com/27235
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-08-23 00:37:51 +00:00
Robert Griesemer 1cf0a337cd go/gcimporter15: don't run 1.7-specific test under 1.8 (fix build)
TBR=adonovan

Change-Id: I310ff6e51d681b2e5c8288e73870ce7d68e45518
Reviewed-on: https://go-review.googlesource.com/27208
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-08-17 05:10:56 +00:00
David R. Jenni 491cbb1158 go/ast/astutil: add tests for UsesImport.
Change-Id: I05e9897b2ac858e1c3cc0d54f9da74e34f72f9e2
Reviewed-on: https://go-review.googlesource.com/27002
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-08-16 21:44:40 +00:00
Tim Henderson 1634796cc3 go/ssa: fix stale docs for CreateProgram and Build
Both functions had documentation referring to BuildAll when the
function is now called Build.

Change-Id: I59cce397a0a72bf7fa36f9798e2b07bb6b1da726
Reviewed-on: https://go-review.googlesource.com/25084
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-07-20 18:52:54 +00:00
Robert Griesemer c550f66b0b go/gcimporter15: backport of https://golang.org/cl/23606/
Change-Id: I24a6a844e179dd1b69c90c5834d7998cb963c543
Reviewed-on: https://go-review.googlesource.com/24974
Reviewed-by: Alan Donovan <adonovan@google.com>
2016-07-15 21:35:32 +00:00
Robert Griesemer 3f933d433a go/gcimporter15: backport of https://golang.org/cl/23012/
Fixes golang/go#16365.

Change-Id: I8e33fbd9f1bf1b4b5d85a5c972ad43414cea57cb
Reviewed-on: https://go-review.googlesource.com/24973
Reviewed-by: Alan Donovan <adonovan@google.com>
2016-07-15 21:35:22 +00:00
Robert Griesemer 6c3528d5c1 go/gcimporter15: backport https://golang.org/cl/24648/
Change-Id: Id85050b236f5da2c705c45163c90fef1a396e8f8
Reviewed-on: https://go-review.googlesource.com/24700
Reviewed-by: Alan Donovan <adonovan@google.com>
2016-07-01 19:20:20 +00:00
Alan Donovan 0d2bde8553 go/ast/astutil: describe fewer CallExprs as "conversions"
Only unary CallExprs with no ellipsis, f(x), are ambiguous.

Change-Id: If4f17445ab0725dee916992db133eac5536133a7
Reviewed-on: https://go-review.googlesource.com/24552
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-06-30 18:40:56 +00:00
Monty Taylor 6d483ee832 vcs: Add support for git.openstack.org
Go is being proposed as an officially supported language for elements of
OpenStack:

  https://review.openstack.org/#/c/312267/

As such, repos that exist in OpenStack's git infrastructure
are likely to become places from which people might want to go get
things. Allow optional .git suffixes to allow writing code that
depends on git.openstack.org repos that will work with older go versions
while we wait for this support to roll out.

Change-Id: I1f7be6b7aae63f9c554dbcdbfa46855bcff321df
Reviewed-on: https://go-review.googlesource.com/23362
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-05-24 15:53:25 +00:00
Robert Griesemer fbb6674a74 go/gcimporter15: match recent changes to export format
This is a copy&paste fix of the changes in golang.org/cl/22839.

Fixes https://github.com/golang/lint/issues/207 .

Change-Id: I2c4850395c8aa330ea27ad629b21ac21b973ef75
Reviewed-on: https://go-review.googlesource.com/22963
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
Reviewed-by: Alan Donovan <adonovan@google.com>
2016-05-10 02:37:36 +00:00
Alan Donovan 3f1f7eeff1 go/gcimporter15: set Pos attribute of decoded types.Objects
BImportData now requires a token.FileSet.
Column numbers are not exported, and are always reported as 1.
Line numbers greater than the limit (currently 64K) are reported as 1.

+ Test that file/line info is correctly preserved for the entire
  standard library.

Change-Id: I80cf370685320240dfb262d36fafd6cdf8569bfb
Reviewed-on: https://go-review.googlesource.com/22788
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-05-09 13:28:09 +00:00
Robert Griesemer 8dab6f1129 go/gcimporter15: adopt changes from golang.org/cl/22714
Fixes x/tools build.

Change-Id: Ifd958ff1293ec2c4fd971813ae7b199b5d8244fe
Reviewed-on: https://go-review.googlesource.com/22721
Reviewed-by: Alan Donovan <adonovan@google.com>
2016-05-03 16:15:14 +00:00
Alan Donovan 686d0ad5b8 go/ssa: reduce set of expected indirect imports
...now that gc's export data records fewer dependencies.

Change-Id: Ie0f68f1f7b0825f6d2c100dfe189be017383db60
Reviewed-on: https://go-review.googlesource.com/22584
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-04-28 21:42:55 +00:00
Robert Griesemer c5c16cf68a go/gcimporter: update importer to match latest gc export data changes
Adjustments taken from https://golang.org/cl/22580.

Change-Id: Ic88137b410767bd17e3d6142cec2b5a112df56be
Reviewed-on: https://go-review.googlesource.com/22582
Reviewed-by: Alan Donovan <adonovan@google.com>
2016-04-28 21:04:03 +00:00
Alan Donovan 56005b4126 go/ssa/interp: add intrinsic for runtime.NumGoroutine
...which is used by $GOROOT/test/goprint.go.

Change-Id: I4626b8fae3f87d9c8dd8cdcd8c05036955a36262
Reviewed-on: https://go-review.googlesource.com/22560
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-04-28 18:16:55 +00:00
Robert Griesemer 4e3242e000 go/gcimporter: cut off any gc-specific parameter numbering
Matching pending CL https://golang.org/cl/22441/.

Change-Id: I96fab1da7abfeb8f22ce680183649dfa4b84d461
Reviewed-on: https://go-review.googlesource.com/22442
Reviewed-by: Alan Donovan <adonovan@google.com>
2016-04-25 22:17:50 +00:00
Robert Griesemer 487c81ee33 go/gcimporter15: match https://golang.org/cl/22385
Don't export position info for now. Enabled/disabled with a flag.
The importer recognizes the chosen format automatically.

Change-Id: I055818eb9dba50cc97f40eb92220258a1ddbfbec
Reviewed-on: https://go-review.googlesource.com/22427
Reviewed-by: Alan Donovan <adonovan@google.com>
2016-04-25 20:08:02 +00:00
Robert Griesemer 764c4ccf44 go/gcimporter15: match https://golang.org/cl/22096/
Read and write position info.

Change-Id: Ibe4a914ff51911bbda656b08f1397132e495ab8a
Reviewed-on: https://go-review.googlesource.com/22098
Reviewed-by: Alan Donovan <adonovan@google.com>
2016-04-15 16:49:27 +00:00
Robert Griesemer 5da1e91fb2 go/gcimporter15: match https://golang.org/cl/21939/
Plus cleanups from https://golang.org/cl/21963/.

Change-Id: Ifb216081581950f38d73bcb5f22e2ca7acd64f01
Reviewed-on: https://go-review.googlesource.com/21965
Reviewed-by: Alan Donovan <adonovan@google.com>
2016-04-13 17:25:25 +00:00
Dominik Honnef 446a18e709 go/buildutil, cmd/guru: extract overlay context into buildutil
This extracts the overlay context and archive parsing from guru into
buildutil.

At least one tool (gogetdoc) has a vendored copy of this code already,
and more tools implementing the same functionality will follow.

The new code in buildutil is an almost identical copy of the code in
guru (names aside), except for the following changes:

- Instead of reading into a bytes.Buffer, we read directly into a []byte
  of appropriate size

- sameFile first attempts a simple comparison of path.Clean'ed paths.

Change-Id: I97cd978ccc10722e3648e5e10625fa7f1407f202
Reviewed-on: https://go-review.googlesource.com/21805
Reviewed-by: Alan Donovan <adonovan@google.com>
2016-04-13 01:11:48 +00:00
Robert Griesemer b9ac36caf8 go/gcimporter15: match https://golang.org/cl/21896/
Change-Id: I1cd7a77617658c057c863bd311470f1f22062aee
Reviewed-on: https://go-review.googlesource.com/21900
Reviewed-by: Alan Donovan <adonovan@google.com>
2016-04-12 19:34:05 +00:00
Alan Donovan 51487f711d x/tools: remove remaining files tagged for Go 1.4
(accidentally omitted from https://go-review.googlesource.com/20810)

Change-Id: Ib6ee4b2e43b6f32c5c0c031910087cc39d5c5d14
Reviewed-on: https://go-review.googlesource.com/21862
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-04-12 18:58:24 +00:00
Dmitri Shuralyov d601baae9c go/vcs: apply test style improvements from cmd/go
Apply style improvements to TestFromDir from golang/go@b6cd6d7d32,
in order to keep them in sync.

Check for error when creating a directory, its successful existence is a
precondition for the test to run.

Helps golang/go#11490.

Change-Id: I87054114c84aead96977f603ca3bd9eccfcfbd5e
Reviewed-on: https://go-review.googlesource.com/21795
Reviewed-by: Alex Brainman <alex.brainman@gmail.com>
2016-04-12 07:00:54 +00:00
Dmitri Shuralyov 13c24a6d6a go/vcs: report correct directory for 'no version control'
Apply golang/go@b99fdb2a11.

Updates golang/go#6175.
Helps golang/go#11490.

Change-Id: I897bac1bac94b53e950cb5cf5e572d25a7c5996b
Reviewed-on: https://go-review.googlesource.com/21342
Reviewed-by: Andrew Gerrand <adg@golang.org>
2016-04-08 03:23:12 +00:00
Robert Griesemer 83f918d66b go/gcimporter15: update gcexporter to match gc export format
Change-Id: Icd84cbef6463ba584a2a29f01b23c7e4542d0101
Reviewed-on: https://go-review.googlesource.com/21618
Reviewed-by: Alan Donovan <adonovan@google.com>
2016-04-06 22:12:38 +00:00
Robert Griesemer adaaa07486 x/tools: delete x/tools/go/types and dependent packages/client files
Per https://groups.google.com/forum/#!topic/golang-announce/qu_rAphYdxY
this change deletes the packages

  go/exact
  go/gccgoimporter
  go/gcimporter
  go/importer
  go/types
  cmd/vet

from the x/tools repo and any files depending on those packages
building against Go 1.4.

x/tools packages depending on any of these libraries must use the
respective versions from the std lib or use vendored versions if
building against 1.4.

Remaining packages may or may not build against Go 1.4 anymore
and will not be supported against 1.4.

Change-Id: I1c655fc30aee49b6c7326ebd4eb1bb0836ac97e0
Reviewed-on: https://go-review.googlesource.com/20810
Reviewed-by: Alan Donovan <adonovan@google.com>
2016-04-06 21:52:49 +00:00
Robert Griesemer 44f369b779 gco/gcimporter15: update importer to match new gc binary export format
This is simply a copy of std lib's go/internal/gcimporter/bimport.go
with updated header comment and build tag. No semantic changes.

This will fix part of the x/tools build break at tip. The other part
is to adjust bexport.go (next CL).

Change-Id: Ibc37fae7e0d0447fdea9e3a733aa38589735c59a
Reviewed-on: https://go-review.googlesource.com/21543
Reviewed-by: Alan Donovan <adonovan@google.com>
2016-04-05 20:22:26 +00:00
Alan Donovan 6361b5799a go/pointer: clarify a comment
Change-Id: Ia434ca4e7259cdb9a6f50d51432977fd31be27db
Reviewed-on: https://go-review.googlesource.com/21391
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2016-04-01 17:12:30 +00:00
Alan Donovan 84e7bc0dd3 go/loader: don't pass ldflags to cgo
Although these flags are harmless on linux, they
cause clang on darwin to issue an error about
unused flags (-lpthread).  We only care about compilation
so we don't need them.

Change-Id: I0fc756e2f4d7a829d43b5aa912c4e4b24a802a1c
Reviewed-on: https://go-review.googlesource.com/21283
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-03-29 18:37:41 +00:00
Alan Donovan 0ed9f242ee go/loader: update stdlib test after changes to stdlib
The os/user.lookup function no longer exists so instead we use
os/user.current.  (This function also existed in go1.5.)

Change-Id: Ic66d80acc186289331f1023e0145370feab6a001
Reviewed-on: https://go-review.googlesource.com/21281
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-03-29 16:31:44 +00:00
Alan Donovan 0d7417cc02 go/pointer: disable analysis of runtime package
It has few interesting effects on aliasing and it contains a lot of
unsafe code that we can't analyze.

Change-Id: I66d3592ea7797802c6be36eb30fd17e2ee307e50
Reviewed-on: https://go-review.googlesource.com/21260
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-03-29 16:14:39 +00:00
Akihiro Suda 681404b4b2 go/loader: support pkg-config
Fix golang/go#13526

Signed-off-by: Akihiro Suda <suda.kyoto@gmail.com>

Change-Id: I015a3777c345ec06455ebf275c6acc246e8be73d
Reviewed-on: https://go-review.googlesource.com/21121
Reviewed-by: Alan Donovan <adonovan@google.com>
2016-03-29 01:50:51 +00:00
David R. Jenni c6be41b91f go/ast/astutil: add merging pass to AddImport and AddNamedImport.
After inserting an import, merge all import declarations.

Fixes golang/go#14075.

Change-Id: I17fceb60f490deced2ee8eadf78091720580ffa1
Reviewed-on: https://go-review.googlesource.com/19828
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-03-27 21:31:10 +00:00
Dominik Honnef 361bcb2be3 all: address vet issues, fix print calls
This fixes some print calls with wrong format directives. Additionally,
struct initialisers were changed to use keyed fields, purely to reduce
the amount of noise generated by go vet.

Change-Id: Ib9f6fd8f2dff7ce84826478de0ba83dda9746270
Reviewed-on: https://go-review.googlesource.com/21180
Reviewed-by: Ian Lance Taylor <iant@golang.org>
2016-03-27 20:36:34 +00:00
Idora Shinatose 3b9441cce4 go/importer: fix doc typo
Fix the following issue detected by golint:

	import.go:9:1: package comment should be of the form "Package importer ..."

It makes the package comment more consistent with other packages.

Change-Id: I1415066c136ce249af19d70848a38203caf7c9c7
Reviewed-on: https://go-review.googlesource.com/21177
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-03-26 09:02:56 +00:00
Alan Donovan fcde77432e go/gcimporter15: create dummy "anyType" to fix breakage
The previous CL added a duplicate InvalidType to the predecl table so
that it tracked the one used by gc, but this caused it to fail an
assertion of uniqueness, and I ran the wrong tests.

Change-Id: I56342046cea328e503d917127f5b12205df7999a
Reviewed-on: https://go-review.googlesource.com/20870
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-03-18 17:20:55 +00:00
Alan Donovan 8a9be374d7 go/gcimporter15: support invalid types and constants in binary export data
Although invalid types and unknown constant values should never appear
in .a files (since gc will stop with an error before writing export
data), they can now be faithfully encoded and decoded.  This makes the
protocol robust for IDE-like applications that must deal with incomplete
or incorrect programs.

(Corresponding std lib CL: https://go-review.googlesource.com/20828)

Change-Id: I539ffd951b90f01705a7f23ec778c623c729d9a0
Reviewed-on: https://go-review.googlesource.com/20827
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-03-18 16:35:36 +00:00
Alan Donovan 758728c4b2 go/ssa/interp: add no-op intrinsic for sync.runtime_notifyListCheck
Change-Id: Iece2511253c0ab361cdc493ab954a2e7f6aeaeac
Reviewed-on: https://go-review.googlesource.com/20760
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-03-16 14:58:28 +00:00
Robert Griesemer f42ec616d3 go/gcimporter15: require go1.6 for binary import/export (fix build)
The binary import/export functionality depends on go/constant from
go1.6 - make it only available if we build against go1.6. Eventually
this packet will be replaced by std lib go/importer functionality.

Change-Id: If96cf2e889daf1250152d7719afa64ad1ba8fb0e
Reviewed-on: https://go-review.googlesource.com/20716
Reviewed-by: Alan Donovan <adonovan@google.com>
2016-03-15 20:04:44 +00:00
Robert Griesemer cac5711748 go/gcimporter15: update build tag for binary import (fix build for 1.6)
Also: renamed file to match 1.7 tag.

Fixes golang/go#14824.

Change-Id: Iea92292d93c1140e3396678bc37f50f0348e616a
Reviewed-on: https://go-review.googlesource.com/20694
Reviewed-by: Michael Hudson-Doyle <michael.hudson@canonical.com>
Reviewed-by: Alan Donovan <adonovan@google.com>
2016-03-15 01:10:22 +00:00
Robert Griesemer 48737e9c89 go/gcimporter15: update import/export to match std lib at tip
This change copies the respective changes from https://golang.org/cl/20605.

There is a format conflict here - we are going to track tip, not 1.6.
This change should fix the issue when testing against tip.

Fixes golang/go#14824.

Change-Id: I58e79cc65748e7a3e5c8486c6cee339884110a07
Reviewed-on: https://go-review.googlesource.com/20693
Reviewed-by: Alan Donovan <adonovan@google.com>
2016-03-15 00:34:34 +00:00
Alan Donovan 3d26f6847a go/ssa: make *BuilderMode satisfy flag.Value
The BuilderModeFlag function does not work with flag packages (such as
Google's) that define their own FlagSet.  This change exposes a type
that satisifies flag.Value insted of a function.  That type
is *BuilderMode; there's no need for a separate wrapper type.

Change-Id: I8095b80de499e3c52a29a5c1996d1b1fe3799358
Reviewed-on: https://go-review.googlesource.com/20330
Reviewed-by: Michael Matloob <matloob@golang.org>
2016-03-07 22:18:09 +00:00
Alan Donovan 2336c53cf0 cmd/guru: compute referrers as packages are type checked
This CL makes little observable difference to the behavior but paves the
way for streaming 'referrers' and (later) 'implements' queries which
scan the entire workspace, but print each result as soon as it is found.

The go/loader package now exposes a hook, AfterTypeCheck, that lets
clients inspect each package as soon as it is type-checked, and also
modify it, for instance to release unneeded data structures.

A 'referrers' query applied to an exported object must scan the entire
workspace.  It uses this hook so to gather uses of the query object in
streaming fashion.  However, for now, it still accumulates the results
and prints them all at the end, though I propose to change that in a
follow-up.

Code details:
- The referrers logic had a 2-iteration loop to load first the query
  package and then if necessary the enlarged program.  The second
  iteration has now been unrolled and split into globalReferrers.
- Queries for package names (whether in a package declaration or
  a qualified identifier) have been split off into packageReferrers.
  It now loads all direct importers of the query package,
  which catches some references that were missing before.
  (It used to inspect only the forward dependencies of the query
  package.)

Also:
- Referrers.Pos (the position of query identifier) was removed from the
  JSON output.  It's a nuisance to compute now, and it's already
  absent from the plain output.
  (In a follow-up, I plan to simplify the information content of the
  JSON output exactly what is currently printed in the plain output.)

Change-Id: Ia5677636dc7b0fe4461a5d393107665757fb9a97
Reviewed-on: https://go-review.googlesource.com/19794
Reviewed-by: Daniel Morsing <daniel.morsing@gmail.com>
2016-03-04 21:13:08 +00:00
Alan Donovan 3dafbd1ba4 go/types/typeutil: make IntuitiveMethodSet(*C) nonempty for concrete types C
This fixes a bug in guru describe.

Also, add a test of IntuitiveMethodSet.

Change-Id: Ied3780807afd88e664fdb186619499670529fe33
Reviewed-on: https://go-review.googlesource.com/20166
Reviewed-by: Daniel Morsing <daniel.morsing@gmail.com>
2016-03-03 19:43:35 +00:00
Alan Donovan 2f1d035a8a go/gcimporter15: BExportData: inverse of BImportData
+ test

Change-Id: I8db03e19ebb4cf3888f259457aaa3c931da23f24
Reviewed-on: https://go-review.googlesource.com/20109
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-03-02 22:33:32 +00:00
David R. Jenni e852fdd89f go/ast/astutil: add function DeleteNamedImport.
DeleteNamedImport deletes the import with a given
name and path from a parsed file, if present.

imports uses this function to delete named imports.

Fixes golang/go#8149.

Change-Id: I84539d5627191c45f06db2d008507aee4d3b1eb2
Reviewed-on: https://go-review.googlesource.com/19951
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-02-26 17:37:10 +00:00
Robert Griesemer 06f9f0dd88 go/gcimporter15: backport latest changes to binary export format (fix build)
This is the gcimporter/bimport.go part of:

https://go-review.googlesource.com/19627

Also, fixed a type that was fixed in gcimporter/bimport.go before.

TBR=adonovan

Change-Id: I0be8549f6ea8c199842623284091499abf698322
Reviewed-on: https://go-review.googlesource.com/19926
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-02-26 01:18:04 +00:00
David R. Jenni 108746816d go/ast/astutil: keep comment position for existing imports.
Fixes golang/go#10337.

Change-Id: Ia21547bb57790c077ca01a2ad656086da3f2ba8a
Reviewed-on: https://go-review.googlesource.com/19822
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-02-23 17:36:30 +00:00
Alan Donovan 9aae8f06b5 go/loader: update comment
CL 18580 (Jan 12) made the loader cache non-blocking.

Change-Id: I8f280dbd405bd9b19a201191a4a987f13d862300
Reviewed-on: https://go-review.googlesource.com/19830
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-02-22 20:28:10 +00:00
Alan Donovan ba766134cc go/buildutil: add ExpandPatterns utility
This will be used by the guru command's -scope argument.

+ test

Change-Id: I5bf38b544809e4518e2c22a73ec3349a5d2c09fc
Reviewed-on: https://go-review.googlesource.com/19746
Reviewed-by: Michael Matloob <matloob@golang.org>
2016-02-22 20:15:22 +00:00
Alan Donovan ee6079c0ac go/buildutil: add (*TagsFlag).Get method to satisfy Getter interface
Change-Id: I8a52a1cc006608ff87d1436d14c836b6e9c7d6d4
Reviewed-on: https://go-review.googlesource.com/16810
Reviewed-by: David Crawshaw <crawshaw@golang.org>
2016-02-21 00:49:10 +00:00
Alberto Donizetti a17fa845d7 go/gcimporter15: add missing argument to error message
Backport of Change 19641

Change-Id: Ic386cc8ecc006a2cd96c5ac3ff00f3d314873fd3
Reviewed-on: https://go-review.googlesource.com/19643
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-02-18 21:23:36 +00:00
Alan Donovan cadb821a95 cmd/guru: don't panic on *ast.Bad{Decl,Stmt,Expr}
These nodes are common in incomplete programs.

Change-Id: Iff9750050c78762f0cb8bebc7739584c197d661e
Reviewed-on: https://go-review.googlesource.com/19509
Reviewed-by: Michael Matloob <matloob@golang.org>
2016-02-15 21:39:56 +00:00
Robert Griesemer 7ed774bdc0 go/gcimporter15: interpret relative srcDir relative to cwd
This is a backport of the respective changes in golang.org/cl/19393.

For golang/go#14215.

Change-Id: I8d60dd6daa827a60597f3af925e6732914537319
Reviewed-on: https://go-review.googlesource.com/19394
Reviewed-by: Alan Donovan <adonovan@google.com>
2016-02-10 17:55:37 +00:00
Alan Donovan 02f1928320 go/loader: ignore (*build.Package).Goroot flag when handling "unsafe"
For the default build.Context, the Package.Goroot flag indicates when a
package was loaded from the standard library.  Until now, the loader
used it to enable the typechecker's intrinsics for the "unsafe" package.
This seemed like a good check, but it is troublesome for clients that
use a nonstandard build.Context.  For example, if a client defines
nonstandard Context hooks that load all packages, whether standard or
user-defined, from a flat sstable, there is no way for those hooks to
indicate which packages should have this flag set and which not.  As a
result the contents of the "unsafe" package directory are treated as Go
source code when they are merely documentation.

Change-Id: Iea0a7cc9877507d73606391293971a28279c4e4b
Reviewed-on: https://go-review.googlesource.com/19188
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-02-05 00:45:20 +00:00
Brad Fitzpatrick b47dfd93e5 all: fix plan9 failures
Updates golang/go#11811

Change-Id: I6ed252eb3272354fce8084ec99f4777e41c3daa3
Reviewed-on: https://go-review.googlesource.com/18993
Reviewed-by: Chris Broadfoot <cbro@golang.org>
2016-01-28 00:31:03 +00:00
Brad Fitzpatrick 2fd075ed02 all: skip slow tests in short mode
Updates golang/go#14113
Updates golang/go#11811

Change-Id: I61851de12ff474d3b738fc88f402742677973cae
Reviewed-on: https://go-review.googlesource.com/18992
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-01-28 00:14:01 +00:00
Mikio Hara 09dc3ef4c7 go/gcimporter15: fix build
This change prevents test code to slip into package gcimporter15 and
fixes a weird situation that the test passes but the package doesn't
exist.

For example, we can see the situation with Go 1.6 like the follwoing:

go build
./gcimporter_test16.go:20: undefined: MustHaveGoBuild
./gcimporter_test16.go:45: undefined: testPath

go test
PASS
ok  	golang.org/x/tools/go/gcimporter15	0.896s

Change-Id: I95550574ccd1b2273072c700c28a82c791c16c63
Reviewed-on: https://go-review.googlesource.com/18950
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-01-27 07:08:15 +00:00
Mikio Hara 7421583666 go/vcs: drop support for Google Code Project Hosting
The hosting service was shut down on January 25, 2016 and a few tests
started to fail like the following:

=== RUN   TestRepoRootForImportPath
--- FAIL: TestRepoRootForImportPath (2.47s)
	vcs_test.go:129: RepoRootForImport("code.google.com/p/go"):
unable to detect version control system for code.google.com/ path
FAIL

This change drops support for code.google.com and fixes test. See
http://google-opensource.blogspot.jp/2015/03/farewell-to-google-code.html
for further information.

Fixes golang/go#14105

Change-Id: I87cb9a3d666c2a1af0f8bf39a66ba0f669c99fd5
Reviewed-on: https://go-review.googlesource.com/18951
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-01-27 00:23:28 +00:00
Alan Donovan f3a63969dd go/gcimporter15: fix build for go1.4
Change-Id: I0b2650bbb2bf35d7895e1a808cfb45f7f0194ea9
Reviewed-on: https://go-review.googlesource.com/18822
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-01-21 22:50:50 +00:00
Robert Griesemer d2e00652ba x/tools: fix build
Change-Id: I02b42abcc29ee04c8f54dc8ba2c6079b3e6c4153
Reviewed-on: https://go-review.googlesource.com/18816
Run-TryBot: Robert Griesemer <gri@golang.org>
Reviewed-by: Alan Donovan <adonovan@google.com>
2016-01-21 22:29:25 +00:00
Robert Griesemer 7912bef4df go/gcimporter15: only test binary export when running against Go 1.6
Also: rename setname15.go to setname.go for consistency

Change-Id: I3f7e37ef4ade716ce64674edb4d53a543a1150c5
Reviewed-on: https://go-review.googlesource.com/18772
Reviewed-by: Alan Donovan <adonovan@google.com>
2016-01-20 21:48:19 +00:00
Robert Griesemer e6d5370703 go/gcimporter15: implement types.Package.SetName for Go 1.5
This makes gcimporter15 build against Go 1.5.

Change-Id: I14e7ff80b28d99f996abc19a0a74b08e5e1bbd75
Reviewed-on: https://go-review.googlesource.com/18771
Run-TryBot: Robert Griesemer <gri@golang.org>
Reviewed-by: Alan Donovan <adonovan@google.com>
2016-01-20 21:18:18 +00:00
Robert Griesemer 2fb4b8bc95 go/gcimporter15: use latest std/lib gcimporter code
Change-Id: Ia497e56084cf262510461b7e94296570ca8e2049
Reviewed-on: https://go-review.googlesource.com/18770
Run-TryBot: Robert Griesemer <gri@golang.org>
Reviewed-by: Alan Donovan <adonovan@google.com>
2016-01-20 20:18:03 +00:00
Dmitri Shuralyov 5804fef4c0 x/tools/go/vcs: fix FromDir returning bad root on Windows
Import path is a '/'-separated path. FromDir documentation says
on return, root is the import path corresponding to the root of
the repository. On Windows and other OSes where os.PathSeparator
is not '/', that wasn't true since root would contain characters
other than '/', and therefore it wasn't a valid import path
corresponding to the root of the repository. Fix that by using
filepath.ToSlash.

Add test coverage for root value returned from FromDir, it was
previously not tested.

Additionally, remove a dubious statement from the documentation
"(thus root is a prefix of importPath)". There is no variable
importPath that is being referred to. It's also redundant and
confusing. Without it, the description of root value matches
the documentation of RepoRoot.Root struct field:

	// Root is the import path corresponding to the root of the
	// repository.
	Root string

Fixes golang/go#7723.

Change-Id: If9f5f55b5751e01a7f88b79d9b039402af3e9312
Reviewed-on: https://go-review.googlesource.com/18461
Reviewed-by: Chris Manghane <cmang@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
2016-01-19 15:45:24 +00:00
Kenji Kaneda 3c782264fb go/types: fix a comment of Named.Obj
// TypeName returns ...
-> // Obj returns ...

Change-Id: I2ac6133a703ec2c4b2045d4bdf9acc70049f0e1e
Reviewed-on: https://go-review.googlesource.com/18704
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-01-16 17:31:34 +00:00
Alan Donovan 5a2875abe7 go/loader: reduce contention for findPackage mutex
...by making the cache non-blocking and duplicate-suppressing.

(The bottleneck was introduced while adding vendoring support.)
This reduces the 95th percentile map shard time for type-checking 120K
packages to 8min from 20min.

Also: move the I/O-limiting counting semaphore and the NoGoError check
from FindPackage to findPackage so that all implementations benefit.

Change-Id: I43527122262cf80475dd3212d78c340e1c71e36c
Reviewed-on: https://go-review.googlesource.com/18580
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-01-13 18:09:25 +00:00
Alan Donovan ae186f56a2 go/loader: don't treat unsafe specially wrt vendoring
The loader treats GOROOT's "unsafe" package specially,
with no source files and a Package of types.Unsafe.

Tested on Go 1.4.1, 1.5, and ~1.6 (tip).

Fixes issue #13882

Change-Id: I86c4e394665d86a50ec3852d6d702f0e9c5d2276
Reviewed-on: https://go-review.googlesource.com/18457
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-01-08 20:29:04 +00:00
Alan Donovan 1fb1f857ac go/loader: use Skipf in test
(late response to comment in review of CL 18452)

Change-Id: I1fa80fd1c7fd22cec752c839d20a483e0732337c
Reviewed-on: https://go-review.googlesource.com/18454
Reviewed-by: Alan Donovan <adonovan@google.com>
2016-01-08 19:32:38 +00:00
Alan Donovan 10712091e1 tools: fallout from flipped sense of build.IgnoreVendor flag
(See https://go-review.googlesource.com/#/c/18450)

Details:
- delete buildutil.AllowVendor flag.
  Instead use unexported 'go16' var in each package that needs it.
- delete buildutil.StripVendor; was never needed.
- remove inapplicable vendoring comments from loader14.go
- importgraph: go1.5: don't bother checking for 1.6 before calling
  absolutize (minor simplifiication and deoptimization).

Tested on 1.4.1, 1.5, and ~1.6 (tip).

Change-Id: If692b0df2eb6c120a9c09d7b1ed99f1b4c6b0826
Reviewed-on: https://go-review.googlesource.com/18452
Reviewed-by: Russ Cox <rsc@golang.org>
2016-01-08 18:54:48 +00:00
Alan Donovan 4747062949 go/gcimporter15: a copy of go/gcimporter using go1.5 std go/types
Because the std go/importer's Lookup functionality is incomplete,
clients have no way to create a Go 1.5 types.Package from an io.Reader
reading from gc export data.  This package provides a stopgap until
the standard library is complete.

The go/gcimporter package remains unchanged, and uses only the
golang.org/x/tools/go/types package.

Change-Id: I47a817f4b6a52ddab26c6b01de6e28099301faf5
Reviewed-on: https://go-review.googlesource.com/18382
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-01-07 18:06:54 +00:00
Alan Donovan 542ffc7e75 tools: switch to standard go/types at tip
A few files have been forked and tagged "go1.5,!go1.6" to work around
minor API changes between the two types packages:
- constant.Value.String() in oracle/describe.go and its tests;
- constant.ToInt must now be called before constant.Int64Val.
- types.Config{Importer: importer.Default()} in a number of places
- go/types/typeutil/import_test.go uses lowercase names to avoid 'import "C"'.

Files in go/types/typesutil, missing from my previous CL, have been
tagged !go1.5; these files will be deleted in February.

All affected packages were tested using 1.4.1, 1.5, and ~1.6 (tip).

Change-Id: Iec7fd370e1434508149b378438fb37f65b8d2ba8
Reviewed-on: https://go-review.googlesource.com/18207
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-01-06 22:15:26 +00:00
Alan Donovan 2477c0d578 x/tools/...: fork and tag !1.5 all files that use go/types et al
This change will ensure that the tree continues to work with go1.4.1.

All files continue to depend on golang.org/x/tools/go/types, but in a
follow-up change, I will switch the primary files to depend on the
standard go/types package.  Another (smaller) set of files will be
forked and tagged, this time !1.6, due to API differences between the
two packages.

All tests pass using 1.4.1, 1.5, and ~1.6 (tip).

Change-Id: Ifd75a6330e120957d646be91693daaba1ce0e8c9
Reviewed-on: https://go-review.googlesource.com/18333
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-01-06 20:40:09 +00:00
Alan Donovan 8f90b5e560 go/ssa/interp: remove stale TODO
Followup to TBR'd change https://go-review.googlesource.com/#/c/18191/.

Change-Id: I7d6957a46aea00cfe0b734576b5392d578ee06d9
Reviewed-on: https://go-review.googlesource.com/18326
Reviewed-by: Alan Donovan <adonovan@google.com>
2016-01-06 19:24:01 +00:00
Alan Donovan c49318f04a go/ssa/interp: make os.Pipe intrinsic POSIX-portable; disable on Windows
Change-Id: I6c2f495c7c75f86590a0d79f86423ca67d695347
Reviewed-on: https://go-review.googlesource.com/18325
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-01-06 19:21:02 +00:00
Alan Donovan 0f870d4d86 go/loader: fix interaction of cwd and vendor
Packages specified on the command line should be interpreted relative to
cwd iff they are local (e.g. ./http within $GOROOT/src/net), otherwise a
request for, say, "golang.org/x/net/http2/hpack" might return the vendored
package depending on the working directory.

The FindPackage hook function now takes a build.ImportMode parameter, so
it matches the signature of (*build.Context).Import.  The AllowVendor
flag is enabled only for imports within source files, but not for the
initial packages.

+ test.

Change-Id: I756dc46b70928d2fd9f824e6670092d8169e0d64
Reviewed-on: https://go-review.googlesource.com/18318
Reviewed-by: Robert Griesemer <gri@golang.org>
2016-01-06 18:28:16 +00:00
Alan Donovan 3a85b8da38 refactor/importgraph: reduce I/O concurrency to avoid EMFILE
Use an concurrency-limiting semaphore to reduce I/O parallelism in Import.

Also, start the producer in a new goroutine so that it runs in parallel
with the consumer.  Paradoxically, this reduces the peak number of
goroutines.

Also, in buildutil.ForEachPackage, make the concurrency limiting
semaphore global, since I/O parallelism is a process-wide resource.

Change-Id: I282b717c50603361826e5675077c9f464c874132
Reviewed-on: https://go-review.googlesource.com/18215
Reviewed-by: Michael Matloob <matloob@golang.org>
2015-12-30 22:01:03 +00:00
Alan Donovan b2a7698651 go/loader: in stdlib_test, remove workaround for lack of vendoring
Change-Id: I058081ef596e8b5231321ef05d5256ec44cc58c6
Reviewed-on: https://go-review.googlesource.com/18214
Reviewed-by: Alan Donovan <adonovan@google.com>
2015-12-30 16:37:28 +00:00
Alan Donovan a09dffbb6c go/vcs: workaround EOF bug in token-based XML decoder
...using same logic as in $GOROOT/go/src/cmd/go/discovery.go

See issue #13757

Change-Id: I2ace0abed0743f4a8675fa8780e190d640b57e6c
Reviewed-on: https://go-review.googlesource.com/18196
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2015-12-29 20:27:04 +00:00
Dmitri Shuralyov 157f8abbbd go/vcs: accept domain.root in RepoRootForImportDynamic
This is the same change as in https://golang.org/cl/12193.

Fixes golang/go#13506.

Related to golang/go#9357.

Change-Id: I9c7d956008641b1907e14bcb08198235f5f9552f
Reviewed-on: https://go-review.googlesource.com/18152
Reviewed-by: Russ Cox <rsc@golang.org>
2015-12-29 15:00:21 +00:00
Alan Donovan 2b78567943 go/loader: fix tests to work at go1.5 and tip
Change-Id: Icc80f112a7ec4b64519220c57b6ccb2612166656
Reviewed-on: https://go-review.googlesource.com/18197
Reviewed-by: Alan Donovan <adonovan@google.com>
2015-12-28 22:42:32 +00:00
Alan Donovan b14dd1a5b7 go/importer: in TestImportStdLib, skip 2 packages that use vendoring
(See issue #13756)

Change-Id: Icda14c34f3460e941ae092f147432c795465a077
Reviewed-on: https://go-review.googlesource.com/18195
Reviewed-by: Alan Donovan <adonovan@google.com>
2015-12-28 21:28:10 +00:00