From 0e09287ca8990f413ad31f13f37bbeed238662de Mon Sep 17 00:00:00 2001 From: sdghchj Date: Mon, 17 Apr 2023 15:37:17 +0800 Subject: [PATCH] fix bug: enums of explicit type conversion Signed-off-by: sdghchj --- package.go | 5 ++--- testdata/enums/expected.json | 15 ++++++++++----- testdata/enums/types/model.go | 1 + 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/package.go b/package.go index 08f8b92b3..bc25786ce 100644 --- a/package.go +++ b/package.go @@ -158,19 +158,18 @@ func (pkg *PackageDefinitions) evaluateConstValue(file *ast.File, iota int, expr if name == "uintptr" { name = "uint" } + value, _ := pkg.evaluateConstValue(file, iota, arg, globalEvaluator, recursiveStack) if IsGolangPrimitiveType(name) { - value, _ := pkg.evaluateConstValue(file, iota, arg, globalEvaluator, recursiveStack) value = EvaluateDataConversion(value, name) return value, nil } else if name == "len" { - value, _ := pkg.evaluateConstValue(file, iota, arg, globalEvaluator, recursiveStack) return reflect.ValueOf(value).Len(), nil } typeDef := globalEvaluator.FindTypeSpec(name, file) if typeDef == nil { return nil, nil } - return arg, valueExpr.Fun + return value, valueExpr.Fun } else if selector, ok := valueExpr.Fun.(*ast.SelectorExpr); ok { typeDef := globalEvaluator.FindTypeSpec(fullTypeName(selector.X.(*ast.Ident).Name, selector.Sel.Name), file) if typeDef == nil { diff --git a/testdata/enums/expected.json b/testdata/enums/expected.json index 9f4146802..79b56f8ad 100644 --- a/testdata/enums/expected.json +++ b/testdata/enums/expected.json @@ -118,7 +118,8 @@ 1, 2, 4, - 8 + 8, + 3 ], "type": "integer", "x-enum-comments": { @@ -131,7 +132,8 @@ "Mask1", "Mask2", "Mask3", - "Mask4" + "Mask4", + "Mask5" ], "name": "mask", "in": "formData" @@ -197,7 +199,8 @@ 1, 2, 4, - 8 + 8, + 3 ], "type": "integer" }, @@ -268,7 +271,8 @@ 1, 2, 4, - 8 + 8, + 3 ], "x-enum-comments": { "Mask1": "Mask1", @@ -280,7 +284,8 @@ "Mask1", "Mask2", "Mask3", - "Mask4" + "Mask4", + "Mask5" ] }, "types.Person": { diff --git a/testdata/enums/types/model.go b/testdata/enums/types/model.go index 8fc6bbc66..a6cba9cd1 100644 --- a/testdata/enums/types/model.go +++ b/testdata/enums/types/model.go @@ -30,6 +30,7 @@ const ( Mask2 /* Mask2 */ Mask3 // Mask3 Mask4 // Mask4 + Mask5 = Mask(A + B) ) type Type string