• 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
go_test.go 173 KB