-
-
Notifications
You must be signed in to change notification settings - Fork 13
Open
Description
Example, FormData constructor, the submitter will never be used (maybe depending on how undefined are parsed)
func FormDataConstructor[T any](cbCtx js.CallbackContext[T]) (res js.Value[T], err error) {
form, found, errArg := js.ConsumeOptionalArg(cbCtx, "form", decodeHTMLFormElement)
if found {
if errArg != nil {
return nil, errArg
}
return CreateFormDataForm(cbCtx, form)
}
submitter, found, errArg := js.ConsumeOptionalArg(cbCtx, "submitter", codec.DecodeHTMLElement)
if found {
if errArg != nil {
return nil, errArg
}
return CreateFormDataFormSubmitter(cbCtx, form, submitter)
}
return CreateFormData(cbCtx)
}Should probably have been
func FormDataConstructor[T any](cbCtx js.CallbackContext[T]) (res js.Value[T], err error) {
form, found, errArg := js.ConsumeOptionalArg(cbCtx, "form", decodeHTMLFormElement)
if found {
if errArg != nil {
return nil, errArg
}
submitter, found, errArg := js.ConsumeOptionalArg(cbCtx, "submitter", codec.DecodeHTMLElement)
if found {
if errArg != nil {
return nil, errArg
}
return CreateFormDataFormSubmitter(cbCtx, form, submitter)
}
return CreateFormDataForm(cbCtx, form)
}
return CreateFormData(cbCtx)
}I.e., the next optional argument is checked if the first exists; and parsing didn't fail.
Maybe a more readable form is
func FormDataConstructor[T any](cbCtx js.CallbackContext[T]) (res js.Value[T], err error) {
form, formFound, formErr := js.ConsumeOptionalArg(cbCtx, "form", decodeHTMLFormElement)
submitter, submitterFound, submitterErr := js.ConsumeOptionalArg(cbCtx, "submitter", codec.DecodeHTMLElement)
if formFound {
if formErr != nil {
return nil, formErr
}
if submitterFound {
if submitterErr != nil {
return nil, submitterErr
}
return CreateFormDataFormSubmitter(cbCtx, form, submitter)
}
return CreateFormDataForm(cbCtx, form)
}
return CreateFormData(cbCtx)
}Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels
Type
Projects
Status
Todo