chore: reserve public section syntax (#9032)
To be used in the experimental module system
This commit is contained in:
parent
35c168cb13
commit
7845af3105
3 changed files with 6 additions and 5 deletions
|
|
@ -86,7 +86,7 @@ private def checkEndHeader : Name → List Scope → Option Name
|
|||
|
||||
@[builtin_command_elab «section»] def elabSection : CommandElab := fun stx => do
|
||||
match stx with
|
||||
| `($[@[expose%$expTk]]? $[noncomputable%$ncTk]? section $(header?)?) =>
|
||||
| `(Parser.Command.section| $[public%$publicTk]? $[@[expose%$expTk]]? $[noncomputable%$ncTk]? section $(header?)?) =>
|
||||
-- TODO: allow more attributes?
|
||||
let attrs ← if expTk.isSome then
|
||||
pure [← `(Parser.Term.attrInstance| expose)]
|
||||
|
|
|
|||
|
|
@ -246,8 +246,9 @@ def «structure» := leading_parser
|
|||
@[builtin_command_parser] def «deriving» := leading_parser
|
||||
"deriving " >> "instance " >> derivingClasses >> " for " >> sepBy1 (recover ident skip) ", "
|
||||
def sectionHeader := leading_parser
|
||||
optional ("@[" >> nonReservedSymbol "expose" >> "]") >>
|
||||
optional ("noncomputable")
|
||||
optional ("public ") >>
|
||||
optional ("@[" >> nonReservedSymbol "expose" >> "] ") >>
|
||||
optional ("noncomputable ")
|
||||
/--
|
||||
A `section`/`end` pair delimits the scope of `variable`, `include, `open`, `set_option`, and `local`
|
||||
commands. Sections can be nested. `section <id>` provides a label to the section that has to appear
|
||||
|
|
|
|||
|
|
@ -34,8 +34,8 @@ StxQuot.lean:19:15-19:16: error: unexpected token ']'; expected term
|
|||
"#[(Term.matchAlt \"|\" [[`a._@.UnhygienicMain._hyg.1]] \"=>\" (num \"1\")), (Term.matchAlt \"|\" [[(Term.hole \"_\")]] \"=>\" (num \"2\"))]"
|
||||
"(Term.structInst\n \"{\"\n []\n (Term.structInstFields\n [(Term.structInstField\n (Term.structInstLVal `a._@.UnhygienicMain._hyg.1 [])\n [[] [] (Term.structInstFieldDef \":=\" [] `a._@.UnhygienicMain._hyg.1)])])\n (Term.optEllipsis [])\n [\":\" `a._@.UnhygienicMain._hyg.1]\n \"}\")"
|
||||
"(Term.structInst\n \"{\"\n []\n (Term.structInstFields\n [(Term.structInstField\n (Term.structInstLVal `a._@.UnhygienicMain._hyg.1 [])\n [[] [] (Term.structInstFieldDef \":=\" [] `a._@.UnhygienicMain._hyg.1)])])\n (Term.optEllipsis [])\n []\n \"}\")"
|
||||
"(Command.section (Command.sectionHeader [] []) \"section\" [])"
|
||||
"(Command.section (Command.sectionHeader [] []) \"section\" [`foo._@.UnhygienicMain._hyg.1])"
|
||||
"(Command.section (Command.sectionHeader [] [] []) \"section\" [])"
|
||||
"(Command.section (Command.sectionHeader [] [] []) \"section\" [`foo._@.UnhygienicMain._hyg.1])"
|
||||
"(Term.match\n \"match\"\n []\n []\n [(Term.matchDiscr [] `a._@.UnhygienicMain._hyg.1)]\n \"with\"\n (Term.matchAlts\n [(Term.matchAlt \"|\" [[`a._@.UnhygienicMain._hyg.1]] \"=>\" `b._@.UnhygienicMain._hyg.1)\n (Term.matchAlt\n \"|\"\n [[(«term_+_» `a._@.UnhygienicMain._hyg.1 \"+\" (num \"1\"))]]\n \"=>\"\n («term_+_» `b._@.UnhygienicMain._hyg.1 \"+\" (num \"1\")))]))"
|
||||
"(Term.match\n \"match\"\n []\n []\n [(Term.matchDiscr [] `a._@.UnhygienicMain._hyg.1)]\n \"with\"\n (Term.matchAlts\n [(Term.matchAlt \"|\" [[`a._@.UnhygienicMain._hyg.1]] \"=>\" `b._@.UnhygienicMain._hyg.1)\n (Term.matchAlt\n \"|\"\n [[(«term_+_» `a._@.UnhygienicMain._hyg.1 \"+\" (num \"1\"))]]\n \"=>\"\n («term_+_» `b._@.UnhygienicMain._hyg.1 \"+\" (num \"1\")))]))"
|
||||
"#[`a._@.UnhygienicMain._hyg.1, `b._@.UnhygienicMain._hyg.1]"
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue