Skip to content

Feature Request: Types implementing "fmt.Stringer" should be assignable/comparable to strings #648

Open
@jippi

Description

@jippi

👋 Hello,

I got the following error with this expression: merge_request.state in ["merged", "closed"]

reflect.Value.MapIndex: value of type gitlab.MergeRequestState is not assignable to type string

It would be very nice if types implementing fmt.Stringer interface to be assignable to strings, or generally treated as strings.

Alternatively, a expr interface types could implement, making them capable of self-casting to various scalar types.

For reference this is the gitlab.MergeRequestState type (used in merge_request.state) implementation

type MergeRequestState string

const (
	// All available
	MergeRequestStateAll MergeRequestState = "all"
	// In closed state
	MergeRequestStateClosed MergeRequestState = "closed"
	// Discussion has been locked
	MergeRequestStateLocked MergeRequestState = "locked"
	// Merge request has been merged
	MergeRequestStateMerged MergeRequestState = "merged"
	// Opened merge request
	MergeRequestStateOpened MergeRequestState = "opened"
)

var AllMergeRequestState = []MergeRequestState{
	MergeRequestStateAll,
	MergeRequestStateClosed,
	MergeRequestStateLocked,
	MergeRequestStateMerged,
	MergeRequestStateOpened,
}

func (e MergeRequestState) IsValid() bool {
	switch e {
	case MergeRequestStateAll, MergeRequestStateClosed, MergeRequestStateLocked, MergeRequestStateMerged, MergeRequestStateOpened:
		return true
	}
	return false
}

func (e MergeRequestState) String() string {
	return string(e)
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions