diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-16 19:23:18 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-16 19:23:18 +0000 |
commit | 43a123c1ae6613b3efeed291fa552ecd909d3acf (patch) | |
tree | fd92518b7024bc74031f78a1cf9e454b65e73665 /test/fixedbugs/issue44378.go | |
parent | Initial commit. (diff) | |
download | golang-1.20-43a123c1ae6613b3efeed291fa552ecd909d3acf.tar.xz golang-1.20-43a123c1ae6613b3efeed291fa552ecd909d3acf.zip |
Adding upstream version 1.20.14.upstream/1.20.14upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'test/fixedbugs/issue44378.go')
-rw-r--r-- | test/fixedbugs/issue44378.go | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/test/fixedbugs/issue44378.go b/test/fixedbugs/issue44378.go new file mode 100644 index 0000000..58c88d5 --- /dev/null +++ b/test/fixedbugs/issue44378.go @@ -0,0 +1,40 @@ +// compile + +// Copyright 2021 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// This test case caused a panic in the compiler's DWARF gen code. + +// Note to future maintainers of this code: +// +// ** Do NOT run gofmt when editing this file ** +// +// In order for the buggy behavior to be triggered in the compiler, +// we need to have a the function of interest all on one gigantic line. + +package a + +type O interface{} +type IO int +type OS int + +type A struct { + x int +} + +// original versions of the two function +func (p *A) UO(o O) { + p.r(o, o) +} +func (p *A) r(o1, o2 O) { + switch x := o1.(type) { + case *IO: + p.x = int(*x) + case *OS: + p.x = int(*x + 2) + } +} + +// see note above about the importance of all this code winding up on one line. +var myverylongname0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789 int ; func (p *A) UO2(o O) { p.r2(o, o); }; func (p *A) r2(o1, o2 O) { switch x := o1.(type) { case *IO: p.x = int(*x); case *OS: p.x = int(*x + 2); } } |