From ca80eeaa812b49afea75d3084d0c62770e4a8d18 Mon Sep 17 00:00:00 2001 From: Marc Vertes Date: Wed, 7 Jan 2026 12:09:20 +0100 Subject: fix: set 'HasInit' token property in language definition --- lang/golang/go.go | 10 +++++----- lang/spec.go | 16 ++++------------ 2 files changed, 9 insertions(+), 17 deletions(-) (limited to 'lang') diff --git a/lang/golang/go.go b/lang/golang/go.go index 603b256..2085c3b 100644 --- a/lang/golang/go.go +++ b/lang/golang/go.go @@ -141,25 +141,25 @@ var GoSpec = &lang.Spec{ lang.Colon: {Precedence: 7}, lang.Inc: {SkipSemi: true}, lang.Dec: {SkipSemi: true}, - lang.Case: {SkipSemi: true}, + lang.Case: {SkipSemi: true, HasInit: true}, lang.Chan: {SkipSemi: true}, lang.Const: {SkipSemi: true}, lang.Default: {SkipSemi: true}, lang.Defer: {SkipSemi: true}, lang.Else: {SkipSemi: true}, - lang.For: {SkipSemi: true}, + lang.For: {SkipSemi: true, HasInit: true}, lang.Func: {SkipSemi: true}, lang.Go: {SkipSemi: true}, lang.Goto: {SkipSemi: true}, - lang.If: {SkipSemi: true}, + lang.If: {SkipSemi: true, HasInit: true}, lang.Import: {SkipSemi: true}, lang.Interface: {SkipSemi: true}, lang.Map: {SkipSemi: true}, lang.Package: {SkipSemi: true}, lang.Range: {SkipSemi: true}, - lang.Select: {SkipSemi: true}, + lang.Select: {SkipSemi: true, HasInit: true}, lang.Struct: {SkipSemi: true}, - lang.Switch: {SkipSemi: true}, + lang.Switch: {SkipSemi: true, HasInit: true}, lang.Type: {SkipSemi: true}, lang.Var: {SkipSemi: true}, lang.MaxTok: {}, // To ensure that all Tokens have a TokenProp. diff --git a/lang/spec.go b/lang/spec.go index 37017e7..b8539e3 100644 --- a/lang/spec.go +++ b/lang/spec.go @@ -35,9 +35,10 @@ const ( // TokenProp represent token properties for parsing. type TokenProp struct { Token - SkipSemi bool // automatic semicolon insertion after newline - Precedence int // operator precedence - Associativity + SkipSemi bool // automatic semicolon insertion after newline + Precedence int // operator precedence + Associativity // + HasInit bool // true if may have an init clause } // Spec represents the language specification for scanning. @@ -52,12 +53,3 @@ type Spec struct { NumUnder bool // true if a number can contain _ character // TokenProps map[string]TokenProp // token properties } - -// HasInit stores if a statement may contain a simple init statement. -var HasInit = map[Token]bool{ - Case: true, - For: true, - If: true, - Select: true, - Switch: true, -} -- cgit v1.2.3