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:
Ben Clayton 2020-04-27 21:14:48 +01:00 коммит произвёл GitHub
Родитель 42268740c9
Коммит 23d68608b0
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
2 изменённых файлов: 1163 добавлений и 33 удалений

Просмотреть файл

@ -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:

Разница между файлами не показана из-за своего большого размера Загрузить разницу