diff --git a/starlark-rust/starlark/src/tests/derive/module/basic.rs b/starlark-rust/starlark/src/tests/derive/module/basic.rs index 9bb9baa5bc947..0c7132b8f532b 100644 --- a/starlark-rust/starlark/src/tests/derive/module/basic.rs +++ b/starlark-rust/starlark/src/tests/derive/module/basic.rs @@ -25,6 +25,7 @@ use crate::values::list_or_tuple::UnpackListOrTuple; use crate::values::Heap; use crate::values::StringValue; use crate::values::Value; +use crate::values::ValueOfUnchecked; // The examples from the starlark_module documentation. #[test] @@ -61,3 +62,15 @@ fn test_starlark_methods() { MethodsBuilder::new().with(methods).build(); } + +#[test] +fn test_static_allowed() { + #[starlark_module] + fn globals(globals: &mut GlobalsBuilder) { + fn test<'v>() -> anyhow::Result> { + panic!() + } + } + + GlobalsBuilder::standard().with(globals).build(); +} diff --git a/starlark-rust/starlark_derive/src/module/parse/fun.rs b/starlark-rust/starlark_derive/src/module/parse/fun.rs index 0f6e18b50024f..2e99c300dbb47 100644 --- a/starlark-rust/starlark_derive/src/module/parse/fun.rs +++ b/starlark-rust/starlark_derive/src/module/parse/fun.rs @@ -460,7 +460,7 @@ fn check_lifetimes_in_type(ty: &Type, has_v: bool) -> syn::Result<()> { #[allow(clippy::collapsible_if)] fn visit_lifetime(&mut self, lifetime: &'ast Lifetime) { if self.result.is_ok() { - if lifetime.ident != "_" { + if lifetime.ident != "_" && lifetime.ident != "static" { if lifetime.ident != "v" { self.result = Err(syn::Error::new( lifetime.span(),