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  }