]> Cypherpunks repositories - gostls13.git/commitdiff
doc/go1.11: explain new vet typechecking behaviour in release notes
authorAlberto Donizetti <alb.donizetti@gmail.com>
Thu, 28 Jun 2018 18:22:13 +0000 (20:22 +0200)
committerAndrew Bonventre <andybons@golang.org>
Tue, 17 Jul 2018 16:44:23 +0000 (16:44 +0000)
Since Go1.10, go test runs vet on the tests before executing them.

Moreover, the vet tool typechecks the package under analysis with
go/types before running. In Go1.10, a typechecking failure just caused
a warning to be printed. In Go1.11, a typechecking failure will cause
vet to exit with a fatal error (see Issue #21287).

This means that starting with Go1.11, tests that don't typecheck will
fail immediately. This would not normally be an issue, since a test
that doesn't typecheck shouldn't even compile, and it should already
be broken.

Unfortunately, there's a bug in gc that makes it accept programs with
unused variables inside a closure (Issue #3059). This means that a
test with an unused variable inside a closure, that compiled and
passed in Go1.10, will fail in the typechecking step of vet starting
with Go1.11.

Explain this in the 1.11 release notes.

Fixes #26109

Change-Id: I970c1033ab6bc985d8c64bd24f56e854af155f96
Reviewed-on: https://go-review.googlesource.com/121455
Reviewed-by: Ian Lance Taylor <iant@golang.org>
doc/go1.11.html

index 2ce6875bdbc396202dde0c3e28f9ee9be909bce7..e3a2f5f0f57739bbac6d75a430e3be9e13a704be 100644 (file)
@@ -157,6 +157,35 @@ Do not send CLs removing the interior tags from such phrases.
   please <a href="https://golang.org/issue/new">file an issue</a> to let us know about them.
 </p>
 
+<h2 id="tools">Tools</h2>
+
+<h3 id="test">Test</h3>
+
+<p>
+  Since Go1.10, the <code>go</code>&nbsp;<code>test</code> command runs
+  <code>go</code>&nbsp;<code>vet</code> on the package being tested,
+  to identify problems before running the test. Since <code>vet</code>
+  typechecks the code with <a href="/pkg/go/types/">go/types</a>
+  before running, tests that do not typecheck will now fail.
+
+  In particular, tests that contain an unused variable inside a
+  closure compiled with Go1.10, because the Go compiler incorrectly
+  accepted them (<a href="https://golang.org/issues/3059">Issue #3059</a>),
+  but will now fail, since <code>go/types</code> correctly reports an
+  "unused variable" error in this case.
+</p>
+
+
+<h3 id="vet">Vet</h3>
+
+<p><!-- CL 108555 -->
+  The <a href="/cmd/vet/"><code>go</code>&nbsp;<code>vet</code></a>
+  command now reports a fatal error when the package under analysis
+  does not typecheck. Previously, a type checking error simply caused
+  a warning to be printed, and <code>vet</code> to exit with status 1.
+</p>
+
+
 <h2 id="library">Core library</h2>
 
 <p>