1. 06 Feb, 2018 4 commits
    • Russ Cox's avatar
      cmd/go: rebuild as needed for tests of packages that add methods · 85bdd05c
      Russ Cox authored
      If A's external test package imports B, which imports A,
      and A's (internal) test code also adds something to A that
      invalidates anything in the export data from a build of A
      without its test code, then strictly speaking we need to
      rebuild B against the test-augmented version of A before
      using it to build A's external test package.
      
      We've been skating by without doing this for a very long time,
      but I knew we'd need to handle it better eventually,
      I planned for it in the new build cache simplifications,
      and the code was ready. Now that we have a real-world
      test case that needs it, turn on the "proper rebuilding" code.
      
      It doesn't really matter how much things slow down, since
      a real-world test cases that caused an internal compiler error
      before is now handled correctly, but it appears to be small:
      I wasn't able to measure an effect on "go test -a -c fmt".
      And of course most builds won't use -a and will be cached well.
      
      Fixes #6204.
      Fixes #23701.
      
      Change-Id: I2cd60cf400d1928428979ab05831f48ff7cee6ca
      Reviewed-on: https://go-review.googlesource.com/92215
      Run-TryBot: Russ Cox <rsc@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      85bdd05c
    • Ian Lance Taylor's avatar
      text/template: revert CL 66410 "add break, continue actions in ranges" · fd7331a8
      Ian Lance Taylor authored
      The new break and continue actions do not work in html/template, and
      fixing them requires thinking about security issues that seem too
      tricky at this stage of the release. We will try again for 1.11.
      
      Original CL description:
      
          text/template: add break, continue actions in ranges
      
          Adds the two range control actions "break" and "continue". They act the
          same as the Go keywords break and continue, but are simplified in that
          only the innermost range statement can be broken out of or continued.
      
          Fixes #20531
      
      Updates #20531
      Updates #23683
      
      Change-Id: Ia7fd3c409163e3bcb5dc42947ae90b15bdf89853
      Reviewed-on: https://go-review.googlesource.com/92155
      Run-TryBot: Ian Lance Taylor <iant@golang.org>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarRuss Cox <rsc@golang.org>
      fd7331a8
    • Daniel Martí's avatar
      cmd/vet: unexported interface{} fields on %s are ok · f54f780d
      Daniel Martí authored
      For example, the following program is valid:
      
      	type T struct {
      		f interface{}
      	}
      
      	func main() {
      		fmt.Printf("%s", T{"foo"}) // prints {foo}
      	}
      
      Since the field is of type interface{}, we might have any value in it.
      For example, if we had T{3}, fmt would complain. However, not knowing
      what the type under the interface is, we must be conservative.
      
      However, as shown in #17798, we should issue an error if the field's
      type is statically known to implement the error or fmt.Stringer
      interfaces. In those cases, the user likely wanted the %s format to call
      those methods. Keep the vet error in those cases.
      
      While at it, add more field type test cases, such as custom error types,
      and interfaces that extend the error interface.
      
      Fixes #23563.
      
      Change-Id: I063885955555917c59da000391b603f0d6dce432
      Reviewed-on: https://go-review.googlesource.com/90516
      Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
      TryBot-Result: Gobot Gobot <gobot@golang.org>
      Reviewed-by: 's avatarRuss Cox <rsc@golang.org>
      Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      f54f780d
    • fanzha02's avatar
      cmd/internal/obj/arm64: fix assemble add/adds/sub/subs/cmp/cmn(extended register) bug · a0222ec5
      fanzha02 authored
      The current code encodes the wrong option value in the binary.
      
      The fix reconstructs the function opxrrr() that does not encode the option
      value into the binary value when arguments is sign or zero-extended register.
      
      Add the relevant test cases and negative tests.
      
      Fixes #23501
      Change-Id: Ie5850ead2ad08d9a235a5664869aac5051762f1f
      Reviewed-on: https://go-review.googlesource.com/88876
      Run-TryBot: Cherry Zhang <cherryyz@google.com>
      Reviewed-by: 's avatarCherry Zhang <cherryyz@google.com>
      a0222ec5
  2. 05 Feb, 2018 3 commits
  3. 02 Feb, 2018 5 commits
  4. 31 Jan, 2018 10 commits
  5. 30 Jan, 2018 7 commits
  6. 29 Jan, 2018 2 commits
  7. 28 Jan, 2018 1 commit
  8. 26 Jan, 2018 2 commits
  9. 25 Jan, 2018 5 commits
  10. 24 Jan, 2018 1 commit
    • Russ Cox's avatar
      cmd/go: fix -coverpkg=all with dot imports · 8d88c9ae
      Russ Cox authored
      If you use -coverpkg=all you get coverage for all packages in the build.
      Go 1.9 used a global counter for all the GoCover variables, so that they
      were distinct for the entire build. The global counter caused problems
      with caching, so we switched to a per-package counter. But now the
      GoCover_0 in one package may be dot-imported into another and
      conflict with the GoCover_0 in that other package.
      
      Reestablish (overwhelmingly likely) global uniqueness of GoCover
      variables by appending an _xxxxxxxxxxxx suffix, where the x's are
      the prefix of the SHA256 hash of the import path. The point is only
      to avoid accidents, not to defeat people determined to break the tools.
      
      Fixes #23432.
      
      Change-Id: I3088eceebbe35174f2eefe8d558b7c8b59d3eeac
      Reviewed-on: https://go-review.googlesource.com/89135Reviewed-by: 's avatarIan Lance Taylor <iant@golang.org>
      8d88c9ae