more tracing in servicereader

This commit is contained in:
Jan Halfar 2018-11-16 10:17:32 +01:00
parent 10ec88ccf0
commit 3d5a709ad2

View File

@ -191,7 +191,17 @@ func loadConstants(pkg *ast.Package) map[string]*ast.BasicLit {
} }
func Read(goPaths []string, packageName string, serviceMap map[string]string) (services ServiceList, structs map[string]*Struct, scalars map[string]*Scalar, constants map[string]map[string]*ast.BasicLit, err error) { func Read(
goPaths []string,
packageName string,
serviceMap map[string]string,
) (
services ServiceList,
structs map[string]*Struct,
scalars map[string]*Scalar,
constants map[string]map[string]*ast.BasicLit,
err error,
) {
if len(serviceMap) == 0 { if len(serviceMap) == 0 {
err = errors.New("nothing to do service names are empty") err = errors.New("nothing to do service names are empty")
return return
@ -216,7 +226,7 @@ func Read(goPaths []string, packageName string, serviceMap map[string]string) (s
} }
} }
trace("missing") trace("missing")
traceJSON(missingTypes) traceData(missingTypes)
structs = map[string]*Struct{} structs = map[string]*Struct{}
scalars = map[string]*Scalar{} scalars = map[string]*Scalar{}
@ -226,15 +236,18 @@ func Read(goPaths []string, packageName string, serviceMap map[string]string) (s
err = errors.New("error while collecting structs: " + collectErr.Error()) err = errors.New("error while collecting structs: " + collectErr.Error())
} }
trace("---------------- found structs -------------------") trace("---------------- found structs -------------------")
traceJSON(structs) traceData(structs)
trace("---------------- /found structs -------------------")
trace("---------------- found scalars -------------------") trace("---------------- found scalars -------------------")
traceJSON(scalars) traceData(scalars)
trace("---------------- /found scalars -------------------")
constants = map[string]map[string]*ast.BasicLit{} constants = map[string]map[string]*ast.BasicLit{}
for _, structDef := range structs { for _, structDef := range structs {
if structDef != nil { if structDef != nil {
structPackage := structDef.Package structPackage := structDef.Package
_, ok := constants[structPackage] _, ok := constants[structPackage]
if !ok { if !ok {
// fmt.Println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>", structPackage)
pkg, constPkgErr := parsePackage(goPaths, structPackage) pkg, constPkgErr := parsePackage(goPaths, structPackage)
if constPkgErr != nil { if constPkgErr != nil {
err = constPkgErr err = constPkgErr
@ -253,7 +266,7 @@ func Read(goPaths []string, packageName string, serviceMap map[string]string) (s
fixFieldStructs(method.Return, structs, scalars) fixFieldStructs(method.Return, structs, scalars)
} }
} }
traceJSON("---------------------------", services) traceData("---------------------------", services)
return return
} }
@ -287,6 +300,7 @@ func collectTypes(goPaths []string, missingTypes map[string]bool, structs map[st
missing = append(missing, name) missing = append(missing, name)
} }
} }
// fmt.Println("missing types", len(missingTypes), "missing", len(missing))
return missing return missing
} }
lastNumMissing := len(missingTypeNames()) lastNumMissing := len(missingTypeNames())
@ -325,13 +339,13 @@ func collectTypes(goPaths []string, missingTypes map[string]bool, structs map[st
for scalarName, scalar := range parsedPackageScalars { for scalarName, scalar := range parsedPackageScalars {
trace(" scalar", scalarName, scalar) trace(" scalar", scalarName, scalar)
} }
traceJSON(parsedPackageScalars) traceData(parsedPackageScalars)
packageStructs = parsedPackageStructs packageStructs = parsedPackageStructs
packageScalars = parsedPackageScalars packageScalars = parsedPackageScalars
scannedPackageStructs[packageName] = packageStructs scannedPackageStructs[packageName] = packageStructs
scannedPackageScalars[packageName] = packageScalars scannedPackageScalars[packageName] = packageScalars
} }
traceJSON("packageStructs", packageName, packageStructs) traceData("packageStructs", packageName, packageStructs)
for packageStructName, packageStruct := range packageStructs { for packageStructName, packageStruct := range packageStructs {
missing, needed := missingTypes[packageStructName] missing, needed := missingTypes[packageStructName]
if needed && missing { if needed && missing {
@ -344,7 +358,7 @@ func collectTypes(goPaths []string, missingTypes map[string]bool, structs map[st
} }
} }
traceJSON("packageScalars", packageScalars) traceData("packageScalars", packageScalars)
for packageScalarName, packageScalar := range packageScalars { for packageScalarName, packageScalar := range packageScalars {
missing, needed := missingTypes[packageScalarName] missing, needed := missingTypes[packageScalarName]
if needed && missing { if needed && missing {
@ -357,6 +371,19 @@ func collectTypes(goPaths []string, missingTypes map[string]bool, structs map[st
} }
newNumMissingTypes := len(missingTypeNames()) newNumMissingTypes := len(missingTypeNames())
if newNumMissingTypes > 0 && newNumMissingTypes == lastNumMissing { if newNumMissingTypes > 0 && newNumMissingTypes == lastNumMissing {
//packageStructs, structOK := scannedPackageStructs[packageName]
for scalarName, scalars := range scannedPackageScalars {
fmt.Println("scanned scalars ", scalarName)
for _, scalar := range scalars {
fmt.Println(" ", scalar.Name)
}
}
for structName, strcts := range scannedPackageStructs {
fmt.Println("scanned struct ", structName)
for _, strct := range strcts {
fmt.Println(" ", strct.Name)
}
}
return errors.New(fmt.Sprintln("could not resolve at least one of the following types", missingTypeNames())) return errors.New(fmt.Sprintln("could not resolve at least one of the following types", missingTypeNames()))
} }
lastNumMissing = newNumMissingTypes lastNumMissing = newNumMissingTypes
@ -438,7 +465,14 @@ func (st *StructType) FullName() string {
return fullName return fullName
} }
func getTypesInPackage(goPaths []string, packageName string) (structs map[string]*Struct, scalars map[string]*Scalar, err error) { func getTypesInPackage(
goPaths []string,
packageName string,
) (
structs map[string]*Struct,
scalars map[string]*Scalar,
err error,
) {
pkg, err := parsePackage(goPaths, packageName) pkg, err := parsePackage(goPaths, packageName)
if err != nil { if err != nil {
return nil, nil, err return nil, nil, err