{"record":{"id":"8ff22fad71673b93","repo":"larksuite/cli","slug":"required-input-cannot-declare-default","errorCode":null,"errorMessage":"required input cannot declare default","messagePattern":"required input cannot declare default","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"shortcuts/common/typed_compile_args.go","lineNumber":498,"sourceCode":"\t\t\tif err != nil {\n\t\t\t\treturn result, fmt.Errorf(\"schema minItems: %w\", err)\n\t\t\t}\n\t\t\tresult.minItems = &v\n\t\tcase \"maxItems\":\n\t\t\tv, err := parseNonnegativeInt(value)\n\t\t\tif err != nil {\n\t\t\t\treturn result, fmt.Errorf(\"schema maxItems: %w\", err)\n\t\t\t}\n\t\t\tresult.maxItems = &v\n\t\tdefault:\n\t\t\treturn result, fmt.Errorf(\"unknown schema token %q\", key)\n\t\t}\n\t}\n\tif result.required == result.optional {\n\t\treturn result, fmt.Errorf(\"schema must declare exactly one of required or optional\")\n\t}\n\tif result.required && result.defaultValue.Set {\n\t\treturn result, fmt.Errorf(\"required input cannot declare default\")\n\t}\n\tif result.nullable != nil && *result.nullable && !isNilCapable(valueType) {\n\t\treturn result, fmt.Errorf(\"nullable requires a nil-capable Go type\")\n\t}\n\tif result.minLength != nil && result.maxLength != nil && *result.minLength > *result.maxLength {\n\t\treturn result, fmt.Errorf(\"minLength exceeds maxLength\")\n\t}\n\tif result.minimum != nil && result.maximum != nil && *result.minimum > *result.maximum {\n\t\treturn result, fmt.Errorf(\"minimum exceeds maximum\")\n\t}\n\tif result.minItems != nil && result.maxItems != nil && *result.minItems > *result.maxItems {\n\t\treturn result, fmt.Errorf(\"minItems exceeds maxItems\")\n\t}\n\treturn result, nil\n}\n\nfunc parseCLITag(raw string) (typedCLIInput, error) {\n\tvar result typedCLIInput","sourceCodeStart":480,"sourceCodeEnd":516,"githubUrl":"https://github.com/larksuite/cli/blob/7fd6ef3c07182257ce776cdc5a614e122d5bd4b3/shortcuts/common/typed_compile_args.go#L480-L516","documentation":"A field marked `required` in its schema tag cannot also declare a `default` value. A required input must always be supplied by the caller, so a default would be unreachable and signals a contradiction; parseSchemaTag rejects this combination at compile time.","triggerScenarios":"A tag like schema:\"required;default=\\\"x\\\"\" on an input struct field compiled via collectArgFields.","commonSituations":"Changing a field from optional to required while leaving its default in place, or adding required to a field that was designed with a fallback value.","solutions":["If callers may omit the field, change required to optional and keep the default.","If the field must be provided, remove the default token.","Review the field's intent: a default implies optionality."],"exampleFix":"// before\nLocale string `schema:\"required;default=\\\"en-US\\\"\"`\n// after\nLocale string `schema:\"optional;default=\\\"en-US\\\"\"`","handlingStrategy":"validation","validationCode":"func requiredHasNoDefault(tag string) bool {\n\trequired, hasDefault := false, false\n\tfor _, tok := range strings.Split(tag, \";\") {\n\t\tif k, _, _ := strings.Cut(tok, \"=\"); k == \"required\" {\n\t\t\trequired = true\n\t\t}\n\t\tif strings.HasPrefix(tok, \"default=\") {\n\t\t\thasDefault = true\n\t\t}\n\t}\n\treturn !(required && hasDefault)\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Treat a default value as implying `optional`.","When adding `required`, remove any default token in the same change.","Document field intent: required means caller must always supply it."],"tags":["go","struct-tags","schema-validation","defaults"],"backgroundTag":"schema-validation-failed","analyzedSha":"7fd6ef3c07182257ce776cdc5a614e122d5bd4b3","analyzedAt":"2026-09-04T21:17:44.649Z","contentChangedAt":"2026-09-04T21:17:44.649Z","schemaVersion":2},"datasetVersion":"2026-09-12T02:17:10.037Z"}