From e964446baeedc9ea3cfbd75fb13295d91390b3a6 Mon Sep 17 00:00:00 2001 From: sdghchj Date: Mon, 31 Oct 2022 19:24:54 +0800 Subject: [PATCH 1/4] =?UTF-8?q?Enhancements:=20search=20imports=20sequence?= =?UTF-8?q?ly,=20till=20find=20the=20type.=20consider=20every=20import=20m?= =?UTF-8?q?ode=20,such=20as=20alias=EF=BC=8Cunderline,=20dot.=20a=20model?= =?UTF-8?q?=20imported=20from=20an=20external=20by=20mode=20dot.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: sdghchj --- packages.go | 144 +++++------ testdata/generics_package_alias/api/api1.go | 8 +- testdata/generics_package_alias/api/api2.go | 16 +- testdata/generics_package_alias/api/api3.go | 46 ++++ testdata/generics_package_alias/api/api4.go | 16 ++ testdata/generics_package_alias/api/api5.go | 16 ++ testdata/generics_package_alias/api/api6.go | 16 ++ testdata/generics_package_alias/api/api7.go | 16 ++ testdata/generics_package_alias/api/api8.go | 16 ++ testdata/generics_package_alias/expected.json | 235 +++++++++++++++++- .../path2/v1/product.go | 4 + 11 files changed, 435 insertions(+), 98 deletions(-) create mode 100644 testdata/generics_package_alias/api/api3.go create mode 100644 testdata/generics_package_alias/api/api4.go create mode 100644 testdata/generics_package_alias/api/api5.go create mode 100644 testdata/generics_package_alias/api/api6.go create mode 100644 testdata/generics_package_alias/api/api7.go create mode 100644 testdata/generics_package_alias/api/api8.go diff --git a/packages.go b/packages.go index ff61ef49c..b9d41c55c 100644 --- a/packages.go +++ b/packages.go @@ -287,76 +287,89 @@ func (pkgDefs *PackagesDefinitions) loadExternalPackage(importPath string) error // findPackagePathFromImports finds out the package path of a package via ranging imports of an ast.File // @pkg the name of the target package // @file current ast.File in which to search imports -// @fuzzy search for the package path that the last part matches the @pkg if true -// @return the package path of a package of @pkg. -func (pkgDefs *PackagesDefinitions) findPackagePathFromImports(pkg string, file *ast.File, fuzzy bool) string { +// @return the package paths of a package of @pkg. +func (pkgDefs *PackagesDefinitions) findPackagePathFromImports(pkg string, file *ast.File) (matchedPkgPaths, externalPkgPaths []string) { if file == nil { - return "" + return } if strings.ContainsRune(pkg, '.') { pkg = strings.Split(pkg, ".")[0] } - hasAnonymousPkg := false - matchLastPathPart := func(pkgPath string) bool { paths := strings.Split(pkgPath, "/") - return paths[len(paths)-1] == pkg } // prior to match named package for _, imp := range file.Imports { + path := strings.Trim(imp.Path.Value, `"`) if imp.Name != nil { if imp.Name.Name == pkg { - return strings.Trim(imp.Path.Value, `"`) + // if name match, break loop and return + _, ok := pkgDefs.packages[path] + if ok { + matchedPkgPaths = []string{path} + externalPkgPaths = nil + } else { + externalPkgPaths = []string{path} + matchedPkgPaths = nil + } + break + } else if imp.Name.Name == "_" && len(pkg) > 0 { + //for unused types + pd, ok := pkgDefs.packages[path] + if ok { + if pd.Name == pkg { + matchedPkgPaths = append(matchedPkgPaths, path) + } + } else if matchLastPathPart(path) { + externalPkgPaths = append(externalPkgPaths, path) + } + } else if imp.Name.Name == "." && len(pkg) == 0 { + _, ok := pkgDefs.packages[path] + if ok { + matchedPkgPaths = append(matchedPkgPaths, path) + } else if len(pkg) == 0 || matchLastPathPart(path) { + externalPkgPaths = append(externalPkgPaths, path) + } } - - if imp.Name.Name == "_" { - hasAnonymousPkg = true + } else if pkgDefs.packages != nil && len(pkg) > 0 { + pd, ok := pkgDefs.packages[path] + if ok { + if pd.Name == pkg { + matchedPkgPaths = append(matchedPkgPaths, path) + } + } else if matchLastPathPart(path) { + externalPkgPaths = append(externalPkgPaths, path) } - - continue } + } - if pkgDefs.packages != nil { - path := strings.Trim(imp.Path.Value, `"`) - if fuzzy { - if matchLastPathPart(path) { - return path - } + if len(pkg) == 0 || file.Name.Name == pkg { + matchedPkgPaths = append(matchedPkgPaths, pkgDefs.files[file].PackagePath) + } - continue - } + return +} - pd, ok := pkgDefs.packages[path] - if ok && pd.Name == pkg { - return path - } +func (pkgDefs *PackagesDefinitions) findTypeSpecFromPackagePaths(matchedPkgPaths, externalPkgPaths []string, name string) (typeDef *TypeSpecDef) { + for _, pkgPath := range matchedPkgPaths { + typeDef = pkgDefs.findTypeSpec(pkgPath, name) + if typeDef != nil { + return typeDef } } - - // match unnamed package - if hasAnonymousPkg && pkgDefs.packages != nil { - for _, imp := range file.Imports { - if imp.Name == nil { - continue - } - if imp.Name.Name == "_" { - path := strings.Trim(imp.Path.Value, `"`) - if fuzzy { - if matchLastPathPart(path) { - return path - } - } else if pd, ok := pkgDefs.packages[path]; ok && pd.Name == pkg { - return path - } + for _, pkgPath := range externalPkgPaths { + if err := pkgDefs.loadExternalPackage(pkgPath); err == nil { + typeDef = pkgDefs.findTypeSpec(pkgPath, name) + if typeDef != nil { + return typeDef } } } - - return "" + return typeDef } // FindTypeSpec finds out TypeSpecDef of a type by typeName @@ -379,23 +392,8 @@ func (pkgDefs *PackagesDefinitions) FindTypeSpec(typeName string, file *ast.File return typeDef } - pkgPath := pkgDefs.findPackagePathFromImports(parts[0], file, false) - if len(pkgPath) == 0 { - // check if the current package - if parts[0] == file.Name.Name { - pkgPath = pkgDefs.files[file].PackagePath - } else if parseDependency { - // take it as an external package, needs to be loaded - if pkgPath = pkgDefs.findPackagePathFromImports(parts[0], file, true); len(pkgPath) > 0 { - if err := pkgDefs.loadExternalPackage(pkgPath); err != nil { - return nil - } - } - } - } - - typeDef = pkgDefs.findTypeSpec(pkgPath, parts[1]) - + pkgPaths, externalPkgPaths := pkgDefs.findPackagePathFromImports(parts[0], file) + typeDef = pkgDefs.findTypeSpecFromPackagePaths(pkgPaths, externalPkgPaths, parts[1]) return pkgDefs.parametrizeGenericType(file, typeDef, typeName, parseDependency) } @@ -410,25 +408,11 @@ func (pkgDefs *PackagesDefinitions) FindTypeSpec(typeName string, file *ast.File return typeDef } - typeDef = func() *TypeSpecDef { - name := parts[0] - typeDef, ok := pkgDefs.uniqueDefinitions[fullTypeName(file.Name.Name, name)] - if ok { - return typeDef - } - typeDef = pkgDefs.findTypeSpec(pkgDefs.files[file].PackagePath, name) - if typeDef != nil { - return typeDef - } - for _, imp := range file.Imports { - if imp.Name != nil && imp.Name.Name == "." { - typeDef = pkgDefs.findTypeSpec(strings.Trim(imp.Path.Value, `"`), name) - if typeDef != nil { - break - } - } - } - return typeDef - }() + name := parts[0] + typeDef, ok = pkgDefs.uniqueDefinitions[fullTypeName(file.Name.Name, name)] + if !ok { + pkgPaths, externalPkgPaths := pkgDefs.findPackagePathFromImports("", file) + typeDef = pkgDefs.findTypeSpecFromPackagePaths(pkgPaths, externalPkgPaths, name) + } return pkgDefs.parametrizeGenericType(file, typeDef, typeName, parseDependency) } diff --git a/testdata/generics_package_alias/api/api1.go b/testdata/generics_package_alias/api/api1.go index cf443df62..77cfe508f 100644 --- a/testdata/generics_package_alias/api/api1.go +++ b/testdata/generics_package_alias/api/api1.go @@ -9,8 +9,8 @@ import ( // @Accept json // @Produce json // @Success 200 {object} myv1.ListResult[myv1.ProductDto] "" -// @Router /api1 [post] -func CreateMovie1() { +// @Router /api01 [post] +func CreateMovie01() { _ = myv1.ListResult[myv1.ProductDto]{} } @@ -19,7 +19,7 @@ func CreateMovie1() { // @Accept json // @Produce json // @Success 200 {object} myv1.RenamedListResult[myv1.RenamedProductDto] "" -// @Router /api2 [post] -func CreateMovie2() { +// @Router /api02 [post] +func CreateMovie02() { _ = myv1.ListResult[myv1.ProductDto]{} } diff --git a/testdata/generics_package_alias/api/api2.go b/testdata/generics_package_alias/api/api2.go index 9ffdd3911..eb8335217 100644 --- a/testdata/generics_package_alias/api/api2.go +++ b/testdata/generics_package_alias/api/api2.go @@ -10,8 +10,8 @@ import ( // @Accept json // @Produce json // @Success 200 {object} myv2.ListResult[myv2.ProductDto] "" -// @Router /api3 [post] -func CreateMovie3() { +// @Router /api03 [post] +func CreateMovie03() { _ = myv2.ListResult[myv2.ProductDto]{} } @@ -20,8 +20,8 @@ func CreateMovie3() { // @Accept json // @Produce json // @Success 200 {object} myv2.RenamedListResult[myv2.RenamedProductDto] "" -// @Router /api4 [post] -func CreateMovie4() { +// @Router /api04 [post] +func CreateMovie04() { _ = myv2.ListResult[myv2.ProductDto]{} } @@ -30,8 +30,8 @@ func CreateMovie4() { // @Accept json // @Produce json // @Success 200 {object} myv1.ListResult[myv2.ProductDto] "" -// @Router /api5 [post] -func CreateMovie5() { +// @Router /api05 [post] +func CreateMovie05() { _ = myv1.ListResult[myv2.ProductDto]{} } @@ -40,7 +40,7 @@ func CreateMovie5() { // @Accept json // @Produce json // @Success 200 {object} myv1.RenamedListResult[myv2.RenamedProductDto] "" -// @Router /api6 [post] -func CreateMovie6() { +// @Router /api06 [post] +func CreateMovie06() { _ = myv1.ListResult[myv2.ProductDto]{} } diff --git a/testdata/generics_package_alias/api/api3.go b/testdata/generics_package_alias/api/api3.go new file mode 100644 index 000000000..24cb85272 --- /dev/null +++ b/testdata/generics_package_alias/api/api3.go @@ -0,0 +1,46 @@ +package api + +import ( + _ "github.com/swaggo/swag/testdata/generics_package_alias/path1/v1" + . "github.com/swaggo/swag/testdata/generics_package_alias/path2/v1" +) + +// @Summary Create movie +// @Description models imported from an unnamed package +// @Accept json +// @Produce json +// @Success 200 {object} v1.ListResult[v1.ProductDto] "" +// @Router /api07 [post] +func CreateMovie07() { + var _ ProductDto +} + +// @Summary Create movie +// @Description models imported from an unnamed package +// @Accept json +// @Produce json +// @Success 200 {object} ListResult[ProductDto] "" +// @Router /api08 [post] +func CreateMovie08() { + var _ ProductDto +} + +// @Summary Create movie +// @Description models imported from an unnamed package +// @Accept json +// @Produce json +// @Success 200 {object} ListResult[v1.ProductDto] "" +// @Router /api09 [post] +func CreateMovie09() { + var _ ProductDto +} + +// @Summary Create movie +// @Description models imported from an unnamed package +// @Accept json +// @Produce json +// @Success 200 {object} v1.ListResult[ProductDto] "" +// @Router /api10 [post] +func CreateMovie10() { + var _ ProductDto +} diff --git a/testdata/generics_package_alias/api/api4.go b/testdata/generics_package_alias/api/api4.go new file mode 100644 index 000000000..d65c8ddba --- /dev/null +++ b/testdata/generics_package_alias/api/api4.go @@ -0,0 +1,16 @@ +package api + +import ( + "github.com/swaggo/swag/testdata/external_models/external" + _ "github.com/swaggo/swag/testdata/generics_package_alias/path1/v1" +) + +// @Summary Create movie +// @Description models imported from an external package +// @Accept json +// @Produce json +// @Success 200 {object} v1.ListResult[external.MyError] "" +// @Router /api11 [post] +func CreateMovie11() { + var _ external.MyError +} diff --git a/testdata/generics_package_alias/api/api5.go b/testdata/generics_package_alias/api/api5.go new file mode 100644 index 000000000..daf494031 --- /dev/null +++ b/testdata/generics_package_alias/api/api5.go @@ -0,0 +1,16 @@ +package api + +import ( + myexternal "github.com/swaggo/swag/testdata/external_models/external" + _ "github.com/swaggo/swag/testdata/generics_package_alias/path1/v1" +) + +// @Summary Create movie +// @Description models imported from a named external package +// @Accept json +// @Produce json +// @Success 200 {object} v1.ListResult[myexternal.MyError] "" +// @Router /api12 [post] +func CreateMovie12() { + var _ myexternal.MyError +} diff --git a/testdata/generics_package_alias/api/api6.go b/testdata/generics_package_alias/api/api6.go new file mode 100644 index 000000000..e112b8466 --- /dev/null +++ b/testdata/generics_package_alias/api/api6.go @@ -0,0 +1,16 @@ +package api + +import ( + . "github.com/swaggo/swag/testdata/external_models/external" + _ "github.com/swaggo/swag/testdata/generics_package_alias/path1/v1" +) + +// @Summary Create movie +// @Description models from an external package imported by mode dot +// @Accept json +// @Produce json +// @Success 200 {object} v1.ListResult[MyError] "" +// @Router /api13 [post] +func CreateMovie13() { + var _ MyError +} diff --git a/testdata/generics_package_alias/api/api7.go b/testdata/generics_package_alias/api/api7.go new file mode 100644 index 000000000..48cdcae7e --- /dev/null +++ b/testdata/generics_package_alias/api/api7.go @@ -0,0 +1,16 @@ +package api + +import ( + _ "github.com/swaggo/swag/testdata/external_models/external" + _ "github.com/swaggo/swag/testdata/generics_package_alias/path1/v1" +) + +// @Summary Create movie +// @Description models imported from an unnamed external package +// @Accept json +// @Produce json +// @Success 200 {object} v1.ListResult[external.MyError] "" +// @Router /api14 [post] +func CreateMovie14() { + +} diff --git a/testdata/generics_package_alias/api/api8.go b/testdata/generics_package_alias/api/api8.go new file mode 100644 index 000000000..bda390ce6 --- /dev/null +++ b/testdata/generics_package_alias/api/api8.go @@ -0,0 +1,16 @@ +package api + +import ( + _ "github.com/swaggo/swag/testdata/generics_package_alias/path1/v1" + _ "github.com/swaggo/swag/testdata/generics_package_alias/path2/v1" +) + +// @Summary Create movie +// @Description model from a package whose name conflicts with other packages +// @Accept json +// @Produce json +// @Success 200 {object} v1.UniqueProduct "" +// @Router /api15 [post] +func CreateMovie15() { + +} diff --git a/testdata/generics_package_alias/expected.json b/testdata/generics_package_alias/expected.json index ec2c51aa1..5fa0aa777 100644 --- a/testdata/generics_package_alias/expected.json +++ b/testdata/generics_package_alias/expected.json @@ -4,7 +4,7 @@ "contact": {} }, "paths": { - "/api1": { + "/api01": { "post": { "description": "Create a new movie production", "consumes": [ @@ -24,7 +24,7 @@ } } }, - "/api2": { + "/api02": { "post": { "description": "Create a new movie production", "consumes": [ @@ -44,7 +44,7 @@ } } }, - "/api3": { + "/api03": { "post": { "description": "Create a new movie production", "consumes": [ @@ -64,7 +64,7 @@ } } }, - "/api4": { + "/api04": { "post": { "description": "Create a new movie production", "consumes": [ @@ -84,7 +84,7 @@ } } }, - "/api5": { + "/api05": { "post": { "description": "Create a new movie production", "consumes": [ @@ -104,7 +104,7 @@ } } }, - "/api6": { + "/api06": { "post": { "description": "Create a new movie production", "consumes": [ @@ -123,6 +123,186 @@ } } } + }, + "/api07": { + "post": { + "description": "models imported from an unnamed package", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "summary": "Create movie", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/github_com_swaggo_swag_testdata_generics_package_alias_path1_v1.ListResult-github_com_swaggo_swag_testdata_generics_package_alias_path1_v1_ProductDto" + } + } + } + } + }, + "/api08": { + "post": { + "description": "models imported from an unnamed package", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "summary": "Create movie", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/github_com_swaggo_swag_testdata_generics_package_alias_path2_v1.ListResult-github_com_swaggo_swag_testdata_generics_package_alias_path2_v1_ProductDto" + } + } + } + } + }, + "/api09": { + "post": { + "description": "models imported from an unnamed package", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "summary": "Create movie", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/github_com_swaggo_swag_testdata_generics_package_alias_path2_v1.ListResult-github_com_swaggo_swag_testdata_generics_package_alias_path1_v1_ProductDto" + } + } + } + } + }, + "/api10": { + "post": { + "description": "models imported from an unnamed package", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "summary": "Create movie", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/github_com_swaggo_swag_testdata_generics_package_alias_path1_v1.ListResult-github_com_swaggo_swag_testdata_generics_package_alias_path2_v1_ProductDto" + } + } + } + } + }, + "/api11": { + "post": { + "description": "models imported from an external package", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "summary": "Create movie", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/github_com_swaggo_swag_testdata_generics_package_alias_path1_v1.ListResult-external_MyError" + } + } + } + } + }, + "/api12": { + "post": { + "description": "models imported from a named external package", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "summary": "Create movie", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/github_com_swaggo_swag_testdata_generics_package_alias_path1_v1.ListResult-external_MyError" + } + } + } + } + }, + "/api13": { + "post": { + "description": "models from an external package imported by mode dot", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "summary": "Create movie", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/github_com_swaggo_swag_testdata_generics_package_alias_path1_v1.ListResult-external_MyError" + } + } + } + } + }, + "/api14": { + "post": { + "description": "models imported from an unnamed external package", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "summary": "Create movie", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/github_com_swaggo_swag_testdata_generics_package_alias_path1_v1.ListResult-external_MyError" + } + } + } + } + }, + "/api15": { + "post": { + "description": "model from a package whose name conflicts with other packages", + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "summary": "Create movie", + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/v1.UniqueProduct" + } + } + } + } } }, "definitions": { @@ -175,6 +355,30 @@ } } }, + "external.MyError": { + "type": "object", + "properties": { + "email": { + "description": "The Authors email", + "type": "string" + }, + "name": { + "description": "The Authors name", + "type": "string" + } + } + }, + "github_com_swaggo_swag_testdata_generics_package_alias_path1_v1.ListResult-external_MyError": { + "type": "object", + "properties": { + "items1": { + "type": "array", + "items": { + "$ref": "#/definitions/external.MyError" + } + } + } + }, "github_com_swaggo_swag_testdata_generics_package_alias_path1_v1.ListResult-github_com_swaggo_swag_testdata_generics_package_alias_path1_v1_ProductDto": { "type": "object", "properties": { @@ -205,6 +409,17 @@ } } }, + "github_com_swaggo_swag_testdata_generics_package_alias_path2_v1.ListResult-github_com_swaggo_swag_testdata_generics_package_alias_path1_v1_ProductDto": { + "type": "object", + "properties": { + "items2": { + "type": "array", + "items": { + "$ref": "#/definitions/github_com_swaggo_swag_testdata_generics_package_alias_path1_v1.ProductDto" + } + } + } + }, "github_com_swaggo_swag_testdata_generics_package_alias_path2_v1.ListResult-github_com_swaggo_swag_testdata_generics_package_alias_path2_v1_ProductDto": { "type": "object", "properties": { @@ -223,6 +438,14 @@ "type": "string" } } + }, + "v1.UniqueProduct": { + "type": "object", + "properties": { + "unique_product_name": { + "type": "string" + } + } } } } \ No newline at end of file diff --git a/testdata/generics_package_alias/path2/v1/product.go b/testdata/generics_package_alias/path2/v1/product.go index 754ddb591..14a1b1107 100644 --- a/testdata/generics_package_alias/path2/v1/product.go +++ b/testdata/generics_package_alias/path2/v1/product.go @@ -15,3 +15,7 @@ type RenamedProductDto struct { type RenamedListResult[T any] struct { Items22 []T `json:"items22,omitempty"` } // @name ListResultV2 + +type UniqueProduct struct { + UniqueProductName string `json:"unique_product_name"` +} From 957fb07740440ce75ccecff4a6c2317d2e77faec Mon Sep 17 00:00:00 2001 From: sdghchj Date: Mon, 31 Oct 2022 19:34:52 +0800 Subject: [PATCH 2/4] add parseDependency Signed-off-by: sdghchj --- packages.go | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/packages.go b/packages.go index b9d41c55c..361dd9344 100644 --- a/packages.go +++ b/packages.go @@ -354,21 +354,25 @@ func (pkgDefs *PackagesDefinitions) findPackagePathFromImports(pkg string, file return } -func (pkgDefs *PackagesDefinitions) findTypeSpecFromPackagePaths(matchedPkgPaths, externalPkgPaths []string, name string) (typeDef *TypeSpecDef) { +func (pkgDefs *PackagesDefinitions) findTypeSpecFromPackagePaths(matchedPkgPaths, externalPkgPaths []string, name string, parseDependency bool) (typeDef *TypeSpecDef) { for _, pkgPath := range matchedPkgPaths { typeDef = pkgDefs.findTypeSpec(pkgPath, name) if typeDef != nil { return typeDef } } - for _, pkgPath := range externalPkgPaths { - if err := pkgDefs.loadExternalPackage(pkgPath); err == nil { - typeDef = pkgDefs.findTypeSpec(pkgPath, name) - if typeDef != nil { - return typeDef + + if parseDependency { + for _, pkgPath := range externalPkgPaths { + if err := pkgDefs.loadExternalPackage(pkgPath); err == nil { + typeDef = pkgDefs.findTypeSpec(pkgPath, name) + if typeDef != nil { + return typeDef + } } } } + return typeDef } @@ -393,7 +397,7 @@ func (pkgDefs *PackagesDefinitions) FindTypeSpec(typeName string, file *ast.File } pkgPaths, externalPkgPaths := pkgDefs.findPackagePathFromImports(parts[0], file) - typeDef = pkgDefs.findTypeSpecFromPackagePaths(pkgPaths, externalPkgPaths, parts[1]) + typeDef = pkgDefs.findTypeSpecFromPackagePaths(pkgPaths, externalPkgPaths, parts[1], parseDependency) return pkgDefs.parametrizeGenericType(file, typeDef, typeName, parseDependency) } @@ -412,7 +416,7 @@ func (pkgDefs *PackagesDefinitions) FindTypeSpec(typeName string, file *ast.File typeDef, ok = pkgDefs.uniqueDefinitions[fullTypeName(file.Name.Name, name)] if !ok { pkgPaths, externalPkgPaths := pkgDefs.findPackagePathFromImports("", file) - typeDef = pkgDefs.findTypeSpecFromPackagePaths(pkgPaths, externalPkgPaths, name) + typeDef = pkgDefs.findTypeSpecFromPackagePaths(pkgPaths, externalPkgPaths, name, parseDependency) } return pkgDefs.parametrizeGenericType(file, typeDef, typeName, parseDependency) } From 521c2a138abc6b92b36a3b5f0930fd20c0782939 Mon Sep 17 00:00:00 2001 From: sdghchj Date: Mon, 31 Oct 2022 21:24:22 +0800 Subject: [PATCH 3/4] set ParseDependency --- generics_test.go | 1 + 1 file changed, 1 insertion(+) diff --git a/generics_test.go b/generics_test.go index deb5b75f5..bbb27124c 100644 --- a/generics_test.go +++ b/generics_test.go @@ -111,6 +111,7 @@ func TestParseGenericsPackageAlias(t *testing.T) { assert.NoError(t, err) p := New() + p.ParseDependency = true err = p.ParseAPI(searchDir, mainAPIFile, defaultParseDepth) assert.NoError(t, err) b, err := json.MarshalIndent(p.swagger, "", " ") From 5e958ccb0f4eff890249d7d45b252e75b7cb6872 Mon Sep 17 00:00:00 2001 From: sdghchj Date: Tue, 1 Nov 2022 10:47:57 +0800 Subject: [PATCH 4/4] fix test coverage Signed-off-by: sdghchj --- generics_test.go | 2 +- testdata/generics_package_alias/api/api4.go | 16 --- testdata/generics_package_alias/api/api5.go | 16 --- testdata/generics_package_alias/api/api6.go | 16 --- testdata/generics_package_alias/api/api7.go | 16 --- .../external/external1/external.go | 6 + .../external/external2/external.go | 6 + .../external/external3/external.go | 6 + .../external/external4/external.go | 6 + .../{ => internal}/api/api1.go | 2 +- .../{ => internal}/api/api2.go | 4 +- .../{ => internal}/api/api3.go | 4 +- .../internal/api/api4.go | 16 +++ .../internal/api/api5.go | 16 +++ .../internal/api/api6.go | 16 +++ .../internal/api/api7.go | 16 +++ .../{ => internal}/api/api8.go | 4 +- .../{ => internal}/expected.json | 118 ++++++++++++++---- .../{ => internal}/main.go | 0 .../{ => internal}/path1/v1/product.go | 0 .../{ => internal}/path2/v1/product.go | 0 21 files changed, 187 insertions(+), 99 deletions(-) delete mode 100644 testdata/generics_package_alias/api/api4.go delete mode 100644 testdata/generics_package_alias/api/api5.go delete mode 100644 testdata/generics_package_alias/api/api6.go delete mode 100644 testdata/generics_package_alias/api/api7.go create mode 100644 testdata/generics_package_alias/external/external1/external.go create mode 100644 testdata/generics_package_alias/external/external2/external.go create mode 100644 testdata/generics_package_alias/external/external3/external.go create mode 100644 testdata/generics_package_alias/external/external4/external.go rename testdata/generics_package_alias/{ => internal}/api/api1.go (87%) rename testdata/generics_package_alias/{ => internal}/api/api2.go (86%) rename testdata/generics_package_alias/{ => internal}/api/api3.go (86%) create mode 100644 testdata/generics_package_alias/internal/api/api4.go create mode 100644 testdata/generics_package_alias/internal/api/api5.go create mode 100644 testdata/generics_package_alias/internal/api/api6.go create mode 100644 testdata/generics_package_alias/internal/api/api7.go rename testdata/generics_package_alias/{ => internal}/api/api8.go (62%) rename testdata/generics_package_alias/{ => internal}/expected.json (75%) rename testdata/generics_package_alias/{ => internal}/main.go (100%) rename testdata/generics_package_alias/{ => internal}/path1/v1/product.go (100%) rename testdata/generics_package_alias/{ => internal}/path2/v1/product.go (100%) diff --git a/generics_test.go b/generics_test.go index bbb27124c..d62f3898c 100644 --- a/generics_test.go +++ b/generics_test.go @@ -106,7 +106,7 @@ func TestParseGenericsNames(t *testing.T) { func TestParseGenericsPackageAlias(t *testing.T) { t.Parallel() - searchDir := "testdata/generics_package_alias" + searchDir := "testdata/generics_package_alias/internal" expected, err := os.ReadFile(filepath.Join(searchDir, "expected.json")) assert.NoError(t, err) diff --git a/testdata/generics_package_alias/api/api4.go b/testdata/generics_package_alias/api/api4.go deleted file mode 100644 index d65c8ddba..000000000 --- a/testdata/generics_package_alias/api/api4.go +++ /dev/null @@ -1,16 +0,0 @@ -package api - -import ( - "github.com/swaggo/swag/testdata/external_models/external" - _ "github.com/swaggo/swag/testdata/generics_package_alias/path1/v1" -) - -// @Summary Create movie -// @Description models imported from an external package -// @Accept json -// @Produce json -// @Success 200 {object} v1.ListResult[external.MyError] "" -// @Router /api11 [post] -func CreateMovie11() { - var _ external.MyError -} diff --git a/testdata/generics_package_alias/api/api5.go b/testdata/generics_package_alias/api/api5.go deleted file mode 100644 index daf494031..000000000 --- a/testdata/generics_package_alias/api/api5.go +++ /dev/null @@ -1,16 +0,0 @@ -package api - -import ( - myexternal "github.com/swaggo/swag/testdata/external_models/external" - _ "github.com/swaggo/swag/testdata/generics_package_alias/path1/v1" -) - -// @Summary Create movie -// @Description models imported from a named external package -// @Accept json -// @Produce json -// @Success 200 {object} v1.ListResult[myexternal.MyError] "" -// @Router /api12 [post] -func CreateMovie12() { - var _ myexternal.MyError -} diff --git a/testdata/generics_package_alias/api/api6.go b/testdata/generics_package_alias/api/api6.go deleted file mode 100644 index e112b8466..000000000 --- a/testdata/generics_package_alias/api/api6.go +++ /dev/null @@ -1,16 +0,0 @@ -package api - -import ( - . "github.com/swaggo/swag/testdata/external_models/external" - _ "github.com/swaggo/swag/testdata/generics_package_alias/path1/v1" -) - -// @Summary Create movie -// @Description models from an external package imported by mode dot -// @Accept json -// @Produce json -// @Success 200 {object} v1.ListResult[MyError] "" -// @Router /api13 [post] -func CreateMovie13() { - var _ MyError -} diff --git a/testdata/generics_package_alias/api/api7.go b/testdata/generics_package_alias/api/api7.go deleted file mode 100644 index 48cdcae7e..000000000 --- a/testdata/generics_package_alias/api/api7.go +++ /dev/null @@ -1,16 +0,0 @@ -package api - -import ( - _ "github.com/swaggo/swag/testdata/external_models/external" - _ "github.com/swaggo/swag/testdata/generics_package_alias/path1/v1" -) - -// @Summary Create movie -// @Description models imported from an unnamed external package -// @Accept json -// @Produce json -// @Success 200 {object} v1.ListResult[external.MyError] "" -// @Router /api14 [post] -func CreateMovie14() { - -} diff --git a/testdata/generics_package_alias/external/external1/external.go b/testdata/generics_package_alias/external/external1/external.go new file mode 100644 index 000000000..58e0848e6 --- /dev/null +++ b/testdata/generics_package_alias/external/external1/external.go @@ -0,0 +1,6 @@ +package external1 + +type Customer struct { + Name string + Age int +} diff --git a/testdata/generics_package_alias/external/external2/external.go b/testdata/generics_package_alias/external/external2/external.go new file mode 100644 index 000000000..2a0771c6e --- /dev/null +++ b/testdata/generics_package_alias/external/external2/external.go @@ -0,0 +1,6 @@ +package external2 + +type Customer struct { + Name string + Age int +} diff --git a/testdata/generics_package_alias/external/external3/external.go b/testdata/generics_package_alias/external/external3/external.go new file mode 100644 index 000000000..a70e5ccc6 --- /dev/null +++ b/testdata/generics_package_alias/external/external3/external.go @@ -0,0 +1,6 @@ +package external3 + +type Customer struct { + Name string + Age int +} diff --git a/testdata/generics_package_alias/external/external4/external.go b/testdata/generics_package_alias/external/external4/external.go new file mode 100644 index 000000000..2d050bde9 --- /dev/null +++ b/testdata/generics_package_alias/external/external4/external.go @@ -0,0 +1,6 @@ +package external4 + +type Customer struct { + Name string + Age int +} diff --git a/testdata/generics_package_alias/api/api1.go b/testdata/generics_package_alias/internal/api/api1.go similarity index 87% rename from testdata/generics_package_alias/api/api1.go rename to testdata/generics_package_alias/internal/api/api1.go index 77cfe508f..4152ab313 100644 --- a/testdata/generics_package_alias/api/api1.go +++ b/testdata/generics_package_alias/internal/api/api1.go @@ -1,7 +1,7 @@ package api import ( - myv1 "github.com/swaggo/swag/testdata/generics_package_alias/path1/v1" + myv1 "github.com/swaggo/swag/testdata/generics_package_alias/internal/path1/v1" ) // @Summary Create movie diff --git a/testdata/generics_package_alias/api/api2.go b/testdata/generics_package_alias/internal/api/api2.go similarity index 86% rename from testdata/generics_package_alias/api/api2.go rename to testdata/generics_package_alias/internal/api/api2.go index eb8335217..d0cb09610 100644 --- a/testdata/generics_package_alias/api/api2.go +++ b/testdata/generics_package_alias/internal/api/api2.go @@ -1,8 +1,8 @@ package api import ( - myv1 "github.com/swaggo/swag/testdata/generics_package_alias/path1/v1" - myv2 "github.com/swaggo/swag/testdata/generics_package_alias/path2/v1" + myv1 "github.com/swaggo/swag/testdata/generics_package_alias/internal/path1/v1" + myv2 "github.com/swaggo/swag/testdata/generics_package_alias/internal/path2/v1" ) // @Summary Create movie diff --git a/testdata/generics_package_alias/api/api3.go b/testdata/generics_package_alias/internal/api/api3.go similarity index 86% rename from testdata/generics_package_alias/api/api3.go rename to testdata/generics_package_alias/internal/api/api3.go index 24cb85272..f269d734f 100644 --- a/testdata/generics_package_alias/api/api3.go +++ b/testdata/generics_package_alias/internal/api/api3.go @@ -1,8 +1,8 @@ package api import ( - _ "github.com/swaggo/swag/testdata/generics_package_alias/path1/v1" - . "github.com/swaggo/swag/testdata/generics_package_alias/path2/v1" + _ "github.com/swaggo/swag/testdata/generics_package_alias/internal/path1/v1" + . "github.com/swaggo/swag/testdata/generics_package_alias/internal/path2/v1" ) // @Summary Create movie diff --git a/testdata/generics_package_alias/internal/api/api4.go b/testdata/generics_package_alias/internal/api/api4.go new file mode 100644 index 000000000..9a851ba04 --- /dev/null +++ b/testdata/generics_package_alias/internal/api/api4.go @@ -0,0 +1,16 @@ +package api + +import ( + "github.com/swaggo/swag/testdata/generics_package_alias/external/external1" + _ "github.com/swaggo/swag/testdata/generics_package_alias/internal/path1/v1" +) + +// @Summary Create movie +// @Description models imported from an external package +// @Accept json +// @Produce json +// @Success 200 {object} v1.ListResult[external1.Customer] "" +// @Router /api11 [post] +func CreateMovie11() { + var _ external1.Customer +} diff --git a/testdata/generics_package_alias/internal/api/api5.go b/testdata/generics_package_alias/internal/api/api5.go new file mode 100644 index 000000000..c15272709 --- /dev/null +++ b/testdata/generics_package_alias/internal/api/api5.go @@ -0,0 +1,16 @@ +package api + +import ( + myexternal "github.com/swaggo/swag/testdata/generics_package_alias/external/external2" + _ "github.com/swaggo/swag/testdata/generics_package_alias/internal/path1/v1" +) + +// @Summary Create movie +// @Description models imported from a named external package +// @Accept json +// @Produce json +// @Success 200 {object} v1.ListResult[myexternal.Customer] "" +// @Router /api12 [post] +func CreateMovie12() { + var _ myexternal.Customer +} diff --git a/testdata/generics_package_alias/internal/api/api6.go b/testdata/generics_package_alias/internal/api/api6.go new file mode 100644 index 000000000..5d1d27072 --- /dev/null +++ b/testdata/generics_package_alias/internal/api/api6.go @@ -0,0 +1,16 @@ +package api + +import ( + . "github.com/swaggo/swag/testdata/generics_package_alias/external/external3" + _ "github.com/swaggo/swag/testdata/generics_package_alias/internal/path1/v1" +) + +// @Summary Create movie +// @Description models from an external package imported by mode dot +// @Accept json +// @Produce json +// @Success 200 {object} v1.ListResult[Customer] "" +// @Router /api13 [post] +func CreateMovie13() { + var _ Customer +} diff --git a/testdata/generics_package_alias/internal/api/api7.go b/testdata/generics_package_alias/internal/api/api7.go new file mode 100644 index 000000000..5a5ad72c4 --- /dev/null +++ b/testdata/generics_package_alias/internal/api/api7.go @@ -0,0 +1,16 @@ +package api + +import ( + _ "github.com/swaggo/swag/testdata/generics_package_alias/external/external4" + _ "github.com/swaggo/swag/testdata/generics_package_alias/internal/path1/v1" +) + +// @Summary Create movie +// @Description models imported from an unnamed external package +// @Accept json +// @Produce json +// @Success 200 {object} v1.ListResult[external4.Customer] "" +// @Router /api14 [post] +func CreateMovie14() { + +} diff --git a/testdata/generics_package_alias/api/api8.go b/testdata/generics_package_alias/internal/api/api8.go similarity index 62% rename from testdata/generics_package_alias/api/api8.go rename to testdata/generics_package_alias/internal/api/api8.go index bda390ce6..bcdd94715 100644 --- a/testdata/generics_package_alias/api/api8.go +++ b/testdata/generics_package_alias/internal/api/api8.go @@ -1,8 +1,8 @@ package api import ( - _ "github.com/swaggo/swag/testdata/generics_package_alias/path1/v1" - _ "github.com/swaggo/swag/testdata/generics_package_alias/path2/v1" + _ "github.com/swaggo/swag/testdata/generics_package_alias/internal/path1/v1" + _ "github.com/swaggo/swag/testdata/generics_package_alias/internal/path2/v1" ) // @Summary Create movie diff --git a/testdata/generics_package_alias/expected.json b/testdata/generics_package_alias/internal/expected.json similarity index 75% rename from testdata/generics_package_alias/expected.json rename to testdata/generics_package_alias/internal/expected.json index 5fa0aa777..2f6c85f52 100644 --- a/testdata/generics_package_alias/expected.json +++ b/testdata/generics_package_alias/internal/expected.json @@ -18,7 +18,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/github_com_swaggo_swag_testdata_generics_package_alias_path1_v1.ListResult-github_com_swaggo_swag_testdata_generics_package_alias_path1_v1_ProductDto" + "$ref": "#/definitions/github_com_swaggo_swag_testdata_generics_package_alias_internal_path1_v1.ListResult-github_com_swaggo_swag_testdata_generics_package_alias_internal_path1_v1_ProductDto" } } } @@ -58,7 +58,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/github_com_swaggo_swag_testdata_generics_package_alias_path2_v1.ListResult-github_com_swaggo_swag_testdata_generics_package_alias_path2_v1_ProductDto" + "$ref": "#/definitions/github_com_swaggo_swag_testdata_generics_package_alias_internal_path2_v1.ListResult-github_com_swaggo_swag_testdata_generics_package_alias_internal_path2_v1_ProductDto" } } } @@ -98,7 +98,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/github_com_swaggo_swag_testdata_generics_package_alias_path1_v1.ListResult-github_com_swaggo_swag_testdata_generics_package_alias_path2_v1_ProductDto" + "$ref": "#/definitions/github_com_swaggo_swag_testdata_generics_package_alias_internal_path1_v1.ListResult-github_com_swaggo_swag_testdata_generics_package_alias_internal_path2_v1_ProductDto" } } } @@ -138,7 +138,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/github_com_swaggo_swag_testdata_generics_package_alias_path1_v1.ListResult-github_com_swaggo_swag_testdata_generics_package_alias_path1_v1_ProductDto" + "$ref": "#/definitions/github_com_swaggo_swag_testdata_generics_package_alias_internal_path1_v1.ListResult-github_com_swaggo_swag_testdata_generics_package_alias_internal_path1_v1_ProductDto" } } } @@ -158,7 +158,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/github_com_swaggo_swag_testdata_generics_package_alias_path2_v1.ListResult-github_com_swaggo_swag_testdata_generics_package_alias_path2_v1_ProductDto" + "$ref": "#/definitions/github_com_swaggo_swag_testdata_generics_package_alias_internal_path2_v1.ListResult-github_com_swaggo_swag_testdata_generics_package_alias_internal_path2_v1_ProductDto" } } } @@ -178,7 +178,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/github_com_swaggo_swag_testdata_generics_package_alias_path2_v1.ListResult-github_com_swaggo_swag_testdata_generics_package_alias_path1_v1_ProductDto" + "$ref": "#/definitions/github_com_swaggo_swag_testdata_generics_package_alias_internal_path2_v1.ListResult-github_com_swaggo_swag_testdata_generics_package_alias_internal_path1_v1_ProductDto" } } } @@ -198,7 +198,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/github_com_swaggo_swag_testdata_generics_package_alias_path1_v1.ListResult-github_com_swaggo_swag_testdata_generics_package_alias_path2_v1_ProductDto" + "$ref": "#/definitions/github_com_swaggo_swag_testdata_generics_package_alias_internal_path1_v1.ListResult-github_com_swaggo_swag_testdata_generics_package_alias_internal_path2_v1_ProductDto" } } } @@ -218,7 +218,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/github_com_swaggo_swag_testdata_generics_package_alias_path1_v1.ListResult-external_MyError" + "$ref": "#/definitions/github_com_swaggo_swag_testdata_generics_package_alias_internal_path1_v1.ListResult-external1_Customer" } } } @@ -238,7 +238,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/github_com_swaggo_swag_testdata_generics_package_alias_path1_v1.ListResult-external_MyError" + "$ref": "#/definitions/github_com_swaggo_swag_testdata_generics_package_alias_internal_path1_v1.ListResult-external2_Customer" } } } @@ -258,7 +258,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/github_com_swaggo_swag_testdata_generics_package_alias_path1_v1.ListResult-external_MyError" + "$ref": "#/definitions/github_com_swaggo_swag_testdata_generics_package_alias_internal_path1_v1.ListResult-external3_Customer" } } } @@ -278,7 +278,7 @@ "200": { "description": "OK", "schema": { - "$ref": "#/definitions/github_com_swaggo_swag_testdata_generics_package_alias_path1_v1.ListResult-external_MyError" + "$ref": "#/definitions/github_com_swaggo_swag_testdata_generics_package_alias_internal_path1_v1.ListResult-external4_Customer" } } } @@ -355,53 +355,117 @@ } } }, - "external.MyError": { + "external1.Customer": { "type": "object", "properties": { - "email": { - "description": "The Authors email", + "age": { + "type": "integer" + }, + "name": { "type": "string" + } + } + }, + "external2.Customer": { + "type": "object", + "properties": { + "age": { + "type": "integer" }, "name": { - "description": "The Authors name", "type": "string" } } }, - "github_com_swaggo_swag_testdata_generics_package_alias_path1_v1.ListResult-external_MyError": { + "external3.Customer": { + "type": "object", + "properties": { + "age": { + "type": "integer" + }, + "name": { + "type": "string" + } + } + }, + "external4.Customer": { + "type": "object", + "properties": { + "age": { + "type": "integer" + }, + "name": { + "type": "string" + } + } + }, + "github_com_swaggo_swag_testdata_generics_package_alias_internal_path1_v1.ListResult-external1_Customer": { + "type": "object", + "properties": { + "items1": { + "type": "array", + "items": { + "$ref": "#/definitions/external1.Customer" + } + } + } + }, + "github_com_swaggo_swag_testdata_generics_package_alias_internal_path1_v1.ListResult-external2_Customer": { + "type": "object", + "properties": { + "items1": { + "type": "array", + "items": { + "$ref": "#/definitions/external2.Customer" + } + } + } + }, + "github_com_swaggo_swag_testdata_generics_package_alias_internal_path1_v1.ListResult-external3_Customer": { + "type": "object", + "properties": { + "items1": { + "type": "array", + "items": { + "$ref": "#/definitions/external3.Customer" + } + } + } + }, + "github_com_swaggo_swag_testdata_generics_package_alias_internal_path1_v1.ListResult-external4_Customer": { "type": "object", "properties": { "items1": { "type": "array", "items": { - "$ref": "#/definitions/external.MyError" + "$ref": "#/definitions/external4.Customer" } } } }, - "github_com_swaggo_swag_testdata_generics_package_alias_path1_v1.ListResult-github_com_swaggo_swag_testdata_generics_package_alias_path1_v1_ProductDto": { + "github_com_swaggo_swag_testdata_generics_package_alias_internal_path1_v1.ListResult-github_com_swaggo_swag_testdata_generics_package_alias_internal_path1_v1_ProductDto": { "type": "object", "properties": { "items1": { "type": "array", "items": { - "$ref": "#/definitions/github_com_swaggo_swag_testdata_generics_package_alias_path1_v1.ProductDto" + "$ref": "#/definitions/github_com_swaggo_swag_testdata_generics_package_alias_internal_path1_v1.ProductDto" } } } }, - "github_com_swaggo_swag_testdata_generics_package_alias_path1_v1.ListResult-github_com_swaggo_swag_testdata_generics_package_alias_path2_v1_ProductDto": { + "github_com_swaggo_swag_testdata_generics_package_alias_internal_path1_v1.ListResult-github_com_swaggo_swag_testdata_generics_package_alias_internal_path2_v1_ProductDto": { "type": "object", "properties": { "items1": { "type": "array", "items": { - "$ref": "#/definitions/github_com_swaggo_swag_testdata_generics_package_alias_path2_v1.ProductDto" + "$ref": "#/definitions/github_com_swaggo_swag_testdata_generics_package_alias_internal_path2_v1.ProductDto" } } } }, - "github_com_swaggo_swag_testdata_generics_package_alias_path1_v1.ProductDto": { + "github_com_swaggo_swag_testdata_generics_package_alias_internal_path1_v1.ProductDto": { "type": "object", "properties": { "name1": { @@ -409,29 +473,29 @@ } } }, - "github_com_swaggo_swag_testdata_generics_package_alias_path2_v1.ListResult-github_com_swaggo_swag_testdata_generics_package_alias_path1_v1_ProductDto": { + "github_com_swaggo_swag_testdata_generics_package_alias_internal_path2_v1.ListResult-github_com_swaggo_swag_testdata_generics_package_alias_internal_path1_v1_ProductDto": { "type": "object", "properties": { "items2": { "type": "array", "items": { - "$ref": "#/definitions/github_com_swaggo_swag_testdata_generics_package_alias_path1_v1.ProductDto" + "$ref": "#/definitions/github_com_swaggo_swag_testdata_generics_package_alias_internal_path1_v1.ProductDto" } } } }, - "github_com_swaggo_swag_testdata_generics_package_alias_path2_v1.ListResult-github_com_swaggo_swag_testdata_generics_package_alias_path2_v1_ProductDto": { + "github_com_swaggo_swag_testdata_generics_package_alias_internal_path2_v1.ListResult-github_com_swaggo_swag_testdata_generics_package_alias_internal_path2_v1_ProductDto": { "type": "object", "properties": { "items2": { "type": "array", "items": { - "$ref": "#/definitions/github_com_swaggo_swag_testdata_generics_package_alias_path2_v1.ProductDto" + "$ref": "#/definitions/github_com_swaggo_swag_testdata_generics_package_alias_internal_path2_v1.ProductDto" } } } }, - "github_com_swaggo_swag_testdata_generics_package_alias_path2_v1.ProductDto": { + "github_com_swaggo_swag_testdata_generics_package_alias_internal_path2_v1.ProductDto": { "type": "object", "properties": { "name2": { diff --git a/testdata/generics_package_alias/main.go b/testdata/generics_package_alias/internal/main.go similarity index 100% rename from testdata/generics_package_alias/main.go rename to testdata/generics_package_alias/internal/main.go diff --git a/testdata/generics_package_alias/path1/v1/product.go b/testdata/generics_package_alias/internal/path1/v1/product.go similarity index 100% rename from testdata/generics_package_alias/path1/v1/product.go rename to testdata/generics_package_alias/internal/path1/v1/product.go diff --git a/testdata/generics_package_alias/path2/v1/product.go b/testdata/generics_package_alias/internal/path2/v1/product.go similarity index 100% rename from testdata/generics_package_alias/path2/v1/product.go rename to testdata/generics_package_alias/internal/path2/v1/product.go