本文整理汇总了Golang中github.com/ark-lang/ark/src/util/log.Error函数的典型用法代码示例。如果您正苦于以下问题:Golang Error函数的具体用法?Golang Error怎么用?Golang Error使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了Error函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: Visit
func (v *RecursiveDefinitionCheck) Visit(s *SemanticAnalyzer, n parser.Node) {
var typ parser.Type
if typeDecl, ok := n.(*parser.TypeDecl); ok {
actualType := typeDecl.NamedType.ActualType()
switch actualType.(type) {
case *parser.EnumType:
typ = actualType.(*parser.EnumType)
case *parser.StructType:
typ = actualType.(*parser.StructType)
// TODO: Check tuple types once we add named types for everything
default:
return
}
}
if ok, path := isTypeRecursive(typ); ok {
s.Err(n, "Encountered recursive type definition")
log.Errorln("semantic", "Path taken:")
for _, typ := range path {
log.Error("semantic", typ.TypeName())
log.Error("semantic", " <- ")
}
log.Error("semantic", "%s\n\n", typ.TypeName())
}
}
示例2: TypeOfNameNode
func (v *NameMap) TypeOfNameNode(name *NameNode) NodeType {
mod := v
typ := NODE_MODULE
for _, modName := range name.Modules {
if typ == NODE_MODULE {
typ = mod.typeOf(modName)
if typ == NODE_MODULE {
mod = mod.module(modName)
if mod == nil {
return NODE_UNKOWN
}
}
} else {
startPos := modName.Where.Start()
log.Errorln("constructor", "[%s:%d:%d] Invalid use of `::`. `%s` is not a module",
startPos.Filename, startPos.Line, startPos.Char, modName.Value)
log.Error("constructor", v.tree.Source.MarkSpan(modName.Where))
}
}
if typ == NODE_ENUM {
return NODE_ENUM_MEMBER
} else if typ == NODE_STRUCT {
return NODE_STRUCT_STATIC
}
typ = mod.typeOf(name.Name)
if typ == NODE_UNKOWN {
startPos := name.Name.Where.Start()
log.Errorln("constructor", "[%s:%d:%d] Undeclared name `%s`",
startPos.Filename, startPos.Line, startPos.Char, name.Name.Value)
log.Error("constructor", v.tree.Source.MarkSpan(name.Name.Where))
}
return typ
}
示例3: err
func (v *SemanticAnalyzer) err(thing Locatable, err string, stuff ...interface{}) {
pos := thing.Pos()
log.Error("semantic", util.TEXT_RED+util.TEXT_BOLD+"Semantic error:"+util.TEXT_RESET+" [%s:%d:%d] %s\n",
pos.Filename, pos.Line, pos.Char, fmt.Sprintf(err, stuff...))
log.Error("semantic", v.Module.File.MarkPos(pos))
v.shouldExit = true
}
示例4: err
func (v *Resolver) err(thing Locatable, err string, stuff ...interface{}) {
pos := thing.Pos()
log.Error("resolve", util.TEXT_RED+util.TEXT_BOLD+"Resolve error:"+util.TEXT_RESET+" [%s:%d:%d] %s\n",
pos.Filename, pos.Line, pos.Char, fmt.Sprintf(err, stuff...))
log.Error("resolve", v.Module.File.MarkPos(pos))
os.Exit(util.EXIT_FAILURE_SEMANTIC)
}
示例5: Visit
func (v *RecursiveDefinitionCheck) Visit(s *SemanticAnalyzer, n ast.Node) {
if typeDecl, ok := n.(*ast.TypeDecl); ok {
typ := typeDecl.NamedType
if ok, path := isTypeRecursive(typ); ok {
s.Err(n, "Encountered recursive type definition")
log.Errorln("semantic", "Path taken:")
for _, typ := range path {
log.Error("semantic", typ.TypeName())
log.Error("semantic", " <- ")
}
log.Error("semantic", "%s\n\n", typ.TypeName())
}
}
}
示例6: err
func (v *Scope) err(err string, stuff ...interface{}) {
// TODO: which log tag
// TODO: These errors are unacceptably shitty
log.Error("parser", util.TEXT_RED+util.TEXT_BOLD+"error:"+util.TEXT_RESET+" %s\n",
fmt.Sprintf(err, stuff...))
os.Exit(util.EXIT_FAILURE_PARSE)
}
示例7: build
func build(files []string, outputFile string, cg string, outputType LLVMCodegen.OutputType, optLevel int) {
constructedModules, _ := parseFiles(files)
// resolve
log.Timed("resolve phase", "", func() {
for _, module := range constructedModules {
res := &parser.Resolver{Module: module}
vis := parser.NewASTVisitor(res)
vis.VisitModule(module)
}
})
// type inference
log.Timed("inference phase", "", func() {
for _, module := range constructedModules {
inf := &parser.TypeInferer{Module: module}
inf.Infer()
// Dump AST
log.Debugln("main", "AST of module `%s`:", module.Name)
for _, node := range module.Nodes {
log.Debugln("main", "%s", node.String())
}
log.Debugln("main", "")
}
})
// semantic analysis
log.Timed("semantic analysis phase", "", func() {
for _, module := range constructedModules {
sem := semantic.NewSemanticAnalyzer(module, *buildOwnership, *ignoreUnused)
vis := parser.NewASTVisitor(sem)
vis.VisitModule(module)
sem.Finalize()
}
})
// codegen
if cg != "none" {
var gen codegen.Codegen
switch cg {
case "llvm":
gen = &LLVMCodegen.Codegen{
OutputName: outputFile,
OutputType: outputType,
OptLevel: optLevel,
}
default:
log.Error("main", util.Red("error: ")+"Invalid backend choice `"+cg+"`")
os.Exit(1)
}
log.Timed("codegen phase", "", func() {
gen.Generate(constructedModules)
})
}
}
示例8: errPos
func (v *lexer) errPos(pos Position, err string, stuff ...interface{}) {
log.Errorln("lexer", util.TEXT_RED+util.TEXT_BOLD+"error:"+util.TEXT_RESET+" [%s:%d:%d] %s",
pos.Filename, pos.Line, pos.Char, fmt.Sprintf(err, stuff...))
log.Error("lexer", v.input.MarkPos(pos))
os.Exit(1)
}
示例9: Module
func (v *NameMap) Module(name LocatedString) *NameMap {
mod := v.module(name)
if mod == nil {
startPos := name.Where.Start()
log.Errorln("constructor", "[%s:%d:%d] Unknown module `%s`",
startPos.Filename, startPos.Line, startPos.Char, name.Value)
log.Error("constructor", v.tree.Source.MarkSpan(name.Where))
}
return mod
}
示例10: TypeOf
func (v *NameMap) TypeOf(name LocatedString) NodeType {
typ := v.typeOf(name)
if typ == NODE_UNKOWN {
startPos := name.Where.Start()
log.Errorln("constructor", "[%s:%d:%d] Undeclared name `%s`",
startPos.Filename, startPos.Line, startPos.Char, name.Value)
log.Error("constructor", v.tree.Source.MarkSpan(name.Where))
}
return typ
}
示例11: errSpan
func (v *Constructor) errSpan(pos lexer.Span, err string, stuff ...interface{}) {
log.Errorln("constructor",
util.TEXT_RED+util.TEXT_BOLD+"error:"+util.TEXT_RESET+" [%s:%d:%d] %s",
pos.Filename, pos.StartLine, pos.StartChar,
fmt.Sprintf(err, stuff...))
log.Error("constructor", v.curTree.Source.MarkSpan(pos))
os.Exit(util.EXIT_FAILURE_CONSTRUCTOR)
}
示例12: errPos
func (v *Constructor) errPos(pos lexer.Position, err string, stuff ...interface{}) {
log.Errorln("constructor",
util.TEXT_RED+util.TEXT_BOLD+"Constructor error:"+util.TEXT_RESET+" [%s:%d:%d] %s",
pos.Filename, pos.Line, pos.Char,
fmt.Sprintf(err, stuff...))
log.Error("constructor", v.tree.Source.MarkPos(pos))
os.Exit(util.EXIT_FAILURE_CONSTRUCTOR)
}
示例13: errPosSpecific
func (v *parser) errPosSpecific(pos lexer.Position, err string, stuff ...interface{}) {
v.dumpRules()
log.Errorln("parser",
util.TEXT_RED+util.TEXT_BOLD+"error:"+util.TEXT_RESET+" [%s:%d:%d] %s",
pos.Filename, pos.Line, pos.Char,
fmt.Sprintf(err, stuff...))
log.Error("parser", v.input.MarkPos(pos))
os.Exit(util.EXIT_FAILURE_PARSE)
}
示例14: errTokenSpecific
func (v *parser) errTokenSpecific(tok *lexer.Token, err string, stuff ...interface{}) {
v.dumpRules()
log.Errorln("parser",
util.TEXT_RED+util.TEXT_BOLD+"error:"+util.TEXT_RESET+" [%s:%d:%d] %s",
tok.Where.Filename, tok.Where.StartLine, tok.Where.StartChar,
fmt.Sprintf(err, stuff...))
log.Error("parser", v.input.MarkSpan(tok.Where))
os.Exit(util.EXIT_FAILURE_PARSE)
}
示例15: build
func build(files []string, outputFile string, cg string, ccArgs []string, outputType LLVMCodegen.OutputType) {
constructedModules, modules := parseFiles(files)
// resolve
timed("resolve phase", func() {
// TODO: We're looping over a map, the order we get is thus random
for _, module := range modules {
res := &parser.Resolver{Module: module}
res.Resolve(modules)
}
})
// semantic analysis
timed("semantic analysis phase", func() {
// TODO: We're looping over a map, the order we get is thus random
for _, module := range modules {
sem := &parser.SemanticAnalyzer{Module: module}
sem.Analyze(modules)
}
})
// codegen
if cg != "none" {
var gen codegen.Codegen
switch cg {
case "llvm":
gen = &LLVMCodegen.Codegen{
OutputName: outputFile,
CompilerArgs: ccArgs,
OutputType: outputType,
}
default:
log.Error("main", util.Red("error: ")+"Invalid backend choice `"+cg+"`")
os.Exit(1)
}
timed("codegen phase", func() {
gen.Generate(constructedModules, modules)
})
}
}