vscode: Handle '|' chains on BitEnum / ValueEnum (#3309)
* vscode: Regenerate schema with new opcodes. * vscode: Handle '|' chains on BitEnum / ValueEnum These were highlighting as errors.
This commit is contained in:
Родитель
42268740c9
Коммит
23d68608b0
|
@ -310,7 +310,7 @@ func (l *lexer) operator() {
|
|||
tok := &Token{Type: Operator, Range: Range{Start: l.pos, End: l.pos}}
|
||||
for l.e == nil {
|
||||
switch l.next() {
|
||||
case '=':
|
||||
case '=', '|':
|
||||
tok.Range.End = l.pos
|
||||
l.toks = append(l.toks, tok)
|
||||
return
|
||||
|
@ -374,7 +374,7 @@ func lex(source string) ([]*Token, []Diagnostic, error) {
|
|||
case r == '"':
|
||||
l.restore(s)
|
||||
l.string()
|
||||
case r == '=':
|
||||
case r == '=', r == '|':
|
||||
l.restore(s)
|
||||
l.operator()
|
||||
case r == ';':
|
||||
|
@ -556,21 +556,34 @@ func (p *parser) operand(n string, k *schema.OperandKind, i int, optional bool)
|
|||
s := tok.Text(p.lines)
|
||||
for _, e := range k.Enumerants {
|
||||
if e.Enumerant == s {
|
||||
n := 1
|
||||
count := 1
|
||||
for _, param := range e.Parameters {
|
||||
p, c := p.operand(param.Name, param.Kind, i+n, false)
|
||||
p, c := p.operand(param.Name, param.Kind, i+count, false)
|
||||
if p != nil {
|
||||
op.Tokens = append(op.Tokens, p.Tokens...)
|
||||
op.Parameters = append(op.Parameters, p)
|
||||
}
|
||||
n += c
|
||||
count += c
|
||||
}
|
||||
return op, n
|
||||
|
||||
// Handle bitfield '|' chains
|
||||
if p.tok(i+count).Text(p.lines) == "|" {
|
||||
count++ // '|'
|
||||
p, c := p.operand(n, k, i+count, false)
|
||||
if p != nil {
|
||||
op.Tokens = append(op.Tokens, p.Tokens...)
|
||||
op.Parameters = append(op.Parameters, p)
|
||||
}
|
||||
count += c
|
||||
}
|
||||
|
||||
return op, count
|
||||
}
|
||||
}
|
||||
if !optional {
|
||||
p.err(p.tok(i), "invalid operand value '%s'", s)
|
||||
}
|
||||
|
||||
return nil, 0
|
||||
|
||||
case schema.OperandCategoryID:
|
||||
|
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
Загрузка…
Ссылка в новой задаче