From 290f46baa053954ba63ecc67bdc20ae9760485cb Mon Sep 17 00:00:00 2001 From: Amund Tenstad Date: Tue, 8 Aug 2023 10:14:58 +0200 Subject: [PATCH] fix: parser markers and remove workaround --- processor/processor.go | 29 ++--------------------------- 1 file changed, 2 insertions(+), 27 deletions(-) diff --git a/processor/processor.go b/processor/processor.go index 08aefad..e87e9eb 100644 --- a/processor/processor.go +++ b/processor/processor.go @@ -136,7 +136,7 @@ func newProcessor(compiledConfig *compiledConfig, maxDepth int) *processor { compiledConfig: compiledConfig, maxDepth: maxDepth, parser: &crd.Parser{ - Collector: &markers.Collector{Registry: &markers.Registry{}}, + Collector: &markers.Collector{Registry: mkRegistry()}, Checker: &loader.TypeChecker{}, }, groupVersions: make(map[schema.GroupVersion]*groupVersionInfo), @@ -208,8 +208,6 @@ func (p *processor) findAPITypes(directory string) error { typeDef = p.processType(pkg, info, 0) } - populateMarkers(info, typeDef) - p.types[key] = typeDef if typeDef != nil && typeDef.Kind != types.BasicKind { gvInfo.types[info.Name] = typeDef @@ -230,30 +228,6 @@ func (p *processor) findAPITypes(directory string) error { return nil } -// populateMarkers popuplates type and field with markers. Markes are missing -// when type is first parsed as a field within struct. -func populateMarkers(src *markers.TypeInfo, dest *types.Type) { - dest.Markers = src.Markers - - for _, f := range src.Fields { - jsonFieldName := f.Name - // extract json name if present - if tagVal, ok := f.Tag.Lookup("json"); ok { - args := strings.Split(tagVal, ",") - if len(args) > 0 && args[0] != "" { - jsonFieldName = args[0] - } - } - for index := range dest.Fields { - field := dest.Fields[index] - if jsonFieldName == field.Name { - field.Markers = f.Markers - break - } - } - } -} - func (p *processor) extractGroupVersionIfExists(collector *markers.Collector, pkg *loader.Package) *groupVersionInfo { markerValues, err := markers.PackageMarkers(collector, pkg) if err != nil { @@ -569,6 +543,7 @@ func (p *processor) loadAliasType(typeDef *types.Type, pkg *loader.Package, unde if bt, ok := underlying.(*gotypes.Basic); ok { typeDef.UnderlyingType = &types.Type{Name: bt.String(), Kind: types.BasicKind} typeDef.Doc = tInfo.Doc + typeDef.Markers = tInfo.Markers return typeDef }