{"record":{"id":"9c99708b692365b0","repo":"facebook/relay","slug":"expected-handler-arg-to-have-been-previously-valid","errorCode":null,"errorMessage":"Expected handler_arg to have been previously validated.","messagePattern":"Expected handler_arg to have been previously validated\\.","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"compiler/crates/relay-transforms/src/handle_fields/handle_field_util.rs","lineNumber":225,"sourceCode":") -> HandleFieldDirectiveValues {\n    let HandleFieldDirectiveArgs {\n        handler_arg,\n        filters_arg,\n        key_arg,\n        dynamic_key_arg,\n        handle_args_arg,\n    } = extract_handle_field_directive_args_helper(handle_field_directive, hanlder_arg_name);\n\n    // We expect these values to be available since they should've been\n    // validated first as part of validate_connections validation step.\n    let key = match key_arg {\n        Some((_, value)) => value\n            .get_string_literal()\n            .expect(\"Expected key_arg to have been previously validated.\"),\n        None => \"\".intern(),\n    };\n    let handle= match handler_arg {\n         Some((_, value)) => value.get_string_literal().expect(\"Expected handler_arg to have been previously validated.\"),\n         None => default_handler.expect(\"Expected handler_arg to have been previously validated or a default to have been provided.\"),\n     };\n    let filters = match filters_arg {\n        Some((_, value)) => match value {\n            ConstantValue::List(list_val) => Some(\n                list_val\n                    .iter()\n                    .map(|val| {\n                        val.get_string_literal()\n                            .expect(\"Expected filters_arg to have been previously validated.\")\n                    })\n                    .collect::<Vec<_>>(),\n            ),\n            ConstantValue::Null() => None,\n            _ => unreachable!(\"Expected filters_arg to have been previously validated.\",),\n        },\n        None => default_filters,\n    };","sourceCodeStart":207,"sourceCodeEnd":243,"githubUrl":"https://github.com/facebook/relay/blob/668b1b85e06261aa3b58dabfc51f8b5524a70955/compiler/crates/relay-transforms/src/handle_fields/handle_field_util.rs#L207-L243","documentation":"Unwrap guard in extract_values_from_handle_field_directive_helper: handler_arg (the handler name on @handle_field) must be a string literal, guaranteed by the earlier validate_connections validation pass. Firing indicates the handler argument is missing or non-literal because the directive skipped validation.","triggerScenarios":"Thrown at compiler/crates/relay-transforms/src/handle_fields/handle_field_util.rs:225 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Run validate_connections before this extraction step","Ensure hander_arg_name lookup matches the directive argument actually set","Provide a default_handler fallback when the argument is absent"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"668b1b85e06261aa3b58dabfc51f8b5524a70955","analyzedAt":"2026-09-02T19:57:20.783Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-10T02:17:09.455Z"}