chore: record uses of user-defined attributes as shake dependencies (#11202)

This commit is contained in:
Sebastian Ullrich 2025-11-16 21:34:23 +01:00 committed by GitHub
parent ed34ee0cd5
commit 0b93b3f182
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -7,6 +7,7 @@ module
prelude
public import Lean.Elab.Util
public import Lean.Compiler.InitAttr
import Lean.Parser.Term
public section
@ -56,6 +57,9 @@ def elabAttr [Monad m] [MonadEnv m] [MonadResolveName m] [MonadError m] [MonadMa
| _ => throwErrorAt attr "Unknown attribute"
let .ok _impl := getAttributeImpl (← getEnv) attrName
| throwError "Unknown attribute `[{attrName}]`"
if let .ok impl := getAttributeImpl (← getEnv) attrName then
if isIOUnitRegularInitFn (← getEnv) impl.ref then -- skip `builtin_initialize` attributes
recordExtraModUseFromDecl (isMeta := true) impl.ref
/- The `AttrM` does not have sufficient information for expanding macros in `args`.
So, we expand them before here before we invoke the attributer handlers implemented using `AttrM`. -/
return { kind := attrKind, name := attrName, stx := attr }