Close callback contexts when callbacks panic
This commit is contained in:
@@ -102,8 +102,10 @@ func runValidation[T any](configuration *T, validator func(*T, *Validation), sch
|
||||
invalidPath: CodeValidateInvalidPath, schema: schema, document: input,
|
||||
}
|
||||
context := &Validation{state: state}
|
||||
validator(configuration, context)
|
||||
state.active = false
|
||||
func() {
|
||||
defer func() { state.active = false }()
|
||||
validator(configuration, context)
|
||||
}()
|
||||
after, issue := projectConfiguration(schema, reflect.ValueOf(*configuration), defaultProjectionLimits())
|
||||
if issue != nil {
|
||||
state.diagnostics = append(state.diagnostics, validationMutationDiagnostic(issue.path))
|
||||
@@ -253,8 +255,11 @@ func reportVersion(rule *VersionRule, version Version, root *document.Node) []Di
|
||||
invalidPath: CodeVersionError, document: root,
|
||||
}
|
||||
validation := &Validation{state: state}
|
||||
err := rule.Check(version, validation)
|
||||
state.active = false
|
||||
var err error
|
||||
func() {
|
||||
defer func() { state.active = false }()
|
||||
err = rule.Check(version, validation)
|
||||
}()
|
||||
if err != nil && !hasErrors(state.diagnostics) {
|
||||
location, _ := nearestDocumentLocation(root, rule.Path)
|
||||
state.diagnostics = append(state.diagnostics, Diagnostic{
|
||||
|
||||
Reference in New Issue
Block a user