From ab17c3b1950012291224e8ddd1af9f291234ffbd Mon Sep 17 00:00:00 2001 From: Arpad Ryszka Date: Wed, 20 Aug 2025 00:45:32 +0200 Subject: [PATCH] preserve init error --- Makefile | 6 ++---- cmd/treerack/open.go | 4 ++-- cmd/treerack/show.go | 2 +- syntax.go | 23 +++++++++++------------ 4 files changed, 16 insertions(+), 19 deletions(-) diff --git a/Makefile b/Makefile index f4bfe6a..23503fd 100644 --- a/Makefile +++ b/Makefile @@ -118,12 +118,10 @@ cpu: cpu.out go tool pprof -top cpu.out fmt: $(SOURCES) - @echo fmt - @gofmt -w -s $(SOURCES) + gofmt -w -s $(SOURCES) checkfmt: $(SOURCES) - @echo check fmt - @if [ "$$(gofmt -s -d $(SOURCES))" != "" ]; then false; else true; fi + if [ "$$(gofmt -s -d $(SOURCES))" != "" ]; then false; else true; fi vet: go vet ./... diff --git a/cmd/treerack/open.go b/cmd/treerack/open.go index 0fc3894..a5638fd 100644 --- a/cmd/treerack/open.go +++ b/cmd/treerack/open.go @@ -2,12 +2,12 @@ package main import ( "bytes" + "code.squareroundforest.org/arpio/treerack" "flag" + "golang.org/x/crypto/ssh/terminal" "io" "io/ioutil" "os" - "code.squareroundforest.org/arpio/treerack" - "golang.org/x/crypto/ssh/terminal" ) type fileOptions struct { diff --git a/cmd/treerack/show.go b/cmd/treerack/show.go index a016e46..de4df9a 100644 --- a/cmd/treerack/show.go +++ b/cmd/treerack/show.go @@ -1,8 +1,8 @@ package main import ( - "encoding/json" "code.squareroundforest.org/arpio/treerack" + "encoding/json" ) type showOptions struct { diff --git a/syntax.go b/syntax.go index 40d6644..0a8d96f 100644 --- a/syntax.go +++ b/syntax.go @@ -1,10 +1,10 @@ package treerack import ( + "code.squareroundforest.org/arpio/treerack/self" "errors" "fmt" "io" - "code.squareroundforest.org/arpio/treerack/self" ) // if min=0&&max=0, it means min=1,max=1 @@ -16,12 +16,12 @@ type SequenceItem struct { } type Syntax struct { - registry *registry - initialized bool - initFailed bool - explicitRoot bool - keywords []definition - root definition + registry *registry + initialized bool + errInitFailed error + explicitRoot bool + keywords []definition + root definition } type GeneratorOptions struct { @@ -52,7 +52,6 @@ type definition interface { var ( ErrSyntaxInitialized = errors.New("syntax initialized") - ErrInitFailed = errors.New("init failed") ErrNoParsersDefined = errors.New("no parsers defined") ErrInvalidEscapeCharacter = errors.New("invalid escape character") ErrMultipleRoots = errors.New("multiple roots") @@ -296,8 +295,8 @@ func (s *Syntax) ReadSyntax(r io.Reader) error { } func (s *Syntax) Init() error { - if s.initFailed { - return ErrInitFailed + if s.errInitFailed != nil { + return s.errInitFailed } if s.initialized { @@ -324,13 +323,13 @@ func (s *Syntax) Init() error { for i := range s.keywords { if err := s.keywords[i].validate(s.registry); err != nil { - s.initFailed = true + s.errInitFailed = err return err } } if err := s.root.validate(s.registry); err != nil { - s.initFailed = true + s.errInitFailed = err return err }