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 grouping_label : maybe_label
{ {
if !model.LabelName($1.Val).IsValid() { 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 $$ = $1
} }
| STRING { | STRING {
if !model.LabelName(yylex.(*parser).unquoteString($1.Val)).IsValid() { unquoted := yylex.(*parser).unquoteString($1.Val)
yylex.(*parser).unexpected("grouping opts", "label") if !model.LabelName(unquoted).IsValid() {
yylex.(*parser).addParseErrf($1.PositionRange(),"invalid label name for grouping: %q", unquoted)
} }
$$ = $1 $$ = $1
$$.Pos++ $$.Pos++
$$.Val = yylex.(*parser).unquoteString($$.Val) $$.Val = unquoted
} }
| error | error
{ yylex.(*parser).unexpected("grouping opts", "label"); $$ = Item{} } { yylex.(*parser).unexpected("grouping opts", "label"); $$ = Item{} }

View file

@ -1259,19 +1259,20 @@ yydefault:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
{ {
if !model.LabelName(yyDollar[1].item.Val).IsValid() { 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 yyVAL.item = yyDollar[1].item
} }
case 59: case 59:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]
{ {
if !model.LabelName(yylex.(*parser).unquoteString(yyDollar[1].item.Val)).IsValid() { unquoted := yylex.(*parser).unquoteString(yyDollar[1].item.Val)
yylex.(*parser).unexpected("grouping opts", "label") 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 = yyDollar[1].item
yyVAL.item.Pos++ yyVAL.item.Pos++
yyVAL.item.Val = yylex.(*parser).unquoteString(yyVAL.item.Val) yyVAL.item.Val = unquoted
} }
case 60: case 60:
yyDollar = yyS[yypt-1 : yypt+1] yyDollar = yyS[yypt-1 : yypt+1]