Documentation

Lean.Elab.DeclModifiers

Ensure the environment does not contain a declaration with name declName. Recall that a private declaration cannot shadow a non-private one and vice-versa, although they internally have different names.

Instances For

    Declaration visibility modifier. That is, whether a declaration is public or private or inherits its visibility from the outer scope.

    Instances For

      Whether a declaration is default, partial or nonrec.

      Instances For

        Codegen-relevant modifiers.

        Instances For
          @[implicit_reducible]

          Flags and data added to declarations (eg docstrings, attributes, private, unsafe, partial, ...).

          Instances For

            Adds attribute attr in modifiers

            Instances For

              Adds attribute attr in modifiers, at the beginning

              Instances For

                Filters attributes using p

                Instances For

                  Returns true if modifiers contains an attribute satisfying p.

                  Instances For
                    def Lean.Elab.expandOptDocComment? {m : TypeType} [Monad m] [MonadError m] (optDocComment : Syntax) :

                    Retrieve doc string from stx of the form (docComment)?.

                    Instances For
                      def Lean.Elab.elabModifiers {m : TypeType} [Monad m] [MonadEnv m] [MonadResolveName m] [MonadError m] [MonadFinally m] [MonadMacroAdapter m] [MonadRecDepth m] [MonadTrace m] [MonadOptions m] [AddMessageContext m] [MonadLog m] [MonadLiftT IO m] (stx : TSyntax `Lean.Parser.Command.declModifiers) :

                      Elaborate declaration modifiers (i.e., attributes, partial, private, protected, unsafe, meta, noncomputable, doc string)

                      Instances For
                        def Lean.Elab.applyVisibility {m : TypeType} [Monad m] [MonadEnv m] [MonadError m] [MonadFinally m] [MonadInfoTree m] (modifiers : Modifiers) (declName : Name) :

                        Ensure the function has not already been declared, and apply the given visibility setting to declName. If private, return the updated name using our internal encoding for private names. If protected, register declName as protected in the environment.

                        Instances For
                          Instances For
                            def Lean.Elab.mkDeclName {m : TypeType} [Monad m] [MonadEnv m] [MonadError m] [MonadFinally m] [MonadInfoTree m] (currNamespace : Name) (modifiers : Modifiers) (shortName : Name) :
                            Instances For

                              declId is of the form

                              leading_parser ident >> optional (".{" >> sepBy1 ident ", " >> "}")
                              

                              but we also accept a single identifier to users to make macro writing more convenient .

                              Instances For

                                expandDeclId resulting type.

                                • shortName : Name

                                  Short name for recursively referring to the declaration.

                                • declName : Name

                                  Fully qualified name that will be used to name the declaration in the kernel.

                                • levelNames : List Name

                                  Universe parameter names provided using the universe command and .{...} notation.

                                • docString? : Option (TSyntax `Lean.Parser.Command.docComment × Bool)

                                  The docstring, and whether it's Verso

                                Instances For
                                  def Lean.Elab.expandDeclId (currNamespace : Name) (currLevelNames : List Name) (declId : Syntax) (modifiers : Modifiers) :

                                  Given a declaration identifier (e.g., ident (".{" ident,+ "}")?) that may contain explicit universe parameters

                                  • Ensure the new universe parameters do not shadow universe parameters declared using universe command.
                                  • Create the fully qualified named for the declaration using the current namespace, and given modifiers
                                  • Create a short version for recursively referring to the declaration. Recall that the protected modifier affects the generation of the short name.

                                  The result also contains the universe parameters provided using universe command, and the .{...} notation.

                                  This commands also stores the doc string stored in modifiers.

                                  Instances For