parser: fix misleading error message in grouping processing

Signed-off-by: Owen Williams <owen.williams@grafana.com>
This commit is contained in:
Owen Williams 2025-01-10 15:19:45 -05:00
parent 02501e097e
commit 47563d942e
2 changed files with 10 additions and 8 deletions

View file

@ -363,17 +363,18 @@ grouping_label_list:
grouping_label : maybe_label
{
if !model.LabelName($1.Val).IsValid() {
yylex.(*parser).unexpected("grouping opts", "label")
yylex.(*parser).addParseErrf($1.PositionRange(),"invalid label name for grouping: %q", $1.Val)
}
$$ = $1
}
| STRING {
if !model.LabelName(yylex.(*parser).unquoteString($1.Val)).IsValid() {
yylex.(*parser).unexpected("grouping opts", "label")
unquoted := yylex.(*parser).unquoteString($1.Val)
if !model.LabelName(unquoted).IsValid() {
yylex.(*parser).addParseErrf($1.PositionRange(),"invalid label name for grouping: %q", unquoted)
}
$$ = $1
$$.Pos++
$$.Val = yylex.(*parser).unquoteString($$.Val)
$$.Val = unquoted
}
| error
{ yylex.(*parser).unexpected("grouping opts", "label"); $$ = Item{} }

View file

@ -1259,19 +1259,20 @@ yydefault:
yyDollar = yyS[yypt-1 : yypt+1]
{
if !model.LabelName(yyDollar[1].item.Val).IsValid() {
yylex.(*parser).unexpected("grouping opts", "label")
yylex.(*parser).addParseErrf(yyDollar[1].item.PositionRange(), "invalid label name for grouping: %q", yyDollar[1].item.Val)
}
yyVAL.item = yyDollar[1].item
}
case 59:
yyDollar = yyS[yypt-1 : yypt+1]
{
if !model.LabelName(yylex.(*parser).unquoteString(yyDollar[1].item.Val)).IsValid() {
yylex.(*parser).unexpected("grouping opts", "label")
unquoted := yylex.(*parser).unquoteString(yyDollar[1].item.Val)
if !model.LabelName(unquoted).IsValid() {
yylex.(*parser).addParseErrf(yyDollar[1].item.PositionRange(), "invalid label name for grouping: %q", unquoted)
}
yyVAL.item = yyDollar[1].item
yyVAL.item.Pos++
yyVAL.item.Val = yylex.(*parser).unquoteString(yyVAL.item.Val)
yyVAL.item.Val = unquoted
}
case 60:
yyDollar = yyS[yypt-1 : yypt+1]