From 4f7179b08e3eec5f599905e16c94b4dceab7fc9a Mon Sep 17 00:00:00 2001 From: Michael McLoughlin Date: Sat, 30 Oct 2021 13:47:55 -0700 Subject: [PATCH] gotypes,tests: test case for issue #195 (#214) Adds test cases for the bug in #195, similar to #212. Updates #195 Updates #191 --- gotypes/signature_test.go | 3 ++- tests/fixedbugs/issue195/asm.go | 15 +++++++++++++++ tests/fixedbugs/issue195/doc.go | 3 +++ tests/fixedbugs/issue195/issue195.s | 7 +++++++ tests/fixedbugs/issue195/issue195_test.go | 10 ++++++++++ tests/fixedbugs/issue195/stub.go | 6 ++++++ 6 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 tests/fixedbugs/issue195/asm.go create mode 100644 tests/fixedbugs/issue195/doc.go create mode 100644 tests/fixedbugs/issue195/issue195.s create mode 100644 tests/fixedbugs/issue195/issue195_test.go create mode 100644 tests/fixedbugs/issue195/stub.go diff --git a/gotypes/signature_test.go b/gotypes/signature_test.go index 03997f1..03f8e9b 100644 --- a/gotypes/signature_test.go +++ b/gotypes/signature_test.go @@ -159,7 +159,8 @@ func TestSignatureSizes(t *testing.T) { {"func(uint64) uint64", 16}, {"func([7]byte) byte", 9}, {"func(uint64, uint64) (uint64, uint64)", 32}, - {"func(uint16)", 2}, + {"func(uint16)", 2}, // issue #191 + {"func(*uint64, uint32)", 12}, // issue #195 } for _, c := range cases { s, err := ParseSignature(c.Expr) diff --git a/tests/fixedbugs/issue195/asm.go b/tests/fixedbugs/issue195/asm.go new file mode 100644 index 0000000..9f1a10c --- /dev/null +++ b/tests/fixedbugs/issue195/asm.go @@ -0,0 +1,15 @@ +//go:build ignore +// +build ignore + +package main + +import ( + . "github.com/mmcloughlin/avo/build" +) + +func main() { + TEXT("Issue195", NOSPLIT|NOFRAME, "func(x *uint64, y uint32)") + Doc("Issue195 tests for correct argument size.") + RET() + Generate() +} diff --git a/tests/fixedbugs/issue195/doc.go b/tests/fixedbugs/issue195/doc.go new file mode 100644 index 0000000..6a0a319 --- /dev/null +++ b/tests/fixedbugs/issue195/doc.go @@ -0,0 +1,3 @@ +// Package issue195 tests for correct argument size for a function without +// return types. This test is closely related to issue #191. +package issue195 diff --git a/tests/fixedbugs/issue195/issue195.s b/tests/fixedbugs/issue195/issue195.s new file mode 100644 index 0000000..0d557c0 --- /dev/null +++ b/tests/fixedbugs/issue195/issue195.s @@ -0,0 +1,7 @@ +// Code generated by command: go run asm.go -out issue195.s -stubs stub.go. DO NOT EDIT. + +#include "textflag.h" + +// func Issue195(x *uint64, y uint32) +TEXT ·Issue195(SB), NOSPLIT|NOFRAME, $0-12 + RET diff --git a/tests/fixedbugs/issue195/issue195_test.go b/tests/fixedbugs/issue195/issue195_test.go new file mode 100644 index 0000000..783a535 --- /dev/null +++ b/tests/fixedbugs/issue195/issue195_test.go @@ -0,0 +1,10 @@ +package issue195 + +import "testing" + +//go:generate go run asm.go -out issue195.s -stubs stub.go + +func TestIssue195(t *testing.T) { + x := uint64(42) + Issue195(&x, 42) +} diff --git a/tests/fixedbugs/issue195/stub.go b/tests/fixedbugs/issue195/stub.go new file mode 100644 index 0000000..c5ab3b4 --- /dev/null +++ b/tests/fixedbugs/issue195/stub.go @@ -0,0 +1,6 @@ +// Code generated by command: go run asm.go -out issue195.s -stubs stub.go. DO NOT EDIT. + +package issue195 + +// Issue195 tests for correct argument size. +func Issue195(x *uint64, y uint32)