github.com/Konstantin8105/c4go@v0.0.0-20240505174241-768bb1c65a51/program/warnings.go (about) 1 package program 2 3 import ( 4 "fmt" 5 "os" 6 "strings" 7 8 "github.com/Konstantin8105/c4go/ast" 9 ) 10 11 var WarningMessage string = "// Warning " 12 13 // GenerateWarningMessage - generate warning message 14 func (p *Program) GenerateWarningMessage(e error, n ast.Node) string { 15 message := WarningMessage 16 if e == nil || len(e.Error()) == 0 { 17 return "" 18 } 19 if n != nil { 20 var prefix string 21 if fd, ok := n.(*ast.FunctionDecl); ok { 22 prefix = fmt.Sprintf("n:%s,t1:%s,t2:%s", fd.Name, fd.Type, fd.Type2) 23 } 24 if prefix == "" { 25 message += fmt.Sprintf("(%T): %s:", n, n.Position().GetSimpleLocation()) 26 } else { 27 message += fmt.Sprintf("(%T): {prefix: %s}. %s:", n, prefix, n.Position().GetSimpleLocation()) 28 } 29 } 30 message += fmt.Sprintf("%s", e.Error()) 31 message = PathSimplification(message) 32 return message 33 } 34 35 func PathSimplification(message string) string { 36 if gopath := os.Getenv("GOPATH"); gopath != "" { 37 message = strings.Replace(message, gopath, "GOPATH", -1) 38 message = strings.Replace(message, "GOPATH/src/github.com/Konstantin8105/c4go", "C4GO", -1) 39 } 40 return message 41 }