{"record":{"id":"ada1edc4bf93dc27","repo":"oxc-project/oxc","slug":"get-string-content","errorCode":null,"errorMessage":"get string content","messagePattern":"get string content","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"crates/oxc_linter/src/utils/jest/parse_jest_fn.rs","lineNumber":504,"sourceCode":"#[derive(Debug)]\npub struct KnownMemberExpressionProperty<'a> {\n    pub element: MemberExpressionElement<'a>,\n    pub parent: Option<&'a Expression<'a>>,\n    pub parent_kind: Option<KnownMemberExpressionParentKind>,\n    pub grandparent_kind: Option<KnownMemberExpressionParentKind>,\n    pub span: Span,\n}\n\nimpl<'a> KnownMemberExpressionProperty<'a> {\n    pub fn name(&self) -> Option<Cow<'a, str>> {\n        match &self.element {\n            MemberExpressionElement::Expression(expr) => match expr {\n                Expression::Identifier(ident) => Some(Cow::Borrowed(ident.name.as_str())),\n                Expression::StringLiteral(string_literal) => {\n                    Some(Cow::Borrowed(string_literal.value.as_str()))\n                }\n                Expression::TemplateLiteral(template_literal) => Some(Cow::Borrowed(\n                    template_literal.single_quasi().expect(\"get string content\").as_str(),\n                )),\n                _ => None,\n            },\n            MemberExpressionElement::IdentName(ident_name) => {\n                Some(Cow::Borrowed(ident_name.name.as_str()))\n            }\n        }\n    }\n\n    pub fn is_name_equal(&self, name: &str) -> bool {\n        self.name().is_some_and(|n| n == name)\n    }\n\n    pub fn is_name_unequal(&self, name: &str) -> bool {\n        !self.is_name_equal(name)\n    }\n\n    pub fn is_name_in_modifiers(&self, modifiers: &[ModifierName]) -> bool {","sourceCodeStart":486,"sourceCodeEnd":522,"githubUrl":"https://github.com/oxc-project/oxc/blob/e1e7af627c8843ab64044ed466b128fcc21a035b/crates/oxc_linter/src/utils/jest/parse_jest_fn.rs#L486-L522","documentation":"Panic inside KnownMemberExpressionProperty::name: for expression elements the method extracts static string content (identifier name, string literal, or a template quasi's cooked text) and an internal expect(\"get string content\") fires when a template-literal element has no usable quasi content. The method returns Option, so callers like is_name_equal already treat None as \"no static name\".","triggerScenarios":"Thrown at crates/oxc_linter/src/utils/jest/parse_jest_fn.rs:504 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Handle the computed/template element case explicitly and return None instead of unwrapping quasi content","Guard with a check that the template has exactly the expected quasis before extracting text","Keep matchers limited to identifier and string-literal property elements"],"exampleFix":null,"handlingStrategy":"type-guard","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"e1e7af627c8843ab64044ed466b128fcc21a035b","analyzedAt":"2026-08-20T07:01:07.079Z","contentChangedAt":"2026-08-20T07:01:07.079Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}