From a2521a5276813f1d8a2c938126f278c66bc1f64a Mon Sep 17 00:00:00 2001 From: ltzMaxwell Date: Wed, 10 Apr 2024 19:51:10 +0800 Subject: [PATCH] proper err msg --- gnovm/pkg/gnolang/preprocess.go | 4 ++-- gnovm/tests/files/type37.gno | 2 +- gnovm/tests/files/type37b.gno | 2 +- gnovm/tests/files/type37d.gno | 2 +- gnovm/tests/files/type37e.gno | 2 +- gnovm/tests/files/type37f.gno | 16 ++++++++++++++++ gnovm/tests/files/type39.gno | 2 +- gnovm/tests/files/type39a.gno | 2 +- gnovm/tests/files/type39b.gno | 2 +- 9 files changed, 25 insertions(+), 9 deletions(-) create mode 100644 gnovm/tests/files/type37f.gno diff --git a/gnovm/pkg/gnolang/preprocess.go b/gnovm/pkg/gnolang/preprocess.go index 0af42e22646..d393dcb1b1d 100644 --- a/gnovm/pkg/gnolang/preprocess.go +++ b/gnovm/pkg/gnolang/preprocess.go @@ -2957,10 +2957,10 @@ func predefineNow2(store Store, last BlockNode, d Decl, m map[Name]struct{}) (De // check base type of receiver type, should not be pointer type or interface type assertValidReceiverType := func(t Type) { if _, ok := t.(*PointerType); ok { - panic(fmt.Sprintf("invalid receiver type %v (pointer type)\n", rt)) + panic(fmt.Sprintf("invalid receiver type %v (base type is pointer type)\n", rt)) } if _, ok := t.(*InterfaceType); ok { - panic(fmt.Sprintf("invalid receiver type %v (interface type)\n", rt)) + panic(fmt.Sprintf("invalid receiver type %v (base type is interface type)\n", rt)) } } diff --git a/gnovm/tests/files/type37.gno b/gnovm/tests/files/type37.gno index 40f11588944..1bc157b44ff 100644 --- a/gnovm/tests/files/type37.gno +++ b/gnovm/tests/files/type37.gno @@ -17,4 +17,4 @@ func main() { } // Error: -// main/files/type37.gno:8: invalid receiver type main.Arr (pointer type) +// main/files/type37.gno:8: invalid receiver type main.Arr (base type is pointer type) diff --git a/gnovm/tests/files/type37b.gno b/gnovm/tests/files/type37b.gno index 2056b4050b7..aea1b445ca1 100644 --- a/gnovm/tests/files/type37b.gno +++ b/gnovm/tests/files/type37b.gno @@ -19,4 +19,4 @@ func main() { } // Error: -// main/files/type37b.gno:7: invalid receiver type **main.Integer (pointer type) +// main/files/type37b.gno:7: invalid receiver type **main.Integer (base type is pointer type) diff --git a/gnovm/tests/files/type37d.gno b/gnovm/tests/files/type37d.gno index debdb613f5d..ada9541e64e 100644 --- a/gnovm/tests/files/type37d.gno +++ b/gnovm/tests/files/type37d.gno @@ -13,4 +13,4 @@ func main() { } // Error: -// main/files/type37d.gno:7: invalid receiver type main.IntPtr (pointer type) +// main/files/type37d.gno:7: invalid receiver type main.IntPtr (base type is pointer type) diff --git a/gnovm/tests/files/type37e.gno b/gnovm/tests/files/type37e.gno index 7bae49feda7..a2537c9cb8d 100644 --- a/gnovm/tests/files/type37e.gno +++ b/gnovm/tests/files/type37e.gno @@ -14,4 +14,4 @@ func main() { } // Error: -// main/files/type37e.gno:8: invalid receiver type main.Int2 (pointer type) +// main/files/type37e.gno:8: invalid receiver type main.Int2 (base type is pointer type) diff --git a/gnovm/tests/files/type37f.gno b/gnovm/tests/files/type37f.gno new file mode 100644 index 00000000000..7bffa748314 --- /dev/null +++ b/gnovm/tests/files/type37f.gno @@ -0,0 +1,16 @@ +package main + +type IntPtr *int + +var ip IntPtr = new(int) + +func (p *IntPtr) Int() int { + return **p +} + +func main() { + println((&ip).Int()) +} + +// Error: +// main/files/type37f.gno:7: invalid receiver type *main.IntPtr (base type is pointer type) diff --git a/gnovm/tests/files/type39.gno b/gnovm/tests/files/type39.gno index b4eeaa4b41f..aebcc226385 100644 --- a/gnovm/tests/files/type39.gno +++ b/gnovm/tests/files/type39.gno @@ -19,4 +19,4 @@ func main() { } // Error: -// main/files/type39.gno:7: invalid receiver type main.foo (interface type) +// main/files/type39.gno:7: invalid receiver type main.foo (base type is interface type) diff --git a/gnovm/tests/files/type39a.gno b/gnovm/tests/files/type39a.gno index 5d861cb62cf..06f41897f93 100644 --- a/gnovm/tests/files/type39a.gno +++ b/gnovm/tests/files/type39a.gno @@ -21,4 +21,4 @@ func main() { } // Error: -// main/files/type39a.gno:9: invalid receiver type main.FF (interface type) +// main/files/type39a.gno:9: invalid receiver type main.FF (base type is interface type) diff --git a/gnovm/tests/files/type39b.gno b/gnovm/tests/files/type39b.gno index f0f80a7e15a..dbf5312a825 100644 --- a/gnovm/tests/files/type39b.gno +++ b/gnovm/tests/files/type39b.gno @@ -19,4 +19,4 @@ func main() { } // Error: -// main/files/type39b.gno:7: invalid receiver type *main.foo (interface type) +// main/files/type39b.gno:7: invalid receiver type *main.foo (base type is interface type)