Skip to content

possible bug in tag syntax #249

@marco-m

Description

@marco-m

Hello,

it seems there is a difference between the "raw" and "parse" tag syntax? The following repro shows what I stumbled upon.

package tagsyntax

import (
	"testing"

	"github.com/alecthomas/assert/v2"
	"github.com/alecthomas/participle/v2"
)

type GoodAST struct {
	Key        string   `parser:"@Ident '='"`
	BlankLines []string `"\n"`
}

type BadAST struct {
	Key string `parser:"@Ident '='"`
	// Same as field in GoodAST, as explained in https://github.com/alecthomas/participle#tag-syntax
	BlankLines []string `parser:"'\n'"`
}

func TestLiteralNotTerminatedGood(t *testing.T) {
	_, err := participle.Build(&GoodAST{})

	assert.NoError(t, err)
}

func TestLiteralNotTerminatedBad(t *testing.T) {
	_, err := participle.Build(&BadAST{})

	// The error is:
	//
	//     Key: <input>:1:2: literal not terminated
	//
	// which is confusing because it refers to the previous field in the struct (Key)
	// and unclear?
	assert.NoError(t, err)
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions