This is an automated email from the ASF dual-hosted git repository.

wusheng pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/skywalking-go.git


The following commit(s) were added to refs/heads/main by this push:
     new 322daeb  Fix enhance param error when there are multiple params (#162)
322daeb is described below

commit 322daeb60b64b05ce7d174b433100c64834835b2
Author: Starry <codeprince2...@163.com>
AuthorDate: Mon Jan 22 01:30:57 2024 +0800

    Fix enhance param error when there are multiple params (#162)
---
 CHANGES.md                               |  1 +
 tools/go-agent/tools/enhancement.go      |  1 -
 tools/go-agent/tools/enhancement_test.go | 55 ++++++++++++++++++++++++++++----
 3 files changed, 50 insertions(+), 7 deletions(-)

diff --git a/CHANGES.md b/CHANGES.md
index b4c2a70..a6ef940 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -20,6 +20,7 @@ Release Notes.
 * Fix ParseVendorModule error for special case in vendor/modules.txt.
 * Fix enhance method error when unknown parameter type.
 * Fix wrong tracing context when trace have been sampled.
+* Fix enhance param error when there are multiple params.
 
 #### Issues and PR
 - All issues are 
[here](https://github.com/apache/skywalking/milestone/197?closed=1)
diff --git a/tools/go-agent/tools/enhancement.go 
b/tools/go-agent/tools/enhancement.go
index 4171f61..04a3052 100644
--- a/tools/go-agent/tools/enhancement.go
+++ b/tools/go-agent/tools/enhancement.go
@@ -88,7 +88,6 @@ func EnhanceParameterNames(fields *dst.FieldList, fieldType 
FieldListType) []*Pa
 
                        for _, n := range f.Names {
                                result = append(result, 
newParameterInfo(n.Name, f.Type))
-                               break
                        }
                }
        }
diff --git a/tools/go-agent/tools/enhancement_test.go 
b/tools/go-agent/tools/enhancement_test.go
index e2a8c51..3bd5d6c 100644
--- a/tools/go-agent/tools/enhancement_test.go
+++ b/tools/go-agent/tools/enhancement_test.go
@@ -30,13 +30,15 @@ func buildParameterValidateInfo(name, typeName string) 
*ParameterInfo {
        }
 }
 
+type TestEnhanceParameterInfo struct {
+       funcCode string
+       recvs    []*ParameterInfo
+       params   []*ParameterInfo
+       results  []*ParameterInfo
+}
+
 func TestEnhanceParameterNames(t *testing.T) {
-       tests := []struct {
-               funcCode string
-               recvs    []*ParameterInfo
-               params   []*ParameterInfo
-               results  []*ParameterInfo
-       }{
+       tests := []TestEnhanceParameterInfo{
                {
                        funcCode: `func (*Example) Test(int) bool {
                                return false
@@ -67,6 +69,47 @@ func TestEnhanceParameterNames(t *testing.T) {
                },
        }
 
+       validateParameterTestList(t, tests)
+}
+
+func TestEnhanceParameterNamesMultiParams(t *testing.T) {
+       tests := []TestEnhanceParameterInfo{
+               {
+                       funcCode: `func (*Example) Test(n, m int) bool {
+                               return false
+                       }`,
+                       recvs: []*ParameterInfo{
+                               buildParameterValidateInfo("skywalking_recv_0", 
"*Example"),
+                       },
+                       params: []*ParameterInfo{
+                               buildParameterValidateInfo("n", "int"),
+                               buildParameterValidateInfo("m", "int"),
+                       },
+                       results: []*ParameterInfo{
+                               
buildParameterValidateInfo("skywalking_result_0", "bool"),
+                       },
+               },
+               {
+                       funcCode: `func (e *Example) Test(n, m int) (b bool) {
+                               return false
+}`,
+                       recvs: []*ParameterInfo{
+                               buildParameterValidateInfo("e", "*Example"),
+                       },
+                       params: []*ParameterInfo{
+                               buildParameterValidateInfo("n", "int"),
+                               buildParameterValidateInfo("m", "int"),
+                       },
+                       results: []*ParameterInfo{
+                               buildParameterValidateInfo("b", "bool"),
+                       },
+               },
+       }
+
+       validateParameterTestList(t, tests)
+}
+
+func validateParameterTestList(t *testing.T, tests []TestEnhanceParameterInfo) 
{
        for i, test := range tests {
                fun := GoStringToDecls(test.funcCode)[0].(*dst.FuncDecl)
                var actualRecv, actualParams, actualResults []*ParameterInfo

Reply via email to