catch unsupported function calls

This commit is contained in:
Benjamin Böhmke
2020-02-23 10:00:43 +01:00
parent 1891633250
commit b8c9a57c39
2 changed files with 20 additions and 0 deletions

View File

@@ -35,6 +35,10 @@ func main() {
// same as before // same as before
fmt.Println(gotext.Get("My text on 'domain-name' domain")) fmt.Println(gotext.Get("My text on 'domain-name' domain"))
// unsupported function call
trStr := "some string to translate"
fmt.Println(gotext.Get(trStr))
// same with alias package name // same with alias package name
fmt.Println(alias.Get("alias call")) fmt.Println(alias.Get("alias call"))

View File

@@ -240,14 +240,30 @@ func (g *GoFile) parseGetter(def GetterDef, args []*ast.BasicLit, pos string) {
domain, _ = strconv.Unquote(args[def.Domain].Value) domain, _ = strconv.Unquote(args[def.Domain].Value)
} }
// only handle function calls with strings as ID
if args[def.Id] == nil || args[def.Id].Kind != token.STRING {
log.Printf("ERR: Unsupported call at %s (ID not a string)", pos)
return
}
trans := Translation{ trans := Translation{
MsgId: args[def.Id].Value, MsgId: args[def.Id].Value,
SourceLocations: []string{pos}, SourceLocations: []string{pos},
} }
if def.Plural > 0 { if def.Plural > 0 {
// plural ID must be a string
if args[def.Plural] == nil || args[def.Plural].Kind != token.STRING {
log.Printf("ERR: Unsupported call at %s (Plural not a string)", pos)
return
}
trans.MsgIdPlural = args[def.Plural].Value trans.MsgIdPlural = args[def.Plural].Value
} }
if def.Context > 0 { if def.Context > 0 {
// Context must be a string
if args[def.Context] == nil || args[def.Context].Kind != token.STRING {
log.Printf("ERR: Unsupported call at %s (Context not a string)", pos)
return
}
trans.Context = args[def.Context].Value trans.Context = args[def.Context].Value
} }