1. 14 Oct, 2019 2 commits
  2. 11 Oct, 2019 13 commits
  3. 10 Oct, 2019 12 commits
    • Brad Fitzpatrick's avatar
      all: remove nacl (part 3, more amd64p32) · 03ef105d
      Brad Fitzpatrick authored
      Part 1: CL 199499 (GOOS nacl)
      Part 2: CL 200077 (amd64p32 files, toolchain)
      Part 3: stuff that arguably should've been part of Part 2, but I forgot
              one of my grep patterns when splitting the original CL up into
              two parts.
      
      This one might also have interesting stuff to resurrect for any future
      x32 ABI support.
      
      Updates #30439
      
      Change-Id: I2b4143374a253a003666f3c69e776b7e456bdb9c
      Reviewed-on: https://go-review.googlesource.com/c/go/+/200318
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      03ef105d
    • Cherry Zhang's avatar
      [dev.link] cmd/link: escape package path in objByPkg map · e44dfa1f
      Cherry Zhang authored
      The package references recorded in the object file, which are
      obtained from the compiler, are escaped. We should also use the
      escaped package paths in the linker for resolving package
      references.
      
      Change-Id: I42eb12df6ff24330e6dc7bed1dc8224bb3b8a106
      Reviewed-on: https://go-review.googlesource.com/c/go/+/200158
      Run-TryBot: Cherry Zhang <cherryyz@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarThan McIntosh <thanm@google.com>
      e44dfa1f
    • Cherry Zhang's avatar
      [dev.link] cmd/internal/goobj: replace `"".` with package prefix in newobj mode · 0108b54a
      Cherry Zhang authored
      This is the behavior of the old code. Do the same.
      
      Change-Id: I3d393d754dcbdb7e76a577252a94214d2e316651
      Reviewed-on: https://go-review.googlesource.com/c/go/+/200159
      Run-TryBot: Cherry Zhang <cherryyz@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarThan McIntosh <thanm@google.com>
      0108b54a
    • Cherry Zhang's avatar
      [dev.link] cmd/internal/obj: support -S flag in newobj mode · ffca64dc
      Cherry Zhang authored
      When the compiler's -S flag is specified, it dumps the
      disassembly. Add this when writing the new style object file.
      
      Change-Id: I4cf85e57d22d0ceea1fda6d3b59fe363573659e7
      Reviewed-on: https://go-review.googlesource.com/c/go/+/200100
      Run-TryBot: Cherry Zhang <cherryyz@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarThan McIntosh <thanm@google.com>
      ffca64dc
    • Cherry Zhang's avatar
      [dev.link] cmd/link: use index for deadcode · 8a9be492
      Cherry Zhang authored
      Switch the deadcode pass to use indices instead of Symbol
      structures when using new object file format. Delay loading
      symbol relocations and contents fully after the deadcode pass.
      The next step is not to create Symbol structures until deadcode
      is done.
      
      Method tracking logic hasn't been implemented. Currently, all
      methods of a reachable type are live.
      
      Change-Id: Iffcd06ff84e6e52bd9eb24d1220d94234d18ab6b
      Reviewed-on: https://go-review.googlesource.com/c/go/+/198199
      Run-TryBot: Cherry Zhang <cherryyz@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarThan McIntosh <thanm@google.com>
      8a9be492
    • Brad Fitzpatrick's avatar
      test: adjust a test to work with js/wasm's background goroutine · 6dc740f0
      Brad Fitzpatrick authored
      Fixes #34768
      
      Change-Id: Ic73591f620cdee5bc7203483902e6ba98d2c442b
      Reviewed-on: https://go-review.googlesource.com/c/go/+/200438Reviewed-by: default avatarBryan C. Mills <bcmills@google.com>
      6dc740f0
    • alan's avatar
      runtime: remove no-op pointer writes in treap rotations · 26ff21d4
      alan authored
      Change-Id: If5a272f331fe9da09467efedd0231a4ce34db0f8
      GitHub-Last-Rev: 4b81a79a92db4b51001ce6660b24c760fd3b630b
      GitHub-Pull-Request: golang/go#28420
      Reviewed-on: https://go-review.googlesource.com/c/go/+/144999
      Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarRick Hudson <rlh@golang.org>
      26ff21d4
    • Than McIntosh's avatar
      [dev.link] cmd/link/internal/objfile: new 'Sym' type for global symbol index · f7659d49
      Than McIntosh authored
      First change of several to update the loader API to reflect the final
      consensus version of the loader API as described in Cherry's doc.
      
      This piece:
      
       - define new loader.Sym type to encapsulate a global symbol
         index (as opposed to just using 'int')
      
      Change-Id: I6f6483e269f80abfc7d373b2856b2c0d61b9ac24
      Reviewed-on: https://go-review.googlesource.com/c/go/+/200417
      Run-TryBot: Than McIntosh <thanm@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarAustin Clements <austin@google.com>
      Reviewed-by: default avatarJeremy Faller <jeremy@golang.org>
      f7659d49
    • Jay Conrod's avatar
      cmd/go: forbid module pattern 'all' when outside a module · 68395a66
      Jay Conrod authored
      Also, in cmd/doc, avoid calling 'go list -m all' when in module mode
      outside a module since it's now an error.
      
      Fixes #32027
      
      Change-Id: I7224c7fdf7e950bce6c058ab2a5837c27ba3b899
      Reviewed-on: https://go-review.googlesource.com/c/go/+/200297
      Run-TryBot: Jay Conrod <jayconrod@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarBryan C. Mills <bcmills@google.com>
      68395a66
    • Jeremy Faller's avatar
      cmd/compile: walk progs to generate debug_lines data · 46b75578
      Jeremy Faller authored
      Walking the progs is simpler than using the is_stmt symbol shenanigans.
      This is a reinstatement of CL 196661, which was rolled back due to tests
      failing. Unlike that original CL, this change should output the same
      debug_lines data the original approach wrote.
      
      The stats for JUST this CLC, note teh small speedup in compilation, and
      the lack of difference in binary size.
      
      name                      old time/op       new time/op       delta
      Template                        229ms ± 4%        218ms ± 1%  -4.95%  (p=0.000 n=10+8)
      Unicode                        92.6ms ± 9%       88.6ms ±13%    ~     (p=0.089 n=10+10)
      GoTypes                         850ms ± 2%        831ms ± 4%  -2.23%  (p=0.009 n=10+10)
      Compiler                        3.99s ± 1%        3.93s ± 1%  -1.29%  (p=0.000 n=10+9)
      SSA                             13.7s ± 1%        13.7s ± 1%    ~     (p=0.912 n=10+10)
      Flate                           140ms ± 3%        138ms ± 3%  -1.90%  (p=0.009 n=10+10)
      GoParser                        172ms ± 2%        169ms ± 4%    ~     (p=0.095 n=9+10)
      Reflect                         530ms ± 3%        516ms ± 5%    ~     (p=0.052 n=10+10)
      Tar                             202ms ± 1%        196ms ± 3%  -2.83%  (p=0.002 n=9+10)
      XML                             280ms ± 3%        270ms ± 4%  -3.48%  (p=0.009 n=10+10)
      LinkCompiler                    927ms ± 2%        907ms ± 4%    ~     (p=0.052 n=10+10)
      ExternalLinkCompiler            1.97s ± 2%        1.97s ± 3%    ~     (p=0.853 n=10+10)
      LinkWithoutDebugCompiler        549ms ± 3%        543ms ± 5%    ~     (p=0.481 n=10+10)
      StdCmd                          12.0s ± 1%        12.0s ± 1%    ~     (p=0.905 n=9+10)
      
      name                      old user-time/op  new user-time/op  delta
      Template                        372ms ±18%        344ms ±11%    ~     (p=0.190 n=10+10)
      Unicode                         264ms ±23%        241ms ±43%    ~     (p=0.315 n=8+10)
      GoTypes                         1.56s ±22%        1.68s ± 5%    ~     (p=0.237 n=10+8)
      Compiler                        7.41s ± 2%        7.31s ± 3%    ~     (p=0.123 n=10+10)
      SSA                             24.5s ± 2%        24.7s ± 1%    ~     (p=0.133 n=10+9)
      Flate                           199ms ± 6%        188ms ±28%    ~     (p=0.353 n=10+10)
      GoParser                        243ms ±11%        240ms ± 6%    ~     (p=0.968 n=10+9)
      Reflect                         929ms ±21%        862ms ±35%    ~     (p=0.190 n=10+10)
      Tar                             284ms ± 9%        296ms ±17%    ~     (p=0.497 n=9+10)
      XML                             386ms ±21%        398ms ±28%    ~     (p=1.000 n=9+10)
      LinkCompiler                    1.13s ± 9%        1.12s ± 8%    ~     (p=0.546 n=9+9)
      ExternalLinkCompiler            2.37s ±15%        2.30s ± 9%    ~     (p=0.549 n=10+9)
      LinkWithoutDebugCompiler        646ms ±10%        642ms ±13%    ~     (p=0.853 n=10+10)
      
      name                      old alloc/op      new alloc/op      delta
      Template                       36.5MB ± 0%       36.5MB ± 0%  -0.11%  (p=0.000 n=10+9)
      Unicode                        28.5MB ± 0%       28.5MB ± 0%    ~     (p=0.190 n=10+10)
      GoTypes                         121MB ± 0%        121MB ± 0%  -0.10%  (p=0.000 n=9+10)
      Compiler                        549MB ± 0%        549MB ± 0%  -0.10%  (p=0.000 n=9+10)
      SSA                            1.92GB ± 0%       1.92GB ± 0%  -0.13%  (p=0.000 n=10+10)
      Flate                          23.0MB ± 0%       23.0MB ± 0%  -0.07%  (p=0.000 n=10+10)
      GoParser                       27.9MB ± 0%       27.9MB ± 0%  -0.09%  (p=0.000 n=10+10)
      Reflect                        77.9MB ± 0%       77.8MB ± 0%  -0.13%  (p=0.000 n=9+10)
      Tar                            34.5MB ± 0%       34.4MB ± 0%  -0.09%  (p=0.000 n=10+10)
      XML                            44.3MB ± 0%       44.3MB ± 0%  -0.08%  (p=0.000 n=10+10)
      LinkCompiler                    229MB ± 0%        225MB ± 0%  -1.74%  (p=0.000 n=10+10)
      ExternalLinkCompiler            233MB ± 0%        242MB ± 0%  +3.81%  (p=0.000 n=10+10)
      LinkWithoutDebugCompiler        156MB ± 0%        152MB ± 0%  -2.29%  (p=0.000 n=10+9)
      
      name                      old allocs/op     new allocs/op     delta
      Template                         373k ± 0%         373k ± 0%  -0.21%  (p=0.000 n=10+10)
      Unicode                          340k ± 0%         340k ± 0%  -0.04%  (p=0.000 n=10+10)
      GoTypes                         1.33M ± 0%        1.33M ± 0%  -0.20%  (p=0.000 n=10+9)
      Compiler                        5.39M ± 0%        5.38M ± 0%  -0.16%  (p=0.000 n=10+10)
      SSA                             18.3M ± 0%        18.2M ± 0%  -0.15%  (p=0.000 n=10+10)
      Flate                            235k ± 0%         234k ± 0%  -0.23%  (p=0.000 n=10+7)
      GoParser                         309k ± 0%         308k ± 0%  -0.20%  (p=0.000 n=10+10)
      Reflect                          970k ± 0%         968k ± 0%  -0.30%  (p=0.000 n=10+10)
      Tar                              347k ± 0%         347k ± 0%  -0.22%  (p=0.000 n=10+10)
      XML                              425k ± 0%         424k ± 0%  -0.16%  (p=0.000 n=10+10)
      LinkCompiler                     602k ± 0%         601k ± 0%  -0.03%  (p=0.000 n=9+10)
      ExternalLinkCompiler            1.65M ± 0%        1.65M ± 0%  -0.02%  (p=0.000 n=10+10)
      LinkWithoutDebugCompiler         220k ± 0%         220k ± 0%  -0.03%  (p=0.016 n=10+9)
      
      name                      old object-bytes  new object-bytes  delta
      Template                        553kB ± 0%        553kB ± 0%  -0.01%  (p=0.000 n=10+10)
      Unicode                         215kB ± 0%        215kB ± 0%    ~     (all equal)
      GoTypes                        2.02MB ± 0%       2.02MB ± 0%  -0.00%  (p=0.000 n=10+10)
      Compiler                       7.98MB ± 0%       7.98MB ± 0%  -0.01%  (p=0.000 n=10+10)
      SSA                            27.1MB ± 0%       27.1MB ± 0%  -0.00%  (p=0.000 n=10+10)
      Flate                           340kB ± 0%        340kB ± 0%  -0.01%  (p=0.000 n=10+10)
      GoParser                        434kB ± 0%        434kB ± 0%  -0.00%  (p=0.000 n=10+10)
      Reflect                        1.34MB ± 0%       1.34MB ± 0%  -0.01%  (p=0.000 n=10+10)
      Tar                             479kB ± 0%        479kB ± 0%  -0.00%  (p=0.000 n=10+10)
      XML                             618kB ± 0%        618kB ± 0%  -0.01%  (p=0.000 n=10+10)
      
      name                      old export-bytes  new export-bytes  delta
      Template                       20.4kB ± 0%       20.4kB ± 0%    ~     (all equal)
      Unicode                        8.21kB ± 0%       8.21kB ± 0%    ~     (all equal)
      GoTypes                        36.6kB ± 0%       36.6kB ± 0%    ~     (all equal)
      Compiler                        116kB ± 0%        116kB ± 0%  +0.00%  (p=0.000 n=10+10)
      SSA                             141kB ± 0%        141kB ± 0%  +0.00%  (p=0.000 n=10+10)
      Flate                          5.10kB ± 0%       5.10kB ± 0%    ~     (all equal)
      GoParser                       8.92kB ± 0%       8.92kB ± 0%    ~     (all equal)
      Reflect                        11.8kB ± 0%       11.8kB ± 0%    ~     (all equal)
      Tar                            10.9kB ± 0%       10.9kB ± 0%    ~     (all equal)
      XML                            17.4kB ± 0%       17.4kB ± 0%    ~     (all equal)
      
      name                      old text-bytes    new text-bytes    delta
      HelloSize                       742kB ± 0%        742kB ± 0%    ~     (all equal)
      CmdGoSize                      10.6MB ± 0%       10.6MB ± 0%    ~     (all equal)
      
      name                      old data-bytes    new data-bytes    delta
      HelloSize                      10.7kB ± 0%       10.7kB ± 0%    ~     (all equal)
      CmdGoSize                       312kB ± 0%        312kB ± 0%    ~     (all equal)
      
      name                      old bss-bytes     new bss-bytes     delta
      HelloSize                       122kB ± 0%        122kB ± 0%    ~     (all equal)
      CmdGoSize                       146kB ± 0%        146kB ± 0%    ~     (all equal)
      
      name                      old exe-bytes     new exe-bytes     delta
      HelloSize                      1.10MB ± 0%       1.10MB ± 0%    ~     (all equal)
      CmdGoSize                      14.9MB ± 0%       14.9MB ± 0%  -0.03%  (p=0.000 n=10+10)
      
      Change-Id: Ie078a42b29353b96654fa1f0f47d600b5a53762d
      Reviewed-on: https://go-review.googlesource.com/c/go/+/200017Reviewed-by: default avatarJeremy Faller <jeremy@golang.org>
      Reviewed-by: default avatarDavid Chase <drchase@google.com>
      Run-TryBot: Jeremy Faller <jeremy@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      46b75578
    • Cuong Manh Le's avatar
      encoding/json: support TextUnmarshaler for map keys with string underlying types · fb9af841
      Cuong Manh Le authored
      When unmarshaling to a map, the map's key type must either be a string,
      an integer, or implement encoding.TextUnmarshaler. But for a user
      defined type, reflect.Kind will not distinguish between the static type
      and the underlying type. In:
      
      	var x MyString = "x"
      	t := reflect.TypeOf(x)
      	println(t.Kind() == reflect.String)
      
      the Kind of x is still reflect.String, even though the static type of x
      is MyString.
      
      Moreover, checking for the map's key type is a string occurs first, so
      even if the map key type MyString implements encoding.TextUnmarshaler,
      it will be ignored.
      
      To fix the bug, check for encoding.TextUnmarshaler first.
      
      Fixes #34437
      
      Change-Id: I780e0b084575e1dddfbb433fe03857adf71d05fb
      Reviewed-on: https://go-review.googlesource.com/c/go/+/200237
      Run-TryBot: Cuong Manh Le <cuong.manhle.vn@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarDaniel Martí <mvdan@mvdan.cc>
      fb9af841
    • Tom Thorogood's avatar
      encoding/json: stop escaping U+2028 and U+2029 in Compact · 900ebcfe
      Tom Thorogood authored
      Compact has been inconsistently escaping only some problematic characters
      (U+2028 and U+2029), but not others (<, > and &). This change addresses
      this inconsistency by removing the escaping of U+2028 and U+2029.
      
      Callers who need to escape the output of Compact should use HTMLEscape
      which escapes <, >, &, U+2028 and U+2029.
      
      Fixes #34070
      Fixes #30357
      Updates #5836
      
      Change-Id: Icfce7691d2b8b1d9b05ba7b64d2d1e4f3b67871b
      GitHub-Last-Rev: 38859fe3e2fd586bbd45175c2742f7b123836bf3
      GitHub-Pull-Request: golang/go#34804
      Reviewed-on: https://go-review.googlesource.com/c/go/+/200217Reviewed-by: default avatarDaniel Martí <mvdan@mvdan.cc>
      Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      900ebcfe
  4. 09 Oct, 2019 13 commits
    • Jay Conrod's avatar
      cmd/go: forbid resolving import to modules when outside of a module · 3322f3e0
      Jay Conrod authored
      When in module mode outside of any module, 'go build' and most other
      commands will now report an error instead of resolving a package path
      to a module.
      
      Previously, most commands would attempt to find the latest version of
      a module providing the package. This could be very slow if many
      packages needed to be resolved this way. Since there is no go.mod file
      where module requirements can be saved, it's a repeatedly slow and
      confusing experience.
      
      After this change, 'go build' and other commands may still be used
      outside of a module on packages in std and source files (.go
      arguments) that only import packages in std. Listing any other package
      on the command line or importing a package outside std will cause an
      error.
      
      'go get' is exempted from the new behavior, since it's expected that
      'go get' resolves paths to modules at new versions.
      
      Updates #32027
      
      Change-Id: Ia9d3a3b4ad738ca5423472e17818d62b96a2c959
      Reviewed-on: https://go-review.googlesource.com/c/go/+/198778
      Run-TryBot: Jay Conrod <jayconrod@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarBryan C. Mills <bcmills@google.com>
      3322f3e0
    • Jay Conrod's avatar
      cmd/doc: show original import error when package cannot be found · aa09e751
      Jay Conrod authored
      Updates #34669
      
      Change-Id: I8d0ee68885e804e131f42a512080486f9b25e9dd
      Reviewed-on: https://go-review.googlesource.com/c/go/+/199819
      Run-TryBot: Jay Conrod <jayconrod@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarBryan C. Mills <bcmills@google.com>
      aa09e751
    • Jay Conrod's avatar
      go/build: import packages in module mode when GO111MODULE is "on" · 99b9ee3e
      Jay Conrod authored
      go/build.Import locates package dirctories using 'go list' when in
      module mode (finding, downloading, and extracting modules is
      complicated, so go/build does not handle it).
      
      Previously, Import used 'go list' if GO111MODULE was not explicitly
      off and a go.mod file was present (plus some other conditions). With
      this change, if GO111MODULE is "on", a go.mod file does not need to be
      present.
      
      Fixes #34669
      
      Change-Id: I9e56871054d4b07c3fc04b6f14a5c8c8e9f3c333
      Reviewed-on: https://go-review.googlesource.com/c/go/+/199818
      Run-TryBot: Jay Conrod <jayconrod@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarBryan C. Mills <bcmills@google.com>
      99b9ee3e
    • Brad Fitzpatrick's avatar
      all: remove the nacl port (part 2, amd64p32 + toolchain) · 07b4abd6
      Brad Fitzpatrick authored
      This is part two if the nacl removal. Part 1 was CL 199499.
      
      This CL removes amd64p32 support, which might be useful in the future
      if we implement the x32 ABI. It also removes the nacl bits in the
      toolchain, and some remaining nacl bits.
      
      Updates #30439
      
      Change-Id: I2475d5bb066d1b474e00e40d95b520e7c2e286e1
      Reviewed-on: https://go-review.googlesource.com/c/go/+/200077Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      07b4abd6
    • Ainar Garipov's avatar
      dog/go1.14: properly close code tags · 19a7490e
      Ainar Garipov authored
      Some code tags in the HTML were not properly closed. Close them so that
      the text is rendered correctly.
      
      Change-Id: I5c2170ffced313417f65004d53518128c34f7979
      Reviewed-on: https://go-review.googlesource.com/c/go/+/200117Reviewed-by: default avatarIan Lance Taylor <iant@golang.org>
      19a7490e
    • Cherry Zhang's avatar
      [dev.link] cmd/link: change some decodetype functions to operate on bytes · c455e887
      Cherry Zhang authored
      Change some decodetype functions to operate on bytes nstead of
      Symbol. This is in preparation of implementing live method
      tracking in index-based deadcode pass, and reducing/eliminating
      sym.Symbol in general.
      
      Change-Id: Ia9809ad7b182884225e1bda577e8dbec0cd216c5
      Reviewed-on: https://go-review.googlesource.com/c/go/+/199077Reviewed-by: default avatarAustin Clements <austin@google.com>
      c455e887
    • Cherry Zhang's avatar
      [dev.link] cmd/link, cmd/internal/goobj2: adopt new DWARF compilation unit... · 65a649c5
      Cherry Zhang authored
      [dev.link] cmd/link, cmd/internal/goobj2: adopt new DWARF compilation unit logic with new object file
      
      The dev.link branch was not sync'd with the new DWARF compilation
      unit logic change on the master branch, and the new object file
      format didn't support this.
      
      This CL adds the new DWARF CU and file table support to the new
      object file format. In the old object file, the DWARF file table
      is a separate section. For now, we do the same with the new
      object file, keeping it as a separate block.
      
      While here, also refactor the loader code so it is easier for the
      loader to carry per-object informations.
      
      Change-Id: I4c317941fc0a5831acbc11ce8c2a8b7421471372
      Reviewed-on: https://go-review.googlesource.com/c/go/+/198198Reviewed-by: default avatarAustin Clements <austin@google.com>
      65a649c5
    • Cherry Zhang's avatar
      [dev.link] cmd/link, cmd/internal/goobj2: mmap object file in -newobj mode · 0d7404c8
      Cherry Zhang authored
      With the old object file format, we use mmap (if supported) to
      read object files and back symbol data with mapped read-only
      memory.
      
      Do the same with the new object file format. This also
      significantly reduces number of syscalls made to read object
      files.
      
      Currently we still do mmap in object file level, not archive
      level. This is probably ok, as there shouldn't be many archives
      that contain more than one object. If this is a problem we can
      change that later.
      
      Change-Id: Icae3ef14d8ed6adbee1b5b48d420e2af22fd9604
      Reviewed-on: https://go-review.googlesource.com/c/go/+/197797
      Run-TryBot: Cherry Zhang <cherryyz@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarThan McIntosh <thanm@google.com>
      0d7404c8
    • Jay Conrod's avatar
      cmd/go: eliminate redundancy in import error messages · 32b6eb80
      Jay Conrod authored
      This change introduces a new interface, load.ImportPathError. An error
      may satisfy this by providing an ImportPath method and including the
      import path in its error text. modload.ImportMissingError satisfies
      this interface. load.ImportErrorf also provides a convenient way to
      create an error satisfying this interface with an arbitrary message.
      
      When load.PackageError formats its error text, it may omit the last
      path on the import stack if the wrapped error satisfies
      ImportPathError and has a matching path.
      
      To make this work, PackageError.Err is now an error instead of a
      string. PackageError.MarshalJSON will write Err as a string for
      'go list -json' output.
      
      When go/build.Import invokes 'go list' in module mode, it now runs
      with '-e' and includes '.Error' in the output format instead of
      expecting the error to be in the raw stderr text. If a package error
      is printed and a directory was not found, the error will be returned
      without extra decoration.
      
      Fixes #34752
      
      Change-Id: I2d81dab7dec19e0ae9f51f6412bc9f30433a8596
      Reviewed-on: https://go-review.googlesource.com/c/go/+/199840
      Run-TryBot: Jay Conrod <jayconrod@google.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarBryan C. Mills <bcmills@google.com>
      32b6eb80
    • Bryan C. Mills's avatar
      Revert "cmd/go: fail if a test binary exits with no output" · b3104fe3
      Bryan C. Mills authored
      This reverts CL 184457.
      
      Reason for revert: introduced failures in the regression test for #18153.
      
      Fixes #34791
      Updates #29062
      
      Change-Id: I4040965163f809083c023be055e69b1149d6214e
      Reviewed-on: https://go-review.googlesource.com/c/go/+/200106
      Run-TryBot: Bryan C. Mills <bcmills@google.com>
      Reviewed-by: default avatarAlexander Rakoczy <alex@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      b3104fe3
    • Jason A. Donenfeld's avatar
      cmd/go/internal/modfile: remove preceding empty lines when setting require · 4c7a8d63
      Jason A. Donenfeld authored
      When rewriting a go.mod file, we currently sort all of the require
      lines in a block. The way the parser works is that it considers
      preceding blank lines to be empty comment lines, and preceding empty
      comment lines are "owned" by their adjoining line. So when we go to sort
      them, the empty lines follow around each sorted entry, which doesn't
      make a whole lot of sense, since usually vertical space is inserted to
      show sections, and if things get moved around by sorting, those sections
      are no longer meaningful. This all results in one especially troublesome
      edge case: blank lines between a block opening ("require (") and the
      first block line ("golang.org/x/sys ...") are not treated the same way
      and are rewritten out of existence.
      
      Here's an example of the behavior this fixes.
      
      Starting input file:
      
          require (
              golang.zx2c4.com/wireguard master
      
              golang.org/x/crypto latest
              golang.org/x/net latest
              golang.org/x/sys latest
              golang.org/x/text latest
      
              github.com/lxn/walk latest
              github.com/lxn/win latest
          )
      
      Now we run this through `GOPROXY=direct go get -d`:
      
          require (
      
              github.com/lxn/walk v0.0.0-20190619151032-86d8802c197a
              github.com/lxn/win v0.0.0-20190716185335-d1d36f0e4f48
      
              golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586
              golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7
              golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a
              golang.org/x/text v0.3.2
              golang.zx2c4.com/wireguard v0.0.20190806-0.20190822065259-3cedc22d7b49
          )
      
      Notice how the blank lines before lxn/walk and x/crypto were preserved.
      
      Finally, we have this be rewritten yet again with a call to `go build`:
      
          require (
              github.com/lxn/walk v0.0.0-20190619151032-86d8802c197a
              github.com/lxn/win v0.0.0-20190716185335-d1d36f0e4f48
      
              golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586
              golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7
              golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a
              golang.org/x/text v0.3.2
              golang.zx2c4.com/wireguard v0.0.20190806-0.20190822065259-3cedc22d7b49
          )
      
      In this final resting point, the first blank line has been removed.
      
      The discrepancy between those two last stages are especially bothersome,
      because it makes for lots of dirty git commits and file contents
      bouncing back and forth.
      
      This commit fixes the problem as mentioned above, getting rid of those
      preceding blank lines. The output in all cases looks as it should, like
      this:
      
          require (
              github.com/lxn/walk v0.0.0-20190619151032-86d8802c197a
              github.com/lxn/win v0.0.0-20190716185335-d1d36f0e4f48
              golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586
              golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7
              golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a
              golang.org/x/text v0.3.2
              golang.zx2c4.com/wireguard v0.0.20190806-0.20190822065259-3cedc22d7b49
          )
      
      Fixes #33779
      
      Change-Id: I11c894440bd35f343ee62db3e06a50fa871f2599
      Reviewed-on: https://go-review.googlesource.com/c/go/+/199917
      Run-TryBot: Jason A. Donenfeld <Jason@zx2c4.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarBryan C. Mills <bcmills@google.com>
      4c7a8d63
    • Emmanuel T Odeke's avatar
      net/http: update bundled x/net/http2 · 829fae3b
      Emmanuel T Odeke authored
      Updates x/net/http2 to git rev d66e71096ffb9f08f36d9aefcae80ce319de6d68
      
          http2: end stream eagerly after sending the request body
          https://golang.org/cl/181157 (fixes #32254)
      
          all: fix typos
          https://golang.org/cl/193799
      
          http2: fix memory leak in random write scheduler
          https://golang.org/cl/198462 (fixes #33812)
      
          http2: do not sniff body if Content-Encoding is set
          https://golang.org/cl/199841 (updates #31753)
      
      Also unskips tests from CL 199799.
      
      Change-Id: I241c0b1cd18cad5041485be92809137a973e33bd
      Reviewed-on: https://go-review.googlesource.com/c/go/+/200102
      Run-TryBot: Emmanuel Odeke <emm.odeke@gmail.com>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      829fae3b
    • Emmanuel T Odeke's avatar
      net/http: do not sniff response if Content-Encoding header is set · e24a628a
      Emmanuel T Odeke authored
      Fixes #31753
      
      Change-Id: I32ec5906ef6714e19b094f67cb0f10a211a9c500
      Reviewed-on: https://go-review.googlesource.com/c/go/+/199799
      Run-TryBot: Emmanuel Odeke <emm.odeke@gmail.com>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
      e24a628a