Merge pull request #15806 from prometheus/owilliams/error

parser: fix misleading error message in grouping processing
This commit is contained in:
Owen Williams 2025-01-14 10:21:55 -05:00 committed by GitHub
commit 7be00791ef
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
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]