chore: update stage0
This commit is contained in:
parent
73ebaf8499
commit
3dc6c859eb
188 changed files with 114130 additions and 73624 deletions
123
stage0/src/Init/Conv.lean
generated
123
stage0/src/Init/Conv.lean
generated
|
|
@ -36,17 +36,12 @@ syntax occsIndexed := num+
|
|||
syntax occs := atomic(" (" &"occs") " := " (occsWildcard <|> occsIndexed) ")"
|
||||
|
||||
/--
|
||||
`conv => ...` allows the user to perform targeted rewriting on a goal or hypothesis,
|
||||
by focusing on particular subexpressions.
|
||||
|
||||
See <https://leanprover.github.io/theorem_proving_in_lean4/conv.html> for more details.
|
||||
|
||||
Basic forms:
|
||||
* `conv => cs` will rewrite the goal with conv tactics `cs`.
|
||||
* `conv at h => cs` will rewrite hypothesis `h`.
|
||||
* `conv in pat => cs` will rewrite the first subexpression matching `pat` (see `pattern`).
|
||||
`with_annotate_state stx t` annotates the lexical range of `stx : Syntax` with
|
||||
the initial and final state of running tactic `t`.
|
||||
-/
|
||||
syntax (name := conv) "conv " (" at " ident)? (" in " (occs)? term)? " => " convSeq : tactic
|
||||
scoped syntax (name := withAnnotateState)
|
||||
"with_annotate_state " rawStx ppSpace conv : conv
|
||||
|
||||
|
||||
/-- `skip` does nothing. -/
|
||||
syntax (name := skip) "skip" : conv
|
||||
|
|
@ -129,6 +124,22 @@ syntax (name := rewrite) "rewrite" (config)? rwRuleSeq : conv
|
|||
See the `simp` tactic for more information. -/
|
||||
syntax (name := simp) "simp" (config)? (discharger)? (&" only")? (" [" (simpStar <|> simpErase <|> simpLemma),* "]")? : conv
|
||||
|
||||
/--
|
||||
`dsimp` is the definitional simplifier in `conv`-mode. It differs from `simp` in that it only
|
||||
applies theorems that hold by reflexivity.
|
||||
|
||||
Examples:
|
||||
|
||||
```lean
|
||||
example (a : Nat): (0 + 0) = a - a := by
|
||||
conv =>
|
||||
lhs
|
||||
dsimp
|
||||
rw [← Nat.sub_self a]
|
||||
```
|
||||
-/
|
||||
syntax (name := dsimp) "dsimp " (config)? (discharger)? (&"only ")? ("[" (simpErase <|> simpLemma),* "]")? : conv
|
||||
|
||||
/-- `simp_match` simplifies match expressions. For example,
|
||||
```
|
||||
match [a, b] with
|
||||
|
|
@ -145,6 +156,9 @@ syntax (name := nestedTacticCore) "tactic'" " => " tacticSeq : conv
|
|||
/-- Focus, convert the `conv` goal `⊢ lhs` into a regular goal `⊢ lhs = rhs`, and then execute the given tactic block. -/
|
||||
syntax (name := nestedTactic) "tactic" " => " tacticSeq : conv
|
||||
|
||||
/-- Execute the given conv block without converting regular goal into a `conv` goal -/
|
||||
syntax (name := convTactic) "conv'" " => " convSeq : tactic
|
||||
|
||||
/-- `{ convs }` runs the list of `convs` on the current target, and any subgoals that
|
||||
remain are trivially closed by `skip`. -/
|
||||
syntax (name := nestedConv) convSeqBracketed : conv
|
||||
|
|
@ -153,6 +167,59 @@ syntax (name := nestedConv) convSeqBracketed : conv
|
|||
This is pure grouping with no added effects. -/
|
||||
syntax (name := paren) "(" convSeq ")" : conv
|
||||
|
||||
/-- `rfl` closes one conv goal "trivially", by using reflexivity
|
||||
(that is, no rewriting). -/
|
||||
macro "rfl" : conv => `(tactic => rfl)
|
||||
|
||||
/-- `done` succeeds iff there are no goals remaining. -/
|
||||
macro "done" : conv => `(tactic' => done)
|
||||
|
||||
/-- `trace_state` prints the current goal state. -/
|
||||
macro "trace_state" : conv => `(tactic' => trace_state)
|
||||
|
||||
/-- `all_goals tac` runs `tac` on each goal, concatenating the resulting goals, if any. -/
|
||||
macro (name := allGoals) tk:"all_goals " s:convSeq : conv =>
|
||||
`(conv| tactic' => all_goals%$tk conv' => $s)
|
||||
|
||||
/--
|
||||
`any_goals tac` applies the tactic `tac` to every goal, and succeeds if at
|
||||
least one application succeeds.
|
||||
-/
|
||||
macro (name := anyGoals) tk:"any_goals " s:convSeq : conv =>
|
||||
`(conv| tactic' => any_goals%$tk conv' => $s)
|
||||
|
||||
/--
|
||||
* `case tag => tac` focuses on the goal with case name `tag` and solves it using `tac`,
|
||||
or else fails.
|
||||
* `case tag x₁ ... xₙ => tac` additionally renames the `n` most recent hypotheses
|
||||
with inaccessible names to the given names.
|
||||
* `case tag₁ | tag₂ => tac` is equivalent to `(case tag₁ => tac); (case tag₂ => tac)`.
|
||||
-/
|
||||
macro (name := case) tk:"case " args:sepBy1(caseArg, " | ") arr:" => " s:convSeq : conv =>
|
||||
`(conv| tactic' => case%$tk $args|* =>%$arr conv' => ($s); all_goals rfl)
|
||||
|
||||
/--
|
||||
`case'` is similar to the `case tag => tac` tactic, but does not ensure the goal
|
||||
has been solved after applying `tac`, nor admits the goal if `tac` failed.
|
||||
Recall that `case` closes the goal using `sorry` when `tac` fails, and
|
||||
the tactic execution is not interrupted.
|
||||
-/
|
||||
macro (name := case') tk:"case' " args:sepBy1(caseArg, " | ") arr:" => " s:convSeq : conv =>
|
||||
`(conv| tactic' => case'%$tk $args|* =>%$arr conv' => $s)
|
||||
|
||||
/--
|
||||
`next => tac` focuses on the next goal and solves it using `tac`, or else fails.
|
||||
`next x₁ ... xₙ => tac` additionally renames the `n` most recent hypotheses with
|
||||
inaccessible names to the given names.
|
||||
-/
|
||||
macro "next " args:binderIdent* " => " tac:convSeq : conv => `(conv| case _ $args* => $tac)
|
||||
|
||||
/--
|
||||
`focus tac` focuses on the main goal, suppressing all other goals, and runs `tac` on it.
|
||||
Usually `· tac`, which enforces that the goal is closed by `tac`, should be preferred.
|
||||
-/
|
||||
macro (name := focus) tk:"focus " s:convSeq : conv => `(conv| tactic' => focus%$tk conv' => $s)
|
||||
|
||||
/-- `conv => cs` runs `cs` in sequence on the target `t`,
|
||||
resulting in `t'`, which becomes the new target subgoal. -/
|
||||
syntax (name := convConvSeq) "conv" " => " convSeq : conv
|
||||
|
|
@ -160,6 +227,11 @@ syntax (name := convConvSeq) "conv" " => " convSeq : conv
|
|||
/-- `· conv` focuses on the main conv goal and tries to solve it using `s` -/
|
||||
macro dot:("·" <|> ".") s:convSeq : conv => `({%$dot ($s) })
|
||||
|
||||
|
||||
/-- `fail_if_success t` fails if the tactic `t` succeeds. -/
|
||||
macro (name := failIfSuccess) tk:"fail_if_success " s:convSeq : conv =>
|
||||
`(conv| tactic' => fail_if_success%$tk conv' => $s)
|
||||
|
||||
/-- `rw [rules]` applies the given list of rewrite rules to the target.
|
||||
See the `rw` tactic for more information. -/
|
||||
macro "rw" c:(config)? s:rwRuleSeq : conv => `(rewrite $[$c]? $s)
|
||||
|
|
@ -194,16 +266,6 @@ macro_rules
|
|||
| `(conv| enter [$id:ident]) => `(conv| ext $id)
|
||||
| `(conv| enter [$arg, $args,*]) => `(conv| (enter [$arg]; enter [$args,*]))
|
||||
|
||||
/-- `rfl` closes one conv goal "trivially", by using reflexivity
|
||||
(that is, no rewriting). -/
|
||||
macro "rfl" : conv => `(tactic => rfl)
|
||||
|
||||
/-- `done` succeeds iff there are no goals remaining. -/
|
||||
macro "done" : conv => `(tactic' => done)
|
||||
|
||||
/-- `trace_state` prints the current goal state. -/
|
||||
macro "trace_state" : conv => `(tactic' => trace_state)
|
||||
|
||||
/-- The `apply thm` conv tactic is the same as `apply thm` the tactic.
|
||||
There are no restrictions on `thm`, but strange results may occur if `thm`
|
||||
cannot be reasonably interpreted as proving one equality from a list of others. -/
|
||||
|
|
@ -213,9 +275,30 @@ macro "apply " e:term : conv => `(tactic => apply $e)
|
|||
/-- `first | conv | ...` runs each `conv` until one succeeds, or else fails. -/
|
||||
syntax (name := first) "first " withPosition((colGe "|" convSeq)+) : conv
|
||||
|
||||
/-- `try tac` runs `tac` and succeeds even if `tac` failed. -/
|
||||
macro "try " t:convSeq : conv => `(first | $t | skip)
|
||||
|
||||
macro:1 x:conv tk:" <;> " y:conv:0 : conv =>
|
||||
`(conv| tactic' => (conv' => $x:conv) <;>%$tk (conv' => $y:conv))
|
||||
|
||||
/-- `repeat convs` runs the sequence `convs` repeatedly until it fails to apply. -/
|
||||
syntax "repeat" convSeq : conv
|
||||
macro_rules
|
||||
| `(conv| repeat $seq) => `(conv| first | ($seq); repeat $seq | rfl)
|
||||
|
||||
/--
|
||||
`conv => ...` allows the user to perform targeted rewriting on a goal or hypothesis,
|
||||
by focusing on particular subexpressions.
|
||||
|
||||
See <https://leanprover.github.io/theorem_proving_in_lean4/conv.html> for more details.
|
||||
|
||||
Basic forms:
|
||||
* `conv => cs` will rewrite the goal with conv tactics `cs`.
|
||||
* `conv at h => cs` will rewrite hypothesis `h`.
|
||||
* `conv in pat => cs` will rewrite the first subexpression matching `pat` (see `pattern`).
|
||||
-/
|
||||
-- HACK: put this at the end so that references to `conv` above
|
||||
-- refer to the syntax category instead of this syntax
|
||||
syntax (name := conv) "conv " (" at " ident)? (" in " (occs)? term)? " => " convSeq : tactic
|
||||
|
||||
end Lean.Parser.Tactic.Conv
|
||||
|
|
|
|||
3
stage0/src/Init/Data/Format/Syntax.lean
generated
3
stage0/src/Init/Data/Format/Syntax.lean
generated
|
|
@ -16,7 +16,8 @@ open Std.Format
|
|||
private def formatInfo (showInfo : Bool) (info : SourceInfo) (f : Format) : Format :=
|
||||
match showInfo, info with
|
||||
| true, SourceInfo.original lead pos trail endPos => f!"{lead}:{pos}:{f}:{endPos}:{trail}"
|
||||
| true, SourceInfo.synthetic pos endPos => f!"{pos}:{f}:{endPos}"
|
||||
| true, SourceInfo.synthetic pos endPos true => f!"{pos}!:{f}:{endPos}"
|
||||
| true, SourceInfo.synthetic pos endPos false => f!"{pos}:{f}:{endPos}"
|
||||
| _, _ => f
|
||||
|
||||
partial def formatStxAux (maxDepth : Option Nat) (showInfo : Bool) : Nat → Syntax → Format
|
||||
|
|
|
|||
5
stage0/src/Init/Data/Ord.lean
generated
5
stage0/src/Init/Data/Ord.lean
generated
|
|
@ -59,6 +59,11 @@ instance : Ord USize where
|
|||
instance : Ord Char where
|
||||
compare x y := compareOfLessAndEq x y
|
||||
|
||||
/-- The lexicographic order on pairs. -/
|
||||
def lexOrd [Ord α] [Ord β] : Ord (α × β) where
|
||||
compare p1 p2 := match compare p1.1 p2.1 with
|
||||
| .eq => compare p1.2 p2.2
|
||||
| o => o
|
||||
|
||||
def ltOfOrd [Ord α] : LT α where
|
||||
lt a b := compare a b == Ordering.lt
|
||||
|
|
|
|||
22
stage0/src/Init/Meta.lean
generated
22
stage0/src/Init/Meta.lean
generated
|
|
@ -503,23 +503,23 @@ partial def expandMacros (stx : Syntax) (p : SyntaxNodeKind → Bool := fun k =>
|
|||
/--
|
||||
Create an identifier copying the position from `src`.
|
||||
To refer to a specific constant, use `mkCIdentFrom` instead. -/
|
||||
def mkIdentFrom (src : Syntax) (val : Name) : Ident :=
|
||||
⟨Syntax.ident (SourceInfo.fromRef src) (toString val).toSubstring val []⟩
|
||||
def mkIdentFrom (src : Syntax) (val : Name) (canonical := false) : Ident :=
|
||||
⟨Syntax.ident (SourceInfo.fromRef src canonical) (toString val).toSubstring val []⟩
|
||||
|
||||
def mkIdentFromRef [Monad m] [MonadRef m] (val : Name) : m Ident := do
|
||||
return mkIdentFrom (← getRef) val
|
||||
def mkIdentFromRef [Monad m] [MonadRef m] (val : Name) (canonical := false) : m Ident := do
|
||||
return mkIdentFrom (← getRef) val canonical
|
||||
|
||||
/--
|
||||
Create an identifier referring to a constant `c` copying the position from `src`.
|
||||
This variant of `mkIdentFrom` makes sure that the identifier cannot accidentally
|
||||
be captured. -/
|
||||
def mkCIdentFrom (src : Syntax) (c : Name) : Ident :=
|
||||
def mkCIdentFrom (src : Syntax) (c : Name) (canonical := false) : Ident :=
|
||||
-- Remark: We use the reserved macro scope to make sure there are no accidental collision with our frontend
|
||||
let id := addMacroScope `_internal c reservedMacroScope
|
||||
⟨Syntax.ident (SourceInfo.fromRef src) (toString id).toSubstring id [.decl c []]⟩
|
||||
⟨Syntax.ident (SourceInfo.fromRef src canonical) (toString id).toSubstring id [.decl c []]⟩
|
||||
|
||||
def mkCIdentFromRef [Monad m] [MonadRef m] (c : Name) : m Syntax := do
|
||||
return mkCIdentFrom (← getRef) c
|
||||
def mkCIdentFromRef [Monad m] [MonadRef m] (c : Name) (canonical := false) : m Syntax := do
|
||||
return mkCIdentFrom (← getRef) c canonical
|
||||
|
||||
def mkCIdent (c : Name) : Ident :=
|
||||
mkCIdentFrom Syntax.missing c
|
||||
|
|
@ -550,8 +550,8 @@ def mkOptionalNode (arg : Option Syntax) : Syntax :=
|
|||
| some arg => mkNullNode #[arg]
|
||||
| none => mkNullNode #[]
|
||||
|
||||
def mkHole (ref : Syntax) : Syntax :=
|
||||
mkNode `Lean.Parser.Term.hole #[mkAtomFrom ref "_"]
|
||||
def mkHole (ref : Syntax) (canonical := false) : Syntax :=
|
||||
mkNode `Lean.Parser.Term.hole #[mkAtomFrom ref "_" canonical]
|
||||
|
||||
namespace Syntax
|
||||
|
||||
|
|
@ -1289,7 +1289,7 @@ macro (name := declareSimpLikeTactic) doc?:(docComment)? "declare_simp_like_tact
|
|||
| `(config| (config := $$c)) => `(config| (config := $updateCfg $$c))
|
||||
| _ => `(config| (config := $updateCfg {}))
|
||||
let s := s.setKind $kind
|
||||
let s := s.setArg 0 (mkAtomFrom s[0] $tkn)
|
||||
let s := s.setArg 0 (mkAtomFrom s[0] $tkn (canonical := true))
|
||||
let r := s.setArg 1 (mkNullNode #[c])
|
||||
return r)
|
||||
|
||||
|
|
|
|||
11
stage0/src/Init/Notation.lean
generated
11
stage0/src/Init/Notation.lean
generated
|
|
@ -332,11 +332,22 @@ macro_rules | `($x <|> $y) => `(binop_lazy% HOrElse.hOrElse $x $y)
|
|||
macro_rules | `($x >> $y) => `(binop_lazy% HAndThen.hAndThen $x $y)
|
||||
|
||||
namespace Lean
|
||||
|
||||
/--
|
||||
`binderIdent` matches an `ident` or a `_`. It is used for identifiers in binding
|
||||
position, where `_` means that the value should be left unnamed and inaccessible.
|
||||
-/
|
||||
syntax binderIdent := ident <|> hole
|
||||
|
||||
namespace Parser.Tactic
|
||||
|
||||
/--
|
||||
A case tag argument has the form `tag x₁ ... xₙ`; it refers to tag `tag` and renames
|
||||
the last `n` hypotheses to `x₁ ... xₙ`.
|
||||
-/
|
||||
syntax caseArg := binderIdent binderIdent*
|
||||
|
||||
end Parser.Tactic
|
||||
end Lean
|
||||
|
||||
@[inheritDoc dite] syntax (name := termDepIfThenElse)
|
||||
|
|
|
|||
77
stage0/src/Init/Prelude.lean
generated
77
stage0/src/Init/Prelude.lean
generated
|
|
@ -3371,8 +3371,26 @@ inductive SourceInfo where
|
|||
Synthesized syntax (e.g. from a quotation) annotated with a span from the original source.
|
||||
In the delaborator, we "misuse" this constructor to store synthetic positions identifying
|
||||
subterms.
|
||||
|
||||
The `canonical` flag on synthetic syntax is enabled for syntax that is not literally part
|
||||
of the original input syntax but should be treated "as if" the user really wrote it
|
||||
for the purpose of hovers and error messages. This is usually used on identifiers,
|
||||
to connect the binding site to the user's original syntax even if the name of the identifier
|
||||
changes during expansion, as well as on tokens where we will attach targeted messages.
|
||||
|
||||
The syntax `token%$stx` in a syntax quotation will annotate the token `token` with the span
|
||||
from `stx` and also mark it as canonical.
|
||||
|
||||
As a rough guide, a macro expansion should only use a given piece of input syntax in
|
||||
a single canonical token, although this is sometimes violated when the same identifier
|
||||
is used to declare two binders, as in the macro expansion for dependent if:
|
||||
```
|
||||
`(if $h : $cond then $t else $e) ~>
|
||||
`(dite $cond (fun $h => $t) (fun $h => $t))
|
||||
```
|
||||
In these cases if the user hovers over `h` they will see information about both binding sites.
|
||||
-/
|
||||
| synthetic (pos : String.Pos) (endPos : String.Pos)
|
||||
| synthetic (pos : String.Pos) (endPos : String.Pos) (canonical := false)
|
||||
/-- Synthesized token without position information. -/
|
||||
| protected none
|
||||
|
||||
|
|
@ -3384,9 +3402,10 @@ namespace SourceInfo
|
|||
Gets the position information from a `SourceInfo`, if available.
|
||||
If `originalOnly` is true, then `.synthetic` syntax will also return `none`.
|
||||
-/
|
||||
def getPos? (info : SourceInfo) (originalOnly := false) : Option String.Pos :=
|
||||
match info, originalOnly with
|
||||
| original (pos := pos) .., _ => some pos
|
||||
def getPos? (info : SourceInfo) (canonicalOnly := false) : Option String.Pos :=
|
||||
match info, canonicalOnly with
|
||||
| original (pos := pos) .., _
|
||||
| synthetic (pos := pos) (canonical := true) .., _
|
||||
| synthetic (pos := pos) .., false => some pos
|
||||
| _, _ => none
|
||||
|
||||
|
|
@ -3652,30 +3671,33 @@ partial def getHeadInfo (stx : Syntax) : SourceInfo :=
|
|||
|
||||
/--
|
||||
Get the starting position of the syntax, if possible.
|
||||
If `originalOnly` is true, `synthetic` nodes are treated as not carrying
|
||||
If `canonicalOnly` is true, non-canonical `synthetic` nodes are treated as not carrying
|
||||
position information.
|
||||
-/
|
||||
def getPos? (stx : Syntax) (originalOnly := false) : Option String.Pos :=
|
||||
stx.getHeadInfo.getPos? originalOnly
|
||||
def getPos? (stx : Syntax) (canonicalOnly := false) : Option String.Pos :=
|
||||
stx.getHeadInfo.getPos? canonicalOnly
|
||||
|
||||
|
||||
/--
|
||||
Get the ending position of the syntax, if possible.
|
||||
If `originalOnly` is true, `synthetic` nodes are treated as not carrying
|
||||
If `canonicalOnly` is true, non-canonical `synthetic` nodes are treated as not carrying
|
||||
position information.
|
||||
-/
|
||||
partial def getTailPos? (stx : Syntax) (originalOnly := false) : Option String.Pos :=
|
||||
match stx, originalOnly with
|
||||
| atom (SourceInfo.original (endPos := pos) ..) .., _ => some pos
|
||||
| atom (SourceInfo.synthetic (endPos := pos) ..) _, false => some pos
|
||||
| ident (SourceInfo.original (endPos := pos) ..) .., _ => some pos
|
||||
| ident (SourceInfo.synthetic (endPos := pos) ..) .., false => some pos
|
||||
| node (SourceInfo.original (endPos := pos) ..) .., _ => some pos
|
||||
| node (SourceInfo.synthetic (endPos := pos) ..) .., false => some pos
|
||||
| node _ _ args, _ =>
|
||||
partial def getTailPos? (stx : Syntax) (canonicalOnly := false) : Option String.Pos :=
|
||||
match stx, canonicalOnly with
|
||||
| atom (SourceInfo.original (endPos := pos) ..) .., _
|
||||
| atom (SourceInfo.synthetic (endPos := pos) (canonical := true) ..) _, _
|
||||
| atom (SourceInfo.synthetic (endPos := pos) ..) _, false
|
||||
| ident (SourceInfo.original (endPos := pos) ..) .., _
|
||||
| ident (SourceInfo.synthetic (endPos := pos) (canonical := true) ..) .., _
|
||||
| ident (SourceInfo.synthetic (endPos := pos) ..) .., false
|
||||
| node (SourceInfo.original (endPos := pos) ..) .., _
|
||||
| node (SourceInfo.synthetic (endPos := pos) (canonical := true) ..) .., _
|
||||
| node (SourceInfo.synthetic (endPos := pos) ..) .., false => some pos
|
||||
| node _ _ args, _ =>
|
||||
let rec loop (i : Nat) : Option String.Pos :=
|
||||
match decide (LT.lt i args.size) with
|
||||
| true => match getTailPos? (args.get! ((args.size.sub i).sub 1)) originalOnly with
|
||||
| true => match getTailPos? (args.get! ((args.size.sub i).sub 1)) canonicalOnly with
|
||||
| some info => some info
|
||||
| none => loop (hAdd i 1)
|
||||
| false => none
|
||||
|
|
@ -3717,18 +3739,25 @@ unsafe def TSyntaxArray.mkImpl : Array Syntax → TSyntaxArray ks := unsafeCast
|
|||
opaque TSyntaxArray.mk (as : Array Syntax) : TSyntaxArray ks := Array.empty
|
||||
|
||||
/-- Constructs a synthetic `SourceInfo` using a `ref : Syntax` for the span. -/
|
||||
def SourceInfo.fromRef (ref : Syntax) : SourceInfo :=
|
||||
match ref.getPos?, ref.getTailPos? with
|
||||
| some pos, some tailPos => SourceInfo.synthetic pos tailPos
|
||||
| _, _ => SourceInfo.none
|
||||
def SourceInfo.fromRef (ref : Syntax) (canonical := false) : SourceInfo :=
|
||||
let noncanonical ref :=
|
||||
match ref.getPos?, ref.getTailPos? with
|
||||
| some pos, some tailPos => .synthetic pos tailPos
|
||||
| _, _ => .none
|
||||
match canonical with
|
||||
| true =>
|
||||
match ref.getPos? true, ref.getTailPos? true with
|
||||
| some pos, some tailPos => .synthetic pos tailPos true
|
||||
| _, _ => noncanonical ref
|
||||
| false => noncanonical ref
|
||||
|
||||
/-- Constructs a synthetic `atom` with no source info. -/
|
||||
def mkAtom (val : String) : Syntax :=
|
||||
Syntax.atom SourceInfo.none val
|
||||
|
||||
/-- Constructs a synthetic `atom` with source info coming from `src`. -/
|
||||
def mkAtomFrom (src : Syntax) (val : String) : Syntax :=
|
||||
Syntax.atom (SourceInfo.fromRef src) val
|
||||
def mkAtomFrom (src : Syntax) (val : String) (canonical := false) : Syntax :=
|
||||
Syntax.atom (SourceInfo.fromRef src canonical) val
|
||||
|
||||
/-! # Parser descriptions -/
|
||||
|
||||
|
|
|
|||
10
stage0/src/Init/Tactics.lean
generated
10
stage0/src/Init/Tactics.lean
generated
|
|
@ -7,9 +7,7 @@ prelude
|
|||
import Init.Notation
|
||||
set_option linter.missingDocs true -- keep it documented
|
||||
|
||||
namespace Lean
|
||||
|
||||
namespace Parser.Tactic
|
||||
namespace Lean.Parser.Tactic
|
||||
/--
|
||||
`with_annotate_state stx t` annotates the lexical range of `stx : Syntax` with
|
||||
the initial and final state of running tactic `t`.
|
||||
|
|
@ -142,12 +140,6 @@ the first matching constructor, or else fails.
|
|||
-/
|
||||
syntax (name := constructor) "constructor" : tactic
|
||||
|
||||
/--
|
||||
A case tag argument has the form `tag x₁ ... xₙ`; it refers to tag `tag` and renames
|
||||
the last `n` hypotheses to `x₁ ... xₙ`.
|
||||
-/
|
||||
syntax caseArg := binderIdent binderIdent*
|
||||
|
||||
/--
|
||||
* `case tag => tac` focuses on the goal with case name `tag` and solves it using `tac`,
|
||||
or else fails.
|
||||
|
|
|
|||
1
stage0/src/Lean/Compiler/LCNF.lean
generated
1
stage0/src/Lean/Compiler/LCNF.lean
generated
|
|
@ -33,3 +33,4 @@ import Lean.Compiler.LCNF.ToExpr
|
|||
import Lean.Compiler.LCNF.ToLCNF
|
||||
import Lean.Compiler.LCNF.Types
|
||||
import Lean.Compiler.LCNF.Util
|
||||
import Lean.Compiler.LCNF.ConfigOptions
|
||||
|
|
|
|||
40
stage0/src/Lean/Compiler/LCNF/Basic.lean
generated
40
stage0/src/Lean/Compiler/LCNF/Basic.lean
generated
|
|
@ -355,6 +355,16 @@ structure Decl where
|
|||
through compiler passes.
|
||||
-/
|
||||
value : Code
|
||||
/--
|
||||
We set this flag to true during LCNF conversion. When we receive
|
||||
a block of functions to be compiled, we set this flag to `true`
|
||||
if there is an application to the function in the block containing
|
||||
it. This is an approximation, but it should be good enough because
|
||||
in the frontend, we invoke the compiler with blocks of strongly connected
|
||||
components only.
|
||||
We use this information to control inlining.
|
||||
-/
|
||||
recursive : Bool := false
|
||||
deriving Inhabited, BEq
|
||||
|
||||
def Decl.size (decl : Decl) : Nat :=
|
||||
|
|
@ -460,4 +470,34 @@ end
|
|||
abbrev collectUsedAtExpr (s : FVarIdSet) (e : Expr) : FVarIdSet :=
|
||||
collectExpr e s
|
||||
|
||||
/--
|
||||
Traverse the given block of potentially mutually recursive functions
|
||||
and mark a declaration `f` as recursive if there is an application
|
||||
`f ...` in the block.
|
||||
This is an overapproximation, and relies on the fact that our frontend
|
||||
computes strongly connected components.
|
||||
See comment at `recursive` field.
|
||||
-/
|
||||
partial def markRecDecls (decls : Array Decl) : Array Decl :=
|
||||
let (_, isRec) := go |>.run {}
|
||||
decls.map fun decl =>
|
||||
if isRec.contains decl.name then
|
||||
{ decl with recursive := true }
|
||||
else
|
||||
decl
|
||||
where
|
||||
visit (code : Code) : StateM NameSet Unit := do
|
||||
match code with
|
||||
| .jp decl k | .fun decl k => visit decl.value; visit k
|
||||
| .cases c => c.alts.forM fun alt => visit alt.getCode
|
||||
| .unreach .. | .jmp .. | .return .. => return ()
|
||||
| .let decl k =>
|
||||
if let .const declName _ := decl.value.getAppFn then
|
||||
if decls.any (·.name == declName) then
|
||||
modify fun s => s.insert declName
|
||||
visit k
|
||||
|
||||
go : StateM NameSet Unit :=
|
||||
decls.forM fun decl => visit decl.value
|
||||
|
||||
end Lean.Compiler.LCNF
|
||||
|
|
|
|||
9
stage0/src/Lean/Compiler/LCNF/CompilerM.lean
generated
9
stage0/src/Lean/Compiler/LCNF/CompilerM.lean
generated
|
|
@ -6,6 +6,7 @@ Authors: Leonardo de Moura
|
|||
import Lean.CoreM
|
||||
import Lean.Compiler.LCNF.Basic
|
||||
import Lean.Compiler.LCNF.LCtx
|
||||
import Lean.Compiler.LCNF.ConfigOptions
|
||||
|
||||
namespace Lean.Compiler.LCNF
|
||||
/--
|
||||
|
|
@ -36,6 +37,7 @@ structure CompilerM.State where
|
|||
|
||||
structure CompilerM.Context where
|
||||
phase : Phase
|
||||
config : ConfigOptions
|
||||
deriving Inhabited
|
||||
|
||||
abbrev CompilerM := ReaderT CompilerM.Context $ StateRefT CompilerM.State CoreM
|
||||
|
|
@ -478,7 +480,10 @@ def cleanup (decl : Array Decl) : CompilerM (Array Decl) := do
|
|||
modify fun s => { s with nextIdx := 1 }
|
||||
decl.internalize
|
||||
|
||||
def CompilerM.run (x : CompilerM α) (s : State := {}) (phase : Phase := .base) : CoreM α :=
|
||||
x { phase } |>.run' s
|
||||
def getConfig : CompilerM ConfigOptions :=
|
||||
return (← read).config
|
||||
|
||||
def CompilerM.run (x : CompilerM α) (s : State := {}) (phase : Phase := .base) : CoreM α := do
|
||||
x { phase, config := toConfigOptions (← getOptions) } |>.run' s
|
||||
|
||||
end Lean.Compiler.LCNF
|
||||
|
|
|
|||
55
stage0/src/Lean/Compiler/LCNF/ConfigOptions.lean
generated
Normal file
55
stage0/src/Lean/Compiler/LCNF/ConfigOptions.lean
generated
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
/-
|
||||
Copyright (c) 2022 Microsoft Corporation. All rights reserved.
|
||||
Released under Apache 2.0 license as described in the file LICENSE.
|
||||
Authors: Leonardo de Moura
|
||||
-/
|
||||
import Lean.Data.Options
|
||||
|
||||
namespace Lean.Compiler.LCNF
|
||||
|
||||
/--
|
||||
User controlled configuration options for the code generator.
|
||||
-/
|
||||
structure ConfigOptions where
|
||||
/--
|
||||
Any function declaration or join point with size `≤ smallThresold` is inlined
|
||||
even if there are multiple occurrences.
|
||||
-/
|
||||
smallThreshold : Nat := 1
|
||||
/--
|
||||
Maximum number of times a recursive definition tagged with `[inline]` can be recursively inlined before generating an
|
||||
error during compilation.
|
||||
-/
|
||||
maxRecInline : Nat := 1
|
||||
/--
|
||||
Maximum number of times a recursive definition tagged with `[inlineIfReduce]` can be recursively inlined
|
||||
before generating an error during compilation.
|
||||
-/
|
||||
maxRecInlineIfReduce : Nat := 16
|
||||
deriving Inhabited
|
||||
|
||||
register_builtin_option compiler.small : Nat := {
|
||||
defValue := 1
|
||||
group := "compiler"
|
||||
descr := "(compiler) function declarations with size `≤ small` is inlined even if there are multiple occurrences."
|
||||
}
|
||||
|
||||
register_builtin_option compiler.maxRecInline : Nat := {
|
||||
defValue := 1
|
||||
group := "compiler"
|
||||
descr := "(compiler) maximum number of times a recursive definition tagged with `[inline]` can be recursively inlined before generating an error during compilation."
|
||||
}
|
||||
|
||||
register_builtin_option compiler.maxRecInlineIfReduce : Nat := {
|
||||
defValue := 16
|
||||
group := "compiler"
|
||||
descr := "(compiler) maximum number of times a recursive definition tagged with `[inlineIfReduce]` can be recursively inlined before generating an error during compilation."
|
||||
}
|
||||
|
||||
def toConfigOptions (opts : Options) : ConfigOptions := {
|
||||
smallThreshold := compiler.small.get opts
|
||||
maxRecInline := compiler.maxRecInline.get opts
|
||||
maxRecInlineIfReduce := compiler.maxRecInlineIfReduce.get opts
|
||||
}
|
||||
|
||||
end Lean.Compiler.LCNF
|
||||
4
stage0/src/Lean/Compiler/LCNF/InferType.lean
generated
4
stage0/src/Lean/Compiler/LCNF/InferType.lean
generated
|
|
@ -104,9 +104,9 @@ in fact exhaustive due to LCNF constraints:
|
|||
type inside structure becomes Any, value inside structure becomes Erased.
|
||||
-/
|
||||
partial def compatibleTypes (a b : Expr) : Bool :=
|
||||
if a.getAppFn.isAnyType || b.getAppFn.isAnyType then
|
||||
if a.isAnyType || b.isAnyType then
|
||||
true
|
||||
else if a.getAppFn.isErased || b.getAppFn.isErased then
|
||||
else if a.isErased || b.isErased then
|
||||
true
|
||||
else
|
||||
let a' := a.headBeta
|
||||
|
|
|
|||
1
stage0/src/Lean/Compiler/LCNF/Main.lean
generated
1
stage0/src/Lean/Compiler/LCNF/Main.lean
generated
|
|
@ -68,6 +68,7 @@ def run (declNames : Array Name) : CompilerM (Array Decl) := withAtLeastMaxRecDe
|
|||
let declNames ← declNames.filterM (shouldGenerateCode ·)
|
||||
if declNames.isEmpty then return #[]
|
||||
let mut decls ← declNames.mapM toDecl
|
||||
decls := markRecDecls decls
|
||||
let manager ← getPassManager
|
||||
for pass in manager.passes do
|
||||
trace[Compiler] s!"Running pass: {pass.name}"
|
||||
|
|
|
|||
60
stage0/src/Lean/Compiler/LCNF/Renaming.lean
generated
Normal file
60
stage0/src/Lean/Compiler/LCNF/Renaming.lean
generated
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
/-
|
||||
Copyright (c) 2022 Microsoft Corporation. All rights reserved.
|
||||
Released under Apache 2.0 license as described in the file LICENSE.
|
||||
Authors: Leonardo de Moura
|
||||
-/
|
||||
import Lean.Compiler.LCNF.CompilerM
|
||||
|
||||
namespace Lean.Compiler.LCNF
|
||||
/--
|
||||
A mapping from free variable id to binder name.
|
||||
-/
|
||||
abbrev Renaming := FVarIdMap Name
|
||||
|
||||
def Param.applyRenaming (param : Param) (r : Renaming) : CompilerM Param := do
|
||||
if let some binderName := r.find? param.fvarId then
|
||||
let param := { param with binderName }
|
||||
modifyLCtx fun lctx => lctx.addParam param
|
||||
return param
|
||||
else
|
||||
return param
|
||||
|
||||
def LetDecl.applyRenaming (decl : LetDecl) (r : Renaming) : CompilerM LetDecl := do
|
||||
if let some binderName := r.find? decl.fvarId then
|
||||
let decl := { decl with binderName }
|
||||
modifyLCtx fun lctx => lctx.addLetDecl decl
|
||||
return decl
|
||||
else
|
||||
return decl
|
||||
|
||||
mutual
|
||||
partial def FunDeclCore.applyRenaming (decl : FunDecl) (r : Renaming) : CompilerM FunDecl := do
|
||||
if let some binderName := r.find? decl.fvarId then
|
||||
let decl := { decl with binderName }
|
||||
modifyLCtx fun lctx => lctx.addFunDecl decl
|
||||
decl.updateValue (← decl.value.applyRenaming r)
|
||||
else
|
||||
decl.updateValue (← decl.value.applyRenaming r)
|
||||
|
||||
partial def Code.applyRenaming (code : Code) (r : Renaming) : CompilerM Code := do
|
||||
match code with
|
||||
| .let decl k => return code.updateLet! (← decl.applyRenaming r) (← k.applyRenaming r)
|
||||
| .fun decl k | .jp decl k => return code.updateFun! (← decl.applyRenaming r) (← k.applyRenaming r)
|
||||
| .cases c =>
|
||||
let alts ← c.alts.mapMonoM fun alt =>
|
||||
match alt with
|
||||
| .default k => return alt.updateCode (← k.applyRenaming r)
|
||||
| .alt _ ps k => return alt.updateAlt! (← ps.mapMonoM (·.applyRenaming r)) (← k.applyRenaming r)
|
||||
return code.updateAlts! alts
|
||||
| .jmp .. | .unreach .. | .return .. => return code
|
||||
end
|
||||
|
||||
def Decl.applyRenaming (decl : Decl) (r : Renaming) : CompilerM Decl := do
|
||||
if r.isEmpty then
|
||||
return decl
|
||||
else
|
||||
let params ← decl.params.mapMonoM (·.applyRenaming r)
|
||||
let value ← decl.value.applyRenaming r
|
||||
return { decl with params, value }
|
||||
|
||||
end Lean.Compiler.LCNF
|
||||
6
stage0/src/Lean/Compiler/LCNF/Simp.lean
generated
6
stage0/src/Lean/Compiler/LCNF/Simp.lean
generated
|
|
@ -4,6 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
|
|||
Authors: Leonardo de Moura
|
||||
-/
|
||||
import Lean.Compiler.LCNF.ReduceJpArity
|
||||
import Lean.Compiler.LCNF.Renaming
|
||||
import Lean.Compiler.LCNF.Simp.Basic
|
||||
import Lean.Compiler.LCNF.Simp.FunDeclInfo
|
||||
import Lean.Compiler.LCNF.Simp.JpCases
|
||||
|
|
@ -24,10 +25,11 @@ def Decl.simp? (decl : Decl) : SimpM (Option Decl) := do
|
|||
trace[Compiler.simp.inline.info] "{decl.name}:{Format.nest 2 (← (← get).funDeclInfoMap.format)}"
|
||||
traceM `Compiler.simp.step do ppDecl decl
|
||||
let value ← simp decl.value
|
||||
traceM `Compiler.simp.step.new do return m!"{decl.name} :=\n{← ppCode value}"
|
||||
let s ← get
|
||||
let value ← value.applyRenaming s.binderRenaming
|
||||
traceM `Compiler.simp.step.new do return m!"{decl.name} :=\n{← ppCode value}"
|
||||
trace[Compiler.simp.stat] "{decl.name}, size: {value.size}, # visited: {s.visited}, # inline: {s.inline}, # inline local: {s.inlineLocal}"
|
||||
if let some value ← simpJpCases? value (← read).config.smallThreshold then
|
||||
if let some value ← simpJpCases? value then
|
||||
let decl := { decl with value }
|
||||
decl.reduceJpArity
|
||||
else if (← get).simplified then
|
||||
|
|
|
|||
11
stage0/src/Lean/Compiler/LCNF/Simp/Config.lean
generated
11
stage0/src/Lean/Compiler/LCNF/Simp/Config.lean
generated
|
|
@ -6,14 +6,11 @@ Authors: Leonardo de Moura
|
|||
namespace Lean.Compiler.LCNF
|
||||
namespace Simp
|
||||
|
||||
/--
|
||||
Configuration options for `Simp` that are not controlled using `set_option`.
|
||||
Recall that we have multiple `Simp` passes and they use different configurations.
|
||||
-/
|
||||
structure Config where
|
||||
/--
|
||||
Any local function declaration or join point with size `≤ smallThresold` is inlined
|
||||
even if there are multiple occurrences.
|
||||
We currently don't do the same for global declarations because we are not saving
|
||||
the stage1 compilation result in .olean files yet.
|
||||
-/
|
||||
smallThreshold : Nat := 1
|
||||
/--
|
||||
If `etaPoly` is true, we eta expand any global function application when
|
||||
the function takes local instances. The idea is that we do not generate code
|
||||
|
|
|
|||
415
stage0/src/Lean/Compiler/LCNF/Simp/ConstantFold.lean
generated
Normal file
415
stage0/src/Lean/Compiler/LCNF/Simp/ConstantFold.lean
generated
Normal file
|
|
@ -0,0 +1,415 @@
|
|||
/-
|
||||
Copyright (c) 2022 Henrik Böving. All rights reserved.
|
||||
Released under Apache 2.0 license as described in the file LICENSE.
|
||||
Authors: Henrik Böving
|
||||
-/
|
||||
import Lean.Compiler.LCNF.CompilerM
|
||||
import Lean.Compiler.LCNF.InferType
|
||||
import Lean.Compiler.LCNF.PassManager
|
||||
|
||||
|
||||
namespace Lean.Compiler.LCNF.Simp
|
||||
namespace ConstantFold
|
||||
|
||||
/--
|
||||
A constant folding monad, the additional state stores auxiliary declarations
|
||||
required to build the new constant.
|
||||
-/
|
||||
abbrev FolderM := StateRefT (Array CodeDecl) CompilerM
|
||||
|
||||
/--
|
||||
A constant folder for a specific function, takes all the arguments of a
|
||||
certain function and produces a new `Expr` + auxiliary declarations in
|
||||
the `FolderM` monad on success. If the folding fails it returns `none`.
|
||||
-/
|
||||
abbrev Folder := Array Expr → FolderM (Option Expr)
|
||||
|
||||
/--
|
||||
A typeclass for detecting and producing literals of arbitrary types
|
||||
inside of LCNF.
|
||||
-/
|
||||
class Literal (α : Type) where
|
||||
/--
|
||||
Attempt to turn the provied `Expr` into a value of type `α` if
|
||||
it is whatever concept of a literal `α` has. Note that this function
|
||||
does assume that the provided `Expr` does indeed have type `α`.
|
||||
-/
|
||||
getLit : Expr → CompilerM (Option α)
|
||||
/--
|
||||
Turn a value of type `α` into a series of auxiliary `LetDecl`s + a
|
||||
final `Expr` putting them all together into a literal of type `α`,
|
||||
where again the idea of what a literal is depends on `α`.
|
||||
-/
|
||||
mkLit : α → FolderM Expr
|
||||
|
||||
export Literal (getLit mkLit)
|
||||
|
||||
/--
|
||||
A wrapper around `LCNF.mkAuxLetDecl` that will automaticaly store the
|
||||
`LetDecl` in the state of `FolderM`.
|
||||
-/
|
||||
def mkAuxLetDecl (e : Expr) (prefixName := `_x) : FolderM FVarId := do
|
||||
let decl ← LCNF.mkAuxLetDecl e prefixName
|
||||
modify fun s => s.push <| .let decl
|
||||
return decl.fvarId
|
||||
|
||||
section Literals
|
||||
|
||||
/--
|
||||
A wrapper around `mkAuxLetDecl` that also calls `mkLit`.
|
||||
-/
|
||||
def mkAuxLit [Literal α] (x : α) (prefixName := `_x) : FolderM FVarId := do
|
||||
let lit ← mkLit x
|
||||
mkAuxLetDecl lit prefixName
|
||||
|
||||
partial def getNatLit (e : Expr) : CompilerM (Option Nat) := do
|
||||
match e with
|
||||
| .lit (.natVal n) .. => return n
|
||||
| .fvar fvarId .. =>
|
||||
if let some decl ← findLetDecl? fvarId then
|
||||
getNatLit decl.value
|
||||
else
|
||||
return none
|
||||
| _ => return none
|
||||
|
||||
def mkNatLit (n : Nat) : FolderM Expr :=
|
||||
return .lit (.natVal n)
|
||||
|
||||
instance : Literal Nat where
|
||||
getLit := getNatLit
|
||||
mkLit := mkNatLit
|
||||
|
||||
partial def getStringLit (e : Expr) : CompilerM (Option String) := do
|
||||
match e with
|
||||
| .lit (.strVal n) .. => return n
|
||||
| .fvar fvarId .. =>
|
||||
let some decl ← findLetDecl? fvarId | return none
|
||||
getStringLit decl.value
|
||||
| _ => return none
|
||||
|
||||
def mkStringLit (n : String) : FolderM Expr :=
|
||||
return .lit (.strVal n)
|
||||
|
||||
instance : Literal String where
|
||||
getLit := getStringLit
|
||||
mkLit := mkStringLit
|
||||
|
||||
private partial def getLitAux [Inhabited α] (e : Expr) (ofNat : Nat → α) (ofNatName : Name) (toNat : α → Nat) : CompilerM (Option α) := do
|
||||
match e with
|
||||
| .fvar fvarId .. =>
|
||||
if let some decl ←findLetDecl? fvarId then
|
||||
getLitAux decl.value ofNat ofNatName toNat
|
||||
else
|
||||
return none
|
||||
| .app .. =>
|
||||
match e.getAppFn, e.getAppArgs with
|
||||
| .const name .., #[.fvar fvarId] =>
|
||||
if name == ofNatName then
|
||||
if let some natLit ← getLit (.fvar fvarId) then
|
||||
return ofNat natLit
|
||||
return none
|
||||
| _, _ => return none
|
||||
| _ => return none
|
||||
|
||||
def mkNatWrapperInstance [Inhabited α] (ofNat : Nat → α) (ofNatName : Name) (toNat : α → Nat) : Literal α where
|
||||
getLit := (getLitAux · ofNat ofNatName toNat)
|
||||
mkLit x := do
|
||||
let helperId ← mkAuxLit <| toNat x
|
||||
return .app (mkConst ofNatName) (.fvar helperId)
|
||||
|
||||
instance : Literal UInt8 := mkNatWrapperInstance UInt8.ofNat ``UInt8.ofNat UInt8.toNat
|
||||
instance : Literal UInt16 := mkNatWrapperInstance UInt16.ofNat ``UInt16.ofNat UInt16.toNat
|
||||
instance : Literal UInt32 := mkNatWrapperInstance UInt32.ofNat ``UInt32.ofNat UInt32.toNat
|
||||
instance : Literal UInt64 := mkNatWrapperInstance UInt64.ofNat ``UInt64.ofNat UInt64.toNat
|
||||
instance : Literal Char := mkNatWrapperInstance Char.ofNat ``Char.ofNat Char.toNat
|
||||
|
||||
end Literals
|
||||
|
||||
/--
|
||||
Turns an expression chain of the form
|
||||
```
|
||||
let _x.1 := @List.nil _
|
||||
let _x.2 := @List.cons _ a _x.1
|
||||
let _x.3 := @List.cons _ b _x.2
|
||||
let _x.4 := @List.cons _ c _x.3
|
||||
let _x.5 := @List.cons _ d _x.4
|
||||
let _x.6 := @List.cons _ e _x.5
|
||||
```
|
||||
into: `[a, b, c, d ,e]` + The type contained in the list
|
||||
-/
|
||||
partial def getPseudoListLiteral (e : Expr) : CompilerM (Option (List FVarId × Expr × Level)) := do
|
||||
go e []
|
||||
where
|
||||
go (e : Expr) (fvarIds : List FVarId) : CompilerM (Option (List FVarId × Expr × Level)) := do
|
||||
match e with
|
||||
| .app .. =>
|
||||
if some ``List.nil == e.getAppFn.constName? then
|
||||
return some (fvarIds.reverse, e.getAppArgs[0]!, e.getAppFn.constLevels![0]!)
|
||||
else if some ``List.cons == e.getAppFn.constName? then
|
||||
let args := e.getAppArgs
|
||||
go args[2]! (args[1]!.fvarId! :: fvarIds)
|
||||
else
|
||||
return none
|
||||
| .fvar fvarId =>
|
||||
if let some decl ← findLetDecl? fvarId then
|
||||
go decl.value fvarIds
|
||||
else
|
||||
return none
|
||||
| _ =>
|
||||
return none
|
||||
|
||||
/--
|
||||
Turn an `#[a, b, c]` into:
|
||||
```
|
||||
let _x.12 := 3
|
||||
let _x.8 := @Array.mkEmpty _ _x.12
|
||||
let _x.22 := @Array.push _ _x.8 x
|
||||
let _x.24 := @Array.push _ _x.22 y
|
||||
let _x.26 := @Array.push _ _x.24 z
|
||||
_x.26
|
||||
```
|
||||
-/
|
||||
def mkPseudoArrayLiteral (elements : Array FVarId) (typ : Expr) (typLevel : Level) : FolderM Expr := do
|
||||
let sizeLit ← mkAuxLit elements.size
|
||||
let mut literal ← mkAuxLetDecl <| mkApp2 (mkConst ``Array.mkEmpty [typLevel]) typ (.fvar sizeLit)
|
||||
for element in elements do
|
||||
literal ← mkAuxLetDecl <| mkApp3 (mkConst ``Array.push [typLevel]) typ (.fvar literal) (.fvar element)
|
||||
return .fvar literal
|
||||
|
||||
/--
|
||||
Evaluate array literals at compile time, that is turn:
|
||||
```
|
||||
let _x.1 := @List.nil _
|
||||
let _x.2 := @List.cons _ z _x.1
|
||||
let _x.3 := @List.cons _ y _x.2
|
||||
let _x.4 := @List.cons _ x _x.3
|
||||
let _x.5 := @List.toArray _ _x.4
|
||||
```
|
||||
To its array form:
|
||||
```
|
||||
let _x.12 := 3
|
||||
let _x.8 := @Array.mkEmpty _ _x.12
|
||||
let _x.22 := @Array.push _ _x.8 x
|
||||
let _x.24 := @Array.push _ _x.22 y
|
||||
let _x.26 := @Array.push _ _x.24 z
|
||||
```
|
||||
-/
|
||||
def foldArrayLiteral : Folder := fun exprs => do
|
||||
if h:exprs.size = 2 then
|
||||
have h1 : 1 < Array.size exprs := by simp_all
|
||||
if let some (list, typ, level) ← getPseudoListLiteral exprs[1] then
|
||||
let arr := Array.mk list
|
||||
let lit ← mkPseudoArrayLiteral arr typ level
|
||||
return some lit
|
||||
return none
|
||||
|
||||
/--
|
||||
Turn a unary function such as `Nat.succ` into a constant folder.
|
||||
-/
|
||||
def Folder.mkUnary [Literal α] [Literal β] (folder : α → β) : Folder := fun exprs => do
|
||||
if h:exprs.size = 1 then
|
||||
have h1 : 0 < Array.size exprs := by simp_all
|
||||
if let some arg1 ← getLit exprs[0] then
|
||||
let res := folder arg1
|
||||
return (←mkLit res)
|
||||
return none
|
||||
|
||||
/--
|
||||
Turn a binary function such as `Nat.add` into a constant folder.
|
||||
-/
|
||||
def Folder.mkBinary [Literal α] [Literal β] [Literal γ] (folder : α → β → γ) : Folder := fun exprs => do
|
||||
if h:exprs.size = 2 then
|
||||
have h1 : 0 < Array.size exprs := by simp_all
|
||||
have h2 : 1 < Array.size exprs := by simp_all
|
||||
if let some arg1 ← getLit exprs[0] then
|
||||
if let some arg2 ← getLit exprs[1] then
|
||||
let res := folder arg1 arg2
|
||||
return (←mkLit res)
|
||||
return none
|
||||
|
||||
/--
|
||||
Provide a folder for an operation with a left neutral element.
|
||||
-/
|
||||
def Folder.leftNeutral [Literal α] [BEq α] (neutral : α) : Folder := fun exprs => do
|
||||
if h:exprs.size = 2 then
|
||||
have h1 : 0 < Array.size exprs := by simp_all
|
||||
have h2 : 1 < Array.size exprs := by simp_all
|
||||
if let some arg1 ← getLit exprs[0] then
|
||||
if arg1 == neutral then
|
||||
return exprs[1]
|
||||
return none
|
||||
|
||||
/--
|
||||
Provide a folder for an operation with a right neutral element.
|
||||
-/
|
||||
def Folder.rightNeutral [Literal α] [BEq α] (neutral : α) : Folder := fun exprs => do
|
||||
if h:exprs.size = 2 then
|
||||
have h1 : 0 < Array.size exprs := by simp_all
|
||||
have h2 : 1 < Array.size exprs := by simp_all
|
||||
if let some arg2 ← getLit exprs[1] then
|
||||
if arg2 == neutral then
|
||||
return exprs[0]
|
||||
return none
|
||||
|
||||
/--
|
||||
Provide a folder for an operation with a left annihilator.
|
||||
-/
|
||||
def Folder.leftAnnihilator [Literal α] [BEq α] (annihilator : α) (zero : α) : Folder := fun exprs => do
|
||||
if h:exprs.size = 2 then
|
||||
have h1 : 0 < Array.size exprs := by simp_all
|
||||
if let some arg1 ← getLit exprs[0] then
|
||||
if arg1 == annihilator then
|
||||
return (←mkLit zero)
|
||||
return none
|
||||
|
||||
/--
|
||||
Provide a folder for an operation with a right annihilator.
|
||||
-/
|
||||
def Folder.rightAnnihilator [Literal α] [BEq α] (annihilator : α) (zero : α) : Folder := fun exprs => do
|
||||
if h:exprs.size = 2 then
|
||||
have h1 : 1 < Array.size exprs := by simp_all
|
||||
if let some arg2 ← getLit exprs[1] then
|
||||
if arg2 == annihilator then
|
||||
return (←mkLit zero)
|
||||
return none
|
||||
|
||||
/--
|
||||
Pick the first folder out of `folders` that succeeds.
|
||||
-/
|
||||
def Folder.first (folders : Array Folder) : Folder := fun exprs => do
|
||||
let backup ← get
|
||||
for folder in folders do
|
||||
if let some res ← folder exprs then
|
||||
return res
|
||||
else
|
||||
set backup
|
||||
return none
|
||||
|
||||
/--
|
||||
Provide a folder for an operation that has the same left and right neutral element.
|
||||
-/
|
||||
def Folder.leftRightNeutral [Literal α] [BEq α] (neutral : α) : Folder :=
|
||||
Folder.first #[Folder.leftNeutral neutral, Folder.rightNeutral neutral]
|
||||
|
||||
/--
|
||||
Provide a folder for an operation that has the same left and right annihilator.
|
||||
-/
|
||||
def Folder.leftRightAnnihilator [Literal α] [BEq α] (annihilator : α) (zero : α) : Folder :=
|
||||
Folder.first #[Folder.leftAnnihilator annihilator zero, Folder.rightAnnihilator annihilator zero]
|
||||
|
||||
/--
|
||||
Literal folders for higher order datastructures.
|
||||
-/
|
||||
def higherOrderLiteralFolders : List (Name × Folder) := [
|
||||
(``List.toArray, foldArrayLiteral)
|
||||
]
|
||||
|
||||
/--
|
||||
All arithmetic folders.
|
||||
-/
|
||||
def arithmeticFolders : List (Name × Folder) := [
|
||||
(``Nat.succ, Folder.mkUnary Nat.succ),
|
||||
(``Nat.add, Folder.first #[Folder.mkBinary Nat.add, Folder.leftRightNeutral 0]),
|
||||
(``UInt8.add, Folder.first #[Folder.mkBinary UInt8.add, Folder.leftRightNeutral (0 : UInt8)]),
|
||||
(``UInt16.add, Folder.first #[Folder.mkBinary UInt16.add, Folder.leftRightNeutral (0 : UInt16)]),
|
||||
(``UInt32.add, Folder.first #[Folder.mkBinary UInt32.add, Folder.leftRightNeutral (0 : UInt32)]),
|
||||
(``UInt64.add, Folder.first #[Folder.mkBinary UInt64.add, Folder.leftRightNeutral (0 : UInt64)]),
|
||||
(``Nat.sub, Folder.first #[Folder.mkBinary Nat.sub, Folder.leftRightNeutral 0]),
|
||||
(``UInt8.sub, Folder.first #[Folder.mkBinary UInt8.sub, Folder.leftRightNeutral (0 : UInt8)]),
|
||||
(``UInt16.sub, Folder.first #[Folder.mkBinary UInt16.sub, Folder.leftRightNeutral (0 : UInt16)]),
|
||||
(``UInt32.sub, Folder.first #[Folder.mkBinary UInt32.sub, Folder.leftRightNeutral (0 : UInt32)]),
|
||||
(``UInt64.sub, Folder.first #[Folder.mkBinary UInt64.sub, Folder.leftRightNeutral (0 : UInt64)]),
|
||||
(``Nat.mul, Folder.first #[Folder.mkBinary Nat.mul, Folder.leftRightNeutral 1, Folder.leftRightAnnihilator 0 0]),
|
||||
(``UInt8.mul, Folder.first #[Folder.mkBinary UInt8.mul, Folder.leftRightNeutral (1 : UInt8), Folder.leftRightAnnihilator (0 : UInt8) 0]),
|
||||
(``UInt16.mul, Folder.first #[Folder.mkBinary UInt16.mul, Folder.leftRightNeutral (1 : UInt16), Folder.leftRightAnnihilator (0 : UInt16) 0]),
|
||||
(``UInt32.mul, Folder.first #[Folder.mkBinary UInt32.mul, Folder.leftRightNeutral (1 : UInt32), Folder.leftRightAnnihilator (0 : UInt32) 0]),
|
||||
(``UInt64.mul, Folder.first #[Folder.mkBinary UInt64.mul, Folder.leftRightNeutral (1 : UInt64), Folder.leftRightAnnihilator (0 : UInt64) 0]),
|
||||
(``Nat.div, Folder.first #[Folder.mkBinary Nat.div, Folder.rightNeutral 1]),
|
||||
(``UInt8.div, Folder.first #[Folder.mkBinary UInt8.div, Folder.rightNeutral (1 : UInt8)]),
|
||||
(``UInt16.div, Folder.first #[Folder.mkBinary UInt16.div, Folder.rightNeutral (1 : UInt16)]),
|
||||
(``UInt32.div, Folder.first #[Folder.mkBinary UInt32.div, Folder.rightNeutral (1 : UInt32)]),
|
||||
(``UInt64.div, Folder.first #[Folder.mkBinary UInt64.div, Folder.rightNeutral (1 : UInt64)])
|
||||
]
|
||||
|
||||
/--
|
||||
All string folders.
|
||||
-/
|
||||
def stringFolders : List (Name × Folder) := [
|
||||
(``String.append, Folder.first #[Folder.mkBinary String.append, Folder.leftRightNeutral ""]),
|
||||
(``String.length, Folder.mkUnary String.length),
|
||||
(``String.push, Folder.mkBinary String.push)
|
||||
]
|
||||
|
||||
/--
|
||||
Apply all known folders to `decl`.
|
||||
-/
|
||||
def applyFolders (decl : LetDecl) (folders : SMap Name Folder) : CompilerM (Option (Array CodeDecl)) := do
|
||||
let e := decl.value
|
||||
match e with
|
||||
| .app .. =>
|
||||
match e.getAppFn with
|
||||
| .const name .. =>
|
||||
if let some folder := folders.find? name then
|
||||
if let (some res, aux) ← folder e.getAppArgs |>.run #[] then
|
||||
let decl ← decl.updateValue res
|
||||
return some <| aux.push (.let decl)
|
||||
return none
|
||||
| _ => return none
|
||||
| .const .. | .lit .. | .fvar .. | .bvar .. | .lam .. | .sort .. |
|
||||
.forallE .. | .letE .. | .mdata .. =>
|
||||
return none
|
||||
-- TODO: support for constant folding on projections
|
||||
| .proj .. => return none
|
||||
| _ => unreachable!
|
||||
|
||||
private unsafe def getFolderCoreUnsafe (env : Environment) (opts : Options) (declName : Name) : ExceptT String Id Folder :=
|
||||
env.evalConstCheck Folder opts ``Folder declName
|
||||
|
||||
@[implementedBy getFolderCoreUnsafe]
|
||||
private opaque getFolderCore (env : Environment) (opts : Options) (declName : Name) : ExceptT String Id Folder
|
||||
|
||||
private def getFolder (declName : Name) : CoreM Folder := do
|
||||
ofExcept <| getFolderCore (← getEnv) (← getOptions) declName
|
||||
|
||||
def builtinFolders : SMap Name Folder :=
|
||||
(arithmeticFolders ++ higherOrderLiteralFolders ++ stringFolders).foldl (init := {}) fun s (declName, folder) =>
|
||||
s.insert declName folder
|
||||
|
||||
structure FolderOleanEntry where
|
||||
declName : Name
|
||||
folderDeclName : Name
|
||||
|
||||
structure FolderEntry extends FolderOleanEntry where
|
||||
folder : Folder
|
||||
|
||||
builtin_initialize folderExt : PersistentEnvExtension FolderOleanEntry FolderEntry (List FolderOleanEntry × SMap Name Folder) ←
|
||||
registerPersistentEnvExtension {
|
||||
name := `cfolder
|
||||
mkInitial := return ([], builtinFolders)
|
||||
addImportedFn := fun entriesArray => do
|
||||
let ctx ← read
|
||||
let mut folders := builtinFolders
|
||||
for entries in entriesArray do
|
||||
for { declName, folderDeclName } in entries do
|
||||
let folder ← IO.ofExcept <| getFolderCore ctx.env ctx.opts folderDeclName
|
||||
folders := folders.insert declName folder
|
||||
return ([], folders.switch)
|
||||
addEntryFn := fun (entries, map) entry => (entry.toFolderOleanEntry :: entries, map.insert entry.declName entry.folder)
|
||||
exportEntriesFn := fun (entries, _) => entries.reverse.toArray
|
||||
}
|
||||
|
||||
def registerFolder (declName : Name) (folderDeclName : Name) : CoreM Unit := do
|
||||
let folder ← getFolder folderDeclName
|
||||
modifyEnv fun env => folderExt.addEntry env { declName, folderDeclName, folder }
|
||||
|
||||
def getFolders : CoreM (SMap Name Folder) :=
|
||||
return folderExt.getState (← getEnv) |>.2
|
||||
|
||||
/--
|
||||
Apply a list of default folders to `decl`
|
||||
-/
|
||||
def foldConstants (decl : LetDecl) : CompilerM (Option (Array CodeDecl)) := do
|
||||
applyFolders decl (← getFolders)
|
||||
|
||||
end ConstantFold
|
||||
end Lean.Compiler.LCNF.Simp
|
||||
|
|
@ -21,6 +21,8 @@ structure InlineCandidateInfo where
|
|||
args : Array Expr
|
||||
/-- `ifReduce = true` if the declaration being inlined was tagged with `inlineIfReduce`. -/
|
||||
ifReduce : Bool
|
||||
/-- `recursive = true` if the declaration being inline is in a mutually recursive block. -/
|
||||
recursive : Bool := false
|
||||
|
||||
/-- The arity (aka number of parameters) of the function to be inlined. -/
|
||||
def InlineCandidateInfo.arity : InlineCandidateInfo → Nat
|
||||
|
|
@ -56,10 +58,11 @@ def inlineCandidate? (e : Expr) : SimpM (Option InlineCandidateInfo) := do
|
|||
let value := decl.instantiateValueLevelParams us
|
||||
incInline
|
||||
return some {
|
||||
isLocal := false
|
||||
f := e.getAppFn
|
||||
args := e.getAppArgs
|
||||
ifReduce := inlineIfReduce
|
||||
isLocal := false
|
||||
f := e.getAppFn
|
||||
args := e.getAppArgs
|
||||
ifReduce := inlineIfReduce
|
||||
recursive := decl.recursive
|
||||
params, value
|
||||
}
|
||||
else if let some decl ← findFunDecl? f then
|
||||
|
|
|
|||
|
|
@ -72,4 +72,4 @@ where
|
|||
| .let decl k => modify (·.push (.let decl)); visitCode k projs
|
||||
| .fun decl k => modify (·.push (.fun decl)); visitCode k projs
|
||||
| .return fvarId => visit (.fvar fvarId) projs
|
||||
| _ => failure
|
||||
| _ => eraseCode code; failure
|
||||
|
|
|
|||
13
stage0/src/Lean/Compiler/LCNF/Simp/JpCases.lean
generated
13
stage0/src/Lean/Compiler/LCNF/Simp/JpCases.lean
generated
|
|
@ -20,13 +20,14 @@ f y :=
|
|||
...
|
||||
```
|
||||
-/
|
||||
def isJpCases (decl : FunDecl) (smallThreshold : Nat) : CompilerM Bool := do
|
||||
def isJpCases (decl : FunDecl) : CompilerM Bool := do
|
||||
if decl.params.size != 1 then
|
||||
return false
|
||||
else
|
||||
let param := decl.params[0]!
|
||||
let small := (← getConfig).smallThreshold
|
||||
let rec go (code : Code) (prefixSize : Nat) : Bool :=
|
||||
prefixSize <= smallThreshold &&
|
||||
prefixSize <= small &&
|
||||
match code with
|
||||
| .let _ k => go k (prefixSize + 1) /- TODO: we should have uniform heuristics for estimating the size. -/
|
||||
| .cases c => c.discr == param.fvarId
|
||||
|
|
@ -44,7 +45,7 @@ Return a map containing entries `jpFVarId ↦ ctorNames` where `jpFVarId` is the
|
|||
in code that satisfies `isJpCases`, and `ctorNames` is a set of constructor names such that
|
||||
there is a jump `.jmp jpFVarId #[x]` in `code` and `x` is a constructor application.
|
||||
-/
|
||||
partial def collectJpCasesInfo (code : Code) (smallThreshold : Nat): CompilerM JpCasesInfo := do
|
||||
partial def collectJpCasesInfo (code : Code) : CompilerM JpCasesInfo := do
|
||||
let (_, s) ← go code |>.run {}
|
||||
return s
|
||||
where
|
||||
|
|
@ -53,7 +54,7 @@ where
|
|||
| .let _ k => go k
|
||||
| .fun decl k => go decl.value; go k
|
||||
| .jp decl k =>
|
||||
if (← isJpCases decl smallThreshold) then
|
||||
if (← isJpCases decl) then
|
||||
modify fun s => s.insert decl.fvarId {}
|
||||
go decl.value; go k
|
||||
| .cases c => c.alts.forM fun alt => go alt.getCode
|
||||
|
|
@ -144,8 +145,8 @@ cases x.4
|
|||
Note that if all jumps to the join point are with constructors,
|
||||
then the join point is eliminated as dead code.
|
||||
-/
|
||||
partial def simpJpCases? (code : Code) (smallThreshold : Nat) : CompilerM (Option Code) := do
|
||||
let info ← collectJpCasesInfo code smallThreshold
|
||||
partial def simpJpCases? (code : Code) : CompilerM (Option Code) := do
|
||||
let info ← collectJpCasesInfo code
|
||||
unless info.isCandidate do return none
|
||||
traceM `Compiler.simp.jpCases do
|
||||
let mut msg : MessageData := "candidates"
|
||||
|
|
|
|||
9
stage0/src/Lean/Compiler/LCNF/Simp/Main.lean
generated
9
stage0/src/Lean/Compiler/LCNF/Simp/Main.lean
generated
|
|
@ -14,6 +14,7 @@ import Lean.Compiler.LCNF.Simp.InlineProj
|
|||
import Lean.Compiler.LCNF.Simp.Used
|
||||
import Lean.Compiler.LCNF.Simp.DefaultAlt
|
||||
import Lean.Compiler.LCNF.Simp.SimpValue
|
||||
import Lean.Compiler.LCNF.Simp.ConstantFold
|
||||
|
||||
namespace Lean.Compiler.LCNF
|
||||
namespace Simp
|
||||
|
|
@ -115,7 +116,7 @@ inlined code **before** we attach it to the continuation.
|
|||
partial def inlineApp? (letDecl : LetDecl) (k : Code) : SimpM (Option Code) := do
|
||||
let some info ← inlineCandidate? letDecl.value | return none
|
||||
let numArgs := info.args.size
|
||||
withInlining letDecl.value do
|
||||
withInlining letDecl.value info.recursive do
|
||||
let fvarId := letDecl.fvarId
|
||||
if numArgs < info.arity then
|
||||
let funDecl ← specializePartialApp info
|
||||
|
|
@ -210,7 +211,11 @@ partial def simp (code : Code) : SimpM Code := withIncRecDepth do
|
|||
let mut decl ← normLetDecl decl
|
||||
if let some value ← simpValue? decl.value then
|
||||
decl ← decl.updateValue value
|
||||
if let some funDecl ← etaPolyApp? decl then
|
||||
if let some decls ← ConstantFold.foldConstants decl then
|
||||
markSimplified
|
||||
let k ← simp k
|
||||
attachCodeDecls decls k
|
||||
else if let some funDecl ← etaPolyApp? decl then
|
||||
simp (.fun funDecl k)
|
||||
else if decl.value.isFVar then
|
||||
/- Eliminate `let _x_i := _x_j;` -/
|
||||
|
|
|
|||
72
stage0/src/Lean/Compiler/LCNF/Simp/SimpM.lean
generated
72
stage0/src/Lean/Compiler/LCNF/Simp/SimpM.lean
generated
|
|
@ -4,6 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
|
|||
Authors: Leonardo de Moura
|
||||
-/
|
||||
import Lean.Compiler.ImplementedByAttr
|
||||
import Lean.Compiler.LCNF.Renaming
|
||||
import Lean.Compiler.LCNF.ElimDead
|
||||
import Lean.Compiler.LCNF.AlphaEqv
|
||||
import Lean.Compiler.LCNF.PrettyPrinter
|
||||
|
|
@ -28,6 +29,10 @@ structure Context where
|
|||
Stack of global declarations being recursively inlined.
|
||||
-/
|
||||
inlineStack : List Name := []
|
||||
/--
|
||||
Mapping from declaration names to number of occurrences at `inlineStack`
|
||||
-/
|
||||
inlineStackOccs : PHashMap Name Nat := {}
|
||||
|
||||
structure State where
|
||||
/--
|
||||
|
|
@ -39,6 +44,11 @@ structure State where
|
|||
-/
|
||||
used : UsedLocalDecls := {}
|
||||
/--
|
||||
Mapping containing free variables ids that need to be renamed (i.e., the `binderName`).
|
||||
We use this map to preserve user provide names.
|
||||
-/
|
||||
binderRenaming : Renaming := {}
|
||||
/--
|
||||
Mapping used to decide whether a local function declaration must be inlined or not.
|
||||
-/
|
||||
funDeclInfoMap : FunDeclInfoMap := {}
|
||||
|
|
@ -136,12 +146,21 @@ partial def updateFunDeclInfo (code : Code) (mustInline := false) : SimpM Unit :
|
|||
Execute `x` with an updated `inlineStack`. If `value` is of the form `const ...`, add `const` to the stack.
|
||||
Otherwise, do not change the `inlineStack`.
|
||||
-/
|
||||
@[inline] def withInlining (value : Expr) (x : SimpM α) : SimpM α := do
|
||||
def withInlining (value : Expr) (recursive : Bool) (x : SimpM α) : SimpM α := do
|
||||
trace[Compiler.simp.inline] "inlining {value}"
|
||||
let f := value.getAppFn
|
||||
let stack := (← read).inlineStack
|
||||
let inlineStack := if let .const declName _ := f then declName :: stack else stack
|
||||
withReader (fun ctx => { ctx with inlineStack }) x
|
||||
if let .const declName _ := f then
|
||||
let numOccs := (← read).inlineStackOccs.find? declName |>.getD 0
|
||||
let numOccs := numOccs + 1
|
||||
if recursive then
|
||||
if hasInlineIfReduceAttribute (← getEnv) declName then
|
||||
if numOccs > (← getConfig).maxRecInlineIfReduce then
|
||||
throwError "function `{declName}` has been recursively inlined more than #{(← getConfig).maxRecInlineIfReduce}, consider removing the attribute `[inlineIfReduce]` from this declaration or increasing the limit using `set_option compiler.maxRecInlineIfReduce <num>`"
|
||||
else if numOccs > (← getConfig).maxRecInline then
|
||||
throwError "function `{declName}` has been recursively inlined more than #{(← getConfig).maxRecInline}, consider removing the attribute `[inline]` from this declaration or increasing the limit using `set_option compiler.maxRecInline <num>`"
|
||||
withReader (fun ctx => { ctx with inlineStack := declName :: ctx.inlineStack, inlineStackOccs := ctx.inlineStackOccs.insert declName numOccs }) x
|
||||
else
|
||||
x
|
||||
|
||||
/--
|
||||
Similar to the default `Lean.withIncRecDepth`, but include the `inlineStack` in the error messsage.
|
||||
|
|
@ -197,7 +216,7 @@ def isOnceOrMustInline (fvarId : FVarId) : SimpM Bool := do
|
|||
Return `true` if the given local function declaration is considered "small".
|
||||
-/
|
||||
def isSmall (decl : FunDecl) : SimpM Bool :=
|
||||
return decl.value.sizeLe (← read).config.smallThreshold
|
||||
return decl.value.sizeLe (← getConfig).smallThreshold
|
||||
|
||||
/--
|
||||
Return `true` if the given local function declaration should be inlined.
|
||||
|
|
@ -209,16 +228,38 @@ def shouldInlineLocal (decl : FunDecl) : SimpM Bool := do
|
|||
isSmall decl
|
||||
|
||||
/--
|
||||
"Beta-reduce" `(fun params => code) args`.
|
||||
LCNF "Beta-reduce". The equivalent of `(fun params => code) args`.
|
||||
If `mustInline` is true, the local function declarations in the resulting code are marked as `.mustInline`.
|
||||
See comment at `updateFunDeclInfo`.
|
||||
-/
|
||||
def betaReduce (params : Array Param) (code : Code) (args : Array Expr) (mustInline := false) : SimpM Code := do
|
||||
-- TODO: add necessary casts to `args`
|
||||
let mut subst := {}
|
||||
let mut castDecls := #[]
|
||||
for param in params, arg in args do
|
||||
subst := subst.insert param.fvarId arg
|
||||
/-
|
||||
If `param` hast type `⊤` but `arg` does not, we must insert a cast.
|
||||
Otherwise, the resulting code may be type incorrect.
|
||||
For example, the following code is type correct before inlining `f`
|
||||
because `x : ⊤`.
|
||||
```
|
||||
def foo (g : A → A) (a : B) :=
|
||||
fun f (x : ⊤) :=
|
||||
let _x.1 := g x
|
||||
...
|
||||
let _x.2 := f a
|
||||
...
|
||||
```
|
||||
We must introduce a cast around `a` to make sure the resulting expression is type correct.
|
||||
-/
|
||||
if param.type.isAnyType && !(← inferType arg).isAnyType then
|
||||
let castArg ← mkLcCast arg anyTypeExpr
|
||||
let castDecl ← mkAuxLetDecl castArg
|
||||
castDecls := castDecls.push (CodeDecl.let castDecl)
|
||||
subst := subst.insert param.fvarId (.fvar castDecl.fvarId)
|
||||
else
|
||||
subst := subst.insert param.fvarId arg
|
||||
let code ← code.internalize subst
|
||||
let code := LCNF.attachCodeDecls castDecls code
|
||||
updateFunDeclInfo code mustInline
|
||||
return code
|
||||
|
||||
|
|
@ -237,3 +278,18 @@ and set the `simplified` flag to true.
|
|||
def eraseFunDecl (decl : FunDecl) : SimpM Unit := do
|
||||
LCNF.eraseFunDecl decl
|
||||
markSimplified
|
||||
|
||||
/--
|
||||
Similar to `LCNF.addFVarSubst`. That is, add the entry
|
||||
`fvarId ↦ fvarId'` to the free variable substitution.
|
||||
If `fvarId` has a non-internal binder name `n`, but `fvarId'` does not,
|
||||
this method also adds the entry `fvarId' ↦ n` to the `binderRenaming` map.
|
||||
The goal is to preserve user provided names.
|
||||
-/
|
||||
def addFVarSubst (fvarId : FVarId) (fvarId' : FVarId) : SimpM Unit := do
|
||||
LCNF.addFVarSubst fvarId fvarId'
|
||||
let binderName ← getBinderName fvarId
|
||||
unless binderName.isInternal do
|
||||
let binderName' ← getBinderName fvarId'
|
||||
if binderName'.isInternal then
|
||||
modify fun s => { s with binderRenaming := s.binderRenaming.insert fvarId' binderName }
|
||||
|
|
|
|||
40
stage0/src/Lean/Compiler/LCNF/ToLCNF.lean
generated
40
stage0/src/Lean/Compiler/LCNF/ToLCNF.lean
generated
|
|
@ -364,6 +364,26 @@ def etaExpandN (e : Expr) (n : Nat) : M Expr := do
|
|||
Meta.forallBoundedTelescope (← Meta.inferType e) n fun xs _ =>
|
||||
Meta.mkLambdaFVars xs (mkAppN e xs)
|
||||
|
||||
/--
|
||||
Eta reduce implicits. We use this function to eliminate introduced by the implicit lambda feature,
|
||||
where it generates terms such as `fun {α} => ReaderT.pure`
|
||||
-/
|
||||
partial def etaReduceImplicit (e : Expr) : Expr :=
|
||||
match e with
|
||||
| .lam _ d b bi =>
|
||||
if bi.isImplicit then
|
||||
let b' := etaReduceImplicit b
|
||||
match b' with
|
||||
| .app f (.bvar 0) =>
|
||||
if !f.hasLooseBVar 0 then
|
||||
f.lowerLooseBVars 1 1
|
||||
else
|
||||
e.updateLambdaE! d b'
|
||||
| _ => e.updateLambdaE! d b'
|
||||
else
|
||||
e
|
||||
| _ => e
|
||||
|
||||
/--
|
||||
Put the given expression in `LCNF`.
|
||||
|
||||
|
|
@ -648,7 +668,25 @@ where
|
|||
e.withApp fun f args => do visitAppDefault (← visit f) args
|
||||
|
||||
visitLambda (e : Expr) : M Expr := do
|
||||
let b := e.eta
|
||||
let b := etaReduceImplicit e
|
||||
/-
|
||||
Note: we don't want to eta-reduce arbitrary lambda expressions since it can
|
||||
affect the current inline heuristics. For example, suppose that `foo` is marked
|
||||
as `[inline]`. If we eta-reduce
|
||||
```
|
||||
let f := fun b => foo a b
|
||||
```
|
||||
we obtain the LCNF
|
||||
```
|
||||
let f := foo a
|
||||
```
|
||||
which will be inlined everywhere in the current implementation, if we don't eta-reduce,
|
||||
we obtain
|
||||
```
|
||||
fun f b := foo a
|
||||
```
|
||||
which will inline foo in the body of `f`, but will only inline `f` if it is small.
|
||||
-/
|
||||
if !b.isLambda && !mustEtaExpand (← getEnv) b then
|
||||
/-
|
||||
We use eta-reduction to make sure we avoid the overhead introduced by
|
||||
|
|
|
|||
4
stage0/src/Lean/Compiler/LCNF/Types.lean
generated
4
stage0/src/Lean/Compiler/LCNF/Types.lean
generated
|
|
@ -24,10 +24,10 @@ def erasedExpr := mkConst ``lcErased
|
|||
def anyTypeExpr := mkConst ``lcAny
|
||||
|
||||
def _root_.Lean.Expr.isAnyType (e : Expr) :=
|
||||
e.isConstOf ``lcAny
|
||||
e.isAppOf ``lcAny
|
||||
|
||||
def _root_.Lean.Expr.isErased (e : Expr) :=
|
||||
e.isConstOf ``lcErased
|
||||
e.isAppOf ``lcErased
|
||||
|
||||
def isPropFormerTypeQuick : Expr → Bool
|
||||
| .forallE _ _ b _ => isPropFormerTypeQuick b
|
||||
|
|
|
|||
11
stage0/src/Lean/Data/Json/FromToJson.lean
generated
11
stage0/src/Lean/Data/Json/FromToJson.lean
generated
|
|
@ -133,6 +133,14 @@ instance : FromJson Float where
|
|||
| (Json.num jn) => Except.ok jn.toFloat
|
||||
| _ => Except.error "Expected a number or a string 'Infinity', '-Infinity', 'NaN'."
|
||||
|
||||
instance [ToJson α] : ToJson (RBMap String α cmp) where
|
||||
toJson m := Json.obj <| RBNode.map (fun _ => toJson) <| m.val
|
||||
|
||||
instance {cmp} [FromJson α] : FromJson (RBMap String α cmp) where
|
||||
fromJson? j := do
|
||||
let o ← j.getObj?
|
||||
o.foldM (fun x k v => x.insert k <$> fromJson? v) ∅
|
||||
|
||||
namespace Json
|
||||
|
||||
instance : FromJson Structured := ⟨fun
|
||||
|
|
@ -150,6 +158,9 @@ def toStructured? [ToJson α] (v : α) : Except String Structured :=
|
|||
def getObjValAs? (j : Json) (α : Type u) [FromJson α] (k : String) : Except String α :=
|
||||
fromJson? <| j.getObjValD k
|
||||
|
||||
def setObjValAs! (j : Json) {α : Type u} [ToJson α] (k : String) (v : α) : Json :=
|
||||
j.setObjVal! k <| toJson v
|
||||
|
||||
def opt [ToJson α] (k : String) : Option α → List (String × Json)
|
||||
| none => []
|
||||
| some o => [⟨k, toJson o⟩]
|
||||
|
|
|
|||
4
stage0/src/Lean/Data/JsonRpc.lean
generated
4
stage0/src/Lean/Data/JsonRpc.lean
generated
|
|
@ -36,7 +36,7 @@ instance : ToString RequestID where
|
|||
[JSON-RPC](https://www.jsonrpc.org/specification#error_object) and
|
||||
[LSP](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#errorCodes). -/
|
||||
inductive ErrorCode where
|
||||
/-- Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.-/
|
||||
/-- Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text. -/
|
||||
| parseError
|
||||
/-- The JSON sent is not a valid Request object. -/
|
||||
| invalidRequest
|
||||
|
|
@ -176,7 +176,7 @@ structure ResponseError (α : Type u) where
|
|||
/-- A string providing a short description of the error. -/
|
||||
message : String
|
||||
/-- A primitive or structured value that contains additional
|
||||
information about the error. Can be omitted.-/
|
||||
information about the error. Can be omitted. -/
|
||||
data? : Option α := none
|
||||
deriving Inhabited, BEq
|
||||
|
||||
|
|
|
|||
1
stage0/src/Lean/Data/Lsp.lean
generated
1
stage0/src/Lean/Data/Lsp.lean
generated
|
|
@ -17,3 +17,4 @@ import Lean.Data.Lsp.TextSync
|
|||
import Lean.Data.Lsp.Utf16
|
||||
import Lean.Data.Lsp.Workspace
|
||||
import Lean.Data.Lsp.Ipc
|
||||
import Lean.Data.Lsp.CodeActions
|
||||
|
|
|
|||
202
stage0/src/Lean/Data/Lsp/Basic.lean
generated
202
stage0/src/Lean/Data/Lsp/Basic.lean
generated
|
|
@ -47,6 +47,7 @@ structure Range where
|
|||
instance : LT Range := ltOfOrd
|
||||
instance : LE Range := leOfOrd
|
||||
|
||||
/-- A `Location` is a `DocumentUri` and a `Range`. -/
|
||||
structure Location where
|
||||
uri : DocumentUri
|
||||
range : Range
|
||||
|
|
@ -61,19 +62,42 @@ structure LocationLink where
|
|||
|
||||
-- NOTE: Diagnostic defined in Diagnostics.lean
|
||||
|
||||
/-- NOTE: No specific commands are specified by LSP, hence
|
||||
possible commands need to be announced as capabilities. -/
|
||||
/-- Represents a reference to a client editor command.
|
||||
|
||||
NOTE: No specific commands are specified by LSP, hence
|
||||
possible commands need to be announced as capabilities.
|
||||
|
||||
[reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#command)
|
||||
-/
|
||||
structure Command where
|
||||
/-- Title of the command, like `save`. -/
|
||||
title : String
|
||||
/-- The identifier of the actual command handler. -/
|
||||
command : String
|
||||
/-- Arguments that the command handler should be invoked with. -/
|
||||
arguments? : Option (Array Json) := none
|
||||
deriving ToJson, FromJson
|
||||
|
||||
/-- A textual edit applicable to a text document.
|
||||
|
||||
[reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textEdit) -/
|
||||
structure TextEdit where
|
||||
/-- The range of the text document to be manipulated.
|
||||
To insert text into a document create a range where `start = end`. -/
|
||||
range : Range
|
||||
/-- The string to be inserted. For delete operations use an empty string. -/
|
||||
newText : String
|
||||
/-- Identifier for annotated edit.
|
||||
|
||||
`WorkspaceEdit` has a `changeAnnotations` field that maps these identifiers to a `ChangeAnnotation`.
|
||||
By annotating an edit you can add a description of what the edit will do and also control whether the
|
||||
user is presented with a prompt before applying the edit.
|
||||
[reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textEdit).
|
||||
-/
|
||||
annotationId? : Option String := none
|
||||
deriving ToJson, FromJson
|
||||
|
||||
/-- An array of `TextEdit`s to be performed in sequence. -/
|
||||
def TextEditBatch := Array TextEdit
|
||||
|
||||
instance : FromJson TextEditBatch :=
|
||||
|
|
@ -82,6 +106,14 @@ instance : FromJson TextEditBatch :=
|
|||
instance : ToJson TextEditBatch :=
|
||||
⟨@toJson (Array TextEdit) _⟩
|
||||
|
||||
instance : EmptyCollection TextEditBatch := ⟨#[]⟩
|
||||
|
||||
instance : Append TextEditBatch :=
|
||||
inferInstanceAs (Append (Array _))
|
||||
|
||||
instance : Coe TextEdit TextEditBatch where
|
||||
coe te := #[te]
|
||||
|
||||
structure TextDocumentIdentifier where
|
||||
uri : DocumentUri
|
||||
deriving ToJson, FromJson
|
||||
|
|
@ -91,20 +123,141 @@ structure VersionedTextDocumentIdentifier where
|
|||
version? : Option Nat := none
|
||||
deriving ToJson, FromJson
|
||||
|
||||
/-- A batch of `TextEdit`s to perform on a versioned text document.
|
||||
|
||||
[reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocumentEdit) -/
|
||||
structure TextDocumentEdit where
|
||||
textDocument : VersionedTextDocumentIdentifier
|
||||
edits : TextEditBatch
|
||||
deriving ToJson, FromJson
|
||||
|
||||
-- TODO(Marc): missing:
|
||||
-- File Resource Changes, WorkspaceEdit
|
||||
-- both of these are pretty global, we can look at their
|
||||
-- uses when single file behaviour works.
|
||||
/-- Additional information that describes document changes.
|
||||
|
||||
[reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textEdit) -/
|
||||
structure ChangeAnnotation where
|
||||
/-- A human-readable string describing the actual change.
|
||||
The string is rendered prominent in the user interface. -/
|
||||
label : String
|
||||
/-- A flag which indicates that user confirmation is needed before applying the change. -/
|
||||
needsConfirmation : Bool := false
|
||||
/-- A human-readable string which is rendered less prominent in the user interface. -/
|
||||
description? : Option String := none
|
||||
deriving ToJson, FromJson
|
||||
|
||||
/-- Options for `CreateFile` and `RenameFile`. -/
|
||||
structure CreateFile.Options where
|
||||
overwrite : Bool := false
|
||||
ignoreIfExists : Bool := false
|
||||
deriving ToJson, FromJson
|
||||
|
||||
/-- Options for `DeleteFile`. -/
|
||||
structure DeleteFile.Options where
|
||||
recursive : Bool := false
|
||||
ignoreIfNotExists := false
|
||||
deriving ToJson, FromJson
|
||||
|
||||
structure CreateFile where
|
||||
uri : DocumentUri
|
||||
options? : Option CreateFile.Options := none
|
||||
annotationId? : Option String := none
|
||||
deriving ToJson, FromJson
|
||||
|
||||
structure RenameFile where
|
||||
oldUri : DocumentUri
|
||||
newUri : DocumentUri
|
||||
options? : Option CreateFile.Options := none
|
||||
annotationId? : Option String := none
|
||||
deriving ToJson, FromJson
|
||||
|
||||
structure DeleteFile where
|
||||
uri : DocumentUri
|
||||
options? : Option DeleteFile.Options := none
|
||||
annotationId? : Option String := none
|
||||
deriving ToJson, FromJson
|
||||
|
||||
/-- A change to a file resource.
|
||||
|
||||
[reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#resourceChanges) -/
|
||||
inductive DocumentChange where
|
||||
| create : CreateFile → DocumentChange
|
||||
| rename : RenameFile → DocumentChange
|
||||
| delete : DeleteFile → DocumentChange
|
||||
| edit : TextDocumentEdit → DocumentChange
|
||||
|
||||
instance : ToJson DocumentChange := ⟨fun
|
||||
| .create x => Json.setObjVal! (toJson x) "kind" "create"
|
||||
| .rename x => Json.setObjVal! (toJson x) "kind" "rename"
|
||||
| .delete x => Json.setObjVal! (toJson x) "kind" "delete"
|
||||
| .edit x => toJson x
|
||||
⟩
|
||||
|
||||
instance : FromJson DocumentChange where
|
||||
fromJson? j := (do
|
||||
let kind ← j.getObjVal? "kind"
|
||||
match kind with
|
||||
| "create" => return DocumentChange.create <|← fromJson? j
|
||||
| "rename" => return DocumentChange.rename <|← fromJson? j
|
||||
| "delete" => return DocumentChange.delete <|← fromJson? j
|
||||
| kind => throw s!"Unrecognized kind: {kind}")
|
||||
<|> (DocumentChange.edit <$> fromJson? j)
|
||||
|
||||
/-- A workspace edit represents changes to many resources managed in the workspace.
|
||||
|
||||
[reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#workspaceEdit) -/
|
||||
structure WorkspaceEdit where
|
||||
/-- Changes to existing resources. -/
|
||||
changes : RBMap DocumentUri TextEditBatch compare := ∅
|
||||
/-- Depending on the client capability
|
||||
`workspace.workspaceEdit.resourceOperations` document changes are either
|
||||
an array of `TextDocumentEdit`s to express changes to n different text
|
||||
documents where each text document edit addresses a specific version of
|
||||
a text document. Or it can contain above `TextDocumentEdit`s mixed with
|
||||
create, rename and delete file / folder operations.
|
||||
|
||||
Whether a client supports versioned document edits is expressed via
|
||||
`workspace.workspaceEdit.documentChanges` client capability.
|
||||
|
||||
If a client neither supports `documentChanges` nor
|
||||
`workspace.workspaceEdit.resourceOperations` then only plain `TextEdit`s
|
||||
using the `changes` property are supported. -/
|
||||
documentChanges : Array DocumentChange := ∅
|
||||
/-- A map of change annotations that can be referenced in
|
||||
`AnnotatedTextEdit`s or create, rename and delete file / folder
|
||||
operations.
|
||||
|
||||
Whether clients honor this property depends on the client capability
|
||||
`workspace.changeAnnotationSupport`. -/
|
||||
changeAnnotations : RBMap String ChangeAnnotation compare := ∅
|
||||
deriving ToJson, FromJson
|
||||
|
||||
namespace WorkspaceEdit
|
||||
|
||||
instance : EmptyCollection WorkspaceEdit := ⟨{}⟩
|
||||
|
||||
instance : Append WorkspaceEdit where
|
||||
append x y := {
|
||||
changes := x.changes.mergeBy (fun _ v₁ v₂ => v₁ ++ v₂) y.changes
|
||||
documentChanges := x.documentChanges ++ y.documentChanges
|
||||
changeAnnotations := x.changeAnnotations.mergeBy (fun _ _v₁ v₂ => v₂) y.changeAnnotations
|
||||
}
|
||||
|
||||
def ofTextDocumentEdit (e : TextDocumentEdit) : WorkspaceEdit :=
|
||||
{ documentChanges := #[DocumentChange.edit e]}
|
||||
|
||||
end WorkspaceEdit
|
||||
|
||||
/-- An item to transfer a text document from the client to the server.
|
||||
|
||||
[reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocumentItem)
|
||||
-/
|
||||
structure TextDocumentItem where
|
||||
/-- The text document's URI. -/
|
||||
uri : DocumentUri
|
||||
/-- The text document's language identifier. -/
|
||||
languageId : String
|
||||
/-- The version number of this document (it will increase after each change, including undo/redo). -/
|
||||
version : Nat
|
||||
/-- The content of the opened text document. -/
|
||||
text : String
|
||||
deriving ToJson, FromJson
|
||||
|
||||
|
|
@ -118,8 +271,8 @@ instance : ToString TextDocumentPositionParams where
|
|||
|
||||
structure DocumentFilter where
|
||||
language? : Option String := none
|
||||
scheme? : Option String := none
|
||||
pattern? : Option String := none
|
||||
scheme? : Option String := none
|
||||
pattern? : Option String := none
|
||||
deriving ToJson, FromJson
|
||||
|
||||
def DocumentSelector := Array DocumentFilter
|
||||
|
|
@ -151,34 +304,59 @@ instance : ToJson MarkupKind := ⟨fun
|
|||
| MarkupKind.markdown => str "markdown"⟩
|
||||
|
||||
structure MarkupContent where
|
||||
kind : MarkupKind
|
||||
kind : MarkupKind
|
||||
value : String
|
||||
deriving ToJson, FromJson
|
||||
|
||||
/-- Reference to the progress of some in-flight piece of work.
|
||||
|
||||
[reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#progress)
|
||||
-/
|
||||
abbrev ProgressToken := String -- do we need integers?
|
||||
|
||||
/-- Params for JSON-RPC method `$/progress` request.
|
||||
|
||||
[reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#progress) -/
|
||||
structure ProgressParams (α : Type) where
|
||||
token : String -- do we need `integer`?
|
||||
token : ProgressToken
|
||||
value : α
|
||||
deriving ToJson
|
||||
|
||||
structure WorkDoneProgressReport where
|
||||
kind := "report"
|
||||
/-- More detailed associated progress message. -/
|
||||
message? : Option String := none
|
||||
/-- Controls if a cancel button should show to allow the user to cancel the operation. -/
|
||||
cancellable := false
|
||||
/-- Optional progress percentage to display (value 100 is considered 100%).
|
||||
If not provided infinite progress is assumed. -/
|
||||
percentage? : Option Nat := none
|
||||
deriving ToJson
|
||||
|
||||
/-- Notification to signal the start of progress reporting. -/
|
||||
structure WorkDoneProgressBegin extends WorkDoneProgressReport where
|
||||
kind := "begin"
|
||||
title : String
|
||||
deriving ToJson
|
||||
|
||||
/-- Signals the end of progress reporting. -/
|
||||
structure WorkDoneProgressEnd where
|
||||
kind := "end"
|
||||
message? : Option String := none
|
||||
deriving ToJson
|
||||
|
||||
-- TODO(Marc): missing:
|
||||
-- WorkDoneProgressOptions, PartialResultParams
|
||||
structure WorkDoneProgressParams where
|
||||
workDoneToken? : Option ProgressToken := none
|
||||
deriving ToJson, FromJson
|
||||
|
||||
structure PartialResultParams where
|
||||
partialResultToken? : Option ProgressToken := none
|
||||
deriving ToJson, FromJson
|
||||
|
||||
/-- [reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#workDoneProgressOptions) -/
|
||||
structure WorkDoneProgressOptions where
|
||||
workDoneProgress := false
|
||||
deriving ToJson, FromJson
|
||||
|
||||
end Lsp
|
||||
end Lean
|
||||
|
|
|
|||
48
stage0/src/Lean/Data/Lsp/Capabilities.lean
generated
48
stage0/src/Lean/Data/Lsp/Capabilities.lean
generated
|
|
@ -7,6 +7,7 @@ Authors: Marc Huisinga, Wojciech Nawrocki
|
|||
import Lean.Data.JsonRpc
|
||||
import Lean.Data.Lsp.TextSync
|
||||
import Lean.Data.Lsp.LanguageFeatures
|
||||
import Lean.Data.Lsp.CodeActions
|
||||
|
||||
/-! Minimal LSP servers/clients do not have to implement a lot
|
||||
of functionality. Most useful additional behavior is instead
|
||||
|
|
@ -27,6 +28,7 @@ structure CompletionClientCapabilities where
|
|||
|
||||
structure TextDocumentClientCapabilities where
|
||||
completion? : Option CompletionClientCapabilities := none
|
||||
codeAction? : Option CodeActionClientCapabilities := none
|
||||
deriving ToJson, FromJson
|
||||
|
||||
structure ShowDocumentClientCapabilities where
|
||||
|
|
@ -37,25 +39,45 @@ structure WindowClientCapabilities where
|
|||
showDocument? : Option ShowDocumentClientCapabilities := none
|
||||
deriving ToJson, FromJson
|
||||
|
||||
structure ChangeAnnotationSupport where
|
||||
groupsOnLabel? : Option Bool := none
|
||||
deriving ToJson, FromJson
|
||||
|
||||
structure WorkspaceEditClientCapabilities where
|
||||
/-- The client supports versioned document changes in `WorkspaceEdit`s. -/
|
||||
documentChanges? : Option Bool := none
|
||||
/-- Whether the client in general supports change annotations on text edits. -/
|
||||
changeAnnotationSupport? : Option ChangeAnnotationSupport := none
|
||||
/-- The resource operations the client supports. Clients should at least support 'create', 'rename' and 'delete' files and folders. -/
|
||||
resourceOperations? : Option (Array String) := none
|
||||
deriving ToJson, FromJson
|
||||
|
||||
structure WorkspaceClientCapabilities where
|
||||
applyEdit: Bool
|
||||
workspaceEdit? : Option WorkspaceEditClientCapabilities := none
|
||||
deriving ToJson, FromJson
|
||||
|
||||
structure ClientCapabilities where
|
||||
textDocument? : Option TextDocumentClientCapabilities := none
|
||||
window? : Option WindowClientCapabilities := none
|
||||
window? : Option WindowClientCapabilities := none
|
||||
workspace? : Option WorkspaceClientCapabilities := none
|
||||
deriving ToJson, FromJson
|
||||
|
||||
-- TODO largely unimplemented
|
||||
structure ServerCapabilities where
|
||||
textDocumentSync? : Option TextDocumentSyncOptions := none
|
||||
completionProvider? : Option CompletionOptions := none
|
||||
hoverProvider : Bool := false
|
||||
documentHighlightProvider : Bool := false
|
||||
documentSymbolProvider : Bool := false
|
||||
definitionProvider : Bool := false
|
||||
declarationProvider : Bool := false
|
||||
typeDefinitionProvider : Bool := false
|
||||
referencesProvider : Bool := false
|
||||
workspaceSymbolProvider : Bool := false
|
||||
foldingRangeProvider : Bool := false
|
||||
semanticTokensProvider? : Option SemanticTokensOptions := none
|
||||
textDocumentSync? : Option TextDocumentSyncOptions := none
|
||||
completionProvider? : Option CompletionOptions := none
|
||||
hoverProvider : Bool := false
|
||||
documentHighlightProvider : Bool := false
|
||||
documentSymbolProvider : Bool := false
|
||||
definitionProvider : Bool := false
|
||||
declarationProvider : Bool := false
|
||||
typeDefinitionProvider : Bool := false
|
||||
referencesProvider : Bool := false
|
||||
workspaceSymbolProvider : Bool := false
|
||||
foldingRangeProvider : Bool := false
|
||||
semanticTokensProvider? : Option SemanticTokensOptions := none
|
||||
codeActionProvider? : Option CodeActionOptions := none
|
||||
deriving ToJson, FromJson
|
||||
|
||||
end Lsp
|
||||
|
|
|
|||
177
stage0/src/Lean/Data/Lsp/CodeActions.lean
generated
Normal file
177
stage0/src/Lean/Data/Lsp/CodeActions.lean
generated
Normal file
|
|
@ -0,0 +1,177 @@
|
|||
/-
|
||||
Copyright (c) 2022 E.W.Ayers. All rights reserved.
|
||||
Released under Apache 2.0 license as described in the file LICENSE.
|
||||
|
||||
Authors: E.W.Ayers
|
||||
-/
|
||||
import Lean.Data.Json
|
||||
import Lean.Data.Lsp.Basic
|
||||
import Lean.Data.Lsp.Diagnostics
|
||||
|
||||
namespace Lean.Lsp
|
||||
|
||||
open Json
|
||||
|
||||
/-- The kind of a code action.
|
||||
|
||||
Kinds are a hierarchical list of identifiers separated by `.`,
|
||||
e.g. `"refactor.extract.function"`.
|
||||
|
||||
The set of kinds is open and client needs to announce the kinds it supports
|
||||
to the server during initialization.
|
||||
You can make your own code action kinds, the ones supported by LSP are:
|
||||
- `quickfix`
|
||||
- `refactor`
|
||||
- `refactor.extract`
|
||||
- `refactor.inline`
|
||||
- `refactor.rewrite`
|
||||
- `source` Source code actions apply to the entire file. Eg fixing all issues or organising imports.
|
||||
- `source.organizeImports`
|
||||
- `source.fixAll`
|
||||
-/
|
||||
abbrev CodeActionKind := String
|
||||
|
||||
inductive CodeActionTriggerKind
|
||||
/-- Code actions were explicitly requested by the user or by an extension. -/
|
||||
| invoked
|
||||
/-- Code actions were requested automatically.
|
||||
|
||||
This typically happens when current selection in a file changes, but can
|
||||
also be triggered when file content changes. -/
|
||||
| automatic
|
||||
|
||||
instance : ToJson CodeActionTriggerKind := ⟨fun
|
||||
| .invoked => 1
|
||||
| .automatic => 2
|
||||
⟩
|
||||
|
||||
instance : FromJson CodeActionTriggerKind := ⟨fun j => do
|
||||
let n ← j.getNat?
|
||||
match n with
|
||||
| 1 => return CodeActionTriggerKind.invoked
|
||||
| 2 => return CodeActionTriggerKind.automatic
|
||||
| n => throw s!"Unexpected CodeActionTriggerKind {n}"
|
||||
⟩
|
||||
|
||||
/-- Contains additional diagnostic information about the context in which a code action is run.
|
||||
|
||||
[reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#codeActionContext) -/
|
||||
structure CodeActionContext where
|
||||
/--
|
||||
An array of diagnostics known on the client side overlapping the range
|
||||
provided to the `textDocument/codeAction` request. They are provided so
|
||||
that the server knows which errors are currently presented to the user
|
||||
for the given range. There is no guarantee that these accurately reflect
|
||||
the error state of the resource. The primary parameter
|
||||
to compute code actions is the provided range.
|
||||
-/
|
||||
diagnostics : Array Diagnostic
|
||||
/-- Requested kind of actions to return.
|
||||
|
||||
Actions not of this kind are filtered out by the client before being
|
||||
shown. So servers can omit computing them.
|
||||
-/
|
||||
only? : Option (Array CodeActionKind) := none
|
||||
/-- The reason why code actions were requested. -/
|
||||
triggerKind? : Option CodeActionTriggerKind := none
|
||||
deriving FromJson, ToJson
|
||||
|
||||
/-- Parameters for a [CodeActionRequest](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_codeAction). -/
|
||||
structure CodeActionParams extends WorkDoneProgressParams, PartialResultParams where
|
||||
textDocument : TextDocumentIdentifier
|
||||
range : Range
|
||||
context : CodeActionContext
|
||||
deriving FromJson, ToJson
|
||||
|
||||
/-- If the code action is disabled, this type gives the reson why. -/
|
||||
structure CodeActionDisabled where
|
||||
reason : String
|
||||
deriving FromJson, ToJson
|
||||
|
||||
/-- Capabilities of the server for handling code actions. -/
|
||||
structure CodeActionOptions extends WorkDoneProgressOptions where
|
||||
/-- CodeActionKinds that this server may return.
|
||||
|
||||
The list of kinds may be generic, such as `"refactor"`, or the server may list out every specific kind they provide. -/
|
||||
codeActionKinds? : Option (Array CodeActionKind) := none
|
||||
/-- The server provides support to resolve additional information for a code action. -/
|
||||
resolveProvider? : Option Bool := none
|
||||
deriving ToJson, FromJson
|
||||
|
||||
/-- Custom, Lean-specific data object passed as the `data?` field. -/
|
||||
structure CodeActionData where
|
||||
uri : DocumentUri
|
||||
deriving FromJson, ToJson
|
||||
|
||||
/-- A code action represents a change that can be performed in code, e.g. to fix a problem or to refactor code.
|
||||
|
||||
A CodeAction should set either `edit` and/or a `command`.
|
||||
If both are supplied, the `edit` is applied first, then the `command` is executed.
|
||||
If none are supplied, the client makes a `codeAction/resolve` JSON-RPC request to compute the edit.
|
||||
|
||||
[reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#codeAction) -/
|
||||
structure CodeAction extends WorkDoneProgressParams, PartialResultParams where
|
||||
/-- A short, human-readable, title for this code action. -/
|
||||
title : String
|
||||
/-- The kind of the code action. -/
|
||||
kind? : Option CodeActionKind := none
|
||||
/-- The diagnostics that this code action resolves. -/
|
||||
diagnostics? : Option (Array Diagnostic) := none
|
||||
/-- Marks this as a preferred action. Preferred actions are used by the `auto fix` command and can be targeted by keybindings. -/
|
||||
isPreferred? : Option Bool := none
|
||||
/-- Marks that the code action cannot currently be applied. -/
|
||||
disabled? : Option CodeActionDisabled := none
|
||||
/-- The workspace edit this code action performs. -/
|
||||
edit? : Option WorkspaceEdit := none
|
||||
/-- A command this code action executes.
|
||||
|
||||
If a code action provides an edit and a command, first the edit is executed and then the command. -/
|
||||
command? : Option Command := none
|
||||
/-- A data entry field that is preserved on a code action between a `textDocument/codeAction` and a `codeAction/resolve` request.
|
||||
In particular, for Lean-created commands we expect `data` to have a `uri : DocumentUri` field so that `FileSource` can be implemented.
|
||||
-/
|
||||
data? : Option CodeActionData := none
|
||||
deriving ToJson, FromJson
|
||||
|
||||
structure ResolveSupport where
|
||||
properties : Array String
|
||||
deriving FromJson, ToJson
|
||||
|
||||
structure CodeActionLiteralSupportValueSet where
|
||||
/-- The code action kind values the client supports. When this
|
||||
property exists the client also guarantees that it will
|
||||
handle values outside its set gracefully and falls back
|
||||
to a default value when unknown.
|
||||
-/
|
||||
valueSet : Array CodeActionKind
|
||||
deriving FromJson, ToJson
|
||||
|
||||
structure CodeActionLiteralSupport where
|
||||
/-- The code action kind is supported with the following value set. -/
|
||||
codeActionKind : CodeActionLiteralSupportValueSet
|
||||
deriving FromJson, ToJson
|
||||
|
||||
/-- [Reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#codeActionClientCapabilities) -/
|
||||
structure CodeActionClientCapabilities where
|
||||
/-- Whether we can [register capabilities dynamically](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#client_registerCapability). -/
|
||||
dynamicRegistration? : Option Bool := false
|
||||
/-- Whether the code action supports the `isPreferred` property. -/
|
||||
isPreferredSupport? : Option Bool := false
|
||||
/-- Whether the code action supports the `disabled` property. -/
|
||||
disabledSupport? : Option Bool := false
|
||||
/-- Weather code action supports the `data` property which is preserved between a `textDocument/codeAction` and a `codeAction/resolve` request. -/
|
||||
dataSupport? : Option Bool := false
|
||||
/-- Whether the client honors the change annotations in
|
||||
text edits and resource operations returned via the
|
||||
`CodeAction#edit` property by for example presenting
|
||||
the workspace edit in the user interface and asking
|
||||
for confirmation. -/
|
||||
honorsChangeAnnotations? : Option Bool := false
|
||||
/-- The client supports code action literals as a valid response of the `textDocument/codeAction` request. -/
|
||||
codeActionLiteralSupport? : Option CodeActionLiteralSupport := none
|
||||
/-- Whether the client supports resolving additional code action properties via a separate `codeAction/resolve` request. -/
|
||||
resolveSupport? : Option ResolveSupport := none
|
||||
deriving FromJson, ToJson
|
||||
|
||||
|
||||
end Lean.Lsp
|
||||
32
stage0/src/Lean/Data/Lsp/Diagnostics.lean
generated
32
stage0/src/Lean/Data/Lsp/Diagnostics.lean
generated
|
|
@ -11,7 +11,11 @@ import Lean.Data.Lsp.Utf16
|
|||
import Lean.Message
|
||||
|
||||
/-! Definitions and functionality for emitting diagnostic information
|
||||
such as errors, warnings and #command outputs from the LSP server. -/
|
||||
such as errors, warnings and #command outputs from the LSP server.
|
||||
|
||||
[LSP: Diagnostic](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#diagnostic);
|
||||
[LSP: `textDocument/publishDiagnostics`](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_publishDiagnostics)
|
||||
-/
|
||||
|
||||
namespace Lean
|
||||
namespace Lsp
|
||||
|
|
@ -36,6 +40,7 @@ instance : ToJson DiagnosticSeverity := ⟨fun
|
|||
| DiagnosticSeverity.information => 3
|
||||
| DiagnosticSeverity.hint => 4⟩
|
||||
|
||||
/-- Some languages have specific codes for each error type. -/
|
||||
inductive DiagnosticCode where
|
||||
| int (i : Int)
|
||||
| string (s : String)
|
||||
|
|
@ -50,8 +55,11 @@ instance : ToJson DiagnosticCode := ⟨fun
|
|||
| DiagnosticCode.int i => i
|
||||
| DiagnosticCode.string s => s⟩
|
||||
|
||||
/-- Tags representing additional metadata about the diagnostic. -/
|
||||
inductive DiagnosticTag where
|
||||
/-- Unused or unnecessary code. Rendered as faded out eg for unused variables. -/
|
||||
| unnecessary
|
||||
/-- Deprecated or obsolete code. Rendered with a strike-through. -/
|
||||
| deprecated
|
||||
deriving Inhabited, BEq
|
||||
|
||||
|
|
@ -65,28 +73,48 @@ instance : ToJson DiagnosticTag := ⟨fun
|
|||
| DiagnosticTag.unnecessary => (1 : Nat)
|
||||
| DiagnosticTag.deprecated => (2 : Nat)⟩
|
||||
|
||||
/-- Represents a related message and source code location for a diagnostic.
|
||||
This should be used to point to code locations that cause or are related to
|
||||
a diagnostics, e.g when duplicating a symbol in a scope. -/
|
||||
structure DiagnosticRelatedInformation where
|
||||
location : Location
|
||||
message : String
|
||||
deriving Inhabited, BEq, ToJson, FromJson
|
||||
|
||||
/-- Represents a diagnostic, such as a compiler error or warning. Diagnostic objects are only valid in the scope of a resource.
|
||||
|
||||
LSP accepts a `Diagnostic := DiagnosticWith String`.
|
||||
The infoview also accepts `InteractiveDiagnostic := DiagnosticWith (TaggedText MsgEmbed)`.
|
||||
|
||||
[reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#diagnostic) -/
|
||||
structure DiagnosticWith (α : Type) where
|
||||
/-- The range at which the message applies. -/
|
||||
range : Range
|
||||
/-- Extension: preserve semantic range of errors when truncating them for display purposes. -/
|
||||
fullRange : Range := range
|
||||
fullRange? : Option Range := some range
|
||||
severity? : Option DiagnosticSeverity := none
|
||||
/-- The diagnostic's code, which might appear in the user interface. -/
|
||||
code? : Option DiagnosticCode := none
|
||||
/-- A human-readable string describing the source of this diagnostic, e.g. 'typescript' or 'super lint'. -/
|
||||
source? : Option String := none
|
||||
/-- Parametrised by the type of message data. LSP diagnostics use `String`,
|
||||
whereas in Lean's interactive diagnostics we use the type of widget-enriched text.
|
||||
See `Lean.Widget.InteractiveDiagnostic`. -/
|
||||
message : α
|
||||
/-- Additional metadata about the diagnostic. -/
|
||||
tags? : Option (Array DiagnosticTag) := none
|
||||
/-- An array of related diagnostic information, e.g. when symbol-names within a scope collide all definitions can be marked via this property. -/
|
||||
relatedInformation? : Option (Array DiagnosticRelatedInformation) := none
|
||||
/-- A data entry field that is preserved between a `textDocument/publishDiagnostics` notification and `textDocument/codeAction` request. -/
|
||||
data?: Option Json := none
|
||||
deriving Inhabited, BEq, ToJson, FromJson
|
||||
|
||||
def DiagnosticWith.fullRange (d : DiagnosticWith α) : Range :=
|
||||
d.fullRange?.getD d.range
|
||||
|
||||
abbrev Diagnostic := DiagnosticWith String
|
||||
|
||||
/-- Parameters for the [`textDocument/publishDiagnostics` notification](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_publishDiagnostics). -/
|
||||
structure PublishDiagnosticsParams where
|
||||
uri : DocumentUri
|
||||
version? : Option Int := none
|
||||
|
|
|
|||
4
stage0/src/Lean/Data/Lsp/InitShutdown.lean
generated
4
stage0/src/Lean/Data/Lsp/InitShutdown.lean
generated
|
|
@ -21,6 +21,10 @@ structure ClientInfo where
|
|||
version? : Option String := none
|
||||
deriving ToJson, FromJson
|
||||
|
||||
/--
|
||||
A TraceValue represents the level of verbosity with which the server systematically reports its execution trace using `$/logTrace` notifications.
|
||||
[reference](https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#traceValue)
|
||||
-/
|
||||
inductive Trace where
|
||||
| off
|
||||
| messages
|
||||
|
|
|
|||
4
stage0/src/Lean/Data/RBMap.lean
generated
4
stage0/src/Lean/Data/RBMap.lean
generated
|
|
@ -336,7 +336,7 @@ instance [Repr α] [Repr β] : Repr (RBMap α β cmp) where
|
|||
@[inline] def lowerBound : RBMap α β cmp → α → Option (Sigma (fun (_ : α) => β))
|
||||
| ⟨t, _⟩, x => t.lowerBound cmp x none
|
||||
|
||||
/-- Returns true if the given key `a` is in the RBMap.-/
|
||||
/-- Returns true if the given key `a` is in the RBMap. -/
|
||||
@[inline] def contains (t : RBMap α β cmp) (a : α) : Bool :=
|
||||
(t.find? a).isSome
|
||||
|
||||
|
|
@ -371,7 +371,7 @@ def maxDepth (t : RBMap α β cmp) : Nat :=
|
|||
| some p => p
|
||||
| none => panic! "map is empty"
|
||||
|
||||
/-- Attempts to find the value with key `k : α` in `t` and panics if there is no such key.-/
|
||||
/-- Attempts to find the value with key `k : α` in `t` and panics if there is no such key. -/
|
||||
@[inline] def find! [Inhabited β] (t : RBMap α β cmp) (k : α) : β :=
|
||||
match t.find? k with
|
||||
| some b => b
|
||||
|
|
|
|||
2
stage0/src/Lean/Elab/AuxDef.lean
generated
2
stage0/src/Lean/Elab/AuxDef.lean
generated
|
|
@ -28,5 +28,5 @@ def elabAuxDef : CommandElab
|
|||
let id := id.replacePrefix ns Name.anonymous -- TODO: replace with def _root_.id
|
||||
elabCommand <|
|
||||
← `($[$doc?:docComment]? $[$attrs?:attributes]?
|
||||
def $(mkIdentFrom (mkNullNode suggestion) id):ident : $ty := $body)
|
||||
def $(mkIdentFrom (mkNullNode suggestion) id (canonical := true)):ident : $ty := $body)
|
||||
| _ => throwUnsupportedSyntax
|
||||
|
|
|
|||
4
stage0/src/Lean/Elab/Binders.lean
generated
4
stage0/src/Lean/Elab/Binders.lean
generated
|
|
@ -27,7 +27,7 @@ private def expandBinderType (ref : Syntax) (stx : Syntax) : Syntax :=
|
|||
/-- Given syntax of the form `ident <|> hole`, return `ident`. If `hole`, then we create a new anonymous name. -/
|
||||
private def expandBinderIdent (stx : Syntax) : TermElabM Syntax :=
|
||||
match stx with
|
||||
| `(_) => mkFreshIdent stx
|
||||
| `(_) => mkFreshIdent stx (canonical := true)
|
||||
| _ => pure stx
|
||||
|
||||
/-- Given syntax of the form `(ident >> " : ")?`, return `ident`, or a new instance name. -/
|
||||
|
|
@ -715,7 +715,7 @@ def elabLetDeclCore (stx : Syntax) (expectedType? : Option Expr) (useLetExpr : B
|
|||
let val := letDecl[4]
|
||||
if pat.getKind == ``Parser.Term.hole then
|
||||
-- `let _ := ...` should not be treated at a `letIdDecl`
|
||||
let id := mkIdentFrom pat `_
|
||||
let id ← mkFreshIdent pat (canonical := true)
|
||||
let type := expandOptType id optType
|
||||
elabLetDeclAux id #[] type val body expectedType? useLetExpr elabBodyFirst usedLetOnly
|
||||
else
|
||||
|
|
|
|||
15
stage0/src/Lean/Elab/BuiltinNotation.lean
generated
15
stage0/src/Lean/Elab/BuiltinNotation.lean
generated
|
|
@ -49,14 +49,14 @@ open Meta
|
|||
if args.size < numExplicitFields then
|
||||
throwError "invalid constructor ⟨...⟩, insufficient number of arguments, constructs '{ctor}' has #{numExplicitFields} explicit fields, but only #{args.size} provided"
|
||||
let newStx ← if args.size == numExplicitFields then
|
||||
`($(mkCIdentFrom stx ctor) $(args)*)
|
||||
`($(mkCIdentFrom stx ctor (canonical := true)) $(args)*)
|
||||
else if numExplicitFields == 0 then
|
||||
throwError "invalid constructor ⟨...⟩, insufficient number of arguments, constructs '{ctor}' does not have explicit fields, but #{args.size} provided"
|
||||
else
|
||||
let extra := args[numExplicitFields-1:args.size]
|
||||
let newLast ← `(⟨$[$extra],*⟩)
|
||||
let newArgs := args[0:numExplicitFields-1].toArray.push newLast
|
||||
`($(mkCIdentFrom stx ctor) $(newArgs)*)
|
||||
`($(mkCIdentFrom stx ctor (canonical := true)) $(newArgs)*)
|
||||
withMacroExpansion stx newStx $ elabTerm newStx expectedType?
|
||||
| _ => throwError "invalid constructor ⟨...⟩, expected type must be an inductive type with only one constructor {indentExpr expectedType}")
|
||||
| none => throwError "invalid constructor ⟨...⟩, expected type must be known"
|
||||
|
|
@ -74,19 +74,18 @@ open Meta
|
|||
| _ => Macro.throwUnsupported
|
||||
|
||||
@[builtinMacro Lean.Parser.Term.have] def expandHave : Macro := fun stx =>
|
||||
let thisId := mkIdentFrom stx `this
|
||||
match stx with
|
||||
| `(have $x $bs* $[: $type]? := $val; $body) => `(let_fun $x $bs* $[: $type]? := $val; $body)
|
||||
| `(have $[: $type]? := $val; $body) => `(have $thisId $[: $type]? := $val; $body)
|
||||
| `(have%$tk $[: $type]? := $val; $body) => `(have $(mkIdentFrom tk `this (canonical := true)) $[: $type]? := $val; $body)
|
||||
| `(have $x $bs* $[: $type]? $alts; $body) => `(let_fun $x $bs* $[: $type]? $alts; $body)
|
||||
| `(have $[: $type]? $alts:matchAlts; $body) => `(have $thisId $[: $type]? $alts:matchAlts; $body)
|
||||
| `(have%$tk $[: $type]? $alts:matchAlts; $body) => `(have $(mkIdentFrom tk `this (canonical := true)) $[: $type]? $alts:matchAlts; $body)
|
||||
| `(have $pattern:term $[: $type]? := $val:term; $body) => `(let_fun $pattern:term $[: $type]? := $val:term ; $body)
|
||||
| _ => Macro.throwUnsupported
|
||||
|
||||
@[builtinMacro Lean.Parser.Term.suffices] def expandSuffices : Macro
|
||||
| `(suffices $[$x :]? $type from $val; $body) => `(have $[$x]? : $type := $body; $val)
|
||||
| `(suffices $[$x :]? $type by%$b $tac:tacticSeq; $body) => `(have $[$x]? : $type := $body; by%$b $tac)
|
||||
| _ => Macro.throwUnsupported
|
||||
| `(suffices%$tk $[$x :]? $type from $val; $body) => `(have%$tk $[$x]? : $type := $body; $val)
|
||||
| `(suffices%$tk $[$x :]? $type by%$b $tac:tacticSeq; $body) => `(have%$tk $[$x]? : $type := $body; by%$b $tac)
|
||||
| _ => Macro.throwUnsupported
|
||||
|
||||
open Lean.Parser in
|
||||
private def elabParserMacroAux (prec e : Term) (withAnonymousAntiquot : Bool) : TermElabM Syntax := do
|
||||
|
|
|
|||
19
stage0/src/Lean/Elab/Deriving/FromToJson.lean
generated
19
stage0/src/Lean/Elab/Deriving/FromToJson.lean
generated
|
|
@ -103,24 +103,29 @@ where
|
|||
|
||||
def mkFromJsonInstanceHandler (declNames : Array Name) : CommandElabM Bool := do
|
||||
if declNames.size == 1 then
|
||||
if isStructure (← getEnv) declNames[0]! then
|
||||
let declName := declNames[0]!
|
||||
if isStructure (← getEnv) declName then
|
||||
let cmds ← liftTermElabM do
|
||||
let ctx ← mkContext "fromJson" declNames[0]!
|
||||
let ctx ← mkContext "fromJson" declName
|
||||
let header ← mkHeader ``FromJson 0 ctx.typeInfos[0]!
|
||||
let fields := getStructureFieldsFlattened (← getEnv) declNames[0]! (includeSubobjectFields := false)
|
||||
let jsonFields := fields.map (Prod.snd ∘ mkJsonField)
|
||||
let fields := getStructureFieldsFlattened (← getEnv) declName (includeSubobjectFields := false)
|
||||
let getters ← fields.mapM (fun field => do
|
||||
let getter ← `(getObjValAs? j _ $(Prod.snd <| mkJsonField field))
|
||||
let getter ← `(doElem| Except.mapError (fun s => (toString $(quote declName)) ++ "." ++ (toString $(quote field)) ++ ": " ++ s) <| $getter)
|
||||
return getter
|
||||
)
|
||||
let fields := fields.map mkIdent
|
||||
let cmd ← `(private def $(mkIdent ctx.auxFunNames[0]!):ident $header.binders:bracketedBinder* (j : Json)
|
||||
: Except String $(← mkInductiveApp ctx.typeInfos[0]! header.argNames) := do
|
||||
$[let $fields:ident ← getObjValAs? j _ $jsonFields]*
|
||||
$[let $fields:ident ← $getters]*
|
||||
return { $[$fields:ident := $(id fields)],* })
|
||||
return #[cmd] ++ (← mkInstanceCmds ctx ``FromJson declNames)
|
||||
cmds.forM elabCommand
|
||||
return true
|
||||
else
|
||||
let indVal ← getConstInfoInduct declNames[0]!
|
||||
let indVal ← getConstInfoInduct declName
|
||||
let cmds ← liftTermElabM do
|
||||
let ctx ← mkContext "fromJson" declNames[0]!
|
||||
let ctx ← mkContext "fromJson" declName
|
||||
let header ← mkHeader ``FromJson 0 ctx.typeInfos[0]!
|
||||
let fromJsonFuncId := mkIdent ctx.auxFunNames[0]!
|
||||
let alts ← mkAlts indVal fromJsonFuncId
|
||||
|
|
|
|||
2
stage0/src/Lean/Elab/ElabRules.lean
generated
2
stage0/src/Lean/Elab/ElabRules.lean
generated
|
|
@ -96,7 +96,7 @@ def elabElab : CommandElab
|
|||
let name ← match name? with
|
||||
| some name => pure name.getId
|
||||
| none => liftMacroM <| mkNameFromParserSyntax cat.getId (mkNullNode stxParts)
|
||||
let nameId := name?.getD (mkIdentFrom tk name)
|
||||
let nameId := name?.getD (mkIdentFrom tk name (canonical := true))
|
||||
let pat := ⟨mkNode ((← getCurrNamespace) ++ name) patArgs⟩
|
||||
elabCommand <|← `(
|
||||
$[$doc?:docComment]? $[@[$attrs?,*]]? $attrKind:attrKind
|
||||
|
|
|
|||
5
stage0/src/Lean/Elab/Macro.lean
generated
5
stage0/src/Lean/Elab/Macro.lean
generated
|
|
@ -25,7 +25,10 @@ open Lean.Parser.Command
|
|||
So, we must include current namespace when we create a pattern for the following `macro_rules` commands. -/
|
||||
let pat := ⟨mkNode ((← getCurrNamespace) ++ name) patArgs⟩
|
||||
let stxCmd ← `($[$doc?:docComment]? $[@[$attrs?,*]]? $attrKind:attrKind
|
||||
syntax$[:$prec?]? (name := $(name?.getD (mkIdentFrom tk name))) (priority := $(quote prio):num) $[$stxParts]* : $cat)
|
||||
syntax$[:$prec?]?
|
||||
(name := $(name?.getD (mkIdentFrom tk name (canonical := true))))
|
||||
(priority := $(quote prio):num)
|
||||
$[$stxParts]* : $cat)
|
||||
let rhs := rhs.raw
|
||||
let macroRulesCmd ← if rhs.getArgs.size == 1 then
|
||||
-- `rhs` is a `term`
|
||||
|
|
|
|||
7
stage0/src/Lean/Elab/MacroArgUtil.lean
generated
7
stage0/src/Lean/Elab/MacroArgUtil.lean
generated
|
|
@ -20,13 +20,12 @@ partial def expandMacroArg (stx : TSyntax ``macroArg) : CommandElabM (TSyntax `s
|
|||
where
|
||||
mkSyntaxAndPat (id? : Option Ident) (id : Term) (stx : TSyntax `stx) := do
|
||||
let pat ← match stx with
|
||||
| `(stx| $s:str) => pure ⟨mkNode `token_antiquot #[← liftMacroM <| strLitToPattern s, mkAtom "%", mkAtom "$", id]⟩
|
||||
| `(stx| $s:str)
|
||||
| `(stx| &$s:str) => pure ⟨mkNode `token_antiquot #[← liftMacroM <| strLitToPattern s, mkAtom "%", mkAtom "$", id]⟩
|
||||
| `(stx| optional($stx)) => mkSplicePat `optional stx id "?"
|
||||
| `(stx| many($stx)) => mkSplicePat `many stx id "*"
|
||||
| `(stx| many($stx))
|
||||
| `(stx| many1($stx)) => mkSplicePat `many stx id "*"
|
||||
| `(stx| sepBy($stx, $sep:str $[, $stxsep]? $[, allowTrailingSep]?)) =>
|
||||
mkSplicePat `sepBy stx id ((isStrLit? sep).get! ++ "*")
|
||||
| `(stx| sepBy($stx, $sep:str $[, $stxsep]? $[, allowTrailingSep]?))
|
||||
| `(stx| sepBy1($stx, $sep:str $[, $stxsep]? $[, allowTrailingSep]?)) =>
|
||||
mkSplicePat `sepBy stx id ((isStrLit? sep).get! ++ "*")
|
||||
-- NOTE: all `interpolatedStr(·)` reuse the same node kind
|
||||
|
|
|
|||
4
stage0/src/Lean/Elab/MacroRules.lean
generated
4
stage0/src/Lean/Elab/MacroRules.lean
generated
|
|
@ -43,7 +43,7 @@ def elabMacroRulesAux (doc? : Option (TSyntax ``docComment))
|
|||
| some attrs => attrs.getElems.push attr
|
||||
| none => #[attr]
|
||||
`($[$doc?:docComment]? @[$attrs,*]
|
||||
aux_def macroRules $(mkIdentFrom tk k) : Macro :=
|
||||
aux_def macroRules $(mkIdentFrom tk k (canonical := true)) : Macro :=
|
||||
fun $alts:matchAlt* | _ => no_error_if_unused% throw Lean.Macro.Exception.unsupportedSyntax)
|
||||
|
||||
@[builtinCommandElab «macro_rules»] def elabMacroRules : CommandElab :=
|
||||
|
|
@ -60,7 +60,7 @@ def elabMacroRulesAux (doc? : Option (TSyntax ``docComment))
|
|||
| some attrs => attrs.getElems.push attr
|
||||
| none => #[attr]
|
||||
`($[$doc?:docComment]? @[$attrs,*]
|
||||
aux_def $(mkIdentFrom tk kind.getId) $kind : Macro := fun $x:ident => $rhs)
|
||||
aux_def $(mkIdentFrom tk kind.getId (canonical := true)) $kind : Macro := fun $x:ident => $rhs)
|
||||
| `($[$doc?:docComment]? $[@[$attrs?,*]]? $attrKind:attrKind macro_rules%$tk (kind := $kind) $alts:matchAlt*) =>
|
||||
withRef (mkNullNode #[tk, mkNullNode alts]) do
|
||||
elabMacroRulesAux doc? attrs? attrKind tk (← resolveSyntaxKind kind.getId) alts
|
||||
|
|
|
|||
5
stage0/src/Lean/Elab/Quotation.lean
generated
5
stage0/src/Lean/Elab/Quotation.lean
generated
|
|
@ -133,7 +133,7 @@ private partial def quoteSyntax : Syntax → TermElabM Term
|
|||
`(@TSyntax.raw $(quote <| ks.map (·.1)) $(getAntiquotTerm (getCanonicalAntiquot stx)))
|
||||
else if isTokenAntiquot stx && !isEscapedAntiquot stx then
|
||||
match stx[0] with
|
||||
| Syntax.atom _ val => `(Syntax.atom (SourceInfo.fromRef $(getAntiquotTerm stx)) $(quote val))
|
||||
| Syntax.atom _ val => `(Syntax.atom (SourceInfo.fromRef $(getAntiquotTerm stx) (canonical := true)) $(quote val))
|
||||
| _ => throwErrorAt stx "expected token"
|
||||
else if isAntiquotSuffixSplice stx && !isEscapedAntiquot (getCanonicalAntiquot (getAntiquotSuffixSpliceInner stx)) then
|
||||
-- splices must occur in a `many` node
|
||||
|
|
@ -194,8 +194,7 @@ def addNamedQuotInfo (stx : Syntax) (k : SyntaxNodeKind) : TermElabM SyntaxNodeK
|
|||
if s.length > 3 then
|
||||
if let (some l, some r) := (stx[0].getPos? true, stx[0].getTailPos? true) then
|
||||
-- HACK: The atom is the string "`(foo|", so chop off the edges.
|
||||
-- HACK: We have to use .original here or the hover won't show up
|
||||
let name := stx[0].setInfo <| .original default ⟨l.1 + 2⟩ default ⟨r.1 - 1⟩
|
||||
let name := stx[0].setInfo <| .synthetic ⟨l.1 + 2⟩ ⟨r.1 - 1⟩ (canonical := true)
|
||||
tryAddSyntaxNodeKindInfo name k
|
||||
pure k
|
||||
|
||||
|
|
|
|||
2
stage0/src/Lean/Elab/Structure.lean
generated
2
stage0/src/Lean/Elab/Structure.lean
generated
|
|
@ -824,7 +824,7 @@ private def elabStructureView (view : StructView) : TermElabM Unit := do
|
|||
pure (info.isSubobject && decl.binderInfo.isInstImplicit)
|
||||
withSaveInfoContext do -- save new env
|
||||
Term.addLocalVarInfo view.ref[1] (← mkConstWithLevelParams view.declName)
|
||||
if let some _ := view.ctor.ref[1].getPos? (originalOnly := true) then
|
||||
if let some _ := view.ctor.ref[1].getPos? (canonicalOnly := true) then
|
||||
Term.addTermInfo' view.ctor.ref[1] (← mkConstWithLevelParams view.ctor.declName) (isBinder := true)
|
||||
for field in view.fields do
|
||||
-- may not exist if overriding inherited field
|
||||
|
|
|
|||
4
stage0/src/Lean/Elab/Syntax.lean
generated
4
stage0/src/Lean/Elab/Syntax.lean
generated
|
|
@ -280,7 +280,7 @@ private def declareSyntaxCatQuotParser (catName : Name) : CommandElabM Unit := d
|
|||
let attrName := catName.appendAfter "Parser"
|
||||
let catDeclName := ``Lean.Parser.Category ++ catName
|
||||
setEnv (← Parser.registerParserCategory (← getEnv) attrName catName catBehavior catDeclName)
|
||||
let cmd ← `($[$docString?]? def $(mkIdentFrom stx[2] (`_root_ ++ catDeclName)) : Lean.Parser.Category := {})
|
||||
let cmd ← `($[$docString?]? def $(mkIdentFrom stx[2] (`_root_ ++ catDeclName) (canonical := true)) : Lean.Parser.Category := {})
|
||||
declareSyntaxCatQuotParser catName
|
||||
elabCommand cmd
|
||||
|
||||
|
|
@ -362,7 +362,7 @@ def resolveSyntaxKind (k : Name) : CommandElabM Name := do
|
|||
let stxNodeKind := (← getCurrNamespace) ++ name
|
||||
let catParserId := mkIdentFrom idRef (cat.appendAfter "Parser")
|
||||
let (val, lhsPrec?) ← runTermElabM fun _ => Term.toParserDescr syntaxParser cat
|
||||
let declName := name?.getD (mkIdentFrom idRef name)
|
||||
let declName := name?.getD (mkIdentFrom idRef name (canonical := true))
|
||||
let attrInstance ← `(attrInstance| $attrKind:attrKind $catParserId:ident $(quote prio):num)
|
||||
let attrInstances := attrInstances.getD { elemsAndSeps := #[] }
|
||||
let attrInstances := attrInstances.push attrInstance
|
||||
|
|
|
|||
33
stage0/src/Lean/Elab/Tactic/Conv/Basic.lean
generated
33
stage0/src/Lean/Elab/Tactic/Conv/Basic.lean
generated
|
|
@ -12,20 +12,31 @@ import Lean.Elab.Tactic.BuiltinTactic
|
|||
namespace Lean.Elab.Tactic.Conv
|
||||
open Meta
|
||||
|
||||
/--
|
||||
Annotate `e` with the LHS annotation. The delaborator displays
|
||||
expressions of the form `lhs = rhs` as `lhs` when they have this annotation.
|
||||
This is used to implement the infoview for the `conv` mode.
|
||||
-/
|
||||
def mkLHSGoal (e : Expr) : MetaM Expr :=
|
||||
if let some _ := Expr.eq? e then
|
||||
return mkLHSGoalRaw e
|
||||
else
|
||||
return mkLHSGoalRaw (← whnf e)
|
||||
|
||||
/-- Given `lhs`, returns a pair of metavariables `(?rhs, ?newGoal)`
|
||||
where `?newGoal : lhs = ?rhs`.-/
|
||||
def mkConvGoalFor (lhs : Expr) : MetaM (Expr × Expr) := do
|
||||
where `?newGoal : lhs = ?rhs`. `tag` is the name of `newGoal`. -/
|
||||
def mkConvGoalFor (lhs : Expr) (tag : Name := .anonymous) : MetaM (Expr × Expr) := do
|
||||
let lhsType ← inferType lhs
|
||||
let rhs ← mkFreshExprMVar lhsType
|
||||
let targetNew := mkLHSGoal (← mkEq lhs rhs)
|
||||
let newGoal ← mkFreshExprSyntheticOpaqueMVar targetNew
|
||||
let targetNew := mkLHSGoalRaw (← mkEq lhs rhs)
|
||||
let newGoal ← mkFreshExprSyntheticOpaqueMVar targetNew tag
|
||||
return (rhs, newGoal)
|
||||
|
||||
def markAsConvGoal (mvarId : MVarId) : MetaM MVarId := do
|
||||
let target ← mvarId.getType
|
||||
if isLHSGoal? target |>.isSome then
|
||||
return mvarId -- it is already tagged as LHS goal
|
||||
mvarId.replaceTargetDefEq (mkLHSGoal (← mvarId.getType))
|
||||
mvarId.replaceTargetDefEq (← mkLHSGoal (← mvarId.getType))
|
||||
|
||||
/-- Given `lhs`, runs the `conv` tactic with the goal `⊢ lhs = ?rhs`.
|
||||
`conv` should produce no remaining goals that are not solvable with refl.
|
||||
|
|
@ -62,16 +73,17 @@ def getRhs : TacticM Expr :=
|
|||
|
||||
/-- `⊢ lhs = rhs` ~~> `⊢ lhs' = rhs` using `h : lhs = lhs'`. -/
|
||||
def updateLhs (lhs' : Expr) (h : Expr) : TacticM Unit := do
|
||||
let mvarId ← getMainGoal
|
||||
let rhs ← getRhs
|
||||
let newGoal ← mkFreshExprSyntheticOpaqueMVar (mkLHSGoal (← mkEq lhs' rhs))
|
||||
(← getMainGoal).assign (← mkEqTrans h newGoal)
|
||||
let newGoal ← mkFreshExprSyntheticOpaqueMVar (mkLHSGoalRaw (← mkEq lhs' rhs)) (← mvarId.getTag)
|
||||
mvarId.assign (← mkEqTrans h newGoal)
|
||||
replaceMainGoal [newGoal.mvarId!]
|
||||
|
||||
/-- Replace `lhs` with the definitionally equal `lhs'`. -/
|
||||
def changeLhs (lhs' : Expr) : TacticM Unit := do
|
||||
let rhs ← getRhs
|
||||
liftMetaTactic1 fun mvarId => do
|
||||
mvarId.replaceTargetDefEq (mkLHSGoal (← mkEq lhs' rhs))
|
||||
mvarId.replaceTargetDefEq (mkLHSGoalRaw (← mkEq lhs' rhs))
|
||||
|
||||
@[builtinTactic Lean.Parser.Tactic.Conv.whnf] def evalWhnf : Tactic := fun _ =>
|
||||
withMainContext do
|
||||
|
|
@ -124,7 +136,7 @@ def remarkAsConvGoal : TacticM Unit := do
|
|||
let target ← mvarId.getType
|
||||
if let some (_, _, rhs) ← matchEq? target then
|
||||
if rhs.getAppFn.isMVar then
|
||||
mvarId.replaceTargetDefEq (mkLHSGoal target)
|
||||
mvarId.replaceTargetDefEq (← mkLHSGoal target)
|
||||
else
|
||||
return mvarId
|
||||
else
|
||||
|
|
@ -143,6 +155,9 @@ def remarkAsConvGoal : TacticM Unit := do
|
|||
mvarId.replaceTargetDefEq target.mdataExpr!
|
||||
focus do evalTactic seq; remarkAsConvGoal
|
||||
|
||||
@[builtinTactic Lean.Parser.Tactic.Conv.convTactic] def evalConvTactic : Tactic := fun stx =>
|
||||
evalTactic stx[2]
|
||||
|
||||
private def convTarget (conv : Syntax) : TacticM Unit := withMainContext do
|
||||
let target ← getMainTarget
|
||||
let (targetNew, proof) ← convert target (withTacticInfoContext (← getRef) (evalTactic conv))
|
||||
|
|
|
|||
15
stage0/src/Lean/Elab/Tactic/Conv/Congr.lean
generated
15
stage0/src/Lean/Elab/Tactic/Conv/Congr.lean
generated
|
|
@ -22,7 +22,9 @@ private def isImplies (e : Expr) : MetaM Bool :=
|
|||
else
|
||||
return false
|
||||
|
||||
def congr (mvarId : MVarId) (addImplicitArgs := false) : MetaM (List (Option MVarId)) := mvarId.withContext do
|
||||
def congr (mvarId : MVarId) (addImplicitArgs := false) (nameSubgoals := true) :
|
||||
MetaM (List (Option MVarId)) := mvarId.withContext do
|
||||
let origTag ← mvarId.getTag
|
||||
let (lhs, rhs) ← getLhsRhsCore mvarId
|
||||
let lhs := (← instantiateMVars lhs).cleanupAnnotations
|
||||
if (← isImplies lhs) then
|
||||
|
|
@ -47,7 +49,10 @@ def congr (mvarId : MVarId) (addImplicitArgs := false) : MetaM (List (Option MVa
|
|||
mvarIdsNew := mvarIdsNew.push none
|
||||
| .eq =>
|
||||
if addImplicitArgs || argInfo.isExplicit then
|
||||
let (rhs, mvarNew) ← mkConvGoalFor arg;
|
||||
let tag ← if nameSubgoals then
|
||||
pure (origTag ++ (← whnf (← inferType proof)).bindingName!)
|
||||
else pure origTag
|
||||
let (rhs, mvarNew) ← mkConvGoalFor arg tag
|
||||
proof := mkApp3 proof arg rhs mvarNew
|
||||
mvarIdsNew := mvarIdsNew.push (some mvarNew.mvarId!)
|
||||
else
|
||||
|
|
@ -89,11 +94,11 @@ private def selectIdx (tacticName : String) (mvarIds : List (Option MVarId)) (i
|
|||
@[builtinTactic Lean.Parser.Tactic.Conv.skip] def evalSkip : Tactic := fun _ => pure ()
|
||||
|
||||
@[builtinTactic Lean.Parser.Tactic.Conv.lhs] def evalLhs : Tactic := fun _ => do
|
||||
let mvarIds ← congr (← getMainGoal)
|
||||
let mvarIds ← congr (← getMainGoal) (nameSubgoals := false)
|
||||
selectIdx "lhs" mvarIds ((mvarIds.length : Int) - 2)
|
||||
|
||||
@[builtinTactic Lean.Parser.Tactic.Conv.rhs] def evalRhs : Tactic := fun _ => do
|
||||
let mvarIds ← congr (← getMainGoal)
|
||||
let mvarIds ← congr (← getMainGoal) (nameSubgoals := false)
|
||||
selectIdx "rhs" mvarIds ((mvarIds.length : Int) - 1)
|
||||
|
||||
@[builtinTactic Lean.Parser.Tactic.Conv.arg] def evalArg : Tactic := fun stx => do
|
||||
|
|
@ -103,7 +108,7 @@ private def selectIdx (tacticName : String) (mvarIds : List (Option MVarId)) (i
|
|||
if i == 0 then
|
||||
throwError "invalid 'arg' conv tactic, index must be greater than 0"
|
||||
let i := i - 1
|
||||
let mvarIds ← congr (← getMainGoal) (addImplicitArgs := tk?.isSome)
|
||||
let mvarIds ← congr (← getMainGoal) (addImplicitArgs := tk?.isSome) (nameSubgoals := false)
|
||||
selectIdx "arg" mvarIds i
|
||||
| _ => throwUnsupportedSyntax
|
||||
|
||||
|
|
|
|||
6
stage0/src/Lean/Elab/Tactic/Conv/Simp.lean
generated
6
stage0/src/Lean/Elab/Tactic/Conv/Simp.lean
generated
|
|
@ -1,7 +1,7 @@
|
|||
/-
|
||||
Copyright (c) 2021 Microsoft Corporation. All rights reserved.
|
||||
Released under Apache 2.0 license as described in the file LICENSE.
|
||||
Authors: Leonardo de Moura
|
||||
Authors: Leonardo de Moura, Moritz Doll
|
||||
-/
|
||||
import Lean.Elab.Tactic.Simp
|
||||
import Lean.Elab.Tactic.Split
|
||||
|
|
@ -25,4 +25,8 @@ def applySimpResult (result : Simp.Result) : TacticM Unit := do
|
|||
@[builtinTactic Lean.Parser.Tactic.Conv.simpMatch] def evalSimpMatch : Tactic := fun _ => withMainContext do
|
||||
applySimpResult (← Split.simpMatch (← getLhs))
|
||||
|
||||
@[builtinTactic Lean.Parser.Tactic.Conv.dsimp] def evalDSimp : Tactic := fun stx => withMainContext do
|
||||
let { ctx, .. } ← mkSimpContext stx (eraseLocal := false) (kind := .dsimp)
|
||||
changeLhs (← Lean.Meta.dsimp (← getLhs) ctx).1
|
||||
|
||||
end Lean.Elab.Tactic.Conv
|
||||
|
|
|
|||
4
stage0/src/Lean/Elab/Term.lean
generated
4
stage0/src/Lean/Elab/Term.lean
generated
|
|
@ -588,8 +588,8 @@ def mkFreshBinderName [Monad m] [MonadQuotation m] : m Name :=
|
|||
Auxiliary method for creating a `Syntax.ident` containing
|
||||
a fresh name. This method is intended for creating fresh binder names.
|
||||
It is just a thin layer on top of `mkFreshUserName`. -/
|
||||
def mkFreshIdent [Monad m] [MonadQuotation m] (ref : Syntax) : m Syntax :=
|
||||
return mkIdentFrom ref (← mkFreshBinderName)
|
||||
def mkFreshIdent [Monad m] [MonadQuotation m] (ref : Syntax) (canonical := false) : m Syntax :=
|
||||
return mkIdentFrom ref (← mkFreshBinderName) canonical
|
||||
|
||||
private def applyAttributesCore
|
||||
(declName : Name) (attrs : Array Attribute)
|
||||
|
|
|
|||
5
stage0/src/Lean/Environment.lean
generated
5
stage0/src/Lean/Environment.lean
generated
|
|
@ -423,12 +423,15 @@ def addEntry {α β σ : Type} (ext : PersistentEnvExtension α β σ) (env : En
|
|||
let state := ext.addEntryFn s.state b;
|
||||
{ s with state := state }
|
||||
|
||||
/-- Get the current state of the given extension in the given environment. -/
|
||||
def getState {α β σ : Type} [Inhabited σ] (ext : PersistentEnvExtension α β σ) (env : Environment) : σ :=
|
||||
(ext.toEnvExtension.getState env).state
|
||||
|
||||
/-- Set the current state of the given extension in the given environment. This change is *not* persisted across files. -/
|
||||
def setState {α β σ : Type} (ext : PersistentEnvExtension α β σ) (env : Environment) (s : σ) : Environment :=
|
||||
ext.toEnvExtension.modifyState env fun ps => { ps with state := s }
|
||||
|
||||
/-- Modify the state of the given extension in the given environment by applying the given function. This change is *not* persisted across files. -/
|
||||
def modifyState {α β σ : Type} (ext : PersistentEnvExtension α β σ) (env : Environment) (f : σ → σ) : Environment :=
|
||||
ext.toEnvExtension.modifyState env fun ps => { ps with state := f (ps.state) }
|
||||
|
||||
|
|
@ -505,9 +508,11 @@ def getEntries {α σ : Type} [Inhabited σ] (ext : SimplePersistentEnvExtension
|
|||
def getState {α σ : Type} [Inhabited σ] (ext : SimplePersistentEnvExtension α σ) (env : Environment) : σ :=
|
||||
(PersistentEnvExtension.getState ext env).2
|
||||
|
||||
/-- Set the current state of the given `SimplePersistentEnvExtension`. This change is *not* persisted across files. -/
|
||||
def setState {α σ : Type} (ext : SimplePersistentEnvExtension α σ) (env : Environment) (s : σ) : Environment :=
|
||||
PersistentEnvExtension.modifyState ext env (fun ⟨entries, _⟩ => (entries, s))
|
||||
|
||||
/-- Modify the state of the given extension in the given environment by applying the given function. This change is *not* persisted across files. -/
|
||||
def modifyState {α σ : Type} (ext : SimplePersistentEnvExtension α σ) (env : Environment) (f : σ → σ) : Environment :=
|
||||
PersistentEnvExtension.modifyState ext env (fun ⟨entries, s⟩ => (entries, f s))
|
||||
|
||||
|
|
|
|||
6
stage0/src/Lean/Expr.lean
generated
6
stage0/src/Lean/Expr.lean
generated
|
|
@ -1774,11 +1774,13 @@ def patternAnnotation? (e : Expr) : Option Expr :=
|
|||
Annotate `e` with the LHS annotation. The delaborator displays
|
||||
expressions of the form `lhs = rhs` as `lhs` when they have this annotation.
|
||||
This is used to implement the infoview for the `conv` mode.
|
||||
|
||||
This version of `mkLHSGoal` does not check that the argument is an equality.
|
||||
-/
|
||||
def mkLHSGoal (e : Expr) : Expr :=
|
||||
def mkLHSGoalRaw (e : Expr) : Expr :=
|
||||
mkAnnotation `_lhsGoal e
|
||||
|
||||
/-- Return `some lhs` if `e = mkLHGoal e'`, where `e'` is of the form `lhs = rhs`. -/
|
||||
/-- Return `some lhs` if `e = mkLHSGoal e'`, where `e'` is of the form `lhs = rhs`. -/
|
||||
def isLHSGoal? (e : Expr) : Option Expr :=
|
||||
match annotation? `_lhsGoal e with
|
||||
| none => none
|
||||
|
|
|
|||
1
stage0/src/Lean/Linter/UnusedVariables.lean
generated
1
stage0/src/Lean/Linter/UnusedVariables.lean
generated
|
|
@ -102,7 +102,6 @@ builtin_initialize addBuiltinUnusedVariablesIgnoreFn (fun _ stack opts =>
|
|||
(stx.isOfKind ``Lean.Parser.Term.matchAlt && pos == 1) ||
|
||||
(stx.isOfKind ``Lean.Parser.Tactic.inductionAltLHS && pos == 2))
|
||||
|
||||
|
||||
builtin_initialize unusedVariablesIgnoreFnsExt : SimplePersistentEnvExtension Name Unit ←
|
||||
registerSimplePersistentEnvExtension {
|
||||
name := `unusedVariablesIgnoreFns
|
||||
|
|
|
|||
7
stage0/src/Lean/LocalContext.lean
generated
7
stage0/src/Lean/LocalContext.lean
generated
|
|
@ -203,7 +203,6 @@ def erase (lctx : LocalContext) (fvarId : FVarId) : LocalContext :=
|
|||
| none => lctx
|
||||
| some decl => { fvarIdToDecl := map.erase fvarId, decls := popTailNoneAux (decls.set decl.index none) }
|
||||
|
||||
@[export lean_local_ctx_pop]
|
||||
def pop (lctx : LocalContext): LocalContext :=
|
||||
match lctx with
|
||||
| { fvarIdToDecl := map, decls := decls } =>
|
||||
|
|
@ -212,14 +211,12 @@ def pop (lctx : LocalContext): LocalContext :=
|
|||
| none => lctx -- unreachable
|
||||
| some decl => { fvarIdToDecl := map.erase decl.fvarId, decls := popTailNoneAux decls.pop }
|
||||
|
||||
@[export lean_local_ctx_find_from_user_name]
|
||||
def findFromUserName? (lctx : LocalContext) (userName : Name) : Option LocalDecl :=
|
||||
lctx.decls.findSomeRev? fun decl =>
|
||||
match decl with
|
||||
| none => none
|
||||
| some decl => if decl.userName == userName then some decl else none
|
||||
|
||||
@[export lean_local_ctx_uses_user_name]
|
||||
def usesUserName (lctx : LocalContext) (userName : Name) : Bool :=
|
||||
(lctx.findFromUserName? userName).isSome
|
||||
|
||||
|
|
@ -228,13 +225,11 @@ private partial def getUnusedNameAux (lctx : LocalContext) (suggestion : Name) (
|
|||
if lctx.usesUserName curr then getUnusedNameAux lctx suggestion (i + 1)
|
||||
else (curr, i + 1)
|
||||
|
||||
@[export lean_local_ctx_get_unused_name]
|
||||
def getUnusedName (lctx : LocalContext) (suggestion : Name) : Name :=
|
||||
let suggestion := suggestion.eraseMacroScopes
|
||||
if lctx.usesUserName suggestion then (getUnusedNameAux lctx suggestion 1).1
|
||||
else suggestion
|
||||
|
||||
@[export lean_local_ctx_last_decl]
|
||||
def lastDecl (lctx : LocalContext) : Option LocalDecl :=
|
||||
lctx.decls.get! (lctx.decls.size - 1)
|
||||
|
||||
|
|
@ -244,7 +239,6 @@ def setUserName (lctx : LocalContext) (fvarId : FVarId) (userName : Name) : Loca
|
|||
{ fvarIdToDecl := lctx.fvarIdToDecl.insert decl.fvarId decl,
|
||||
decls := lctx.decls.set decl.index decl }
|
||||
|
||||
@[export lean_local_ctx_rename_user_name]
|
||||
def renameUserName (lctx : LocalContext) (fromName : Name) (toName : Name) : LocalContext :=
|
||||
match lctx with
|
||||
| { fvarIdToDecl := map, decls := decls } =>
|
||||
|
|
@ -276,7 +270,6 @@ def setBinderInfo (lctx : LocalContext) (fvarId : FVarId) (bi : BinderInfo) : Lo
|
|||
def numIndices (lctx : LocalContext) : Nat :=
|
||||
lctx.decls.size
|
||||
|
||||
@[export lean_local_ctx_get]
|
||||
def getAt? (lctx : LocalContext) (i : Nat) : Option LocalDecl :=
|
||||
lctx.decls.get! i
|
||||
|
||||
|
|
|
|||
47
stage0/src/Lean/Message.lean
generated
47
stage0/src/Lean/Message.lean
generated
|
|
@ -29,11 +29,15 @@ structure MessageDataContext where
|
|||
lctx : LocalContext
|
||||
opts : Options
|
||||
|
||||
/-- A naming context is the information needed to shorten names in pretty printing.
|
||||
|
||||
It gives the current namespace and the list of open declarations.
|
||||
-/
|
||||
structure NamingContext where
|
||||
currNamespace : Name
|
||||
openDecls : List OpenDecl
|
||||
|
||||
/- Structure message data. We use it for reporting errors, trace messages, etc. -/
|
||||
/-- Structured message data. We use it for reporting errors, trace messages, etc. -/
|
||||
inductive MessageData where
|
||||
| ofFormat : Format → MessageData
|
||||
| ofSyntax : Syntax → MessageData
|
||||
|
|
@ -41,17 +45,17 @@ inductive MessageData where
|
|||
| ofLevel : Level → MessageData
|
||||
| ofName : Name → MessageData
|
||||
| ofGoal : MVarId → MessageData
|
||||
/- `withContext ctx d` specifies the pretty printing context `(env, mctx, lctx, opts)` for the nested expressions in `d`. -/
|
||||
| withContext : MessageDataContext → MessageData → MessageData
|
||||
/-- `withContext ctx d` specifies the pretty printing context `(env, mctx, lctx, opts)` for the nested expressions in `d`. -/
|
||||
| withContext : MessageDataContext → MessageData → MessageData
|
||||
| withNamingContext : NamingContext → MessageData → MessageData
|
||||
/- Lifted `Format.nest` -/
|
||||
| nest : Nat → MessageData → MessageData
|
||||
/- Lifted `Format.group` -/
|
||||
| group : MessageData → MessageData
|
||||
/- Lifted `Format.compose` -/
|
||||
| compose : MessageData → MessageData → MessageData
|
||||
/- Tagged sections. `Name` should be viewed as a "kind", and is used by `MessageData` inspector functions.
|
||||
Example: an inspector that tries to find "definitional equality failures" may look for the tag "DefEqFailure". -/
|
||||
/-- Lifted `Format.nest` -/
|
||||
| nest : Nat → MessageData → MessageData
|
||||
/-- Lifted `Format.group` -/
|
||||
| group : MessageData → MessageData
|
||||
/-- Lifted `Format.compose` -/
|
||||
| compose : MessageData → MessageData → MessageData
|
||||
/-- Tagged sections. `Name` should be viewed as a "kind", and is used by `MessageData` inspector functions.
|
||||
Example: an inspector that tries to find "definitional equality failures" may look for the tag "DefEqFailure". -/
|
||||
| tagged : Name → MessageData → MessageData
|
||||
| trace (cls : Name) (msg : MessageData) (children : Array MessageData)
|
||||
(collapsed : Bool := false)
|
||||
|
|
@ -59,7 +63,8 @@ inductive MessageData where
|
|||
|
||||
namespace MessageData
|
||||
|
||||
partial def isEmpty : MessageData → Bool
|
||||
/-- Determines whether the message contains any content. -/
|
||||
def isEmpty : MessageData → Bool
|
||||
| ofFormat f => f.isEmpty
|
||||
| withContext _ m => m.isEmpty
|
||||
| withNamingContext _ m => m.isEmpty
|
||||
|
|
@ -69,7 +74,7 @@ partial def isEmpty : MessageData → Bool
|
|||
| tagged _ m => m.isEmpty
|
||||
| _ => false
|
||||
|
||||
/- Instantiate metavariables occurring in nexted `ofExpr` constructors.
|
||||
/-- Instantiate metavariables occurring in nexted `ofExpr` constructors.
|
||||
It uses the surrounding `MetavarContext` at `withContext` constructors.
|
||||
-/
|
||||
partial def instantiateMVars (msg : MessageData) : MessageData :=
|
||||
|
|
@ -88,6 +93,7 @@ where
|
|||
| _ => msg
|
||||
|
||||
variable (p : Name → Bool) in
|
||||
/-- Returns true when the message contains a `MessageData.tagged tag ..` constructor where `p tag` is true. -/
|
||||
partial def hasTag : MessageData → Bool
|
||||
| withContext _ msg => hasTag msg
|
||||
| withNamingContext _ msg => hasTag msg
|
||||
|
|
@ -98,13 +104,16 @@ partial def hasTag : MessageData → Bool
|
|||
| trace cls msg msgs _ => p cls || hasTag msg || msgs.any hasTag
|
||||
| _ => false
|
||||
|
||||
/-- An empty message. -/
|
||||
def nil : MessageData :=
|
||||
ofFormat Format.nil
|
||||
|
||||
/-- Whether the given message equals `MessageData.nil`. See also `MessageData.isEmpty`. -/
|
||||
def isNil : MessageData → Bool
|
||||
| ofFormat Format.nil => true
|
||||
| _ => false
|
||||
|
||||
/-- Whether the message is a `MessageData.nest` constructor. -/
|
||||
def isNest : MessageData → Bool
|
||||
| nest _ _ => true
|
||||
| _ => false
|
||||
|
|
@ -162,16 +171,24 @@ partial def arrayExpr.toMessageData (es : Array Expr) (i : Nat) (acc : MessageDa
|
|||
|
||||
instance : Coe (Array Expr) MessageData := ⟨fun es => arrayExpr.toMessageData es 0 "#["⟩
|
||||
|
||||
/-- Wrap the given message in `l` and `r`. See also `Format.bracket`. -/
|
||||
def bracket (l : String) (f : MessageData) (r : String) : MessageData := group (nest l.length <| l ++ f ++ r)
|
||||
/-- Wrap the given message in parentheses `()`. -/
|
||||
def paren (f : MessageData) : MessageData := bracket "(" f ")"
|
||||
/-- Wrap the given message in square brackets `[]`. -/
|
||||
def sbracket (f : MessageData) : MessageData := bracket "[" f "]"
|
||||
/-- Append the given list of messages with the given separarator. -/
|
||||
def joinSep : List MessageData → MessageData → MessageData
|
||||
| [], _ => Format.nil
|
||||
| [a], _ => a
|
||||
| a::as, sep => a ++ sep ++ joinSep as sep
|
||||
|
||||
/-- Write the given list of messages as a list, separating each item with `,\n` and surrounding with square brackets. -/
|
||||
def ofList: List MessageData → MessageData
|
||||
| [] => "[]"
|
||||
| xs => sbracket <| joinSep xs (ofFormat "," ++ Format.line)
|
||||
|
||||
/-- See `MessageData.ofList`. -/
|
||||
def ofArray (msgs : Array MessageData) : MessageData :=
|
||||
ofList msgs.toList
|
||||
|
||||
|
|
@ -180,12 +197,15 @@ instance : Coe (List Expr) MessageData := ⟨fun es => ofList <| es.map ofExpr
|
|||
|
||||
end MessageData
|
||||
|
||||
/-- A `Message` is a richly formatted piece of information emitted by Lean.
|
||||
They are rendered by client editors in the infoview and in diagnostic windows. -/
|
||||
structure Message where
|
||||
fileName : String
|
||||
pos : Position
|
||||
endPos : Option Position := none
|
||||
severity : MessageSeverity := MessageSeverity.error
|
||||
caption : String := ""
|
||||
/-- The content of the message. -/
|
||||
data : MessageData
|
||||
deriving Inhabited
|
||||
|
||||
|
|
@ -206,6 +226,7 @@ protected def toString (msg : Message) (includeEndPos := false) : IO String := d
|
|||
|
||||
end Message
|
||||
|
||||
/-- A persistent array of messages. -/
|
||||
structure MessageLog where
|
||||
msgs : PersistentArray Message := {}
|
||||
deriving Inhabited
|
||||
|
|
|
|||
2
stage0/src/Lean/Meta/CongrTheorems.lean
generated
2
stage0/src/Lean/Meta/CongrTheorems.lean
generated
|
|
@ -234,7 +234,7 @@ where
|
|||
| .eq =>
|
||||
let localDecl ← lhss[i]!.fvarId!.getDecl
|
||||
withLocalDecl localDecl.userName localDecl.binderInfo localDecl.type fun rhs => do
|
||||
withLocalDeclD ((`e).appendIndexAfter (eqs.size+1)) (← mkEq lhss[i]! rhs) fun eq => do
|
||||
withLocalDeclD (localDecl.userName.appendBefore "e_") (← mkEq lhss[i]! rhs) fun eq => do
|
||||
go (i+1) (rhss.push rhs) (eqs.push eq) (hyps.push rhs |>.push eq)
|
||||
| .fixed => go (i+1) (rhss.push lhss[i]!) (eqs.push none) hyps
|
||||
| .cast =>
|
||||
|
|
|
|||
2
stage0/src/Lean/Meta/Tactic/Apply.lean
generated
2
stage0/src/Lean/Meta/Tactic/Apply.lean
generated
|
|
@ -93,7 +93,7 @@ structure ApplyConfig where
|
|||
newGoals := ApplyNewGoals.nonDependentFirst
|
||||
|
||||
/--
|
||||
Close the give goal using `apply e`.
|
||||
Close the given goal using `apply e`.
|
||||
-/
|
||||
def _root_.Lean.MVarId.apply (mvarId : MVarId) (e : Expr) (cfg : ApplyConfig := {}) : MetaM (List MVarId) :=
|
||||
mvarId.withContext do
|
||||
|
|
|
|||
2
stage0/src/Lean/Meta/Tactic/Replace.lean
generated
2
stage0/src/Lean/Meta/Tactic/Replace.lean
generated
|
|
@ -35,7 +35,7 @@ def replaceTargetEq (mvarId : MVarId) (targetNew : Expr) (eqProof : Expr) : Meta
|
|||
mvarId.replaceTargetEq targetNew eqProof
|
||||
|
||||
/--
|
||||
Convert the given goal `Ctx | target` into `Ctx |- targetNew`. It assumes the goals are definitionally equal.
|
||||
Convert the given goal `Ctx |- target` into `Ctx |- targetNew`. It assumes the goals are definitionally equal.
|
||||
We use the proof term
|
||||
```
|
||||
@id target mvarNew
|
||||
|
|
|
|||
32
stage0/src/Lean/Parser/Basic.lean
generated
32
stage0/src/Lean/Parser/Basic.lean
generated
|
|
@ -1358,9 +1358,9 @@ def keepNewError (s : ParserState) (oldStackSize : Nat) : ParserState :=
|
|||
match s with
|
||||
| ⟨stack, lhsPrec, pos, cache, err⟩ => ⟨keepTop stack oldStackSize, lhsPrec, pos, cache, err⟩
|
||||
|
||||
def keepPrevError (s : ParserState) (oldStackSize : Nat) (oldStopPos : String.Pos) (oldError : Option Error) : ParserState :=
|
||||
def keepPrevError (s : ParserState) (oldStackSize : Nat) (oldStopPos : String.Pos) (oldError : Option Error) (oldLhsPrec : Nat) : ParserState :=
|
||||
match s with
|
||||
| ⟨stack, lhsPrec, _, cache, _⟩ => ⟨stack.shrink oldStackSize, lhsPrec, oldStopPos, cache, oldError⟩
|
||||
| ⟨stack, _, _, cache, _⟩ => ⟨stack.shrink oldStackSize, oldLhsPrec, oldStopPos, cache, oldError⟩
|
||||
|
||||
def mergeErrors (s : ParserState) (oldStackSize : Nat) (oldError : Error) : ParserState :=
|
||||
match s with
|
||||
|
|
@ -1415,28 +1415,24 @@ def runLongestMatchParser (left? : Option Syntax) (startLhsPrec : Nat) (p : Pars
|
|||
|
||||
def longestMatchStep (left? : Option Syntax) (startSize startLhsPrec : Nat) (startPos : String.Pos) (prevPrio : Nat) (prio : Nat) (p : ParserFn)
|
||||
: ParserContext → ParserState → ParserState × Nat := fun c s =>
|
||||
let score (s : ParserState) (prio : Nat) :=
|
||||
(s.pos.byteIdx, if s.errorMsg.isSome then (0 : Nat) else 1, prio)
|
||||
let previousScore := score s prevPrio
|
||||
let prevErrorMsg := s.errorMsg
|
||||
let prevStopPos := s.pos
|
||||
let prevSize := s.stackSize
|
||||
let prevLhsPrec := s.lhsPrec
|
||||
let s := s.restore prevSize startPos
|
||||
let s := runLongestMatchParser left? startLhsPrec p c s
|
||||
match prevErrorMsg, s.errorMsg with
|
||||
| none, none => -- both succeeded
|
||||
if s.pos > prevStopPos || (s.pos == prevStopPos && prio > prevPrio) then (s.replaceLongest startSize, prio)
|
||||
else if s.pos < prevStopPos || (s.pos == prevStopPos && prio < prevPrio) then ({ s.restore prevSize prevStopPos with lhsPrec := prevLhsPrec }, prevPrio) -- keep prev
|
||||
-- it is not clear what the precedence of a choice node should be, so we conservatively take the minimum
|
||||
else ({s with lhsPrec := s.lhsPrec.min prevLhsPrec }, prio)
|
||||
| none, some _ => -- prev succeeded, current failed
|
||||
({ s.restore prevSize prevStopPos with lhsPrec := prevLhsPrec }, prevPrio)
|
||||
| some oldError, some _ => -- both failed
|
||||
if s.pos > prevStopPos || (s.pos == prevStopPos && prio > prevPrio) then (s.keepNewError startSize, prio)
|
||||
else if s.pos < prevStopPos || (s.pos == prevStopPos && prio < prevPrio) then (s.keepPrevError prevSize prevStopPos prevErrorMsg, prevPrio)
|
||||
else (s.mergeErrors prevSize oldError, prio)
|
||||
| some _, none => -- prev failed, current succeeded
|
||||
let successNode := s.stxStack.back
|
||||
let s := s.shrinkStack startSize -- restore stack to initial size to make sure (failure) nodes are removed from the stack
|
||||
(s.pushSyntax successNode, prio) -- put successNode back on the stack
|
||||
match (let _ := @lexOrd; compare previousScore (score s prio)) with
|
||||
| .lt => (s.keepNewError startSize, prio)
|
||||
| .gt => (s.keepPrevError prevSize prevStopPos prevErrorMsg prevLhsPrec, prevPrio)
|
||||
| .eq =>
|
||||
match prevErrorMsg with
|
||||
| none =>
|
||||
-- it is not clear what the precedence of a choice node should be, so we conservatively take the minimum
|
||||
({s with lhsPrec := s.lhsPrec.min prevLhsPrec }, prio)
|
||||
| some oldError => (s.mergeErrors prevSize oldError, prio)
|
||||
|
||||
def longestMatchMkResult (startSize : Nat) (s : ParserState) : ParserState :=
|
||||
if s.stackSize > startSize + 1 then s.mkNode choiceKind startSize else s
|
||||
|
|
|
|||
2
stage0/src/Lean/PrettyPrinter/Formatter.lean
generated
2
stage0/src/Lean/PrettyPrinter/Formatter.lean
generated
|
|
@ -190,7 +190,7 @@ opaque mkAntiquot.formatter' (name : String) (kind : SyntaxNodeKind) (anonymous
|
|||
opaque interpretParserDescr' : ParserDescr → CoreM Formatter
|
||||
|
||||
private def SourceInfo.getExprPos? : SourceInfo → Option String.Pos
|
||||
| SourceInfo.synthetic pos _ => pos
|
||||
| SourceInfo.synthetic (pos := pos) .. => pos
|
||||
| _ => none
|
||||
|
||||
private def getExprPos? : Syntax → Option String.Pos
|
||||
|
|
|
|||
3
stage0/src/Lean/Server/FileSource.lean
generated
3
stage0/src/Lean/Server/FileSource.lean
generated
|
|
@ -93,4 +93,7 @@ instance : FileSource RpcReleaseParams where
|
|||
instance : FileSource RpcKeepAliveParams where
|
||||
fileSource p := p.uri
|
||||
|
||||
instance : FileSource CodeActionParams where
|
||||
fileSource p := fileSource p.textDocument
|
||||
|
||||
end Lean.Lsp
|
||||
|
|
|
|||
|
|
@ -105,7 +105,7 @@ def locationLinksOfInfo (kind : GoToKind) (ci : Elab.ContextInfo) (i : Elab.Info
|
|||
if let some modUri ← documentUriFromModule rc.srcSearchPath name then
|
||||
let range := { start := ⟨0, 0⟩, «end» := ⟨0, 0⟩ : Range }
|
||||
let ll : LocationLink := {
|
||||
originSelectionRange? := (·.toLspRange text) <$> i.stx[2].getRange? (originalOnly := true)
|
||||
originSelectionRange? := (·.toLspRange text) <$> i.stx[2].getRange? (canonicalOnly := true)
|
||||
targetUri := modUri
|
||||
targetRange := range
|
||||
targetSelectionRange := range
|
||||
|
|
|
|||
6
stage0/src/Lean/Server/InfoUtils.lean
generated
6
stage0/src/Lean/Server/InfoUtils.lean
generated
|
|
@ -90,13 +90,13 @@ def Info.lctx : Info → LocalContext
|
|||
| _ => LocalContext.empty
|
||||
|
||||
def Info.pos? (i : Info) : Option String.Pos :=
|
||||
i.stx.getPos? (originalOnly := true)
|
||||
i.stx.getPos? (canonicalOnly := true)
|
||||
|
||||
def Info.tailPos? (i : Info) : Option String.Pos :=
|
||||
i.stx.getTailPos? (originalOnly := true)
|
||||
i.stx.getTailPos? (canonicalOnly := true)
|
||||
|
||||
def Info.range? (i : Info) : Option String.Range :=
|
||||
i.stx.getRange? (originalOnly := true)
|
||||
i.stx.getRange? (canonicalOnly := true)
|
||||
|
||||
def Info.contains (i : Info) (pos : String.Pos) (includeStop := false) : Bool :=
|
||||
i.range?.any (·.contains pos includeStop)
|
||||
|
|
|
|||
3
stage0/src/Lean/Server/References.lean
generated
3
stage0/src/Lean/Server/References.lean
generated
|
|
@ -135,7 +135,8 @@ def findReferences (text : FileMap) (trees : Array InfoTree) : Array Reference :
|
|||
tree.visitM' (postNode := fun ci info _ => do
|
||||
if let some (ident, isBinder) := identOf info then
|
||||
if let some range := info.range? then
|
||||
modify (·.push { ident, range := range.toLspRange text, stx := info.stx, ci, info, isBinder }))
|
||||
if info.stx.getHeadInfo matches .original .. then -- we are not interested in canonical syntax here
|
||||
modify (·.push { ident, range := range.toLspRange text, stx := info.stx, ci, info, isBinder }))
|
||||
get
|
||||
|
||||
/--
|
||||
|
|
|
|||
4
stage0/src/Lean/Syntax.lean
generated
4
stage0/src/Lean/Syntax.lean
generated
|
|
@ -297,8 +297,8 @@ def hasMissing (stx : Syntax) : Bool := Id.run do
|
|||
return true
|
||||
return false
|
||||
|
||||
def getRange? (stx : Syntax) (originalOnly := false) : Option String.Range :=
|
||||
match stx.getPos? originalOnly, stx.getTailPos? originalOnly with
|
||||
def getRange? (stx : Syntax) (canonicalOnly := false) : Option String.Range :=
|
||||
match stx.getPos? canonicalOnly, stx.getTailPos? canonicalOnly with
|
||||
| some start, some stop => some { start, stop }
|
||||
| _, _ => none
|
||||
|
||||
|
|
|
|||
|
|
@ -185,6 +185,6 @@ def msgToInteractiveDiagnostic (text : FileMap) (m : Message) (hasWidgets : Bool
|
|||
msgToInteractive m.data hasWidgets
|
||||
catch ex =>
|
||||
pure <| TaggedText.text s!"[error when printing message: {ex.toString}]"
|
||||
pure { range, fullRange, severity?, source?, message, tags? }
|
||||
pure { range, fullRange? := some fullRange, severity?, source?, message, tags? }
|
||||
|
||||
end Lean.Widget
|
||||
|
|
|
|||
2
stage0/src/stdlib_flags.h
generated
2
stage0/src/stdlib_flags.h
generated
|
|
@ -6,7 +6,7 @@ options get_default_options() {
|
|||
// see https://leanprover.github.io/lean4/doc/dev/bootstrap.html#further-bootstrapping-complications
|
||||
#if LEAN_IS_STAGE0 == 1
|
||||
// switch to `true` for ABI-breaking changes affecting meta code
|
||||
opts = opts.update({"interpreter", "prefer_native"}, true);
|
||||
opts = opts.update({"interpreter", "prefer_native"}, false);
|
||||
// switch to `true` for changing built-in parsers used in quotations
|
||||
opts = opts.update({"internal", "parseQuotWithCurrentStage"}, false);
|
||||
opts = opts.update({"pp", "rawOnError"}, true);
|
||||
|
|
|
|||
7303
stage0/stdlib/Init/Conv.c
generated
7303
stage0/stdlib/Init/Conv.c
generated
File diff suppressed because it is too large
Load diff
120
stage0/stdlib/Init/Data/Format/Syntax.c
generated
120
stage0/stdlib/Init/Data/Format/Syntax.c
generated
|
|
@ -79,10 +79,12 @@ LEAN_EXPORT lean_object* l_Lean_Syntax_instToStringSyntax___lambda__1(lean_objec
|
|||
static lean_object* l_Lean_Syntax_formatStxAux___closed__9;
|
||||
LEAN_EXPORT lean_object* l_List_mapTRAux___at_Lean_Syntax_formatStxAux___spec__6(lean_object*, uint8_t, lean_object*, lean_object*, lean_object*);
|
||||
static lean_object* l_Lean_Syntax_instToStringSyntax___closed__2;
|
||||
static lean_object* l___private_Init_Data_Format_Syntax_0__Lean_Syntax_formatInfo___closed__6;
|
||||
static lean_object* l_Lean_Syntax_formatStxAux___closed__20;
|
||||
static lean_object* l_Lean_Syntax_formatStxAux___closed__27;
|
||||
static lean_object* l_Lean_Syntax_formatStxAux___closed__11;
|
||||
static lean_object* l_Lean_Syntax_formatStxAux___closed__19;
|
||||
static lean_object* l___private_Init_Data_Format_Syntax_0__Lean_Syntax_formatInfo___closed__5;
|
||||
lean_object* lean_string_length(lean_object*);
|
||||
static lean_object* l_Lean_Syntax_formatStxAux___closed__4;
|
||||
static lean_object* l___private_Init_Data_Format_Syntax_0__Lean_Syntax_formatInfo___closed__2;
|
||||
|
|
@ -131,6 +133,24 @@ lean_ctor_set(x_2, 0, x_1);
|
|||
return x_2;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l___private_Init_Data_Format_Syntax_0__Lean_Syntax_formatInfo___closed__5() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1;
|
||||
x_1 = lean_mk_string_from_bytes("!:", 2);
|
||||
return x_1;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l___private_Init_Data_Format_Syntax_0__Lean_Syntax_formatInfo___closed__6() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1; lean_object* x_2;
|
||||
x_1 = l___private_Init_Data_Format_Syntax_0__Lean_Syntax_formatInfo___closed__5;
|
||||
x_2 = lean_alloc_ctor(2, 1, 0);
|
||||
lean_ctor_set(x_2, 0, x_1);
|
||||
return x_2;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l___private_Init_Data_Format_Syntax_0__Lean_Syntax_formatInfo(uint8_t x_1, lean_object* x_2, lean_object* x_3) {
|
||||
_start:
|
||||
{
|
||||
|
|
@ -222,39 +242,81 @@ return x_33;
|
|||
}
|
||||
case 1:
|
||||
{
|
||||
lean_object* x_34; lean_object* x_35; lean_object* x_36; lean_object* x_37; lean_object* x_38; lean_object* x_39; lean_object* x_40; lean_object* x_41; lean_object* x_42; lean_object* x_43; lean_object* x_44; lean_object* x_45; lean_object* x_46; lean_object* x_47;
|
||||
x_34 = lean_ctor_get(x_2, 0);
|
||||
lean_inc(x_34);
|
||||
x_35 = lean_ctor_get(x_2, 1);
|
||||
uint8_t x_34;
|
||||
x_34 = lean_ctor_get_uint8(x_2, sizeof(void*)*2);
|
||||
if (x_34 == 0)
|
||||
{
|
||||
lean_object* x_35; lean_object* x_36; lean_object* x_37; lean_object* x_38; lean_object* x_39; lean_object* x_40; lean_object* x_41; lean_object* x_42; lean_object* x_43; lean_object* x_44; lean_object* x_45; lean_object* x_46; lean_object* x_47; lean_object* x_48;
|
||||
x_35 = lean_ctor_get(x_2, 0);
|
||||
lean_inc(x_35);
|
||||
x_36 = lean_ctor_get(x_2, 1);
|
||||
lean_inc(x_36);
|
||||
lean_dec(x_2);
|
||||
x_36 = l_Nat_repr(x_34);
|
||||
x_37 = lean_alloc_ctor(2, 1, 0);
|
||||
lean_ctor_set(x_37, 0, x_36);
|
||||
x_38 = l___private_Init_Data_Format_Syntax_0__Lean_Syntax_formatInfo___closed__2;
|
||||
x_39 = lean_alloc_ctor(4, 2, 0);
|
||||
lean_ctor_set(x_39, 0, x_38);
|
||||
lean_ctor_set(x_39, 1, x_37);
|
||||
x_40 = l___private_Init_Data_Format_Syntax_0__Lean_Syntax_formatInfo___closed__4;
|
||||
x_41 = lean_alloc_ctor(4, 2, 0);
|
||||
lean_ctor_set(x_41, 0, x_39);
|
||||
lean_ctor_set(x_41, 1, x_40);
|
||||
x_37 = l_Nat_repr(x_35);
|
||||
x_38 = lean_alloc_ctor(2, 1, 0);
|
||||
lean_ctor_set(x_38, 0, x_37);
|
||||
x_39 = l___private_Init_Data_Format_Syntax_0__Lean_Syntax_formatInfo___closed__2;
|
||||
x_40 = lean_alloc_ctor(4, 2, 0);
|
||||
lean_ctor_set(x_40, 0, x_39);
|
||||
lean_ctor_set(x_40, 1, x_38);
|
||||
x_41 = l___private_Init_Data_Format_Syntax_0__Lean_Syntax_formatInfo___closed__4;
|
||||
x_42 = lean_alloc_ctor(4, 2, 0);
|
||||
lean_ctor_set(x_42, 0, x_41);
|
||||
lean_ctor_set(x_42, 1, x_3);
|
||||
lean_ctor_set(x_42, 0, x_40);
|
||||
lean_ctor_set(x_42, 1, x_41);
|
||||
x_43 = lean_alloc_ctor(4, 2, 0);
|
||||
lean_ctor_set(x_43, 0, x_42);
|
||||
lean_ctor_set(x_43, 1, x_40);
|
||||
x_44 = l_Nat_repr(x_35);
|
||||
x_45 = lean_alloc_ctor(2, 1, 0);
|
||||
lean_ctor_set(x_45, 0, x_44);
|
||||
x_46 = lean_alloc_ctor(4, 2, 0);
|
||||
lean_ctor_set(x_46, 0, x_43);
|
||||
lean_ctor_set(x_46, 1, x_45);
|
||||
lean_ctor_set(x_43, 1, x_3);
|
||||
x_44 = lean_alloc_ctor(4, 2, 0);
|
||||
lean_ctor_set(x_44, 0, x_43);
|
||||
lean_ctor_set(x_44, 1, x_41);
|
||||
x_45 = l_Nat_repr(x_36);
|
||||
x_46 = lean_alloc_ctor(2, 1, 0);
|
||||
lean_ctor_set(x_46, 0, x_45);
|
||||
x_47 = lean_alloc_ctor(4, 2, 0);
|
||||
lean_ctor_set(x_47, 0, x_46);
|
||||
lean_ctor_set(x_47, 1, x_38);
|
||||
return x_47;
|
||||
lean_ctor_set(x_47, 0, x_44);
|
||||
lean_ctor_set(x_47, 1, x_46);
|
||||
x_48 = lean_alloc_ctor(4, 2, 0);
|
||||
lean_ctor_set(x_48, 0, x_47);
|
||||
lean_ctor_set(x_48, 1, x_39);
|
||||
return x_48;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_49; lean_object* x_50; lean_object* x_51; lean_object* x_52; lean_object* x_53; lean_object* x_54; lean_object* x_55; lean_object* x_56; lean_object* x_57; lean_object* x_58; lean_object* x_59; lean_object* x_60; lean_object* x_61; lean_object* x_62; lean_object* x_63;
|
||||
x_49 = lean_ctor_get(x_2, 0);
|
||||
lean_inc(x_49);
|
||||
x_50 = lean_ctor_get(x_2, 1);
|
||||
lean_inc(x_50);
|
||||
lean_dec(x_2);
|
||||
x_51 = l_Nat_repr(x_49);
|
||||
x_52 = lean_alloc_ctor(2, 1, 0);
|
||||
lean_ctor_set(x_52, 0, x_51);
|
||||
x_53 = l___private_Init_Data_Format_Syntax_0__Lean_Syntax_formatInfo___closed__2;
|
||||
x_54 = lean_alloc_ctor(4, 2, 0);
|
||||
lean_ctor_set(x_54, 0, x_53);
|
||||
lean_ctor_set(x_54, 1, x_52);
|
||||
x_55 = l___private_Init_Data_Format_Syntax_0__Lean_Syntax_formatInfo___closed__6;
|
||||
x_56 = lean_alloc_ctor(4, 2, 0);
|
||||
lean_ctor_set(x_56, 0, x_54);
|
||||
lean_ctor_set(x_56, 1, x_55);
|
||||
x_57 = lean_alloc_ctor(4, 2, 0);
|
||||
lean_ctor_set(x_57, 0, x_56);
|
||||
lean_ctor_set(x_57, 1, x_3);
|
||||
x_58 = l___private_Init_Data_Format_Syntax_0__Lean_Syntax_formatInfo___closed__4;
|
||||
x_59 = lean_alloc_ctor(4, 2, 0);
|
||||
lean_ctor_set(x_59, 0, x_57);
|
||||
lean_ctor_set(x_59, 1, x_58);
|
||||
x_60 = l_Nat_repr(x_50);
|
||||
x_61 = lean_alloc_ctor(2, 1, 0);
|
||||
lean_ctor_set(x_61, 0, x_60);
|
||||
x_62 = lean_alloc_ctor(4, 2, 0);
|
||||
lean_ctor_set(x_62, 0, x_59);
|
||||
lean_ctor_set(x_62, 1, x_61);
|
||||
x_63 = lean_alloc_ctor(4, 2, 0);
|
||||
lean_ctor_set(x_63, 0, x_62);
|
||||
lean_ctor_set(x_63, 1, x_53);
|
||||
return x_63;
|
||||
}
|
||||
}
|
||||
default:
|
||||
{
|
||||
|
|
@ -1457,6 +1519,10 @@ l___private_Init_Data_Format_Syntax_0__Lean_Syntax_formatInfo___closed__3 = _ini
|
|||
lean_mark_persistent(l___private_Init_Data_Format_Syntax_0__Lean_Syntax_formatInfo___closed__3);
|
||||
l___private_Init_Data_Format_Syntax_0__Lean_Syntax_formatInfo___closed__4 = _init_l___private_Init_Data_Format_Syntax_0__Lean_Syntax_formatInfo___closed__4();
|
||||
lean_mark_persistent(l___private_Init_Data_Format_Syntax_0__Lean_Syntax_formatInfo___closed__4);
|
||||
l___private_Init_Data_Format_Syntax_0__Lean_Syntax_formatInfo___closed__5 = _init_l___private_Init_Data_Format_Syntax_0__Lean_Syntax_formatInfo___closed__5();
|
||||
lean_mark_persistent(l___private_Init_Data_Format_Syntax_0__Lean_Syntax_formatInfo___closed__5);
|
||||
l___private_Init_Data_Format_Syntax_0__Lean_Syntax_formatInfo___closed__6 = _init_l___private_Init_Data_Format_Syntax_0__Lean_Syntax_formatInfo___closed__6();
|
||||
lean_mark_persistent(l___private_Init_Data_Format_Syntax_0__Lean_Syntax_formatInfo___closed__6);
|
||||
l_Lean_Syntax_formatStxAux___closed__1 = _init_l_Lean_Syntax_formatStxAux___closed__1();
|
||||
lean_mark_persistent(l_Lean_Syntax_formatStxAux___closed__1);
|
||||
l_Lean_Syntax_formatStxAux___closed__2 = _init_l_Lean_Syntax_formatStxAux___closed__2();
|
||||
|
|
|
|||
66
stage0/stdlib/Init/Data/Ord.c
generated
66
stage0/stdlib/Init/Data/Ord.c
generated
|
|
@ -23,6 +23,7 @@ uint8_t lean_usize_dec_eq(size_t, size_t);
|
|||
LEAN_EXPORT lean_object* l_instDecidableRelLtLtOfOrd___rarg___boxed(lean_object*, lean_object*, lean_object*);
|
||||
static lean_object* l_instBEqOrdering___closed__1;
|
||||
LEAN_EXPORT lean_object* l_Ordering_noConfusion(lean_object*);
|
||||
LEAN_EXPORT lean_object* l_lexOrd___elambda__1(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_instOrdFin___rarg___boxed(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_instOrdFin___boxed(lean_object*);
|
||||
LEAN_EXPORT lean_object* l_instOrdUInt64___boxed(lean_object*, lean_object*);
|
||||
|
|
@ -37,6 +38,7 @@ LEAN_EXPORT lean_object* l_instDecidableRelLeLeOfOrd___rarg___boxed(lean_object*
|
|||
uint8_t lean_uint8_dec_lt(uint8_t, uint8_t);
|
||||
LEAN_EXPORT lean_object* l_ltOfOrd___boxed(lean_object*, lean_object*);
|
||||
uint8_t lean_nat_dec_eq(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_lexOrd___rarg(lean_object*, lean_object*);
|
||||
uint8_t lean_uint32_dec_lt(uint32_t, uint32_t);
|
||||
LEAN_EXPORT uint8_t l___private_Init_Data_Ord_0__beqOrdering____x40_Init_Data_Ord___hyg_14_(uint8_t, uint8_t);
|
||||
LEAN_EXPORT uint8_t l_instInhabitedOrdering;
|
||||
|
|
@ -59,6 +61,7 @@ LEAN_EXPORT lean_object* l_instOrdString___boxed(lean_object*, lean_object*);
|
|||
uint8_t lean_uint32_dec_eq(uint32_t, uint32_t);
|
||||
LEAN_EXPORT lean_object* l_instOrdBool___boxed(lean_object*, lean_object*);
|
||||
LEAN_EXPORT uint8_t l_compareOfLessAndEq___rarg(lean_object*, lean_object*, lean_object*, uint8_t, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_lexOrd(lean_object*, lean_object*);
|
||||
LEAN_EXPORT uint8_t l_instOrdUInt32(uint32_t, uint32_t);
|
||||
uint8_t lean_int_dec_lt(lean_object*, lean_object*);
|
||||
uint8_t lean_uint16_dec_lt(uint16_t, uint16_t);
|
||||
|
|
@ -70,6 +73,7 @@ LEAN_EXPORT lean_object* l_instOrdInt___boxed(lean_object*, lean_object*);
|
|||
uint8_t lean_uint16_dec_eq(uint16_t, uint16_t);
|
||||
LEAN_EXPORT uint8_t l_instOrdString(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_instOrdChar___boxed(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_lexOrd___elambda__1___rarg(lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_instDecidableRelLeLeOfOrd(lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Ordering_noConfusion___rarg___boxed(lean_object*, lean_object*, lean_object*);
|
||||
static lean_object* l_Ordering_noConfusion___rarg___closed__1;
|
||||
|
|
@ -758,6 +762,68 @@ x_6 = lean_box(x_5);
|
|||
return x_6;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_lexOrd___elambda__1___rarg(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_5; lean_object* x_6; lean_object* x_7; uint8_t x_8; lean_object* x_9;
|
||||
x_5 = lean_ctor_get(x_3, 0);
|
||||
lean_inc(x_5);
|
||||
x_6 = lean_ctor_get(x_4, 0);
|
||||
lean_inc(x_6);
|
||||
x_7 = lean_apply_2(x_1, x_5, x_6);
|
||||
x_8 = lean_unbox(x_7);
|
||||
lean_dec(x_7);
|
||||
x_9 = lean_box(x_8);
|
||||
if (lean_obj_tag(x_9) == 1)
|
||||
{
|
||||
lean_object* x_10; lean_object* x_11; lean_object* x_12;
|
||||
x_10 = lean_ctor_get(x_3, 1);
|
||||
lean_inc(x_10);
|
||||
lean_dec(x_3);
|
||||
x_11 = lean_ctor_get(x_4, 1);
|
||||
lean_inc(x_11);
|
||||
lean_dec(x_4);
|
||||
x_12 = lean_apply_2(x_2, x_10, x_11);
|
||||
return x_12;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_13;
|
||||
lean_dec(x_9);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
lean_dec(x_2);
|
||||
x_13 = lean_box(x_8);
|
||||
return x_13;
|
||||
}
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_lexOrd___elambda__1(lean_object* x_1, lean_object* x_2) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_3;
|
||||
x_3 = lean_alloc_closure((void*)(l_lexOrd___elambda__1___rarg), 4, 0);
|
||||
return x_3;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_lexOrd___rarg(lean_object* x_1, lean_object* x_2) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_3;
|
||||
x_3 = lean_alloc_closure((void*)(l_lexOrd___elambda__1___rarg), 4, 2);
|
||||
lean_closure_set(x_3, 0, x_1);
|
||||
lean_closure_set(x_3, 1, x_2);
|
||||
return x_3;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_lexOrd(lean_object* x_1, lean_object* x_2) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_3;
|
||||
x_3 = lean_alloc_closure((void*)(l_lexOrd___rarg), 2, 0);
|
||||
return x_3;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_ltOfOrd(lean_object* x_1, lean_object* x_2) {
|
||||
_start:
|
||||
{
|
||||
|
|
|
|||
186
stage0/stdlib/Init/Data/Repr.c
generated
186
stage0/stdlib/Init/Data/Repr.c
generated
|
|
@ -3266,92 +3266,146 @@ return x_76;
|
|||
}
|
||||
case 1:
|
||||
{
|
||||
lean_object* x_77; lean_object* x_78; lean_object* x_79; uint8_t x_80; lean_object* x_81; lean_object* x_82; lean_object* x_83; lean_object* x_84; lean_object* x_85; lean_object* x_86; lean_object* x_87; lean_object* x_88; lean_object* x_89; lean_object* x_90; lean_object* x_91; lean_object* x_92; lean_object* x_93; lean_object* x_94; lean_object* x_95;
|
||||
lean_object* x_77; lean_object* x_78; uint8_t x_79; lean_object* x_80; uint8_t x_81; lean_object* x_82; lean_object* x_83; lean_object* x_84; lean_object* x_85; lean_object* x_86; lean_object* x_87; lean_object* x_88; lean_object* x_89; lean_object* x_90; lean_object* x_91; lean_object* x_92; lean_object* x_93; lean_object* x_94; lean_object* x_95; lean_object* x_96; lean_object* x_97;
|
||||
x_77 = lean_ctor_get(x_1, 0);
|
||||
lean_inc(x_77);
|
||||
x_78 = lean_ctor_get(x_1, 1);
|
||||
lean_inc(x_78);
|
||||
x_79 = lean_ctor_get_uint8(x_1, sizeof(void*)*2);
|
||||
lean_dec(x_1);
|
||||
x_79 = lean_unsigned_to_nat(1024u);
|
||||
x_80 = lean_nat_dec_le(x_79, x_2);
|
||||
x_81 = l_Nat_repr(x_77);
|
||||
x_82 = lean_alloc_ctor(2, 1, 0);
|
||||
lean_ctor_set(x_82, 0, x_81);
|
||||
x_83 = l_instReprPos___closed__2;
|
||||
x_84 = lean_alloc_ctor(4, 2, 0);
|
||||
lean_ctor_set(x_84, 0, x_83);
|
||||
lean_ctor_set(x_84, 1, x_82);
|
||||
x_85 = l_instReprPos___closed__4;
|
||||
x_86 = lean_alloc_ctor(4, 2, 0);
|
||||
lean_ctor_set(x_86, 0, x_84);
|
||||
lean_ctor_set(x_86, 1, x_85);
|
||||
x_87 = l___private_Init_Data_Repr_0__reprSourceInfo____x40_Init_Data_Repr___hyg_1907____closed__8;
|
||||
x_88 = lean_alloc_ctor(4, 2, 0);
|
||||
lean_ctor_set(x_88, 0, x_87);
|
||||
lean_ctor_set(x_88, 1, x_86);
|
||||
x_89 = lean_box(1);
|
||||
x_90 = lean_alloc_ctor(4, 2, 0);
|
||||
lean_ctor_set(x_90, 0, x_88);
|
||||
lean_ctor_set(x_90, 1, x_89);
|
||||
x_91 = l_Nat_repr(x_78);
|
||||
x_92 = lean_alloc_ctor(2, 1, 0);
|
||||
lean_ctor_set(x_92, 0, x_91);
|
||||
x_93 = lean_alloc_ctor(4, 2, 0);
|
||||
lean_ctor_set(x_93, 0, x_83);
|
||||
lean_ctor_set(x_93, 1, x_92);
|
||||
x_80 = lean_unsigned_to_nat(1024u);
|
||||
x_81 = lean_nat_dec_le(x_80, x_2);
|
||||
x_82 = l_Nat_repr(x_77);
|
||||
x_83 = lean_alloc_ctor(2, 1, 0);
|
||||
lean_ctor_set(x_83, 0, x_82);
|
||||
x_84 = l_instReprPos___closed__2;
|
||||
x_85 = lean_alloc_ctor(4, 2, 0);
|
||||
lean_ctor_set(x_85, 0, x_84);
|
||||
lean_ctor_set(x_85, 1, x_83);
|
||||
x_86 = l_instReprPos___closed__4;
|
||||
x_87 = lean_alloc_ctor(4, 2, 0);
|
||||
lean_ctor_set(x_87, 0, x_85);
|
||||
lean_ctor_set(x_87, 1, x_86);
|
||||
x_88 = l___private_Init_Data_Repr_0__reprSourceInfo____x40_Init_Data_Repr___hyg_1907____closed__8;
|
||||
x_89 = lean_alloc_ctor(4, 2, 0);
|
||||
lean_ctor_set(x_89, 0, x_88);
|
||||
lean_ctor_set(x_89, 1, x_87);
|
||||
x_90 = lean_box(1);
|
||||
x_91 = lean_alloc_ctor(4, 2, 0);
|
||||
lean_ctor_set(x_91, 0, x_89);
|
||||
lean_ctor_set(x_91, 1, x_90);
|
||||
x_92 = l_Nat_repr(x_78);
|
||||
x_93 = lean_alloc_ctor(2, 1, 0);
|
||||
lean_ctor_set(x_93, 0, x_92);
|
||||
x_94 = lean_alloc_ctor(4, 2, 0);
|
||||
lean_ctor_set(x_94, 0, x_93);
|
||||
lean_ctor_set(x_94, 1, x_85);
|
||||
lean_ctor_set(x_94, 0, x_84);
|
||||
lean_ctor_set(x_94, 1, x_93);
|
||||
x_95 = lean_alloc_ctor(4, 2, 0);
|
||||
lean_ctor_set(x_95, 0, x_90);
|
||||
lean_ctor_set(x_95, 1, x_94);
|
||||
if (x_80 == 0)
|
||||
{
|
||||
lean_object* x_96; lean_object* x_97; uint8_t x_98; lean_object* x_99; lean_object* x_100;
|
||||
x_96 = l___private_Init_Data_Repr_0__reprSourceInfo____x40_Init_Data_Repr___hyg_1907____closed__4;
|
||||
x_97 = lean_alloc_ctor(3, 2, 0);
|
||||
lean_ctor_set(x_95, 0, x_94);
|
||||
lean_ctor_set(x_95, 1, x_86);
|
||||
x_96 = lean_alloc_ctor(4, 2, 0);
|
||||
lean_ctor_set(x_96, 0, x_91);
|
||||
lean_ctor_set(x_96, 1, x_95);
|
||||
x_97 = lean_alloc_ctor(4, 2, 0);
|
||||
lean_ctor_set(x_97, 0, x_96);
|
||||
lean_ctor_set(x_97, 1, x_95);
|
||||
x_98 = 0;
|
||||
x_99 = lean_alloc_ctor(5, 1, 1);
|
||||
lean_ctor_set(x_97, 1, x_90);
|
||||
if (x_81 == 0)
|
||||
{
|
||||
if (x_79 == 0)
|
||||
{
|
||||
lean_object* x_98; lean_object* x_99; lean_object* x_100; lean_object* x_101; uint8_t x_102; lean_object* x_103; lean_object* x_104;
|
||||
x_98 = l_instReprBool___closed__2;
|
||||
x_99 = lean_alloc_ctor(4, 2, 0);
|
||||
lean_ctor_set(x_99, 0, x_97);
|
||||
lean_ctor_set_uint8(x_99, sizeof(void*)*1, x_98);
|
||||
x_100 = l_Repr_addAppParen(x_99, x_2);
|
||||
return x_100;
|
||||
lean_ctor_set(x_99, 1, x_98);
|
||||
x_100 = l___private_Init_Data_Repr_0__reprSourceInfo____x40_Init_Data_Repr___hyg_1907____closed__4;
|
||||
x_101 = lean_alloc_ctor(3, 2, 0);
|
||||
lean_ctor_set(x_101, 0, x_100);
|
||||
lean_ctor_set(x_101, 1, x_99);
|
||||
x_102 = 0;
|
||||
x_103 = lean_alloc_ctor(5, 1, 1);
|
||||
lean_ctor_set(x_103, 0, x_101);
|
||||
lean_ctor_set_uint8(x_103, sizeof(void*)*1, x_102);
|
||||
x_104 = l_Repr_addAppParen(x_103, x_2);
|
||||
return x_104;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_101; lean_object* x_102; uint8_t x_103; lean_object* x_104; lean_object* x_105;
|
||||
x_101 = l___private_Init_Data_Repr_0__reprSourceInfo____x40_Init_Data_Repr___hyg_1907____closed__5;
|
||||
x_102 = lean_alloc_ctor(3, 2, 0);
|
||||
lean_ctor_set(x_102, 0, x_101);
|
||||
lean_ctor_set(x_102, 1, x_95);
|
||||
x_103 = 0;
|
||||
x_104 = lean_alloc_ctor(5, 1, 1);
|
||||
lean_ctor_set(x_104, 0, x_102);
|
||||
lean_ctor_set_uint8(x_104, sizeof(void*)*1, x_103);
|
||||
x_105 = l_Repr_addAppParen(x_104, x_2);
|
||||
return x_105;
|
||||
lean_object* x_105; lean_object* x_106; lean_object* x_107; lean_object* x_108; uint8_t x_109; lean_object* x_110; lean_object* x_111;
|
||||
x_105 = l_instReprBool___closed__4;
|
||||
x_106 = lean_alloc_ctor(4, 2, 0);
|
||||
lean_ctor_set(x_106, 0, x_97);
|
||||
lean_ctor_set(x_106, 1, x_105);
|
||||
x_107 = l___private_Init_Data_Repr_0__reprSourceInfo____x40_Init_Data_Repr___hyg_1907____closed__4;
|
||||
x_108 = lean_alloc_ctor(3, 2, 0);
|
||||
lean_ctor_set(x_108, 0, x_107);
|
||||
lean_ctor_set(x_108, 1, x_106);
|
||||
x_109 = 0;
|
||||
x_110 = lean_alloc_ctor(5, 1, 1);
|
||||
lean_ctor_set(x_110, 0, x_108);
|
||||
lean_ctor_set_uint8(x_110, sizeof(void*)*1, x_109);
|
||||
x_111 = l_Repr_addAppParen(x_110, x_2);
|
||||
return x_111;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (x_79 == 0)
|
||||
{
|
||||
lean_object* x_112; lean_object* x_113; lean_object* x_114; lean_object* x_115; uint8_t x_116; lean_object* x_117; lean_object* x_118;
|
||||
x_112 = l_instReprBool___closed__2;
|
||||
x_113 = lean_alloc_ctor(4, 2, 0);
|
||||
lean_ctor_set(x_113, 0, x_97);
|
||||
lean_ctor_set(x_113, 1, x_112);
|
||||
x_114 = l___private_Init_Data_Repr_0__reprSourceInfo____x40_Init_Data_Repr___hyg_1907____closed__5;
|
||||
x_115 = lean_alloc_ctor(3, 2, 0);
|
||||
lean_ctor_set(x_115, 0, x_114);
|
||||
lean_ctor_set(x_115, 1, x_113);
|
||||
x_116 = 0;
|
||||
x_117 = lean_alloc_ctor(5, 1, 1);
|
||||
lean_ctor_set(x_117, 0, x_115);
|
||||
lean_ctor_set_uint8(x_117, sizeof(void*)*1, x_116);
|
||||
x_118 = l_Repr_addAppParen(x_117, x_2);
|
||||
return x_118;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_119; lean_object* x_120; lean_object* x_121; lean_object* x_122; uint8_t x_123; lean_object* x_124; lean_object* x_125;
|
||||
x_119 = l_instReprBool___closed__4;
|
||||
x_120 = lean_alloc_ctor(4, 2, 0);
|
||||
lean_ctor_set(x_120, 0, x_97);
|
||||
lean_ctor_set(x_120, 1, x_119);
|
||||
x_121 = l___private_Init_Data_Repr_0__reprSourceInfo____x40_Init_Data_Repr___hyg_1907____closed__5;
|
||||
x_122 = lean_alloc_ctor(3, 2, 0);
|
||||
lean_ctor_set(x_122, 0, x_121);
|
||||
lean_ctor_set(x_122, 1, x_120);
|
||||
x_123 = 0;
|
||||
x_124 = lean_alloc_ctor(5, 1, 1);
|
||||
lean_ctor_set(x_124, 0, x_122);
|
||||
lean_ctor_set_uint8(x_124, sizeof(void*)*1, x_123);
|
||||
x_125 = l_Repr_addAppParen(x_124, x_2);
|
||||
return x_125;
|
||||
}
|
||||
}
|
||||
}
|
||||
default:
|
||||
{
|
||||
lean_object* x_106; uint8_t x_107;
|
||||
x_106 = lean_unsigned_to_nat(1024u);
|
||||
x_107 = lean_nat_dec_le(x_106, x_2);
|
||||
if (x_107 == 0)
|
||||
lean_object* x_126; uint8_t x_127;
|
||||
x_126 = lean_unsigned_to_nat(1024u);
|
||||
x_127 = lean_nat_dec_le(x_126, x_2);
|
||||
if (x_127 == 0)
|
||||
{
|
||||
lean_object* x_108; lean_object* x_109;
|
||||
x_108 = l___private_Init_Data_Repr_0__reprSourceInfo____x40_Init_Data_Repr___hyg_1907____closed__12;
|
||||
x_109 = l_Repr_addAppParen(x_108, x_2);
|
||||
return x_109;
|
||||
lean_object* x_128; lean_object* x_129;
|
||||
x_128 = l___private_Init_Data_Repr_0__reprSourceInfo____x40_Init_Data_Repr___hyg_1907____closed__12;
|
||||
x_129 = l_Repr_addAppParen(x_128, x_2);
|
||||
return x_129;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_110; lean_object* x_111;
|
||||
x_110 = l___private_Init_Data_Repr_0__reprSourceInfo____x40_Init_Data_Repr___hyg_1907____closed__14;
|
||||
x_111 = l_Repr_addAppParen(x_110, x_2);
|
||||
return x_111;
|
||||
lean_object* x_130; lean_object* x_131;
|
||||
x_130 = l___private_Init_Data_Repr_0__reprSourceInfo____x40_Init_Data_Repr___hyg_1907____closed__14;
|
||||
x_131 = l_Repr_addAppParen(x_130, x_2);
|
||||
return x_131;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
5700
stage0/stdlib/Init/Meta.c
generated
5700
stage0/stdlib/Init/Meta.c
generated
File diff suppressed because one or more lines are too long
1632
stage0/stdlib/Init/Notation.c
generated
1632
stage0/stdlib/Init/Notation.c
generated
File diff suppressed because it is too large
Load diff
1154
stage0/stdlib/Init/NotationExtra.c
generated
1154
stage0/stdlib/Init/NotationExtra.c
generated
File diff suppressed because it is too large
Load diff
379
stage0/stdlib/Init/Prelude.c
generated
379
stage0/stdlib/Init/Prelude.c
generated
|
|
@ -92,7 +92,7 @@ LEAN_EXPORT lean_object* l_Array_sequenceMap_loop___rarg___lambda__1(lean_object
|
|||
LEAN_EXPORT lean_object* l_List_redLength___rarg___boxed(lean_object*);
|
||||
LEAN_EXPORT lean_object* l_unsafeCast___rarg___boxed(lean_object*);
|
||||
static lean_object* l_UInt64_size___closed__1;
|
||||
LEAN_EXPORT lean_object* l_Lean_SourceInfo_fromRef(lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_SourceInfo_fromRef(lean_object*, uint8_t);
|
||||
LEAN_EXPORT lean_object* l_Lean_Macro_trace___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_instTransEq__1___rarg(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_instDecidableEqUInt8___boxed(lean_object*, lean_object*);
|
||||
|
|
@ -506,6 +506,7 @@ LEAN_EXPORT lean_object* l_instDecidableEqFin___rarg___boxed(lean_object*, lean_
|
|||
LEAN_EXPORT lean_object* l_Array_appendCore_loop(lean_object*);
|
||||
LEAN_EXPORT lean_object* l_instMonadLiftT__1(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_ReaderT_instMonadExceptOfReaderT(lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_SourceInfo_fromRef___boxed(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_instTransEq___rarg(lean_object*);
|
||||
LEAN_EXPORT lean_object* l_instLEUInt32;
|
||||
LEAN_EXPORT lean_object* l_instDecidableEqChar___boxed(lean_object*, lean_object*);
|
||||
|
|
@ -524,7 +525,7 @@ static lean_object* l_Lean_PrettyPrinter_instMonadQuotationUnexpandM___closed__6
|
|||
LEAN_EXPORT lean_object* l_ReaderT_read(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_instHShiftRight(lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Eq_ndrec___rarg(lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_mkAtomFrom(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_mkAtomFrom(lean_object*, lean_object*, uint8_t);
|
||||
LEAN_EXPORT lean_object* l_Lean_TSyntaxArray_mkImpl___rarg___boxed(lean_object*);
|
||||
LEAN_EXPORT lean_object* l_and___boxed(lean_object*, lean_object*);
|
||||
LEAN_EXPORT uint8_t l_Lean_Syntax_isNodeOf(lean_object*, lean_object*, lean_object*);
|
||||
|
|
@ -769,6 +770,7 @@ LEAN_EXPORT lean_object* l_dite___rarg(uint8_t, lean_object*, lean_object*);
|
|||
LEAN_EXPORT lean_object* l_unsafeCast(lean_object*, lean_object*);
|
||||
lean_object* lean_system_platform_nbits(lean_object*);
|
||||
LEAN_EXPORT lean_object* l_instMonadState___rarg___lambda__1(lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_mkAtomFrom___boxed(lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_EStateM_throw(lean_object*, lean_object*, lean_object*);
|
||||
lean_object* lean_usize_to_nat(size_t);
|
||||
LEAN_EXPORT lean_object* l_instDecidableNot___rarg___boxed(lean_object*);
|
||||
|
|
@ -7348,29 +7350,43 @@ return x_4;
|
|||
}
|
||||
case 1:
|
||||
{
|
||||
uint8_t x_5;
|
||||
x_5 = lean_ctor_get_uint8(x_1, sizeof(void*)*2);
|
||||
if (x_5 == 0)
|
||||
{
|
||||
if (x_2 == 0)
|
||||
{
|
||||
lean_object* x_5; lean_object* x_6;
|
||||
x_5 = lean_ctor_get(x_1, 0);
|
||||
lean_inc(x_5);
|
||||
x_6 = lean_alloc_ctor(1, 1, 0);
|
||||
lean_ctor_set(x_6, 0, x_5);
|
||||
return x_6;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_7;
|
||||
x_7 = lean_box(0);
|
||||
lean_object* x_6; lean_object* x_7;
|
||||
x_6 = lean_ctor_get(x_1, 0);
|
||||
lean_inc(x_6);
|
||||
x_7 = lean_alloc_ctor(1, 1, 0);
|
||||
lean_ctor_set(x_7, 0, x_6);
|
||||
return x_7;
|
||||
}
|
||||
}
|
||||
default:
|
||||
else
|
||||
{
|
||||
lean_object* x_8;
|
||||
x_8 = lean_box(0);
|
||||
return x_8;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_9; lean_object* x_10;
|
||||
x_9 = lean_ctor_get(x_1, 0);
|
||||
lean_inc(x_9);
|
||||
x_10 = lean_alloc_ctor(1, 1, 0);
|
||||
lean_ctor_set(x_10, 0, x_9);
|
||||
return x_10;
|
||||
}
|
||||
}
|
||||
default:
|
||||
{
|
||||
lean_object* x_11;
|
||||
x_11 = lean_box(0);
|
||||
return x_11;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_SourceInfo_getPos_x3f___boxed(lean_object* x_1, lean_object* x_2) {
|
||||
|
|
@ -8487,85 +8503,116 @@ return x_6;
|
|||
}
|
||||
case 1:
|
||||
{
|
||||
uint8_t x_7;
|
||||
x_7 = lean_ctor_get_uint8(x_4, sizeof(void*)*2);
|
||||
if (x_7 == 0)
|
||||
{
|
||||
if (x_2 == 0)
|
||||
{
|
||||
lean_object* x_7; lean_object* x_8;
|
||||
lean_object* x_8; lean_object* x_9;
|
||||
lean_dec(x_1);
|
||||
x_7 = lean_ctor_get(x_4, 1);
|
||||
lean_inc(x_7);
|
||||
x_8 = lean_ctor_get(x_4, 1);
|
||||
lean_inc(x_8);
|
||||
lean_dec(x_4);
|
||||
x_8 = lean_alloc_ctor(1, 1, 0);
|
||||
lean_ctor_set(x_8, 0, x_7);
|
||||
return x_8;
|
||||
x_9 = lean_alloc_ctor(1, 1, 0);
|
||||
lean_ctor_set(x_9, 0, x_8);
|
||||
return x_9;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_9; lean_object* x_10; lean_object* x_11;
|
||||
lean_object* x_10; lean_object* x_11; lean_object* x_12;
|
||||
lean_dec(x_4);
|
||||
x_9 = lean_ctor_get(x_1, 2);
|
||||
lean_inc(x_9);
|
||||
x_10 = lean_ctor_get(x_1, 2);
|
||||
lean_inc(x_10);
|
||||
lean_dec(x_1);
|
||||
x_10 = lean_unsigned_to_nat(0u);
|
||||
x_11 = l_Lean_Syntax_getTailPos_x3f_loop(x_2, x_9, x_10);
|
||||
lean_dec(x_9);
|
||||
return x_11;
|
||||
x_11 = lean_unsigned_to_nat(0u);
|
||||
x_12 = l_Lean_Syntax_getTailPos_x3f_loop(x_2, x_10, x_11);
|
||||
lean_dec(x_10);
|
||||
return x_12;
|
||||
}
|
||||
}
|
||||
default:
|
||||
else
|
||||
{
|
||||
lean_object* x_12; lean_object* x_13; lean_object* x_14;
|
||||
x_12 = lean_ctor_get(x_1, 2);
|
||||
lean_inc(x_12);
|
||||
lean_object* x_13; lean_object* x_14;
|
||||
lean_dec(x_1);
|
||||
x_13 = lean_unsigned_to_nat(0u);
|
||||
x_14 = l_Lean_Syntax_getTailPos_x3f_loop(x_2, x_12, x_13);
|
||||
lean_dec(x_12);
|
||||
x_13 = lean_ctor_get(x_4, 1);
|
||||
lean_inc(x_13);
|
||||
lean_dec(x_4);
|
||||
x_14 = lean_alloc_ctor(1, 1, 0);
|
||||
lean_ctor_set(x_14, 0, x_13);
|
||||
return x_14;
|
||||
}
|
||||
}
|
||||
default:
|
||||
{
|
||||
lean_object* x_15; lean_object* x_16; lean_object* x_17;
|
||||
x_15 = lean_ctor_get(x_1, 2);
|
||||
lean_inc(x_15);
|
||||
lean_dec(x_1);
|
||||
x_16 = lean_unsigned_to_nat(0u);
|
||||
x_17 = l_Lean_Syntax_getTailPos_x3f_loop(x_2, x_15, x_16);
|
||||
lean_dec(x_15);
|
||||
return x_17;
|
||||
}
|
||||
}
|
||||
}
|
||||
default:
|
||||
{
|
||||
lean_object* x_15;
|
||||
x_15 = lean_ctor_get(x_1, 0);
|
||||
lean_inc(x_15);
|
||||
lean_object* x_18;
|
||||
x_18 = lean_ctor_get(x_1, 0);
|
||||
lean_inc(x_18);
|
||||
lean_dec(x_1);
|
||||
switch (lean_obj_tag(x_15)) {
|
||||
switch (lean_obj_tag(x_18)) {
|
||||
case 0:
|
||||
{
|
||||
lean_object* x_16; lean_object* x_17;
|
||||
x_16 = lean_ctor_get(x_15, 3);
|
||||
lean_inc(x_16);
|
||||
lean_dec(x_15);
|
||||
x_17 = lean_alloc_ctor(1, 1, 0);
|
||||
lean_ctor_set(x_17, 0, x_16);
|
||||
return x_17;
|
||||
lean_object* x_19; lean_object* x_20;
|
||||
x_19 = lean_ctor_get(x_18, 3);
|
||||
lean_inc(x_19);
|
||||
lean_dec(x_18);
|
||||
x_20 = lean_alloc_ctor(1, 1, 0);
|
||||
lean_ctor_set(x_20, 0, x_19);
|
||||
return x_20;
|
||||
}
|
||||
case 1:
|
||||
{
|
||||
uint8_t x_21;
|
||||
x_21 = lean_ctor_get_uint8(x_18, sizeof(void*)*2);
|
||||
if (x_21 == 0)
|
||||
{
|
||||
if (x_2 == 0)
|
||||
{
|
||||
lean_object* x_18; lean_object* x_19;
|
||||
x_18 = lean_ctor_get(x_15, 1);
|
||||
lean_inc(x_18);
|
||||
lean_dec(x_15);
|
||||
x_19 = lean_alloc_ctor(1, 1, 0);
|
||||
lean_ctor_set(x_19, 0, x_18);
|
||||
return x_19;
|
||||
lean_object* x_22; lean_object* x_23;
|
||||
x_22 = lean_ctor_get(x_18, 1);
|
||||
lean_inc(x_22);
|
||||
lean_dec(x_18);
|
||||
x_23 = lean_alloc_ctor(1, 1, 0);
|
||||
lean_ctor_set(x_23, 0, x_22);
|
||||
return x_23;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_20;
|
||||
lean_dec(x_15);
|
||||
x_20 = lean_box(0);
|
||||
return x_20;
|
||||
lean_object* x_24;
|
||||
lean_dec(x_18);
|
||||
x_24 = lean_box(0);
|
||||
return x_24;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_25; lean_object* x_26;
|
||||
x_25 = lean_ctor_get(x_18, 1);
|
||||
lean_inc(x_25);
|
||||
lean_dec(x_18);
|
||||
x_26 = lean_alloc_ctor(1, 1, 0);
|
||||
lean_ctor_set(x_26, 0, x_25);
|
||||
return x_26;
|
||||
}
|
||||
}
|
||||
default:
|
||||
{
|
||||
lean_object* x_21;
|
||||
x_21 = lean_box(0);
|
||||
return x_21;
|
||||
lean_object* x_27;
|
||||
x_27 = lean_box(0);
|
||||
return x_27;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -8659,46 +8706,169 @@ lean_dec(x_1);
|
|||
return x_2;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_SourceInfo_fromRef(lean_object* x_1) {
|
||||
LEAN_EXPORT lean_object* l_Lean_SourceInfo_fromRef(lean_object* x_1, uint8_t x_2) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_2; lean_object* x_3;
|
||||
x_2 = 0;
|
||||
x_3 = l_Lean_Syntax_getPos_x3f(x_1, x_2);
|
||||
if (lean_obj_tag(x_3) == 0)
|
||||
if (x_2 == 0)
|
||||
{
|
||||
lean_object* x_4;
|
||||
uint8_t x_3; lean_object* x_4;
|
||||
x_3 = 0;
|
||||
x_4 = l_Lean_Syntax_getPos_x3f(x_1, x_3);
|
||||
if (lean_obj_tag(x_4) == 0)
|
||||
{
|
||||
lean_object* x_5;
|
||||
lean_dec(x_1);
|
||||
x_4 = lean_box(2);
|
||||
return x_4;
|
||||
x_5 = lean_box(2);
|
||||
return x_5;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_5; lean_object* x_6;
|
||||
x_5 = lean_ctor_get(x_3, 0);
|
||||
lean_inc(x_5);
|
||||
lean_dec(x_3);
|
||||
x_6 = l_Lean_Syntax_getTailPos_x3f(x_1, x_2);
|
||||
if (lean_obj_tag(x_6) == 0)
|
||||
lean_object* x_6; lean_object* x_7;
|
||||
x_6 = lean_ctor_get(x_4, 0);
|
||||
lean_inc(x_6);
|
||||
lean_dec(x_4);
|
||||
x_7 = l_Lean_Syntax_getTailPos_x3f(x_1, x_3);
|
||||
if (lean_obj_tag(x_7) == 0)
|
||||
{
|
||||
lean_object* x_7;
|
||||
lean_dec(x_5);
|
||||
x_7 = lean_box(2);
|
||||
return x_7;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_8; lean_object* x_9;
|
||||
x_8 = lean_ctor_get(x_6, 0);
|
||||
lean_inc(x_8);
|
||||
lean_object* x_8;
|
||||
lean_dec(x_6);
|
||||
x_9 = lean_alloc_ctor(1, 2, 0);
|
||||
lean_ctor_set(x_9, 0, x_5);
|
||||
lean_ctor_set(x_9, 1, x_8);
|
||||
return x_9;
|
||||
x_8 = lean_box(2);
|
||||
return x_8;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_9; lean_object* x_10;
|
||||
x_9 = lean_ctor_get(x_7, 0);
|
||||
lean_inc(x_9);
|
||||
lean_dec(x_7);
|
||||
x_10 = lean_alloc_ctor(1, 2, 1);
|
||||
lean_ctor_set(x_10, 0, x_6);
|
||||
lean_ctor_set(x_10, 1, x_9);
|
||||
lean_ctor_set_uint8(x_10, sizeof(void*)*2, x_3);
|
||||
return x_10;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
uint8_t x_11; lean_object* x_12;
|
||||
x_11 = 1;
|
||||
x_12 = l_Lean_Syntax_getPos_x3f(x_1, x_11);
|
||||
if (lean_obj_tag(x_12) == 0)
|
||||
{
|
||||
uint8_t x_13; lean_object* x_14;
|
||||
x_13 = 0;
|
||||
x_14 = l_Lean_Syntax_getPos_x3f(x_1, x_13);
|
||||
if (lean_obj_tag(x_14) == 0)
|
||||
{
|
||||
lean_object* x_15;
|
||||
lean_dec(x_1);
|
||||
x_15 = lean_box(2);
|
||||
return x_15;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_16; lean_object* x_17;
|
||||
x_16 = lean_ctor_get(x_14, 0);
|
||||
lean_inc(x_16);
|
||||
lean_dec(x_14);
|
||||
x_17 = l_Lean_Syntax_getTailPos_x3f(x_1, x_13);
|
||||
if (lean_obj_tag(x_17) == 0)
|
||||
{
|
||||
lean_object* x_18;
|
||||
lean_dec(x_16);
|
||||
x_18 = lean_box(2);
|
||||
return x_18;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_19; lean_object* x_20;
|
||||
x_19 = lean_ctor_get(x_17, 0);
|
||||
lean_inc(x_19);
|
||||
lean_dec(x_17);
|
||||
x_20 = lean_alloc_ctor(1, 2, 1);
|
||||
lean_ctor_set(x_20, 0, x_16);
|
||||
lean_ctor_set(x_20, 1, x_19);
|
||||
lean_ctor_set_uint8(x_20, sizeof(void*)*2, x_13);
|
||||
return x_20;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_21; lean_object* x_22;
|
||||
x_21 = lean_ctor_get(x_12, 0);
|
||||
lean_inc(x_21);
|
||||
lean_dec(x_12);
|
||||
lean_inc(x_1);
|
||||
x_22 = l_Lean_Syntax_getTailPos_x3f(x_1, x_11);
|
||||
if (lean_obj_tag(x_22) == 0)
|
||||
{
|
||||
uint8_t x_23; lean_object* x_24;
|
||||
lean_dec(x_21);
|
||||
x_23 = 0;
|
||||
x_24 = l_Lean_Syntax_getPos_x3f(x_1, x_23);
|
||||
if (lean_obj_tag(x_24) == 0)
|
||||
{
|
||||
lean_object* x_25;
|
||||
lean_dec(x_1);
|
||||
x_25 = lean_box(2);
|
||||
return x_25;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_26; lean_object* x_27;
|
||||
x_26 = lean_ctor_get(x_24, 0);
|
||||
lean_inc(x_26);
|
||||
lean_dec(x_24);
|
||||
x_27 = l_Lean_Syntax_getTailPos_x3f(x_1, x_23);
|
||||
if (lean_obj_tag(x_27) == 0)
|
||||
{
|
||||
lean_object* x_28;
|
||||
lean_dec(x_26);
|
||||
x_28 = lean_box(2);
|
||||
return x_28;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_29; lean_object* x_30;
|
||||
x_29 = lean_ctor_get(x_27, 0);
|
||||
lean_inc(x_29);
|
||||
lean_dec(x_27);
|
||||
x_30 = lean_alloc_ctor(1, 2, 1);
|
||||
lean_ctor_set(x_30, 0, x_26);
|
||||
lean_ctor_set(x_30, 1, x_29);
|
||||
lean_ctor_set_uint8(x_30, sizeof(void*)*2, x_23);
|
||||
return x_30;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_31; lean_object* x_32;
|
||||
lean_dec(x_1);
|
||||
x_31 = lean_ctor_get(x_22, 0);
|
||||
lean_inc(x_31);
|
||||
lean_dec(x_22);
|
||||
x_32 = lean_alloc_ctor(1, 2, 1);
|
||||
lean_ctor_set(x_32, 0, x_21);
|
||||
lean_ctor_set(x_32, 1, x_31);
|
||||
lean_ctor_set_uint8(x_32, sizeof(void*)*2, x_11);
|
||||
return x_32;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_SourceInfo_fromRef___boxed(lean_object* x_1, lean_object* x_2) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_3; lean_object* x_4;
|
||||
x_3 = lean_unbox(x_2);
|
||||
lean_dec(x_2);
|
||||
x_4 = l_Lean_SourceInfo_fromRef(x_1, x_3);
|
||||
return x_4;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_mkAtom(lean_object* x_1) {
|
||||
_start:
|
||||
|
|
@ -8711,15 +8881,25 @@ lean_ctor_set(x_3, 1, x_1);
|
|||
return x_3;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_mkAtomFrom(lean_object* x_1, lean_object* x_2) {
|
||||
LEAN_EXPORT lean_object* l_Lean_mkAtomFrom(lean_object* x_1, lean_object* x_2, uint8_t x_3) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_3; lean_object* x_4;
|
||||
x_3 = l_Lean_SourceInfo_fromRef(x_1);
|
||||
x_4 = lean_alloc_ctor(2, 2, 0);
|
||||
lean_ctor_set(x_4, 0, x_3);
|
||||
lean_ctor_set(x_4, 1, x_2);
|
||||
return x_4;
|
||||
lean_object* x_4; lean_object* x_5;
|
||||
x_4 = l_Lean_SourceInfo_fromRef(x_1, x_3);
|
||||
x_5 = lean_alloc_ctor(2, 2, 0);
|
||||
lean_ctor_set(x_5, 0, x_4);
|
||||
lean_ctor_set(x_5, 1, x_2);
|
||||
return x_5;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_mkAtomFrom___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_4; lean_object* x_5;
|
||||
x_4 = lean_unbox(x_3);
|
||||
lean_dec(x_3);
|
||||
x_5 = l_Lean_mkAtomFrom(x_1, x_2, x_4);
|
||||
return x_5;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_instInhabitedParserDescr___closed__1() {
|
||||
|
|
@ -8891,16 +9071,17 @@ return x_5;
|
|||
LEAN_EXPORT lean_object* l_Lean_MonadRef_mkInfoFromRefPos___rarg___lambda__1(lean_object* x_1, lean_object* x_2) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6;
|
||||
lean_object* x_3; lean_object* x_4; uint8_t x_5; lean_object* x_6; lean_object* x_7;
|
||||
x_3 = lean_ctor_get(x_1, 0);
|
||||
lean_inc(x_3);
|
||||
lean_dec(x_1);
|
||||
x_4 = lean_ctor_get(x_3, 1);
|
||||
lean_inc(x_4);
|
||||
lean_dec(x_3);
|
||||
x_5 = l_Lean_SourceInfo_fromRef(x_2);
|
||||
x_6 = lean_apply_2(x_4, lean_box(0), x_5);
|
||||
return x_6;
|
||||
x_5 = 0;
|
||||
x_6 = l_Lean_SourceInfo_fromRef(x_2, x_5);
|
||||
x_7 = lean_apply_2(x_4, lean_box(0), x_6);
|
||||
return x_7;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_MonadRef_mkInfoFromRefPos___rarg(lean_object* x_1, lean_object* x_2) {
|
||||
|
|
|
|||
630
stage0/stdlib/Init/Tactics.c
generated
630
stage0/stdlib/Init/Tactics.c
generated
File diff suppressed because it is too large
Load diff
6
stage0/stdlib/Lean/Compiler/LCNF.c
generated
6
stage0/stdlib/Lean/Compiler/LCNF.c
generated
|
|
@ -1,6 +1,6 @@
|
|||
// Lean compiler output
|
||||
// Module: Lean.Compiler.LCNF
|
||||
// Imports: Init Lean.Compiler.LCNF.AlphaEqv Lean.Compiler.LCNF.Basic Lean.Compiler.LCNF.Bind Lean.Compiler.LCNF.Check Lean.Compiler.LCNF.CompilerM Lean.Compiler.LCNF.CSE Lean.Compiler.LCNF.DependsOn Lean.Compiler.LCNF.ElimDead Lean.Compiler.LCNF.FixedArgs Lean.Compiler.LCNF.InferType Lean.Compiler.LCNF.JoinPoints Lean.Compiler.LCNF.LCtx Lean.Compiler.LCNF.Level Lean.Compiler.LCNF.Main Lean.Compiler.LCNF.Passes Lean.Compiler.LCNF.PassManager Lean.Compiler.LCNF.PhaseExt Lean.Compiler.LCNF.PrettyPrinter Lean.Compiler.LCNF.PullFunDecls Lean.Compiler.LCNF.PullLetDecls Lean.Compiler.LCNF.ReduceJpArity Lean.Compiler.LCNF.Simp Lean.Compiler.LCNF.Specialize Lean.Compiler.LCNF.SpecInfo Lean.Compiler.LCNF.Testing Lean.Compiler.LCNF.ToDecl Lean.Compiler.LCNF.ToExpr Lean.Compiler.LCNF.ToLCNF Lean.Compiler.LCNF.Types Lean.Compiler.LCNF.Util
|
||||
// Imports: Init Lean.Compiler.LCNF.AlphaEqv Lean.Compiler.LCNF.Basic Lean.Compiler.LCNF.Bind Lean.Compiler.LCNF.Check Lean.Compiler.LCNF.CompilerM Lean.Compiler.LCNF.CSE Lean.Compiler.LCNF.DependsOn Lean.Compiler.LCNF.ElimDead Lean.Compiler.LCNF.FixedArgs Lean.Compiler.LCNF.InferType Lean.Compiler.LCNF.JoinPoints Lean.Compiler.LCNF.LCtx Lean.Compiler.LCNF.Level Lean.Compiler.LCNF.Main Lean.Compiler.LCNF.Passes Lean.Compiler.LCNF.PassManager Lean.Compiler.LCNF.PhaseExt Lean.Compiler.LCNF.PrettyPrinter Lean.Compiler.LCNF.PullFunDecls Lean.Compiler.LCNF.PullLetDecls Lean.Compiler.LCNF.ReduceJpArity Lean.Compiler.LCNF.Simp Lean.Compiler.LCNF.Specialize Lean.Compiler.LCNF.SpecInfo Lean.Compiler.LCNF.Testing Lean.Compiler.LCNF.ToDecl Lean.Compiler.LCNF.ToExpr Lean.Compiler.LCNF.ToLCNF Lean.Compiler.LCNF.Types Lean.Compiler.LCNF.Util Lean.Compiler.LCNF.ConfigOptions
|
||||
#include <lean/lean.h>
|
||||
#if defined(__clang__)
|
||||
#pragma clang diagnostic ignored "-Wunused-parameter"
|
||||
|
|
@ -44,6 +44,7 @@ lean_object* initialize_Lean_Compiler_LCNF_ToExpr(uint8_t builtin, lean_object*)
|
|||
lean_object* initialize_Lean_Compiler_LCNF_ToLCNF(uint8_t builtin, lean_object*);
|
||||
lean_object* initialize_Lean_Compiler_LCNF_Types(uint8_t builtin, lean_object*);
|
||||
lean_object* initialize_Lean_Compiler_LCNF_Util(uint8_t builtin, lean_object*);
|
||||
lean_object* initialize_Lean_Compiler_LCNF_ConfigOptions(uint8_t builtin, lean_object*);
|
||||
static bool _G_initialized = false;
|
||||
LEAN_EXPORT lean_object* initialize_Lean_Compiler_LCNF(uint8_t builtin, lean_object* w) {
|
||||
lean_object * res;
|
||||
|
|
@ -142,6 +143,9 @@ lean_dec_ref(res);
|
|||
res = initialize_Lean_Compiler_LCNF_Util(builtin, lean_io_mk_world());
|
||||
if (lean_io_result_is_error(res)) return res;
|
||||
lean_dec_ref(res);
|
||||
res = initialize_Lean_Compiler_LCNF_ConfigOptions(builtin, lean_io_mk_world());
|
||||
if (lean_io_result_is_error(res)) return res;
|
||||
lean_dec_ref(res);
|
||||
return lean_io_result_mk_ok(lean_box(0));
|
||||
}
|
||||
#ifdef __cplusplus
|
||||
|
|
|
|||
726
stage0/stdlib/Lean/Compiler/LCNF/Basic.c
generated
726
stage0/stdlib/Lean/Compiler/LCNF/Basic.c
generated
|
|
@ -17,6 +17,7 @@ LEAN_EXPORT lean_object* l_panic___at___private_Lean_Compiler_LCNF_Basic_0__Lean
|
|||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_instInhabitedCode;
|
||||
static lean_object* l_Lean_Compiler_LCNF_attachCodeDecls_go___closed__2;
|
||||
static lean_object* l___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_updateContImp___closed__2;
|
||||
LEAN_EXPORT uint8_t l_Lean_Compiler_LCNF_Decl_recursive___default;
|
||||
size_t lean_usize_add(size_t, size_t);
|
||||
static lean_object* l___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_collectExpr___closed__1;
|
||||
static lean_object* l_Lean_Compiler_LCNF_instInhabitedParam___closed__2;
|
||||
|
|
@ -42,15 +43,18 @@ LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_AltCore_forCodeM___rarg(lean_objec
|
|||
static lean_object* l_Lean_Compiler_LCNF_instInhabitedLetDecl___closed__1;
|
||||
static lean_object* l___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_updateFunImp___closed__2;
|
||||
static lean_object* l_Lean_Compiler_LCNF_CasesCore_extractAlt_x21___closed__1;
|
||||
lean_object* lean_array_uset(lean_object*, size_t, lean_object*);
|
||||
LEAN_EXPORT uint8_t l___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_eqAlt(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_updateLetImp(lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Decl_isCasesOnParam_x3f(lean_object*);
|
||||
static lean_object* l___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_updateFunImp___closed__1;
|
||||
LEAN_EXPORT uint8_t l_Array_isEqvAux___at___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_eqCases___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_collectParams___spec__1(lean_object*, size_t, size_t, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_markRecDecls_go___boxed(lean_object*, lean_object*);
|
||||
static lean_object* l_panic___at_Lean_Compiler_LCNF_CasesCore_extractAlt_x21___spec__1___closed__2;
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Code_forM___rarg(lean_object*, lean_object*, lean_object*);
|
||||
uint8_t lean_name_eq(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_markRecDecls_go(lean_object*, lean_object*);
|
||||
LEAN_EXPORT uint8_t l___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_beqParam____x40_Lean_Compiler_LCNF_Basic___hyg_51_(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at_Lean_Compiler_LCNF_CasesCore_getCtorNames___spec__1(lean_object*, size_t, size_t, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_instInhabitedCasesCore(lean_object*);
|
||||
|
|
@ -61,7 +65,7 @@ lean_object* lean_array_get_size(lean_object*);
|
|||
LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at_Lean_Compiler_LCNF_Code_collectUsed___spec__1(lean_object*, size_t, size_t, lean_object*);
|
||||
LEAN_EXPORT uint8_t l___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_beqLetDecl____x40_Lean_Compiler_LCNF_Basic___hyg_282_(lean_object*, lean_object*);
|
||||
static lean_object* l_panic___at___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_collectExpr___spec__3___closed__1;
|
||||
LEAN_EXPORT uint8_t l___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_beqDecl____x40_Lean_Compiler_LCNF_Basic___hyg_3626_(lean_object*, lean_object*);
|
||||
LEAN_EXPORT uint8_t l___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_beqDecl____x40_Lean_Compiler_LCNF_Basic___hyg_3636_(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Code_size(lean_object*);
|
||||
LEAN_EXPORT uint8_t l_Array_isEqvAux___at___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_eqAlt___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Decl_instantiateValueLevelParams(lean_object*, lean_object*);
|
||||
|
|
@ -74,6 +78,7 @@ LEAN_EXPORT lean_object* l___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_L
|
|||
LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_collectExprs___spec__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT uint8_t l___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_eqFunDecl(lean_object*, lean_object*);
|
||||
static lean_object* l_Lean_Compiler_LCNF_instInhabitedAltCore___rarg___closed__1;
|
||||
uint8_t lean_usize_dec_lt(size_t, size_t);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Code_forM_go___rarg(lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_instBEqLetDecl;
|
||||
LEAN_EXPORT uint8_t l_Lean_Compiler_LCNF_Code_isFun(lean_object*);
|
||||
|
|
@ -82,17 +87,20 @@ LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at___private_Lean_Compiler_
|
|||
lean_object* lean_nat_add(lean_object*, lean_object*);
|
||||
static lean_object* l_Lean_Compiler_LCNF_attachCodeDecls_go___closed__4;
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_instInhabitedAltCore(lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Array_mapMUnsafe_map___at_Lean_Compiler_LCNF_markRecDecls___spec__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
static lean_object* l___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_updateAltImp___closed__2;
|
||||
LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at_Lean_Compiler_LCNF_markRecDecls_go___spec__1(lean_object*, lean_object*, size_t, size_t, lean_object*, lean_object*);
|
||||
static lean_object* l___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_updateAltsImp___closed__2;
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_markRecDecls_visit___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_instBEqFunDecl;
|
||||
LEAN_EXPORT lean_object* l___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_eqCases___boxed(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_updateParamCoreImp(lean_object*, lean_object*);
|
||||
static lean_object* l_Lean_Compiler_LCNF_instInhabitedCode___closed__1;
|
||||
LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at_Lean_Compiler_LCNF_markRecDecls_visit___spec__2___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_beqParam____x40_Lean_Compiler_LCNF_Basic___hyg_51____boxed(lean_object*, lean_object*);
|
||||
LEAN_EXPORT uint8_t l_Lean_Compiler_LCNF_Code_isReturnOf(lean_object*, lean_object*);
|
||||
lean_object* lean_array_fget(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_attachCodeDecls(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_beqDecl____x40_Lean_Compiler_LCNF_Basic___hyg_3626____boxed(lean_object*, lean_object*);
|
||||
uint8_t lean_nat_dec_eq(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_instInhabitedParam;
|
||||
LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at_Lean_Compiler_LCNF_Code_sizeLe_go___spec__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
|
|
@ -117,8 +125,11 @@ LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Code_isFun___boxed(lean_object*);
|
|||
static lean_object* l___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_updateJmpImp___closed__2;
|
||||
static lean_object* l_Lean_Compiler_LCNF_instBEqLetDecl___closed__1;
|
||||
static lean_object* l_Lean_Compiler_LCNF_attachCodeDecls_go___closed__3;
|
||||
LEAN_EXPORT uint8_t l_List_beq___at___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_beqDecl____x40_Lean_Compiler_LCNF_Basic___hyg_3636____spec__1(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_beqDecl____x40_Lean_Compiler_LCNF_Basic___hyg_3636____boxed(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_instInhabitedLetDecl;
|
||||
LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at_Lean_Compiler_LCNF_Code_sizeLe_go___spec__1(lean_object*, lean_object*, size_t, size_t, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_markRecDecls(lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Decl_instantiateValueLevelParams_instExpr(lean_object*, lean_object*, lean_object*);
|
||||
uint8_t l_Lean_Name_quickCmp(lean_object*, lean_object*);
|
||||
static lean_object* l_Lean_Compiler_LCNF_CasesCore_extractAlt_x21___closed__3;
|
||||
|
|
@ -128,12 +139,12 @@ LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_CasesCore_extractAlt_x21___lambda_
|
|||
LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_collectExprs___spec__1(lean_object*, size_t, size_t, lean_object*);
|
||||
LEAN_EXPORT lean_object* l___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_eqImp___boxed(lean_object*, lean_object*);
|
||||
LEAN_EXPORT uint8_t l___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_eqImp(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Array_isEqvAux___at___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_beqDecl____x40_Lean_Compiler_LCNF_Basic___hyg_3626____spec__2___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_List_beq___at___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_beqDecl____x40_Lean_Compiler_LCNF_Basic___hyg_3636____spec__1___boxed(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_FunDeclCore_getArity(lean_object*);
|
||||
LEAN_EXPORT uint8_t l_List_beq___at___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_beqDecl____x40_Lean_Compiler_LCNF_Basic___hyg_3626____spec__1(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Decl_instantiateValueLevelParams_instLetDecl___boxed(lean_object*, lean_object*, lean_object*);
|
||||
static lean_object* l_Lean_Compiler_LCNF_instBEqCode___closed__1;
|
||||
static lean_object* l___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_updateReturnImp___closed__2;
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_markRecDecls_visit___boxed(lean_object*, lean_object*, lean_object*);
|
||||
static lean_object* l___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_updateJmpImp___closed__1;
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_instBEqParam;
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_CodeDecl_fvarId___boxed(lean_object*);
|
||||
|
|
@ -144,6 +155,7 @@ lean_object* l___private_Init_Util_0__mkPanicMessageWithDecl(lean_object*, lean_
|
|||
LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at_Lean_Compiler_LCNF_Code_forM_go___spec__1(lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_instBEqCode;
|
||||
lean_object* l_Lean_Expr_bvar___override(lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Array_anyMUnsafe_any___at_Lean_Compiler_LCNF_markRecDecls_visit___spec__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
static lean_object* l_Lean_Compiler_LCNF_instInhabitedDecl___closed__1;
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Decl_instantiateValueLevelParams_instParams___lambda__1(lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_RBNode_insert___at___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_collectExpr___spec__1(lean_object*, lean_object*, lean_object*);
|
||||
|
|
@ -152,23 +164,30 @@ LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at_Lean_Compiler_LCNF_Cases
|
|||
lean_object* l_Array_mapMono(lean_object*);
|
||||
size_t lean_usize_of_nat(lean_object*);
|
||||
extern lean_object* l_Lean_NameSet_empty;
|
||||
LEAN_EXPORT uint8_t l_Array_anyMUnsafe_any___at_Lean_Compiler_LCNF_markRecDecls_visit___spec__1(lean_object*, lean_object*, size_t, size_t);
|
||||
LEAN_EXPORT lean_object* l_Array_isEqvAux___at___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_beqDecl____x40_Lean_Compiler_LCNF_Basic___hyg_3636____spec__2___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_AltCore_getCode___boxed(lean_object*);
|
||||
static lean_object* l___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_updateAltImp___closed__4;
|
||||
LEAN_EXPORT lean_object* l_panic___at___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_updateAltsImp___spec__1(lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Decl_instantiateParamsLevelParams(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at_Lean_Compiler_LCNF_markRecDecls_visit___spec__2(lean_object*, lean_object*, size_t, size_t, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_beqLetDecl____x40_Lean_Compiler_LCNF_Basic___hyg_282____boxed(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at_Lean_Compiler_LCNF_Code_size_go___spec__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Code_sizeLe_go___boxed(lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_collectExprs___boxed(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_markRecDecls_visit(lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Expr_fvar___override(lean_object*);
|
||||
size_t lean_ptr_addr(lean_object*);
|
||||
LEAN_EXPORT lean_object* l_panic___at___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_collectExpr___spec__3___lambda__1___boxed(lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Array_isEqvAux___at___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_eqImp___spec__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at_Lean_Compiler_LCNF_markRecDecls_go___spec__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_attachCodeDecls_go(lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Code_sizeLe_go(lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT uint8_t l_Lean_Compiler_LCNF_Decl_isCasesOnParam_x3f_go___lambda__1(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_collectExpr(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Code_isDecl___boxed(lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Array_mapMUnsafe_map___at_Lean_Compiler_LCNF_markRecDecls___spec__1(lean_object*, size_t, size_t, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_markRecDecls_visit___lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_CasesCore_getCtorNames(lean_object*);
|
||||
uint8_t lean_expr_eqv(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_panic___at_Lean_Compiler_LCNF_attachCodeDecls_go___spec__1(lean_object*);
|
||||
|
|
@ -209,11 +228,13 @@ LEAN_EXPORT lean_object* l___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_L
|
|||
LEAN_EXPORT lean_object* l___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_updateFunDeclCoreImp(lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_updateJmpImp(lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_FunDeclCore_getArity___rarg___boxed(lean_object*);
|
||||
LEAN_EXPORT uint8_t l_Array_isEqvAux___at___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_beqDecl____x40_Lean_Compiler_LCNF_Basic___hyg_3636____spec__2(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Decl_instantiateValueLevelParams_instLetDecl(lean_object*, lean_object*, lean_object*);
|
||||
uint8_t l_Lean_NameSet_contains(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Decl_instantiateValueLevelParams_instParams(lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_List_beq___at___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_beqDecl____x40_Lean_Compiler_LCNF_Basic___hyg_3626____spec__1___boxed(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Code_forM(lean_object*);
|
||||
LEAN_EXPORT lean_object* l_panic___at___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_collectExpr___spec__3(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Expr_getAppFn(lean_object*);
|
||||
LEAN_EXPORT lean_object* l___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_updateUnreachImp(lean_object*, lean_object*);
|
||||
lean_object* l_Array_findIdx_x3f_loop___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_panic___at_Lean_Compiler_LCNF_CasesCore_extractAlt_x21___spec__1(lean_object*);
|
||||
|
|
@ -244,7 +265,6 @@ LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Decl_isCasesOnParam_x3f_go___boxed
|
|||
LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at_Lean_Compiler_LCNF_Code_forM_go___spec__1___rarg___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_collectExprs(lean_object*, lean_object*);
|
||||
static lean_object* l___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_updateAltImp___closed__3;
|
||||
LEAN_EXPORT uint8_t l_Array_isEqvAux___at___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_beqDecl____x40_Lean_Compiler_LCNF_Basic___hyg_3626____spec__2(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
static lean_object* l_panic___at___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_updateAltImp___spec__1___closed__1;
|
||||
uint8_t lean_nat_dec_lt(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_instInhabitedFunDeclCore(lean_object*);
|
||||
|
|
@ -4835,22 +4855,32 @@ x_2 = lean_alloc_closure((void*)(l_Lean_Compiler_LCNF_Code_forM___rarg), 3, 0);
|
|||
return x_2;
|
||||
}
|
||||
}
|
||||
static uint8_t _init_l_Lean_Compiler_LCNF_Decl_recursive___default() {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_1;
|
||||
x_1 = 0;
|
||||
return x_1;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Compiler_LCNF_instInhabitedDecl___closed__1() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6;
|
||||
lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; uint8_t x_6; lean_object* x_7;
|
||||
x_1 = lean_box(0);
|
||||
x_2 = lean_box(0);
|
||||
x_3 = l_Lean_Compiler_LCNF_instInhabitedParam___closed__1;
|
||||
x_4 = l_Lean_Compiler_LCNF_instInhabitedAltCore___rarg___closed__1;
|
||||
x_5 = l_Lean_Compiler_LCNF_instInhabitedCode___closed__1;
|
||||
x_6 = lean_alloc_ctor(0, 5, 0);
|
||||
lean_ctor_set(x_6, 0, x_2);
|
||||
lean_ctor_set(x_6, 1, x_1);
|
||||
lean_ctor_set(x_6, 2, x_3);
|
||||
lean_ctor_set(x_6, 3, x_4);
|
||||
lean_ctor_set(x_6, 4, x_5);
|
||||
return x_6;
|
||||
x_6 = 0;
|
||||
x_7 = lean_alloc_ctor(0, 5, 1);
|
||||
lean_ctor_set(x_7, 0, x_2);
|
||||
lean_ctor_set(x_7, 1, x_1);
|
||||
lean_ctor_set(x_7, 2, x_3);
|
||||
lean_ctor_set(x_7, 3, x_4);
|
||||
lean_ctor_set(x_7, 4, x_5);
|
||||
lean_ctor_set_uint8(x_7, sizeof(void*)*5, x_6);
|
||||
return x_7;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Compiler_LCNF_instInhabitedDecl() {
|
||||
|
|
@ -4861,7 +4891,7 @@ x_1 = l_Lean_Compiler_LCNF_instInhabitedDecl___closed__1;
|
|||
return x_1;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT uint8_t l_List_beq___at___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_beqDecl____x40_Lean_Compiler_LCNF_Basic___hyg_3626____spec__1(lean_object* x_1, lean_object* x_2) {
|
||||
LEAN_EXPORT uint8_t l_List_beq___at___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_beqDecl____x40_Lean_Compiler_LCNF_Basic___hyg_3636____spec__1(lean_object* x_1, lean_object* x_2) {
|
||||
_start:
|
||||
{
|
||||
if (lean_obj_tag(x_1) == 0)
|
||||
|
|
@ -4911,7 +4941,7 @@ goto _start;
|
|||
}
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT uint8_t l_Array_isEqvAux___at___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_beqDecl____x40_Lean_Compiler_LCNF_Basic___hyg_3626____spec__2(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6) {
|
||||
LEAN_EXPORT uint8_t l_Array_isEqvAux___at___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_beqDecl____x40_Lean_Compiler_LCNF_Basic___hyg_3636____spec__2(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_7; uint8_t x_8;
|
||||
|
|
@ -4953,10 +4983,10 @@ goto _start;
|
|||
}
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT uint8_t l___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_beqDecl____x40_Lean_Compiler_LCNF_Basic___hyg_3626_(lean_object* x_1, lean_object* x_2) {
|
||||
LEAN_EXPORT uint8_t l___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_beqDecl____x40_Lean_Compiler_LCNF_Basic___hyg_3636_(lean_object* x_1, lean_object* x_2) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; lean_object* x_7; lean_object* x_8; lean_object* x_9; lean_object* x_10; lean_object* x_11; lean_object* x_12; uint8_t x_13;
|
||||
lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; lean_object* x_7; uint8_t x_8; lean_object* x_9; lean_object* x_10; lean_object* x_11; lean_object* x_12; lean_object* x_13; uint8_t x_14; uint8_t x_15;
|
||||
x_3 = lean_ctor_get(x_1, 0);
|
||||
lean_inc(x_3);
|
||||
x_4 = lean_ctor_get(x_1, 1);
|
||||
|
|
@ -4967,85 +4997,112 @@ x_6 = lean_ctor_get(x_1, 3);
|
|||
lean_inc(x_6);
|
||||
x_7 = lean_ctor_get(x_1, 4);
|
||||
lean_inc(x_7);
|
||||
x_8 = lean_ctor_get_uint8(x_1, sizeof(void*)*5);
|
||||
lean_dec(x_1);
|
||||
x_8 = lean_ctor_get(x_2, 0);
|
||||
x_9 = lean_ctor_get(x_2, 1);
|
||||
x_10 = lean_ctor_get(x_2, 2);
|
||||
x_11 = lean_ctor_get(x_2, 3);
|
||||
x_12 = lean_ctor_get(x_2, 4);
|
||||
x_13 = lean_name_eq(x_3, x_8);
|
||||
x_9 = lean_ctor_get(x_2, 0);
|
||||
x_10 = lean_ctor_get(x_2, 1);
|
||||
x_11 = lean_ctor_get(x_2, 2);
|
||||
x_12 = lean_ctor_get(x_2, 3);
|
||||
x_13 = lean_ctor_get(x_2, 4);
|
||||
x_14 = lean_ctor_get_uint8(x_2, sizeof(void*)*5);
|
||||
x_15 = lean_name_eq(x_3, x_9);
|
||||
lean_dec(x_3);
|
||||
if (x_13 == 0)
|
||||
{
|
||||
uint8_t x_14;
|
||||
lean_dec(x_7);
|
||||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
x_14 = 0;
|
||||
return x_14;
|
||||
}
|
||||
else
|
||||
{
|
||||
uint8_t x_15;
|
||||
x_15 = l_List_beq___at___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_beqDecl____x40_Lean_Compiler_LCNF_Basic___hyg_3626____spec__1(x_4, x_9);
|
||||
lean_dec(x_4);
|
||||
if (x_15 == 0)
|
||||
{
|
||||
uint8_t x_16;
|
||||
lean_dec(x_7);
|
||||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
x_16 = 0;
|
||||
return x_16;
|
||||
}
|
||||
else
|
||||
{
|
||||
uint8_t x_17;
|
||||
x_17 = lean_expr_eqv(x_5, x_10);
|
||||
lean_dec(x_5);
|
||||
x_17 = l_List_beq___at___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_beqDecl____x40_Lean_Compiler_LCNF_Basic___hyg_3636____spec__1(x_4, x_10);
|
||||
lean_dec(x_4);
|
||||
if (x_17 == 0)
|
||||
{
|
||||
uint8_t x_18;
|
||||
lean_dec(x_7);
|
||||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
x_18 = 0;
|
||||
return x_18;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_19; lean_object* x_20; uint8_t x_21;
|
||||
x_19 = lean_array_get_size(x_6);
|
||||
x_20 = lean_array_get_size(x_11);
|
||||
x_21 = lean_nat_dec_eq(x_19, x_20);
|
||||
lean_dec(x_20);
|
||||
lean_dec(x_19);
|
||||
if (x_21 == 0)
|
||||
uint8_t x_19;
|
||||
x_19 = lean_expr_eqv(x_5, x_11);
|
||||
lean_dec(x_5);
|
||||
if (x_19 == 0)
|
||||
{
|
||||
uint8_t x_22;
|
||||
uint8_t x_20;
|
||||
lean_dec(x_7);
|
||||
lean_dec(x_6);
|
||||
x_22 = 0;
|
||||
return x_22;
|
||||
x_20 = 0;
|
||||
return x_20;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_23; uint8_t x_24;
|
||||
x_23 = lean_unsigned_to_nat(0u);
|
||||
x_24 = l_Array_isEqvAux___at___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_beqDecl____x40_Lean_Compiler_LCNF_Basic___hyg_3626____spec__2(x_6, x_11, lean_box(0), x_6, x_11, x_23);
|
||||
lean_dec(x_6);
|
||||
if (x_24 == 0)
|
||||
lean_object* x_21; lean_object* x_22; uint8_t x_23;
|
||||
x_21 = lean_array_get_size(x_6);
|
||||
x_22 = lean_array_get_size(x_12);
|
||||
x_23 = lean_nat_dec_eq(x_21, x_22);
|
||||
lean_dec(x_22);
|
||||
lean_dec(x_21);
|
||||
if (x_23 == 0)
|
||||
{
|
||||
uint8_t x_25;
|
||||
uint8_t x_24;
|
||||
lean_dec(x_7);
|
||||
x_25 = 0;
|
||||
return x_25;
|
||||
lean_dec(x_6);
|
||||
x_24 = 0;
|
||||
return x_24;
|
||||
}
|
||||
else
|
||||
{
|
||||
uint8_t x_26;
|
||||
x_26 = l___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_eqImp(x_7, x_12);
|
||||
return x_26;
|
||||
lean_object* x_25; uint8_t x_26;
|
||||
x_25 = lean_unsigned_to_nat(0u);
|
||||
x_26 = l_Array_isEqvAux___at___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_beqDecl____x40_Lean_Compiler_LCNF_Basic___hyg_3636____spec__2(x_6, x_12, lean_box(0), x_6, x_12, x_25);
|
||||
lean_dec(x_6);
|
||||
if (x_26 == 0)
|
||||
{
|
||||
uint8_t x_27;
|
||||
lean_dec(x_7);
|
||||
x_27 = 0;
|
||||
return x_27;
|
||||
}
|
||||
else
|
||||
{
|
||||
uint8_t x_28;
|
||||
x_28 = l___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_eqImp(x_7, x_13);
|
||||
if (x_28 == 0)
|
||||
{
|
||||
uint8_t x_29;
|
||||
x_29 = 0;
|
||||
return x_29;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (x_8 == 0)
|
||||
{
|
||||
if (x_14 == 0)
|
||||
{
|
||||
uint8_t x_30;
|
||||
x_30 = 1;
|
||||
return x_30;
|
||||
}
|
||||
else
|
||||
{
|
||||
uint8_t x_31;
|
||||
x_31 = 0;
|
||||
return x_31;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return x_14;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -5053,22 +5110,24 @@ return x_26;
|
|||
}
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_List_beq___at___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_beqDecl____x40_Lean_Compiler_LCNF_Basic___hyg_3626____spec__1___boxed(lean_object* x_1, lean_object* x_2) {
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_List_beq___at___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_beqDecl____x40_Lean_Compiler_LCNF_Basic___hyg_3636____spec__1___boxed(lean_object* x_1, lean_object* x_2) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_3; lean_object* x_4;
|
||||
x_3 = l_List_beq___at___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_beqDecl____x40_Lean_Compiler_LCNF_Basic___hyg_3626____spec__1(x_1, x_2);
|
||||
x_3 = l_List_beq___at___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_beqDecl____x40_Lean_Compiler_LCNF_Basic___hyg_3636____spec__1(x_1, x_2);
|
||||
lean_dec(x_2);
|
||||
lean_dec(x_1);
|
||||
x_4 = lean_box(x_3);
|
||||
return x_4;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Array_isEqvAux___at___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_beqDecl____x40_Lean_Compiler_LCNF_Basic___hyg_3626____spec__2___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6) {
|
||||
LEAN_EXPORT lean_object* l_Array_isEqvAux___at___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_beqDecl____x40_Lean_Compiler_LCNF_Basic___hyg_3636____spec__2___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_7; lean_object* x_8;
|
||||
x_7 = l_Array_isEqvAux___at___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_beqDecl____x40_Lean_Compiler_LCNF_Basic___hyg_3626____spec__2(x_1, x_2, x_3, x_4, x_5, x_6);
|
||||
x_7 = l_Array_isEqvAux___at___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_beqDecl____x40_Lean_Compiler_LCNF_Basic___hyg_3636____spec__2(x_1, x_2, x_3, x_4, x_5, x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_2);
|
||||
|
|
@ -5077,11 +5136,11 @@ x_8 = lean_box(x_7);
|
|||
return x_8;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_beqDecl____x40_Lean_Compiler_LCNF_Basic___hyg_3626____boxed(lean_object* x_1, lean_object* x_2) {
|
||||
LEAN_EXPORT lean_object* l___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_beqDecl____x40_Lean_Compiler_LCNF_Basic___hyg_3636____boxed(lean_object* x_1, lean_object* x_2) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_3; lean_object* x_4;
|
||||
x_3 = l___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_beqDecl____x40_Lean_Compiler_LCNF_Basic___hyg_3626_(x_1, x_2);
|
||||
x_3 = l___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_beqDecl____x40_Lean_Compiler_LCNF_Basic___hyg_3636_(x_1, x_2);
|
||||
lean_dec(x_2);
|
||||
x_4 = lean_box(x_3);
|
||||
return x_4;
|
||||
|
|
@ -5091,7 +5150,7 @@ static lean_object* _init_l_Lean_Compiler_LCNF_instBEqDecl___closed__1() {
|
|||
_start:
|
||||
{
|
||||
lean_object* x_1;
|
||||
x_1 = lean_alloc_closure((void*)(l___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_beqDecl____x40_Lean_Compiler_LCNF_Basic___hyg_3626____boxed), 2, 0);
|
||||
x_1 = lean_alloc_closure((void*)(l___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_beqDecl____x40_Lean_Compiler_LCNF_Basic___hyg_3636____boxed), 2, 0);
|
||||
return x_1;
|
||||
}
|
||||
}
|
||||
|
|
@ -8481,7 +8540,7 @@ _start:
|
|||
lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6;
|
||||
x_1 = l___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_updateAltImp___closed__1;
|
||||
x_2 = l___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_collectExpr___closed__1;
|
||||
x_3 = lean_unsigned_to_nat(438u);
|
||||
x_3 = lean_unsigned_to_nat(448u);
|
||||
x_4 = lean_unsigned_to_nat(24u);
|
||||
x_5 = l___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_updateAltImp___closed__3;
|
||||
x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
|
||||
|
|
@ -8943,6 +9002,532 @@ x_3 = l___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_collectExpr(x_2
|
|||
return x_3;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT uint8_t l_Array_anyMUnsafe_any___at_Lean_Compiler_LCNF_markRecDecls_visit___spec__1(lean_object* x_1, lean_object* x_2, size_t x_3, size_t x_4) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_5;
|
||||
x_5 = lean_usize_dec_eq(x_3, x_4);
|
||||
if (x_5 == 0)
|
||||
{
|
||||
lean_object* x_6; lean_object* x_7; uint8_t x_8;
|
||||
x_6 = lean_array_uget(x_2, x_3);
|
||||
x_7 = lean_ctor_get(x_6, 0);
|
||||
lean_inc(x_7);
|
||||
lean_dec(x_6);
|
||||
x_8 = lean_name_eq(x_7, x_1);
|
||||
lean_dec(x_7);
|
||||
if (x_8 == 0)
|
||||
{
|
||||
size_t x_9; size_t x_10;
|
||||
x_9 = 1;
|
||||
x_10 = lean_usize_add(x_3, x_9);
|
||||
x_3 = x_10;
|
||||
goto _start;
|
||||
}
|
||||
else
|
||||
{
|
||||
uint8_t x_12;
|
||||
x_12 = 1;
|
||||
return x_12;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
uint8_t x_13;
|
||||
x_13 = 0;
|
||||
return x_13;
|
||||
}
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at_Lean_Compiler_LCNF_markRecDecls_visit___spec__2(lean_object* x_1, lean_object* x_2, size_t x_3, size_t x_4, lean_object* x_5, lean_object* x_6) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_7;
|
||||
x_7 = lean_usize_dec_eq(x_3, x_4);
|
||||
if (x_7 == 0)
|
||||
{
|
||||
lean_object* x_8; lean_object* x_9; lean_object* x_10; lean_object* x_11; lean_object* x_12; size_t x_13; size_t x_14;
|
||||
lean_dec(x_5);
|
||||
x_8 = lean_array_uget(x_2, x_3);
|
||||
x_9 = l_Lean_Compiler_LCNF_AltCore_getCode(x_8);
|
||||
lean_dec(x_8);
|
||||
x_10 = l_Lean_Compiler_LCNF_markRecDecls_visit(x_1, x_9, x_6);
|
||||
x_11 = lean_ctor_get(x_10, 0);
|
||||
lean_inc(x_11);
|
||||
x_12 = lean_ctor_get(x_10, 1);
|
||||
lean_inc(x_12);
|
||||
lean_dec(x_10);
|
||||
x_13 = 1;
|
||||
x_14 = lean_usize_add(x_3, x_13);
|
||||
x_3 = x_14;
|
||||
x_5 = x_11;
|
||||
x_6 = x_12;
|
||||
goto _start;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_16;
|
||||
x_16 = lean_alloc_ctor(0, 2, 0);
|
||||
lean_ctor_set(x_16, 0, x_5);
|
||||
lean_ctor_set(x_16, 1, x_6);
|
||||
return x_16;
|
||||
}
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_markRecDecls_visit___lambda__1(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_5;
|
||||
lean_dec(x_3);
|
||||
x_5 = l_Lean_Compiler_LCNF_markRecDecls_visit(x_1, x_2, x_4);
|
||||
return x_5;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_markRecDecls_visit(lean_object* x_1, lean_object* x_2, lean_object* x_3) {
|
||||
_start:
|
||||
{
|
||||
switch (lean_obj_tag(x_2)) {
|
||||
case 0:
|
||||
{
|
||||
lean_object* x_4; lean_object* x_5; lean_object* x_6; lean_object* x_7;
|
||||
x_4 = lean_ctor_get(x_2, 0);
|
||||
lean_inc(x_4);
|
||||
x_5 = lean_ctor_get(x_2, 1);
|
||||
lean_inc(x_5);
|
||||
lean_dec(x_2);
|
||||
x_6 = lean_ctor_get(x_4, 3);
|
||||
lean_inc(x_6);
|
||||
lean_dec(x_4);
|
||||
x_7 = l_Lean_Expr_getAppFn(x_6);
|
||||
lean_dec(x_6);
|
||||
if (lean_obj_tag(x_7) == 4)
|
||||
{
|
||||
lean_object* x_8; lean_object* x_9; lean_object* x_10; uint8_t x_11;
|
||||
x_8 = lean_ctor_get(x_7, 0);
|
||||
lean_inc(x_8);
|
||||
lean_dec(x_7);
|
||||
x_9 = lean_array_get_size(x_1);
|
||||
x_10 = lean_unsigned_to_nat(0u);
|
||||
x_11 = lean_nat_dec_lt(x_10, x_9);
|
||||
if (x_11 == 0)
|
||||
{
|
||||
lean_dec(x_9);
|
||||
lean_dec(x_8);
|
||||
x_2 = x_5;
|
||||
goto _start;
|
||||
}
|
||||
else
|
||||
{
|
||||
uint8_t x_13;
|
||||
x_13 = lean_nat_dec_le(x_9, x_9);
|
||||
if (x_13 == 0)
|
||||
{
|
||||
lean_dec(x_9);
|
||||
lean_dec(x_8);
|
||||
x_2 = x_5;
|
||||
goto _start;
|
||||
}
|
||||
else
|
||||
{
|
||||
size_t x_15; size_t x_16; uint8_t x_17;
|
||||
x_15 = 0;
|
||||
x_16 = lean_usize_of_nat(x_9);
|
||||
lean_dec(x_9);
|
||||
x_17 = l_Array_anyMUnsafe_any___at_Lean_Compiler_LCNF_markRecDecls_visit___spec__1(x_8, x_1, x_15, x_16);
|
||||
if (x_17 == 0)
|
||||
{
|
||||
lean_dec(x_8);
|
||||
x_2 = x_5;
|
||||
goto _start;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_19; lean_object* x_20;
|
||||
x_19 = lean_box(0);
|
||||
x_20 = l_Lean_RBNode_insert___at_Lean_NameSet_insert___spec__1(x_3, x_8, x_19);
|
||||
x_2 = x_5;
|
||||
x_3 = x_20;
|
||||
goto _start;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_dec(x_7);
|
||||
x_2 = x_5;
|
||||
goto _start;
|
||||
}
|
||||
}
|
||||
case 1:
|
||||
{
|
||||
lean_object* x_23; lean_object* x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27;
|
||||
x_23 = lean_ctor_get(x_2, 0);
|
||||
lean_inc(x_23);
|
||||
x_24 = lean_ctor_get(x_2, 1);
|
||||
lean_inc(x_24);
|
||||
lean_dec(x_2);
|
||||
x_25 = lean_ctor_get(x_23, 4);
|
||||
lean_inc(x_25);
|
||||
lean_dec(x_23);
|
||||
x_26 = l_Lean_Compiler_LCNF_markRecDecls_visit(x_1, x_25, x_3);
|
||||
x_27 = lean_ctor_get(x_26, 1);
|
||||
lean_inc(x_27);
|
||||
lean_dec(x_26);
|
||||
x_2 = x_24;
|
||||
x_3 = x_27;
|
||||
goto _start;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
lean_object* x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33;
|
||||
x_29 = lean_ctor_get(x_2, 0);
|
||||
lean_inc(x_29);
|
||||
x_30 = lean_ctor_get(x_2, 1);
|
||||
lean_inc(x_30);
|
||||
lean_dec(x_2);
|
||||
x_31 = lean_ctor_get(x_29, 4);
|
||||
lean_inc(x_31);
|
||||
lean_dec(x_29);
|
||||
x_32 = l_Lean_Compiler_LCNF_markRecDecls_visit(x_1, x_31, x_3);
|
||||
x_33 = lean_ctor_get(x_32, 1);
|
||||
lean_inc(x_33);
|
||||
lean_dec(x_32);
|
||||
x_2 = x_30;
|
||||
x_3 = x_33;
|
||||
goto _start;
|
||||
}
|
||||
case 4:
|
||||
{
|
||||
lean_object* x_35; lean_object* x_36; lean_object* x_37; lean_object* x_38; uint8_t x_39;
|
||||
x_35 = lean_ctor_get(x_2, 0);
|
||||
lean_inc(x_35);
|
||||
lean_dec(x_2);
|
||||
x_36 = lean_ctor_get(x_35, 3);
|
||||
lean_inc(x_36);
|
||||
lean_dec(x_35);
|
||||
x_37 = lean_array_get_size(x_36);
|
||||
x_38 = lean_unsigned_to_nat(0u);
|
||||
x_39 = lean_nat_dec_lt(x_38, x_37);
|
||||
if (x_39 == 0)
|
||||
{
|
||||
lean_object* x_40; lean_object* x_41;
|
||||
lean_dec(x_37);
|
||||
lean_dec(x_36);
|
||||
x_40 = lean_box(0);
|
||||
x_41 = lean_alloc_ctor(0, 2, 0);
|
||||
lean_ctor_set(x_41, 0, x_40);
|
||||
lean_ctor_set(x_41, 1, x_3);
|
||||
return x_41;
|
||||
}
|
||||
else
|
||||
{
|
||||
uint8_t x_42;
|
||||
x_42 = lean_nat_dec_le(x_37, x_37);
|
||||
if (x_42 == 0)
|
||||
{
|
||||
lean_object* x_43; lean_object* x_44;
|
||||
lean_dec(x_37);
|
||||
lean_dec(x_36);
|
||||
x_43 = lean_box(0);
|
||||
x_44 = lean_alloc_ctor(0, 2, 0);
|
||||
lean_ctor_set(x_44, 0, x_43);
|
||||
lean_ctor_set(x_44, 1, x_3);
|
||||
return x_44;
|
||||
}
|
||||
else
|
||||
{
|
||||
size_t x_45; size_t x_46; lean_object* x_47; lean_object* x_48;
|
||||
x_45 = 0;
|
||||
x_46 = lean_usize_of_nat(x_37);
|
||||
lean_dec(x_37);
|
||||
x_47 = lean_box(0);
|
||||
x_48 = l_Array_foldlMUnsafe_fold___at_Lean_Compiler_LCNF_markRecDecls_visit___spec__2(x_1, x_36, x_45, x_46, x_47, x_3);
|
||||
lean_dec(x_36);
|
||||
return x_48;
|
||||
}
|
||||
}
|
||||
}
|
||||
default:
|
||||
{
|
||||
lean_object* x_49; lean_object* x_50;
|
||||
lean_dec(x_2);
|
||||
x_49 = lean_box(0);
|
||||
x_50 = lean_alloc_ctor(0, 2, 0);
|
||||
lean_ctor_set(x_50, 0, x_49);
|
||||
lean_ctor_set(x_50, 1, x_3);
|
||||
return x_50;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Array_anyMUnsafe_any___at_Lean_Compiler_LCNF_markRecDecls_visit___spec__1___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4) {
|
||||
_start:
|
||||
{
|
||||
size_t x_5; size_t x_6; uint8_t x_7; lean_object* x_8;
|
||||
x_5 = lean_unbox_usize(x_3);
|
||||
lean_dec(x_3);
|
||||
x_6 = lean_unbox_usize(x_4);
|
||||
lean_dec(x_4);
|
||||
x_7 = l_Array_anyMUnsafe_any___at_Lean_Compiler_LCNF_markRecDecls_visit___spec__1(x_1, x_2, x_5, x_6);
|
||||
lean_dec(x_2);
|
||||
lean_dec(x_1);
|
||||
x_8 = lean_box(x_7);
|
||||
return x_8;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at_Lean_Compiler_LCNF_markRecDecls_visit___spec__2___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6) {
|
||||
_start:
|
||||
{
|
||||
size_t x_7; size_t x_8; lean_object* x_9;
|
||||
x_7 = lean_unbox_usize(x_3);
|
||||
lean_dec(x_3);
|
||||
x_8 = lean_unbox_usize(x_4);
|
||||
lean_dec(x_4);
|
||||
x_9 = l_Array_foldlMUnsafe_fold___at_Lean_Compiler_LCNF_markRecDecls_visit___spec__2(x_1, x_2, x_7, x_8, x_5, x_6);
|
||||
lean_dec(x_2);
|
||||
lean_dec(x_1);
|
||||
return x_9;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_markRecDecls_visit___lambda__1___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_5;
|
||||
x_5 = l_Lean_Compiler_LCNF_markRecDecls_visit___lambda__1(x_1, x_2, x_3, x_4);
|
||||
lean_dec(x_1);
|
||||
return x_5;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_markRecDecls_visit___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_4;
|
||||
x_4 = l_Lean_Compiler_LCNF_markRecDecls_visit(x_1, x_2, x_3);
|
||||
lean_dec(x_1);
|
||||
return x_4;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at_Lean_Compiler_LCNF_markRecDecls_go___spec__1(lean_object* x_1, lean_object* x_2, size_t x_3, size_t x_4, lean_object* x_5, lean_object* x_6) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_7;
|
||||
x_7 = lean_usize_dec_eq(x_3, x_4);
|
||||
if (x_7 == 0)
|
||||
{
|
||||
lean_object* x_8; lean_object* x_9; lean_object* x_10; lean_object* x_11; lean_object* x_12; size_t x_13; size_t x_14;
|
||||
lean_dec(x_5);
|
||||
x_8 = lean_array_uget(x_2, x_3);
|
||||
x_9 = lean_ctor_get(x_8, 4);
|
||||
lean_inc(x_9);
|
||||
lean_dec(x_8);
|
||||
x_10 = l_Lean_Compiler_LCNF_markRecDecls_visit(x_1, x_9, x_6);
|
||||
x_11 = lean_ctor_get(x_10, 0);
|
||||
lean_inc(x_11);
|
||||
x_12 = lean_ctor_get(x_10, 1);
|
||||
lean_inc(x_12);
|
||||
lean_dec(x_10);
|
||||
x_13 = 1;
|
||||
x_14 = lean_usize_add(x_3, x_13);
|
||||
x_3 = x_14;
|
||||
x_5 = x_11;
|
||||
x_6 = x_12;
|
||||
goto _start;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_16;
|
||||
x_16 = lean_alloc_ctor(0, 2, 0);
|
||||
lean_ctor_set(x_16, 0, x_5);
|
||||
lean_ctor_set(x_16, 1, x_6);
|
||||
return x_16;
|
||||
}
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_markRecDecls_go(lean_object* x_1, lean_object* x_2) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_3; lean_object* x_4; uint8_t x_5;
|
||||
x_3 = lean_array_get_size(x_1);
|
||||
x_4 = lean_unsigned_to_nat(0u);
|
||||
x_5 = lean_nat_dec_lt(x_4, x_3);
|
||||
if (x_5 == 0)
|
||||
{
|
||||
lean_object* x_6; lean_object* x_7;
|
||||
lean_dec(x_3);
|
||||
x_6 = lean_box(0);
|
||||
x_7 = lean_alloc_ctor(0, 2, 0);
|
||||
lean_ctor_set(x_7, 0, x_6);
|
||||
lean_ctor_set(x_7, 1, x_2);
|
||||
return x_7;
|
||||
}
|
||||
else
|
||||
{
|
||||
uint8_t x_8;
|
||||
x_8 = lean_nat_dec_le(x_3, x_3);
|
||||
if (x_8 == 0)
|
||||
{
|
||||
lean_object* x_9; lean_object* x_10;
|
||||
lean_dec(x_3);
|
||||
x_9 = lean_box(0);
|
||||
x_10 = lean_alloc_ctor(0, 2, 0);
|
||||
lean_ctor_set(x_10, 0, x_9);
|
||||
lean_ctor_set(x_10, 1, x_2);
|
||||
return x_10;
|
||||
}
|
||||
else
|
||||
{
|
||||
size_t x_11; size_t x_12; lean_object* x_13; lean_object* x_14;
|
||||
x_11 = 0;
|
||||
x_12 = lean_usize_of_nat(x_3);
|
||||
lean_dec(x_3);
|
||||
x_13 = lean_box(0);
|
||||
x_14 = l_Array_foldlMUnsafe_fold___at_Lean_Compiler_LCNF_markRecDecls_go___spec__1(x_1, x_1, x_11, x_12, x_13, x_2);
|
||||
return x_14;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at_Lean_Compiler_LCNF_markRecDecls_go___spec__1___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6) {
|
||||
_start:
|
||||
{
|
||||
size_t x_7; size_t x_8; lean_object* x_9;
|
||||
x_7 = lean_unbox_usize(x_3);
|
||||
lean_dec(x_3);
|
||||
x_8 = lean_unbox_usize(x_4);
|
||||
lean_dec(x_4);
|
||||
x_9 = l_Array_foldlMUnsafe_fold___at_Lean_Compiler_LCNF_markRecDecls_go___spec__1(x_1, x_2, x_7, x_8, x_5, x_6);
|
||||
lean_dec(x_2);
|
||||
lean_dec(x_1);
|
||||
return x_9;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_markRecDecls_go___boxed(lean_object* x_1, lean_object* x_2) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_3;
|
||||
x_3 = l_Lean_Compiler_LCNF_markRecDecls_go(x_1, x_2);
|
||||
lean_dec(x_1);
|
||||
return x_3;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Array_mapMUnsafe_map___at_Lean_Compiler_LCNF_markRecDecls___spec__1(lean_object* x_1, size_t x_2, size_t x_3, lean_object* x_4) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_5;
|
||||
x_5 = lean_usize_dec_lt(x_3, x_2);
|
||||
if (x_5 == 0)
|
||||
{
|
||||
return x_4;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_6; lean_object* x_7; lean_object* x_8; lean_object* x_9; lean_object* x_10; lean_object* x_11; lean_object* x_12; lean_object* x_13; uint8_t x_14; size_t x_15; size_t x_16;
|
||||
x_6 = lean_array_uget(x_4, x_3);
|
||||
x_7 = lean_unsigned_to_nat(0u);
|
||||
x_8 = lean_array_uset(x_4, x_3, x_7);
|
||||
x_9 = lean_ctor_get(x_6, 0);
|
||||
lean_inc(x_9);
|
||||
x_10 = lean_ctor_get(x_6, 1);
|
||||
lean_inc(x_10);
|
||||
x_11 = lean_ctor_get(x_6, 2);
|
||||
lean_inc(x_11);
|
||||
x_12 = lean_ctor_get(x_6, 3);
|
||||
lean_inc(x_12);
|
||||
x_13 = lean_ctor_get(x_6, 4);
|
||||
lean_inc(x_13);
|
||||
x_14 = l_Lean_NameSet_contains(x_1, x_9);
|
||||
x_15 = 1;
|
||||
x_16 = lean_usize_add(x_3, x_15);
|
||||
if (x_14 == 0)
|
||||
{
|
||||
lean_object* x_17;
|
||||
lean_dec(x_13);
|
||||
lean_dec(x_12);
|
||||
lean_dec(x_11);
|
||||
lean_dec(x_10);
|
||||
lean_dec(x_9);
|
||||
x_17 = lean_array_uset(x_8, x_3, x_6);
|
||||
x_3 = x_16;
|
||||
x_4 = x_17;
|
||||
goto _start;
|
||||
}
|
||||
else
|
||||
{
|
||||
uint8_t x_19;
|
||||
x_19 = !lean_is_exclusive(x_6);
|
||||
if (x_19 == 0)
|
||||
{
|
||||
lean_object* x_20; lean_object* x_21; lean_object* x_22; lean_object* x_23; lean_object* x_24; uint8_t x_25; lean_object* x_26;
|
||||
x_20 = lean_ctor_get(x_6, 4);
|
||||
lean_dec(x_20);
|
||||
x_21 = lean_ctor_get(x_6, 3);
|
||||
lean_dec(x_21);
|
||||
x_22 = lean_ctor_get(x_6, 2);
|
||||
lean_dec(x_22);
|
||||
x_23 = lean_ctor_get(x_6, 1);
|
||||
lean_dec(x_23);
|
||||
x_24 = lean_ctor_get(x_6, 0);
|
||||
lean_dec(x_24);
|
||||
x_25 = 1;
|
||||
lean_ctor_set_uint8(x_6, sizeof(void*)*5, x_25);
|
||||
x_26 = lean_array_uset(x_8, x_3, x_6);
|
||||
x_3 = x_16;
|
||||
x_4 = x_26;
|
||||
goto _start;
|
||||
}
|
||||
else
|
||||
{
|
||||
uint8_t x_28; lean_object* x_29; lean_object* x_30;
|
||||
lean_dec(x_6);
|
||||
x_28 = 1;
|
||||
x_29 = lean_alloc_ctor(0, 5, 1);
|
||||
lean_ctor_set(x_29, 0, x_9);
|
||||
lean_ctor_set(x_29, 1, x_10);
|
||||
lean_ctor_set(x_29, 2, x_11);
|
||||
lean_ctor_set(x_29, 3, x_12);
|
||||
lean_ctor_set(x_29, 4, x_13);
|
||||
lean_ctor_set_uint8(x_29, sizeof(void*)*5, x_28);
|
||||
x_30 = lean_array_uset(x_8, x_3, x_29);
|
||||
x_3 = x_16;
|
||||
x_4 = x_30;
|
||||
goto _start;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_markRecDecls(lean_object* x_1) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; size_t x_6; size_t x_7; lean_object* x_8;
|
||||
x_2 = l_Lean_NameSet_empty;
|
||||
x_3 = l_Lean_Compiler_LCNF_markRecDecls_go(x_1, x_2);
|
||||
x_4 = lean_ctor_get(x_3, 1);
|
||||
lean_inc(x_4);
|
||||
lean_dec(x_3);
|
||||
x_5 = lean_array_get_size(x_1);
|
||||
x_6 = lean_usize_of_nat(x_5);
|
||||
lean_dec(x_5);
|
||||
x_7 = 0;
|
||||
x_8 = l_Array_mapMUnsafe_map___at_Lean_Compiler_LCNF_markRecDecls___spec__1(x_4, x_6, x_7, x_1);
|
||||
lean_dec(x_4);
|
||||
return x_8;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Array_mapMUnsafe_map___at_Lean_Compiler_LCNF_markRecDecls___spec__1___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4) {
|
||||
_start:
|
||||
{
|
||||
size_t x_5; size_t x_6; lean_object* x_7;
|
||||
x_5 = lean_unbox_usize(x_2);
|
||||
lean_dec(x_2);
|
||||
x_6 = lean_unbox_usize(x_3);
|
||||
lean_dec(x_3);
|
||||
x_7 = l_Array_mapMUnsafe_map___at_Lean_Compiler_LCNF_markRecDecls___spec__1(x_1, x_5, x_6, x_4);
|
||||
lean_dec(x_1);
|
||||
return x_7;
|
||||
}
|
||||
}
|
||||
lean_object* initialize_Init(uint8_t builtin, lean_object*);
|
||||
lean_object* initialize_Lean_Expr(uint8_t builtin, lean_object*);
|
||||
static bool _G_initialized = false;
|
||||
|
|
@ -9054,6 +9639,7 @@ l_Lean_Compiler_LCNF_CasesCore_extractAlt_x21___closed__2 = _init_l_Lean_Compile
|
|||
lean_mark_persistent(l_Lean_Compiler_LCNF_CasesCore_extractAlt_x21___closed__2);
|
||||
l_Lean_Compiler_LCNF_CasesCore_extractAlt_x21___closed__3 = _init_l_Lean_Compiler_LCNF_CasesCore_extractAlt_x21___closed__3();
|
||||
lean_mark_persistent(l_Lean_Compiler_LCNF_CasesCore_extractAlt_x21___closed__3);
|
||||
l_Lean_Compiler_LCNF_Decl_recursive___default = _init_l_Lean_Compiler_LCNF_Decl_recursive___default();
|
||||
l_Lean_Compiler_LCNF_instInhabitedDecl___closed__1 = _init_l_Lean_Compiler_LCNF_instInhabitedDecl___closed__1();
|
||||
lean_mark_persistent(l_Lean_Compiler_LCNF_instInhabitedDecl___closed__1);
|
||||
l_Lean_Compiler_LCNF_instInhabitedDecl = _init_l_Lean_Compiler_LCNF_instInhabitedDecl();
|
||||
|
|
|
|||
848
stage0/stdlib/Lean/Compiler/LCNF/Bind.c
generated
848
stage0/stdlib/Lean/Compiler/LCNF/Bind.c
generated
File diff suppressed because it is too large
Load diff
1055
stage0/stdlib/Lean/Compiler/LCNF/CSE.c
generated
1055
stage0/stdlib/Lean/Compiler/LCNF/CSE.c
generated
File diff suppressed because it is too large
Load diff
1497
stage0/stdlib/Lean/Compiler/LCNF/Check.c
generated
1497
stage0/stdlib/Lean/Compiler/LCNF/Check.c
generated
File diff suppressed because it is too large
Load diff
1667
stage0/stdlib/Lean/Compiler/LCNF/CompilerM.c
generated
1667
stage0/stdlib/Lean/Compiler/LCNF/CompilerM.c
generated
File diff suppressed because it is too large
Load diff
520
stage0/stdlib/Lean/Compiler/LCNF/ConfigOptions.c
generated
Normal file
520
stage0/stdlib/Lean/Compiler/LCNF/ConfigOptions.c
generated
Normal file
|
|
@ -0,0 +1,520 @@
|
|||
// Lean compiler output
|
||||
// Module: Lean.Compiler.LCNF.ConfigOptions
|
||||
// Imports: Init Lean.Data.Options
|
||||
#include <lean/lean.h>
|
||||
#if defined(__clang__)
|
||||
#pragma clang diagnostic ignored "-Wunused-parameter"
|
||||
#pragma clang diagnostic ignored "-Wunused-label"
|
||||
#elif defined(__GNUC__) && !defined(__CLANG__)
|
||||
#pragma GCC diagnostic ignored "-Wunused-parameter"
|
||||
#pragma GCC diagnostic ignored "-Wunused-label"
|
||||
#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
|
||||
#endif
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
LEAN_EXPORT lean_object* l_Lean_Option_get___at_Lean_Compiler_LCNF_toConfigOptions___spec__1___boxed(lean_object*, lean_object*);
|
||||
static lean_object* l_Lean_Compiler_LCNF_toConfigOptions___closed__3;
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_toConfigOptions___boxed(lean_object*);
|
||||
static lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_80____closed__4;
|
||||
lean_object* l_Lean_Name_str___override(lean_object*, lean_object*);
|
||||
static lean_object* l_Lean_Compiler_LCNF_toConfigOptions___closed__2;
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_113_(lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_80_(lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_47_(lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_ConfigOptions_maxRecInline___default;
|
||||
static lean_object* l_Lean_Compiler_LCNF_toConfigOptions___closed__1;
|
||||
static lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_47____closed__5;
|
||||
static lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_47____closed__3;
|
||||
LEAN_EXPORT lean_object* l_Lean_Option_register___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_47____spec__1___boxed(lean_object*, lean_object*, lean_object*);
|
||||
static lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_80____closed__2;
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_toConfigOptions(lean_object*);
|
||||
static lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_113____closed__2;
|
||||
static lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_80____closed__1;
|
||||
static lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_113____closed__1;
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_compiler_maxRecInline;
|
||||
static lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_113____closed__3;
|
||||
LEAN_EXPORT lean_object* l_Lean_Option_register___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_47____spec__1(lean_object*, lean_object*, lean_object*);
|
||||
static lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_47____closed__6;
|
||||
static lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_80____closed__3;
|
||||
static lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_47____closed__4;
|
||||
lean_object* lean_register_option(lean_object*, lean_object*, lean_object*);
|
||||
static lean_object* l_Lean_Compiler_LCNF_instInhabitedConfigOptions___closed__1;
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_compiler_maxRecInlineIfReduce;
|
||||
static lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_47____closed__2;
|
||||
LEAN_EXPORT lean_object* l_Lean_Option_get___at_Lean_Compiler_LCNF_toConfigOptions___spec__1(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_KVMap_findCore(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_ConfigOptions_maxRecInlineIfReduce___default;
|
||||
static lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_47____closed__1;
|
||||
static lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_113____closed__4;
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_compiler_small;
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_instInhabitedConfigOptions;
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_ConfigOptions_smallThreshold___default;
|
||||
static lean_object* _init_l_Lean_Compiler_LCNF_ConfigOptions_smallThreshold___default() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1;
|
||||
x_1 = lean_unsigned_to_nat(1u);
|
||||
return x_1;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Compiler_LCNF_ConfigOptions_maxRecInline___default() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1;
|
||||
x_1 = lean_unsigned_to_nat(1u);
|
||||
return x_1;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Compiler_LCNF_ConfigOptions_maxRecInlineIfReduce___default() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1;
|
||||
x_1 = lean_unsigned_to_nat(16u);
|
||||
return x_1;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Compiler_LCNF_instInhabitedConfigOptions___closed__1() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1; lean_object* x_2;
|
||||
x_1 = lean_unsigned_to_nat(0u);
|
||||
x_2 = lean_alloc_ctor(0, 3, 0);
|
||||
lean_ctor_set(x_2, 0, x_1);
|
||||
lean_ctor_set(x_2, 1, x_1);
|
||||
lean_ctor_set(x_2, 2, x_1);
|
||||
return x_2;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Compiler_LCNF_instInhabitedConfigOptions() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1;
|
||||
x_1 = l_Lean_Compiler_LCNF_instInhabitedConfigOptions___closed__1;
|
||||
return x_1;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Option_register___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_47____spec__1(lean_object* x_1, lean_object* x_2, lean_object* x_3) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_4; lean_object* x_5; lean_object* x_6; lean_object* x_7; lean_object* x_8; lean_object* x_9;
|
||||
x_4 = lean_ctor_get(x_2, 0);
|
||||
x_5 = lean_ctor_get(x_2, 1);
|
||||
x_6 = lean_ctor_get(x_2, 2);
|
||||
lean_inc(x_4);
|
||||
x_7 = lean_alloc_ctor(3, 1, 0);
|
||||
lean_ctor_set(x_7, 0, x_4);
|
||||
lean_inc(x_6);
|
||||
lean_inc(x_5);
|
||||
x_8 = lean_alloc_ctor(0, 3, 0);
|
||||
lean_ctor_set(x_8, 0, x_7);
|
||||
lean_ctor_set(x_8, 1, x_5);
|
||||
lean_ctor_set(x_8, 2, x_6);
|
||||
lean_inc(x_1);
|
||||
x_9 = lean_register_option(x_1, x_8, x_3);
|
||||
if (lean_obj_tag(x_9) == 0)
|
||||
{
|
||||
uint8_t x_10;
|
||||
x_10 = !lean_is_exclusive(x_9);
|
||||
if (x_10 == 0)
|
||||
{
|
||||
lean_object* x_11; lean_object* x_12;
|
||||
x_11 = lean_ctor_get(x_9, 0);
|
||||
lean_dec(x_11);
|
||||
lean_inc(x_4);
|
||||
x_12 = lean_alloc_ctor(0, 2, 0);
|
||||
lean_ctor_set(x_12, 0, x_1);
|
||||
lean_ctor_set(x_12, 1, x_4);
|
||||
lean_ctor_set(x_9, 0, x_12);
|
||||
return x_9;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_13; lean_object* x_14; lean_object* x_15;
|
||||
x_13 = lean_ctor_get(x_9, 1);
|
||||
lean_inc(x_13);
|
||||
lean_dec(x_9);
|
||||
lean_inc(x_4);
|
||||
x_14 = lean_alloc_ctor(0, 2, 0);
|
||||
lean_ctor_set(x_14, 0, x_1);
|
||||
lean_ctor_set(x_14, 1, x_4);
|
||||
x_15 = lean_alloc_ctor(0, 2, 0);
|
||||
lean_ctor_set(x_15, 0, x_14);
|
||||
lean_ctor_set(x_15, 1, x_13);
|
||||
return x_15;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
uint8_t x_16;
|
||||
lean_dec(x_1);
|
||||
x_16 = !lean_is_exclusive(x_9);
|
||||
if (x_16 == 0)
|
||||
{
|
||||
return x_9;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_17; lean_object* x_18; lean_object* x_19;
|
||||
x_17 = lean_ctor_get(x_9, 0);
|
||||
x_18 = lean_ctor_get(x_9, 1);
|
||||
lean_inc(x_18);
|
||||
lean_inc(x_17);
|
||||
lean_dec(x_9);
|
||||
x_19 = lean_alloc_ctor(1, 2, 0);
|
||||
lean_ctor_set(x_19, 0, x_17);
|
||||
lean_ctor_set(x_19, 1, x_18);
|
||||
return x_19;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_47____closed__1() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1;
|
||||
x_1 = lean_mk_string_from_bytes("compiler", 8);
|
||||
return x_1;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_47____closed__2() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1; lean_object* x_2; lean_object* x_3;
|
||||
x_1 = lean_box(0);
|
||||
x_2 = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_47____closed__1;
|
||||
x_3 = l_Lean_Name_str___override(x_1, x_2);
|
||||
return x_3;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_47____closed__3() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1;
|
||||
x_1 = lean_mk_string_from_bytes("small", 5);
|
||||
return x_1;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_47____closed__4() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1; lean_object* x_2; lean_object* x_3;
|
||||
x_1 = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_47____closed__2;
|
||||
x_2 = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_47____closed__3;
|
||||
x_3 = l_Lean_Name_str___override(x_1, x_2);
|
||||
return x_3;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_47____closed__5() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1;
|
||||
x_1 = lean_mk_string_from_bytes("(compiler) function declarations with size `≤ small` is inlined even if there are multiple occurrences.", 105);
|
||||
return x_1;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_47____closed__6() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4;
|
||||
x_1 = lean_unsigned_to_nat(1u);
|
||||
x_2 = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_47____closed__1;
|
||||
x_3 = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_47____closed__5;
|
||||
x_4 = lean_alloc_ctor(0, 3, 0);
|
||||
lean_ctor_set(x_4, 0, x_1);
|
||||
lean_ctor_set(x_4, 1, x_2);
|
||||
lean_ctor_set(x_4, 2, x_3);
|
||||
return x_4;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_47_(lean_object* x_1) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_2; lean_object* x_3; lean_object* x_4;
|
||||
x_2 = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_47____closed__4;
|
||||
x_3 = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_47____closed__6;
|
||||
x_4 = l_Lean_Option_register___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_47____spec__1(x_2, x_3, x_1);
|
||||
return x_4;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Option_register___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_47____spec__1___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_4;
|
||||
x_4 = l_Lean_Option_register___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_47____spec__1(x_1, x_2, x_3);
|
||||
lean_dec(x_2);
|
||||
return x_4;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_80____closed__1() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1;
|
||||
x_1 = lean_mk_string_from_bytes("maxRecInline", 12);
|
||||
return x_1;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_80____closed__2() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1; lean_object* x_2; lean_object* x_3;
|
||||
x_1 = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_47____closed__2;
|
||||
x_2 = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_80____closed__1;
|
||||
x_3 = l_Lean_Name_str___override(x_1, x_2);
|
||||
return x_3;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_80____closed__3() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1;
|
||||
x_1 = lean_mk_string_from_bytes("(compiler) maximum number of times a recursive definition tagged with `[inline]` can be recursively inlined before generating an error during compilation.", 154);
|
||||
return x_1;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_80____closed__4() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4;
|
||||
x_1 = lean_unsigned_to_nat(1u);
|
||||
x_2 = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_47____closed__1;
|
||||
x_3 = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_80____closed__3;
|
||||
x_4 = lean_alloc_ctor(0, 3, 0);
|
||||
lean_ctor_set(x_4, 0, x_1);
|
||||
lean_ctor_set(x_4, 1, x_2);
|
||||
lean_ctor_set(x_4, 2, x_3);
|
||||
return x_4;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_80_(lean_object* x_1) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_2; lean_object* x_3; lean_object* x_4;
|
||||
x_2 = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_80____closed__2;
|
||||
x_3 = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_80____closed__4;
|
||||
x_4 = l_Lean_Option_register___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_47____spec__1(x_2, x_3, x_1);
|
||||
return x_4;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_113____closed__1() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1;
|
||||
x_1 = lean_mk_string_from_bytes("maxRecInlineIfReduce", 20);
|
||||
return x_1;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_113____closed__2() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1; lean_object* x_2; lean_object* x_3;
|
||||
x_1 = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_47____closed__2;
|
||||
x_2 = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_113____closed__1;
|
||||
x_3 = l_Lean_Name_str___override(x_1, x_2);
|
||||
return x_3;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_113____closed__3() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1;
|
||||
x_1 = lean_mk_string_from_bytes("(compiler) maximum number of times a recursive definition tagged with `[inlineIfReduce]` can be recursively inlined before generating an error during compilation.", 162);
|
||||
return x_1;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_113____closed__4() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1; lean_object* x_2; lean_object* x_3; lean_object* x_4;
|
||||
x_1 = lean_unsigned_to_nat(16u);
|
||||
x_2 = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_47____closed__1;
|
||||
x_3 = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_113____closed__3;
|
||||
x_4 = lean_alloc_ctor(0, 3, 0);
|
||||
lean_ctor_set(x_4, 0, x_1);
|
||||
lean_ctor_set(x_4, 1, x_2);
|
||||
lean_ctor_set(x_4, 2, x_3);
|
||||
return x_4;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_113_(lean_object* x_1) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_2; lean_object* x_3; lean_object* x_4;
|
||||
x_2 = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_113____closed__2;
|
||||
x_3 = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_113____closed__4;
|
||||
x_4 = l_Lean_Option_register___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_47____spec__1(x_2, x_3, x_1);
|
||||
return x_4;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Option_get___at_Lean_Compiler_LCNF_toConfigOptions___spec__1(lean_object* x_1, lean_object* x_2) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_3; lean_object* x_4; lean_object* x_5;
|
||||
x_3 = lean_ctor_get(x_2, 0);
|
||||
x_4 = lean_ctor_get(x_2, 1);
|
||||
x_5 = l_Lean_KVMap_findCore(x_1, x_3);
|
||||
if (lean_obj_tag(x_5) == 0)
|
||||
{
|
||||
lean_inc(x_4);
|
||||
return x_4;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_6;
|
||||
x_6 = lean_ctor_get(x_5, 0);
|
||||
lean_inc(x_6);
|
||||
lean_dec(x_5);
|
||||
if (lean_obj_tag(x_6) == 3)
|
||||
{
|
||||
lean_object* x_7;
|
||||
x_7 = lean_ctor_get(x_6, 0);
|
||||
lean_inc(x_7);
|
||||
lean_dec(x_6);
|
||||
return x_7;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_dec(x_6);
|
||||
lean_inc(x_4);
|
||||
return x_4;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Compiler_LCNF_toConfigOptions___closed__1() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1;
|
||||
x_1 = l_Lean_Compiler_LCNF_compiler_small;
|
||||
return x_1;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Compiler_LCNF_toConfigOptions___closed__2() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1;
|
||||
x_1 = l_Lean_Compiler_LCNF_compiler_maxRecInline;
|
||||
return x_1;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Compiler_LCNF_toConfigOptions___closed__3() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1;
|
||||
x_1 = l_Lean_Compiler_LCNF_compiler_maxRecInlineIfReduce;
|
||||
return x_1;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_toConfigOptions(lean_object* x_1) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; lean_object* x_7; lean_object* x_8;
|
||||
x_2 = l_Lean_Compiler_LCNF_toConfigOptions___closed__1;
|
||||
x_3 = l_Lean_Option_get___at_Lean_Compiler_LCNF_toConfigOptions___spec__1(x_1, x_2);
|
||||
x_4 = l_Lean_Compiler_LCNF_toConfigOptions___closed__2;
|
||||
x_5 = l_Lean_Option_get___at_Lean_Compiler_LCNF_toConfigOptions___spec__1(x_1, x_4);
|
||||
x_6 = l_Lean_Compiler_LCNF_toConfigOptions___closed__3;
|
||||
x_7 = l_Lean_Option_get___at_Lean_Compiler_LCNF_toConfigOptions___spec__1(x_1, x_6);
|
||||
x_8 = lean_alloc_ctor(0, 3, 0);
|
||||
lean_ctor_set(x_8, 0, x_3);
|
||||
lean_ctor_set(x_8, 1, x_5);
|
||||
lean_ctor_set(x_8, 2, x_7);
|
||||
return x_8;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Option_get___at_Lean_Compiler_LCNF_toConfigOptions___spec__1___boxed(lean_object* x_1, lean_object* x_2) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_3;
|
||||
x_3 = l_Lean_Option_get___at_Lean_Compiler_LCNF_toConfigOptions___spec__1(x_1, x_2);
|
||||
lean_dec(x_2);
|
||||
lean_dec(x_1);
|
||||
return x_3;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_toConfigOptions___boxed(lean_object* x_1) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_2;
|
||||
x_2 = l_Lean_Compiler_LCNF_toConfigOptions(x_1);
|
||||
lean_dec(x_1);
|
||||
return x_2;
|
||||
}
|
||||
}
|
||||
lean_object* initialize_Init(uint8_t builtin, lean_object*);
|
||||
lean_object* initialize_Lean_Data_Options(uint8_t builtin, lean_object*);
|
||||
static bool _G_initialized = false;
|
||||
LEAN_EXPORT lean_object* initialize_Lean_Compiler_LCNF_ConfigOptions(uint8_t builtin, lean_object* w) {
|
||||
lean_object * res;
|
||||
if (_G_initialized) return lean_io_result_mk_ok(lean_box(0));
|
||||
_G_initialized = true;
|
||||
res = initialize_Init(builtin, lean_io_mk_world());
|
||||
if (lean_io_result_is_error(res)) return res;
|
||||
lean_dec_ref(res);
|
||||
res = initialize_Lean_Data_Options(builtin, lean_io_mk_world());
|
||||
if (lean_io_result_is_error(res)) return res;
|
||||
lean_dec_ref(res);
|
||||
l_Lean_Compiler_LCNF_ConfigOptions_smallThreshold___default = _init_l_Lean_Compiler_LCNF_ConfigOptions_smallThreshold___default();
|
||||
lean_mark_persistent(l_Lean_Compiler_LCNF_ConfigOptions_smallThreshold___default);
|
||||
l_Lean_Compiler_LCNF_ConfigOptions_maxRecInline___default = _init_l_Lean_Compiler_LCNF_ConfigOptions_maxRecInline___default();
|
||||
lean_mark_persistent(l_Lean_Compiler_LCNF_ConfigOptions_maxRecInline___default);
|
||||
l_Lean_Compiler_LCNF_ConfigOptions_maxRecInlineIfReduce___default = _init_l_Lean_Compiler_LCNF_ConfigOptions_maxRecInlineIfReduce___default();
|
||||
lean_mark_persistent(l_Lean_Compiler_LCNF_ConfigOptions_maxRecInlineIfReduce___default);
|
||||
l_Lean_Compiler_LCNF_instInhabitedConfigOptions___closed__1 = _init_l_Lean_Compiler_LCNF_instInhabitedConfigOptions___closed__1();
|
||||
lean_mark_persistent(l_Lean_Compiler_LCNF_instInhabitedConfigOptions___closed__1);
|
||||
l_Lean_Compiler_LCNF_instInhabitedConfigOptions = _init_l_Lean_Compiler_LCNF_instInhabitedConfigOptions();
|
||||
lean_mark_persistent(l_Lean_Compiler_LCNF_instInhabitedConfigOptions);
|
||||
l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_47____closed__1 = _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_47____closed__1();
|
||||
lean_mark_persistent(l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_47____closed__1);
|
||||
l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_47____closed__2 = _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_47____closed__2();
|
||||
lean_mark_persistent(l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_47____closed__2);
|
||||
l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_47____closed__3 = _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_47____closed__3();
|
||||
lean_mark_persistent(l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_47____closed__3);
|
||||
l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_47____closed__4 = _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_47____closed__4();
|
||||
lean_mark_persistent(l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_47____closed__4);
|
||||
l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_47____closed__5 = _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_47____closed__5();
|
||||
lean_mark_persistent(l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_47____closed__5);
|
||||
l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_47____closed__6 = _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_47____closed__6();
|
||||
lean_mark_persistent(l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_47____closed__6);
|
||||
if (builtin) {res = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_47_(lean_io_mk_world());
|
||||
if (lean_io_result_is_error(res)) return res;
|
||||
l_Lean_Compiler_LCNF_compiler_small = lean_io_result_get_value(res);
|
||||
lean_mark_persistent(l_Lean_Compiler_LCNF_compiler_small);
|
||||
lean_dec_ref(res);
|
||||
}l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_80____closed__1 = _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_80____closed__1();
|
||||
lean_mark_persistent(l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_80____closed__1);
|
||||
l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_80____closed__2 = _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_80____closed__2();
|
||||
lean_mark_persistent(l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_80____closed__2);
|
||||
l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_80____closed__3 = _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_80____closed__3();
|
||||
lean_mark_persistent(l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_80____closed__3);
|
||||
l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_80____closed__4 = _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_80____closed__4();
|
||||
lean_mark_persistent(l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_80____closed__4);
|
||||
if (builtin) {res = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_80_(lean_io_mk_world());
|
||||
if (lean_io_result_is_error(res)) return res;
|
||||
l_Lean_Compiler_LCNF_compiler_maxRecInline = lean_io_result_get_value(res);
|
||||
lean_mark_persistent(l_Lean_Compiler_LCNF_compiler_maxRecInline);
|
||||
lean_dec_ref(res);
|
||||
}l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_113____closed__1 = _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_113____closed__1();
|
||||
lean_mark_persistent(l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_113____closed__1);
|
||||
l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_113____closed__2 = _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_113____closed__2();
|
||||
lean_mark_persistent(l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_113____closed__2);
|
||||
l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_113____closed__3 = _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_113____closed__3();
|
||||
lean_mark_persistent(l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_113____closed__3);
|
||||
l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_113____closed__4 = _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_113____closed__4();
|
||||
lean_mark_persistent(l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_113____closed__4);
|
||||
if (builtin) {res = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ConfigOptions___hyg_113_(lean_io_mk_world());
|
||||
if (lean_io_result_is_error(res)) return res;
|
||||
l_Lean_Compiler_LCNF_compiler_maxRecInlineIfReduce = lean_io_result_get_value(res);
|
||||
lean_mark_persistent(l_Lean_Compiler_LCNF_compiler_maxRecInlineIfReduce);
|
||||
lean_dec_ref(res);
|
||||
}l_Lean_Compiler_LCNF_toConfigOptions___closed__1 = _init_l_Lean_Compiler_LCNF_toConfigOptions___closed__1();
|
||||
lean_mark_persistent(l_Lean_Compiler_LCNF_toConfigOptions___closed__1);
|
||||
l_Lean_Compiler_LCNF_toConfigOptions___closed__2 = _init_l_Lean_Compiler_LCNF_toConfigOptions___closed__2();
|
||||
lean_mark_persistent(l_Lean_Compiler_LCNF_toConfigOptions___closed__2);
|
||||
l_Lean_Compiler_LCNF_toConfigOptions___closed__3 = _init_l_Lean_Compiler_LCNF_toConfigOptions___closed__3();
|
||||
lean_mark_persistent(l_Lean_Compiler_LCNF_toConfigOptions___closed__3);
|
||||
return lean_io_result_mk_ok(lean_box(0));
|
||||
}
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
337
stage0/stdlib/Lean/Compiler/LCNF/ElimDead.c
generated
337
stage0/stdlib/Lean/Compiler/LCNF/ElimDead.c
generated
|
|
@ -22,67 +22,60 @@ LEAN_EXPORT lean_object* l_List_elem___at_Lean_Compiler_LCNF_collectLocalDecls_g
|
|||
lean_object* lean_st_ref_get(lean_object*, lean_object*);
|
||||
uint8_t lean_name_eq(lean_object*, lean_object*);
|
||||
lean_object* lean_array_get_size(lean_object*);
|
||||
lean_object* l_Lean_Compiler_LCNF_eraseLetDecl(lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Compiler_LCNF_eraseLetDecl(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_updateAltCodeImp(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_ElimDead_elimDead(lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_ElimDead_elimDead(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_HashSetImp_moveEntries___at_Lean_Compiler_LCNF_collectLocalDecls_go___spec__4(lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_mkHashSetImp___rarg(lean_object*);
|
||||
lean_object* lean_nat_add(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_HashSetImp_contains___at_Lean_Compiler_LCNF_ElimDead_elimDead___spec__1___boxed(lean_object*, lean_object*);
|
||||
size_t lean_uint64_to_usize(uint64_t);
|
||||
static lean_object* l_Lean_Compiler_LCNF_collectLocalDecls_go___closed__3;
|
||||
lean_object* l_Lean_Compiler_LCNF_eraseFunDecl(lean_object*, uint8_t, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Compiler_LCNF_eraseFunDecl(lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
static lean_object* l_Lean_Compiler_LCNF_ElimDead_elimDead___closed__1;
|
||||
lean_object* lean_array_fget(lean_object*, lean_object*);
|
||||
lean_object* lean_st_ref_take(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at_Lean_Compiler_LCNF_ElimDead_elimDead___spec__2(lean_object*, size_t, size_t, lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_ElimDead_visitFunDecl___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at_Lean_Compiler_LCNF_ElimDead_elimDead___spec__2(lean_object*, size_t, size_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
static lean_object* l_Lean_Compiler_LCNF_collectLocalDecls_go___closed__2;
|
||||
LEAN_EXPORT lean_object* l_panic___at_Lean_Compiler_LCNF_collectLocalDecls_go___spec__7(lean_object*);
|
||||
lean_object* lean_array_fset(lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Decl_elimDead(lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Decl_elimDead(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
static lean_object* l_Lean_Compiler_LCNF_collectLocalDecls_go___closed__1;
|
||||
LEAN_EXPORT lean_object* l___private_Lean_Compiler_LCNF_ElimDead_0__Lean_Compiler_LCNF_ElimDead_collectFVarM(lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_ElimDead_elimDead___lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Code_elimDead___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l___private_Lean_Compiler_LCNF_ElimDead_0__Lean_Compiler_LCNF_ElimDead_collectFVarM(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* lean_st_mk_ref(lean_object*, lean_object*);
|
||||
static lean_object* l_Lean_Compiler_LCNF_collectLocalDecls_go___closed__4;
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Decl_elimDead___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_mkHashSet___at_Lean_Compiler_LCNF_Code_elimDead___spec__1(lean_object*);
|
||||
size_t lean_usize_modn(size_t, lean_object*);
|
||||
lean_object* l___private_Init_Util_0__mkPanicMessageWithDecl(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Compiler_LCNF_CompilerM_0__Lean_Compiler_LCNF_updateFunDeclImp(lean_object*, lean_object*, lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Compiler_LCNF_CompilerM_0__Lean_Compiler_LCNF_updateFunDeclImp(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
size_t lean_usize_of_nat(lean_object*);
|
||||
LEAN_EXPORT lean_object* l___private_Lean_Compiler_LCNF_ElimDead_0__Lean_Compiler_LCNF_ElimDead_collectExprM___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_List_replace___at_Lean_Compiler_LCNF_collectLocalDecls_go___spec__6(lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_HashSetImp_expand___at_Lean_Compiler_LCNF_collectLocalDecls_go___spec__3(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l___private_Lean_Compiler_LCNF_ElimDead_0__Lean_Compiler_LCNF_ElimDead_collectExprM(lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_ElimDead_elimDead___lambda__1(lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l___private_Lean_Compiler_LCNF_ElimDead_0__Lean_Compiler_LCNF_ElimDead_collectExprM(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_ElimDead_elimDead___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
size_t lean_ptr_addr(lean_object*);
|
||||
LEAN_EXPORT lean_object* l___private_Init_Data_Array_BasicAux_0__mapMonoMImp___at_Lean_Compiler_LCNF_ElimDead_elimDead___spec__3(lean_object*, lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l___private_Init_Data_Array_BasicAux_0__mapMonoMImp___at_Lean_Compiler_LCNF_ElimDead_elimDead___spec__3(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at_Lean_Compiler_LCNF_ElimDead_elimDead___spec__2___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l___private_Init_Data_Array_BasicAux_0__mapMonoMImp_go___at_Lean_Compiler_LCNF_ElimDead_elimDead___spec__4___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
uint8_t lean_nat_dec_le(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Compiler_LCNF_AltCore_getCode(lean_object*);
|
||||
LEAN_EXPORT uint8_t l_List_elem___at_Lean_Compiler_LCNF_collectLocalDecls_go___spec__2(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_ElimDead_elimDead___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_List_foldl___at_Lean_Compiler_LCNF_collectLocalDecls_go___spec__5(lean_object*, lean_object*);
|
||||
lean_object* lean_nat_mul(lean_object*, lean_object*);
|
||||
lean_object* lean_st_ref_set(lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT uint8_t l_Lean_HashSetImp_contains___at_Lean_Compiler_LCNF_ElimDead_elimDead___spec__1(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_collectLocalDecls_go(lean_object*, lean_object*);
|
||||
lean_object* lean_panic_fn(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l___private_Init_Data_Array_BasicAux_0__mapMonoMImp_go___at_Lean_Compiler_LCNF_ElimDead_elimDead___spec__4(lean_object*, lean_object*, lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l___private_Init_Data_Array_BasicAux_0__mapMonoMImp_go___at_Lean_Compiler_LCNF_ElimDead_elimDead___spec__4(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
extern lean_object* l_Lean_instFVarIdHashSetInhabited;
|
||||
LEAN_EXPORT lean_object* l_List_replace___at_Lean_Compiler_LCNF_collectLocalDecls_go___spec__6___boxed(lean_object*, lean_object*, lean_object*);
|
||||
lean_object* lean_mk_array(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_HashSetImp_insert___at_Lean_Compiler_LCNF_collectLocalDecls_go___spec__1(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l___private_Lean_Compiler_LCNF_ElimDead_0__Lean_Compiler_LCNF_ElimDead_collectFVarM___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l___private_Init_Data_Array_BasicAux_0__mapMonoMImp___at_Lean_Compiler_LCNF_ElimDead_elimDead___spec__3___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_collectLocalDecls(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Code_elimDead(lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Code_elimDead(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
uint8_t lean_nat_dec_lt(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_ElimDead_visitFunDecl(lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_ElimDead_visitFunDecl(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT uint8_t l_List_elem___at_Lean_Compiler_LCNF_collectLocalDecls_go___spec__2(lean_object* x_1, lean_object* x_2) {
|
||||
_start:
|
||||
{
|
||||
|
|
@ -533,7 +526,7 @@ x_3 = l_Lean_Compiler_LCNF_collectLocalDecls_go(x_1, x_2);
|
|||
return x_3;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l___private_Lean_Compiler_LCNF_ElimDead_0__Lean_Compiler_LCNF_ElimDead_collectExprM(lean_object* x_1, lean_object* x_2, uint8_t x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7) {
|
||||
LEAN_EXPORT lean_object* l___private_Lean_Compiler_LCNF_ElimDead_0__Lean_Compiler_LCNF_ElimDead_collectExprM(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_8; lean_object* x_9; lean_object* x_10; lean_object* x_11; lean_object* x_12; uint8_t x_13;
|
||||
|
|
@ -572,18 +565,17 @@ return x_18;
|
|||
LEAN_EXPORT lean_object* l___private_Lean_Compiler_LCNF_ElimDead_0__Lean_Compiler_LCNF_ElimDead_collectExprM___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_8; lean_object* x_9;
|
||||
x_8 = lean_unbox(x_3);
|
||||
lean_dec(x_3);
|
||||
x_9 = l___private_Lean_Compiler_LCNF_ElimDead_0__Lean_Compiler_LCNF_ElimDead_collectExprM(x_1, x_2, x_8, x_4, x_5, x_6, x_7);
|
||||
lean_object* x_8;
|
||||
x_8 = l___private_Lean_Compiler_LCNF_ElimDead_0__Lean_Compiler_LCNF_ElimDead_collectExprM(x_1, x_2, x_3, x_4, x_5, x_6, x_7);
|
||||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
lean_dec(x_2);
|
||||
return x_9;
|
||||
return x_8;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l___private_Lean_Compiler_LCNF_ElimDead_0__Lean_Compiler_LCNF_ElimDead_collectFVarM(lean_object* x_1, lean_object* x_2, uint8_t x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7) {
|
||||
LEAN_EXPORT lean_object* l___private_Lean_Compiler_LCNF_ElimDead_0__Lean_Compiler_LCNF_ElimDead_collectFVarM(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_8; lean_object* x_9; lean_object* x_10; lean_object* x_11; lean_object* x_12; uint8_t x_13;
|
||||
|
|
@ -622,18 +614,17 @@ return x_18;
|
|||
LEAN_EXPORT lean_object* l___private_Lean_Compiler_LCNF_ElimDead_0__Lean_Compiler_LCNF_ElimDead_collectFVarM___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_8; lean_object* x_9;
|
||||
x_8 = lean_unbox(x_3);
|
||||
lean_dec(x_3);
|
||||
x_9 = l___private_Lean_Compiler_LCNF_ElimDead_0__Lean_Compiler_LCNF_ElimDead_collectFVarM(x_1, x_2, x_8, x_4, x_5, x_6, x_7);
|
||||
lean_object* x_8;
|
||||
x_8 = l___private_Lean_Compiler_LCNF_ElimDead_0__Lean_Compiler_LCNF_ElimDead_collectFVarM(x_1, x_2, x_3, x_4, x_5, x_6, x_7);
|
||||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
lean_dec(x_2);
|
||||
return x_9;
|
||||
return x_8;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_ElimDead_visitFunDecl(lean_object* x_1, lean_object* x_2, uint8_t x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7) {
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_ElimDead_visitFunDecl(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_8; lean_object* x_9;
|
||||
|
|
@ -642,6 +633,7 @@ lean_inc(x_8);
|
|||
lean_inc(x_6);
|
||||
lean_inc(x_5);
|
||||
lean_inc(x_4);
|
||||
lean_inc(x_3);
|
||||
x_9 = l_Lean_Compiler_LCNF_ElimDead_elimDead(x_8, x_2, x_3, x_4, x_5, x_6, x_7);
|
||||
if (lean_obj_tag(x_9) == 0)
|
||||
{
|
||||
|
|
@ -659,6 +651,7 @@ x_14 = l___private_Lean_Compiler_LCNF_CompilerM_0__Lean_Compiler_LCNF_updateFunD
|
|||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
return x_14;
|
||||
}
|
||||
else
|
||||
|
|
@ -667,6 +660,7 @@ uint8_t x_15;
|
|||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
lean_dec(x_1);
|
||||
x_15 = !lean_is_exclusive(x_9);
|
||||
if (x_15 == 0)
|
||||
|
|
@ -705,7 +699,7 @@ lean_dec(x_8);
|
|||
return x_9;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at_Lean_Compiler_LCNF_ElimDead_elimDead___spec__2(lean_object* x_1, size_t x_2, size_t x_3, lean_object* x_4, lean_object* x_5, uint8_t x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10) {
|
||||
LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at_Lean_Compiler_LCNF_ElimDead_elimDead___spec__2(lean_object* x_1, size_t x_2, size_t x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_11;
|
||||
|
|
@ -744,7 +738,7 @@ return x_23;
|
|||
}
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l___private_Init_Data_Array_BasicAux_0__mapMonoMImp_go___at_Lean_Compiler_LCNF_ElimDead_elimDead___spec__4(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, uint8_t x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9) {
|
||||
LEAN_EXPORT lean_object* l___private_Init_Data_Array_BasicAux_0__mapMonoMImp_go___at_Lean_Compiler_LCNF_ElimDead_elimDead___spec__4(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_10; uint8_t x_11;
|
||||
|
|
@ -757,6 +751,7 @@ lean_object* x_12;
|
|||
lean_dec(x_8);
|
||||
lean_dec(x_7);
|
||||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_2);
|
||||
lean_dec(x_1);
|
||||
|
|
@ -767,86 +762,87 @@ return x_12;
|
|||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_13; lean_object* x_14; lean_object* x_15;
|
||||
lean_object* x_13; lean_object* x_14;
|
||||
x_13 = lean_array_fget(x_3, x_2);
|
||||
x_14 = lean_box(x_5);
|
||||
lean_inc(x_1);
|
||||
lean_inc(x_8);
|
||||
lean_inc(x_7);
|
||||
lean_inc(x_6);
|
||||
lean_inc(x_5);
|
||||
lean_inc(x_4);
|
||||
lean_inc(x_13);
|
||||
x_15 = lean_apply_7(x_1, x_13, x_4, x_14, x_6, x_7, x_8, x_9);
|
||||
if (lean_obj_tag(x_15) == 0)
|
||||
x_14 = lean_apply_7(x_1, x_13, x_4, x_5, x_6, x_7, x_8, x_9);
|
||||
if (lean_obj_tag(x_14) == 0)
|
||||
{
|
||||
lean_object* x_16; lean_object* x_17; size_t x_18; size_t x_19; uint8_t x_20;
|
||||
x_16 = lean_ctor_get(x_15, 0);
|
||||
lean_object* x_15; lean_object* x_16; size_t x_17; size_t x_18; uint8_t x_19;
|
||||
x_15 = lean_ctor_get(x_14, 0);
|
||||
lean_inc(x_15);
|
||||
x_16 = lean_ctor_get(x_14, 1);
|
||||
lean_inc(x_16);
|
||||
x_17 = lean_ctor_get(x_15, 1);
|
||||
lean_inc(x_17);
|
||||
lean_dec(x_15);
|
||||
x_18 = lean_ptr_addr(x_13);
|
||||
lean_dec(x_14);
|
||||
x_17 = lean_ptr_addr(x_13);
|
||||
lean_dec(x_13);
|
||||
x_19 = lean_ptr_addr(x_16);
|
||||
x_20 = lean_usize_dec_eq(x_18, x_19);
|
||||
if (x_20 == 0)
|
||||
x_18 = lean_ptr_addr(x_15);
|
||||
x_19 = lean_usize_dec_eq(x_17, x_18);
|
||||
if (x_19 == 0)
|
||||
{
|
||||
lean_object* x_21; lean_object* x_22; lean_object* x_23;
|
||||
x_21 = lean_unsigned_to_nat(1u);
|
||||
x_22 = lean_nat_add(x_2, x_21);
|
||||
x_23 = lean_array_fset(x_3, x_2, x_16);
|
||||
lean_object* x_20; lean_object* x_21; lean_object* x_22;
|
||||
x_20 = lean_unsigned_to_nat(1u);
|
||||
x_21 = lean_nat_add(x_2, x_20);
|
||||
x_22 = lean_array_fset(x_3, x_2, x_15);
|
||||
lean_dec(x_2);
|
||||
x_2 = x_22;
|
||||
x_3 = x_23;
|
||||
x_9 = x_17;
|
||||
x_2 = x_21;
|
||||
x_3 = x_22;
|
||||
x_9 = x_16;
|
||||
goto _start;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_25; lean_object* x_26;
|
||||
lean_dec(x_16);
|
||||
x_25 = lean_unsigned_to_nat(1u);
|
||||
x_26 = lean_nat_add(x_2, x_25);
|
||||
lean_object* x_24; lean_object* x_25;
|
||||
lean_dec(x_15);
|
||||
x_24 = lean_unsigned_to_nat(1u);
|
||||
x_25 = lean_nat_add(x_2, x_24);
|
||||
lean_dec(x_2);
|
||||
x_2 = x_26;
|
||||
x_9 = x_17;
|
||||
x_2 = x_25;
|
||||
x_9 = x_16;
|
||||
goto _start;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
uint8_t x_28;
|
||||
uint8_t x_27;
|
||||
lean_dec(x_13);
|
||||
lean_dec(x_8);
|
||||
lean_dec(x_7);
|
||||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
lean_dec(x_2);
|
||||
lean_dec(x_1);
|
||||
x_28 = !lean_is_exclusive(x_15);
|
||||
if (x_28 == 0)
|
||||
x_27 = !lean_is_exclusive(x_14);
|
||||
if (x_27 == 0)
|
||||
{
|
||||
return x_15;
|
||||
return x_14;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_29; lean_object* x_30; lean_object* x_31;
|
||||
x_29 = lean_ctor_get(x_15, 0);
|
||||
x_30 = lean_ctor_get(x_15, 1);
|
||||
lean_inc(x_30);
|
||||
lean_object* x_28; lean_object* x_29; lean_object* x_30;
|
||||
x_28 = lean_ctor_get(x_14, 0);
|
||||
x_29 = lean_ctor_get(x_14, 1);
|
||||
lean_inc(x_29);
|
||||
lean_dec(x_15);
|
||||
x_31 = lean_alloc_ctor(1, 2, 0);
|
||||
lean_ctor_set(x_31, 0, x_29);
|
||||
lean_ctor_set(x_31, 1, x_30);
|
||||
return x_31;
|
||||
lean_inc(x_28);
|
||||
lean_dec(x_14);
|
||||
x_30 = lean_alloc_ctor(1, 2, 0);
|
||||
lean_ctor_set(x_30, 0, x_28);
|
||||
lean_ctor_set(x_30, 1, x_29);
|
||||
return x_30;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l___private_Init_Data_Array_BasicAux_0__mapMonoMImp___at_Lean_Compiler_LCNF_ElimDead_elimDead___spec__3(lean_object* x_1, lean_object* x_2, lean_object* x_3, uint8_t x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8) {
|
||||
LEAN_EXPORT lean_object* l___private_Init_Data_Array_BasicAux_0__mapMonoMImp___at_Lean_Compiler_LCNF_ElimDead_elimDead___spec__3(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_9; lean_object* x_10;
|
||||
|
|
@ -855,7 +851,7 @@ x_10 = l___private_Init_Data_Array_BasicAux_0__mapMonoMImp_go___at_Lean_Compiler
|
|||
return x_10;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_ElimDead_elimDead___lambda__1(lean_object* x_1, lean_object* x_2, uint8_t x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7) {
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_ElimDead_elimDead___lambda__1(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_8; lean_object* x_9;
|
||||
|
|
@ -917,11 +913,11 @@ static lean_object* _init_l_Lean_Compiler_LCNF_ElimDead_elimDead___closed__1() {
|
|||
_start:
|
||||
{
|
||||
lean_object* x_1;
|
||||
x_1 = lean_alloc_closure((void*)(l_Lean_Compiler_LCNF_ElimDead_elimDead___lambda__1___boxed), 7, 0);
|
||||
x_1 = lean_alloc_closure((void*)(l_Lean_Compiler_LCNF_ElimDead_elimDead___lambda__1), 7, 0);
|
||||
return x_1;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_ElimDead_elimDead(lean_object* x_1, lean_object* x_2, uint8_t x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7) {
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_ElimDead_elimDead(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7) {
|
||||
_start:
|
||||
{
|
||||
switch (lean_obj_tag(x_1)) {
|
||||
|
|
@ -935,6 +931,7 @@ lean_inc(x_9);
|
|||
lean_inc(x_6);
|
||||
lean_inc(x_5);
|
||||
lean_inc(x_4);
|
||||
lean_inc(x_3);
|
||||
lean_inc(x_2);
|
||||
lean_inc(x_9);
|
||||
x_10 = l_Lean_Compiler_LCNF_ElimDead_elimDead(x_9, x_2, x_3, x_4, x_5, x_6, x_7);
|
||||
|
|
@ -967,6 +964,7 @@ x_18 = l_Lean_Compiler_LCNF_eraseLetDecl(x_8, x_3, x_4, x_5, x_6, x_15);
|
|||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
lean_dec(x_8);
|
||||
x_19 = !lean_is_exclusive(x_18);
|
||||
if (x_19 == 0)
|
||||
|
|
@ -995,6 +993,7 @@ lean_object* x_23; lean_object* x_24; lean_object* x_25; lean_object* x_26; lean
|
|||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
x_23 = lean_ctor_get(x_8, 3);
|
||||
lean_inc(x_23);
|
||||
x_24 = lean_st_ref_take(x_2, x_15);
|
||||
|
|
@ -1104,6 +1103,7 @@ lean_dec(x_8);
|
|||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
lean_dec(x_2);
|
||||
lean_dec(x_1);
|
||||
x_46 = !lean_is_exclusive(x_10);
|
||||
|
|
@ -1136,6 +1136,7 @@ lean_inc(x_51);
|
|||
lean_inc(x_6);
|
||||
lean_inc(x_5);
|
||||
lean_inc(x_4);
|
||||
lean_inc(x_3);
|
||||
lean_inc(x_2);
|
||||
lean_inc(x_51);
|
||||
x_52 = l_Lean_Compiler_LCNF_ElimDead_elimDead(x_51, x_2, x_3, x_4, x_5, x_6, x_7);
|
||||
|
|
@ -1169,6 +1170,7 @@ x_61 = l_Lean_Compiler_LCNF_eraseFunDecl(x_50, x_60, x_3, x_4, x_5, x_6, x_57);
|
|||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
x_62 = !lean_is_exclusive(x_61);
|
||||
if (x_62 == 0)
|
||||
{
|
||||
|
|
@ -1393,6 +1395,7 @@ lean_dec(x_50);
|
|||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
lean_dec(x_2);
|
||||
lean_dec(x_1);
|
||||
x_102 = !lean_is_exclusive(x_52);
|
||||
|
|
@ -1425,6 +1428,7 @@ lean_inc(x_107);
|
|||
lean_inc(x_6);
|
||||
lean_inc(x_5);
|
||||
lean_inc(x_4);
|
||||
lean_inc(x_3);
|
||||
lean_inc(x_2);
|
||||
lean_inc(x_107);
|
||||
x_108 = l_Lean_Compiler_LCNF_ElimDead_elimDead(x_107, x_2, x_3, x_4, x_5, x_6, x_7);
|
||||
|
|
@ -1458,6 +1462,7 @@ x_117 = l_Lean_Compiler_LCNF_eraseFunDecl(x_106, x_116, x_3, x_4, x_5, x_6, x_11
|
|||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
x_118 = !lean_is_exclusive(x_117);
|
||||
if (x_118 == 0)
|
||||
{
|
||||
|
|
@ -1682,6 +1687,7 @@ lean_dec(x_106);
|
|||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
lean_dec(x_2);
|
||||
lean_dec(x_1);
|
||||
x_158 = !lean_is_exclusive(x_108);
|
||||
|
|
@ -1736,6 +1742,7 @@ lean_dec(x_163);
|
|||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
lean_dec(x_2);
|
||||
lean_ctor_set(x_168, 0, x_1);
|
||||
return x_168;
|
||||
|
|
@ -1751,6 +1758,7 @@ lean_dec(x_163);
|
|||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
lean_dec(x_2);
|
||||
lean_ctor_set(x_168, 0, x_1);
|
||||
return x_168;
|
||||
|
|
@ -1767,6 +1775,7 @@ x_179 = l_Array_foldlMUnsafe_fold___at_Lean_Compiler_LCNF_ElimDead_elimDead___sp
|
|||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
lean_dec(x_2);
|
||||
lean_dec(x_163);
|
||||
x_180 = !lean_is_exclusive(x_179);
|
||||
|
|
@ -1809,6 +1818,7 @@ lean_dec(x_163);
|
|||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
lean_dec(x_2);
|
||||
x_188 = lean_alloc_ctor(0, 2, 0);
|
||||
lean_ctor_set(x_188, 0, x_1);
|
||||
|
|
@ -1827,6 +1837,7 @@ lean_dec(x_163);
|
|||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
lean_dec(x_2);
|
||||
x_190 = lean_alloc_ctor(0, 2, 0);
|
||||
lean_ctor_set(x_190, 0, x_1);
|
||||
|
|
@ -1844,6 +1855,7 @@ x_194 = l_Array_foldlMUnsafe_fold___at_Lean_Compiler_LCNF_ElimDead_elimDead___sp
|
|||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
lean_dec(x_2);
|
||||
lean_dec(x_163);
|
||||
x_195 = lean_ctor_get(x_194, 1);
|
||||
|
|
@ -2158,6 +2170,7 @@ lean_object* x_260; lean_object* x_261; lean_object* x_262; lean_object* x_263;
|
|||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
x_260 = lean_ctor_get(x_1, 0);
|
||||
lean_inc(x_260);
|
||||
x_261 = lean_st_ref_take(x_2, x_7);
|
||||
|
|
@ -2196,6 +2209,7 @@ lean_object* x_270;
|
|||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
lean_dec(x_2);
|
||||
x_270 = lean_alloc_ctor(0, 2, 0);
|
||||
lean_ctor_set(x_270, 0, x_1);
|
||||
|
|
@ -2205,16 +2219,6 @@ return x_270;
|
|||
}
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_ElimDead_visitFunDecl___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_8; lean_object* x_9;
|
||||
x_8 = lean_unbox(x_3);
|
||||
lean_dec(x_3);
|
||||
x_9 = l_Lean_Compiler_LCNF_ElimDead_visitFunDecl(x_1, x_2, x_8, x_4, x_5, x_6, x_7);
|
||||
return x_9;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_HashSetImp_contains___at_Lean_Compiler_LCNF_ElimDead_elimDead___spec__1___boxed(lean_object* x_1, lean_object* x_2) {
|
||||
_start:
|
||||
{
|
||||
|
|
@ -2229,60 +2233,19 @@ return x_4;
|
|||
LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at_Lean_Compiler_LCNF_ElimDead_elimDead___spec__2___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10) {
|
||||
_start:
|
||||
{
|
||||
size_t x_11; size_t x_12; uint8_t x_13; lean_object* x_14;
|
||||
size_t x_11; size_t x_12; lean_object* x_13;
|
||||
x_11 = lean_unbox_usize(x_2);
|
||||
lean_dec(x_2);
|
||||
x_12 = lean_unbox_usize(x_3);
|
||||
lean_dec(x_3);
|
||||
x_13 = lean_unbox(x_6);
|
||||
lean_dec(x_6);
|
||||
x_14 = l_Array_foldlMUnsafe_fold___at_Lean_Compiler_LCNF_ElimDead_elimDead___spec__2(x_1, x_11, x_12, x_4, x_5, x_13, x_7, x_8, x_9, x_10);
|
||||
x_13 = l_Array_foldlMUnsafe_fold___at_Lean_Compiler_LCNF_ElimDead_elimDead___spec__2(x_1, x_11, x_12, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
|
||||
lean_dec(x_9);
|
||||
lean_dec(x_8);
|
||||
lean_dec(x_7);
|
||||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_1);
|
||||
return x_14;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l___private_Init_Data_Array_BasicAux_0__mapMonoMImp_go___at_Lean_Compiler_LCNF_ElimDead_elimDead___spec__4___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_10; lean_object* x_11;
|
||||
x_10 = lean_unbox(x_5);
|
||||
lean_dec(x_5);
|
||||
x_11 = l___private_Init_Data_Array_BasicAux_0__mapMonoMImp_go___at_Lean_Compiler_LCNF_ElimDead_elimDead___spec__4(x_1, x_2, x_3, x_4, x_10, x_6, x_7, x_8, x_9);
|
||||
return x_11;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l___private_Init_Data_Array_BasicAux_0__mapMonoMImp___at_Lean_Compiler_LCNF_ElimDead_elimDead___spec__3___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_9; lean_object* x_10;
|
||||
x_9 = lean_unbox(x_4);
|
||||
lean_dec(x_4);
|
||||
x_10 = l___private_Init_Data_Array_BasicAux_0__mapMonoMImp___at_Lean_Compiler_LCNF_ElimDead_elimDead___spec__3(x_1, x_2, x_3, x_9, x_5, x_6, x_7, x_8);
|
||||
return x_10;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_ElimDead_elimDead___lambda__1___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_8; lean_object* x_9;
|
||||
x_8 = lean_unbox(x_3);
|
||||
lean_dec(x_3);
|
||||
x_9 = l_Lean_Compiler_LCNF_ElimDead_elimDead___lambda__1(x_1, x_2, x_8, x_4, x_5, x_6, x_7);
|
||||
return x_9;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_ElimDead_elimDead___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_8; lean_object* x_9;
|
||||
x_8 = lean_unbox(x_3);
|
||||
lean_dec(x_3);
|
||||
x_9 = l_Lean_Compiler_LCNF_ElimDead_elimDead(x_1, x_2, x_8, x_4, x_5, x_6, x_7);
|
||||
return x_9;
|
||||
return x_13;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_mkHashSet___at_Lean_Compiler_LCNF_Code_elimDead___spec__1(lean_object* x_1) {
|
||||
|
|
@ -2293,7 +2256,7 @@ x_2 = l_Lean_mkHashSetImp___rarg(x_1);
|
|||
return x_2;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Code_elimDead(lean_object* x_1, uint8_t x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6) {
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Code_elimDead(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_7; lean_object* x_8; lean_object* x_9; lean_object* x_10; lean_object* x_11; lean_object* x_12;
|
||||
|
|
@ -2363,17 +2326,7 @@ return x_23;
|
|||
}
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Code_elimDead___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_7; lean_object* x_8;
|
||||
x_7 = lean_unbox(x_2);
|
||||
lean_dec(x_2);
|
||||
x_8 = l_Lean_Compiler_LCNF_Code_elimDead(x_1, x_7, x_3, x_4, x_5, x_6);
|
||||
return x_8;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Decl_elimDead(lean_object* x_1, uint8_t x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6) {
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Decl_elimDead(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_7;
|
||||
|
|
@ -2444,90 +2397,82 @@ return x_22;
|
|||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_23; lean_object* x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28;
|
||||
lean_object* x_23; lean_object* x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; uint8_t x_28; lean_object* x_29;
|
||||
x_23 = lean_ctor_get(x_1, 0);
|
||||
x_24 = lean_ctor_get(x_1, 1);
|
||||
x_25 = lean_ctor_get(x_1, 2);
|
||||
x_26 = lean_ctor_get(x_1, 3);
|
||||
x_27 = lean_ctor_get(x_1, 4);
|
||||
x_28 = lean_ctor_get_uint8(x_1, sizeof(void*)*5);
|
||||
lean_inc(x_27);
|
||||
lean_inc(x_26);
|
||||
lean_inc(x_25);
|
||||
lean_inc(x_24);
|
||||
lean_inc(x_23);
|
||||
lean_dec(x_1);
|
||||
x_28 = l_Lean_Compiler_LCNF_Code_elimDead(x_27, x_2, x_3, x_4, x_5, x_6);
|
||||
if (lean_obj_tag(x_28) == 0)
|
||||
x_29 = l_Lean_Compiler_LCNF_Code_elimDead(x_27, x_2, x_3, x_4, x_5, x_6);
|
||||
if (lean_obj_tag(x_29) == 0)
|
||||
{
|
||||
lean_object* x_29; lean_object* x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33;
|
||||
x_29 = lean_ctor_get(x_28, 0);
|
||||
lean_inc(x_29);
|
||||
x_30 = lean_ctor_get(x_28, 1);
|
||||
lean_object* x_30; lean_object* x_31; lean_object* x_32; lean_object* x_33; lean_object* x_34;
|
||||
x_30 = lean_ctor_get(x_29, 0);
|
||||
lean_inc(x_30);
|
||||
if (lean_is_exclusive(x_28)) {
|
||||
lean_ctor_release(x_28, 0);
|
||||
lean_ctor_release(x_28, 1);
|
||||
x_31 = x_28;
|
||||
x_31 = lean_ctor_get(x_29, 1);
|
||||
lean_inc(x_31);
|
||||
if (lean_is_exclusive(x_29)) {
|
||||
lean_ctor_release(x_29, 0);
|
||||
lean_ctor_release(x_29, 1);
|
||||
x_32 = x_29;
|
||||
} else {
|
||||
lean_dec_ref(x_28);
|
||||
x_31 = lean_box(0);
|
||||
lean_dec_ref(x_29);
|
||||
x_32 = lean_box(0);
|
||||
}
|
||||
x_32 = lean_alloc_ctor(0, 5, 0);
|
||||
lean_ctor_set(x_32, 0, x_23);
|
||||
lean_ctor_set(x_32, 1, x_24);
|
||||
lean_ctor_set(x_32, 2, x_25);
|
||||
lean_ctor_set(x_32, 3, x_26);
|
||||
lean_ctor_set(x_32, 4, x_29);
|
||||
if (lean_is_scalar(x_31)) {
|
||||
x_33 = lean_alloc_ctor(0, 2, 0);
|
||||
x_33 = lean_alloc_ctor(0, 5, 1);
|
||||
lean_ctor_set(x_33, 0, x_23);
|
||||
lean_ctor_set(x_33, 1, x_24);
|
||||
lean_ctor_set(x_33, 2, x_25);
|
||||
lean_ctor_set(x_33, 3, x_26);
|
||||
lean_ctor_set(x_33, 4, x_30);
|
||||
lean_ctor_set_uint8(x_33, sizeof(void*)*5, x_28);
|
||||
if (lean_is_scalar(x_32)) {
|
||||
x_34 = lean_alloc_ctor(0, 2, 0);
|
||||
} else {
|
||||
x_33 = x_31;
|
||||
x_34 = x_32;
|
||||
}
|
||||
lean_ctor_set(x_33, 0, x_32);
|
||||
lean_ctor_set(x_33, 1, x_30);
|
||||
return x_33;
|
||||
lean_ctor_set(x_34, 0, x_33);
|
||||
lean_ctor_set(x_34, 1, x_31);
|
||||
return x_34;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_34; lean_object* x_35; lean_object* x_36; lean_object* x_37;
|
||||
lean_object* x_35; lean_object* x_36; lean_object* x_37; lean_object* x_38;
|
||||
lean_dec(x_26);
|
||||
lean_dec(x_25);
|
||||
lean_dec(x_24);
|
||||
lean_dec(x_23);
|
||||
x_34 = lean_ctor_get(x_28, 0);
|
||||
lean_inc(x_34);
|
||||
x_35 = lean_ctor_get(x_28, 1);
|
||||
x_35 = lean_ctor_get(x_29, 0);
|
||||
lean_inc(x_35);
|
||||
if (lean_is_exclusive(x_28)) {
|
||||
lean_ctor_release(x_28, 0);
|
||||
lean_ctor_release(x_28, 1);
|
||||
x_36 = x_28;
|
||||
x_36 = lean_ctor_get(x_29, 1);
|
||||
lean_inc(x_36);
|
||||
if (lean_is_exclusive(x_29)) {
|
||||
lean_ctor_release(x_29, 0);
|
||||
lean_ctor_release(x_29, 1);
|
||||
x_37 = x_29;
|
||||
} else {
|
||||
lean_dec_ref(x_28);
|
||||
x_36 = lean_box(0);
|
||||
lean_dec_ref(x_29);
|
||||
x_37 = lean_box(0);
|
||||
}
|
||||
if (lean_is_scalar(x_36)) {
|
||||
x_37 = lean_alloc_ctor(1, 2, 0);
|
||||
if (lean_is_scalar(x_37)) {
|
||||
x_38 = lean_alloc_ctor(1, 2, 0);
|
||||
} else {
|
||||
x_37 = x_36;
|
||||
x_38 = x_37;
|
||||
}
|
||||
lean_ctor_set(x_37, 0, x_34);
|
||||
lean_ctor_set(x_37, 1, x_35);
|
||||
return x_37;
|
||||
lean_ctor_set(x_38, 0, x_35);
|
||||
lean_ctor_set(x_38, 1, x_36);
|
||||
return x_38;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Decl_elimDead___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_7; lean_object* x_8;
|
||||
x_7 = lean_unbox(x_2);
|
||||
lean_dec(x_2);
|
||||
x_8 = l_Lean_Compiler_LCNF_Decl_elimDead(x_1, x_7, x_3, x_4, x_5, x_6);
|
||||
return x_8;
|
||||
}
|
||||
}
|
||||
lean_object* initialize_Init(uint8_t builtin, lean_object*);
|
||||
lean_object* initialize_Lean_Compiler_LCNF_CompilerM(uint8_t builtin, lean_object*);
|
||||
static bool _G_initialized = false;
|
||||
|
|
|
|||
1501
stage0/stdlib/Lean/Compiler/LCNF/InferType.c
generated
1501
stage0/stdlib/Lean/Compiler/LCNF/InferType.c
generated
File diff suppressed because it is too large
Load diff
1489
stage0/stdlib/Lean/Compiler/LCNF/JoinPoints.c
generated
1489
stage0/stdlib/Lean/Compiler/LCNF/JoinPoints.c
generated
File diff suppressed because it is too large
Load diff
34
stage0/stdlib/Lean/Compiler/LCNF/Level.c
generated
34
stage0/stdlib/Lean/Compiler/LCNF/Level.c
generated
|
|
@ -2498,33 +2498,35 @@ return x_1;
|
|||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; lean_object* x_23;
|
||||
lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; uint8_t x_17; lean_object* x_18; lean_object* x_19; lean_object* x_20; lean_object* x_21; lean_object* x_22; lean_object* x_23; lean_object* x_24;
|
||||
x_13 = lean_ctor_get(x_1, 0);
|
||||
x_14 = lean_ctor_get(x_1, 2);
|
||||
x_15 = lean_ctor_get(x_1, 3);
|
||||
x_16 = lean_ctor_get(x_1, 4);
|
||||
x_17 = lean_ctor_get_uint8(x_1, sizeof(void*)*5);
|
||||
lean_inc(x_16);
|
||||
lean_inc(x_15);
|
||||
lean_inc(x_14);
|
||||
lean_inc(x_13);
|
||||
lean_dec(x_1);
|
||||
x_17 = l_Lean_Compiler_LCNF_Decl_setLevelParams___closed__2;
|
||||
x_18 = l_Lean_Compiler_LCNF_Decl_setLevelParams___closed__2;
|
||||
lean_inc(x_14);
|
||||
x_18 = l_Lean_CollectLevelParams_visitExpr(x_14, x_17);
|
||||
x_19 = l_Lean_Compiler_LCNF_CollectLevelParams_visitParams(x_15, x_18);
|
||||
x_19 = l_Lean_CollectLevelParams_visitExpr(x_14, x_18);
|
||||
x_20 = l_Lean_Compiler_LCNF_CollectLevelParams_visitParams(x_15, x_19);
|
||||
lean_inc(x_16);
|
||||
x_20 = l_Lean_Compiler_LCNF_CollectLevelParams_visitCode(x_16, x_19);
|
||||
x_21 = lean_ctor_get(x_20, 2);
|
||||
lean_inc(x_21);
|
||||
lean_dec(x_20);
|
||||
x_22 = lean_array_to_list(lean_box(0), x_21);
|
||||
x_23 = lean_alloc_ctor(0, 5, 0);
|
||||
lean_ctor_set(x_23, 0, x_13);
|
||||
lean_ctor_set(x_23, 1, x_22);
|
||||
lean_ctor_set(x_23, 2, x_14);
|
||||
lean_ctor_set(x_23, 3, x_15);
|
||||
lean_ctor_set(x_23, 4, x_16);
|
||||
return x_23;
|
||||
x_21 = l_Lean_Compiler_LCNF_CollectLevelParams_visitCode(x_16, x_20);
|
||||
x_22 = lean_ctor_get(x_21, 2);
|
||||
lean_inc(x_22);
|
||||
lean_dec(x_21);
|
||||
x_23 = lean_array_to_list(lean_box(0), x_22);
|
||||
x_24 = lean_alloc_ctor(0, 5, 1);
|
||||
lean_ctor_set(x_24, 0, x_13);
|
||||
lean_ctor_set(x_24, 1, x_23);
|
||||
lean_ctor_set(x_24, 2, x_14);
|
||||
lean_ctor_set(x_24, 3, x_15);
|
||||
lean_ctor_set(x_24, 4, x_16);
|
||||
lean_ctor_set_uint8(x_24, sizeof(void*)*5, x_17);
|
||||
return x_24;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
636
stage0/stdlib/Lean/Compiler/LCNF/Main.c
generated
636
stage0/stdlib/Lean/Compiler/LCNF/Main.c
generated
File diff suppressed because it is too large
Load diff
100
stage0/stdlib/Lean/Compiler/LCNF/PassManager.c
generated
100
stage0/stdlib/Lean/Compiler/LCNF/PassManager.c
generated
|
|
@ -58,7 +58,7 @@ LEAN_EXPORT lean_object* l_Array_forInUnsafe_loop___at_Lean_Compiler_LCNF_PassMa
|
|||
static lean_object* l_Lean_Compiler_LCNF_Phase_instToStringPhase___closed__1;
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Phase_toNat___boxed(lean_object*);
|
||||
uint8_t lean_usize_dec_lt(size_t, size_t);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Pass_mkPerDeclaration___elambda__1(lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Pass_mkPerDeclaration___elambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* lean_nat_add(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_PassManager_validate___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_throwError___at_Lean_Compiler_LCNF_PassInstaller_installAfter___elambda__1___spec__1(lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
|
|
@ -133,7 +133,7 @@ static lean_object* l_Lean_Compiler_LCNF_PassInstaller_replacePass___elambda__1_
|
|||
LEAN_EXPORT uint8_t l_Lean_Compiler_LCNF_Phase_instDecidableLePhaseInstLEPhase(uint8_t, uint8_t);
|
||||
static lean_object* l_Lean_Compiler_LCNF_instInhabitedPass___closed__2;
|
||||
lean_object* l_Array_findIdx_x3f_loop___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Array_mapMUnsafe_map___at_Lean_Compiler_LCNF_Pass_mkPerDeclaration___elambda__1___spec__1(lean_object*, size_t, size_t, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Array_mapMUnsafe_map___at_Lean_Compiler_LCNF_Pass_mkPerDeclaration___elambda__1___spec__1(lean_object*, size_t, size_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_PassInstaller_installAfter___elambda__1___lambda__1___boxed(lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Pass_mkPerDeclaration___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_throwError___at_Lean_Compiler_LCNF_PassManager_findHighestOccurrence___spec__2(lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
|
|
@ -141,8 +141,7 @@ static lean_object* l_Array_forInUnsafe_loop___at_Lean_Compiler_LCNF_PassManager
|
|||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Phase_instLEPhase;
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Phase_instLTPhase;
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_PassInstaller_installBeforeEachOccurrence(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Pass_mkPerDeclaration___elambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_instInhabitedPass___lambda__1(lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_instInhabitedPass___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
uint8_t lean_nat_dec_lt(lean_object*, lean_object*);
|
||||
static lean_object* _init_l_Lean_Compiler_LCNF_Pass_occurrence___default() {
|
||||
_start:
|
||||
|
|
@ -161,7 +160,7 @@ x_2 = lean_mk_empty_array_with_capacity(x_1);
|
|||
return x_2;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_instInhabitedPass___lambda__1(lean_object* x_1, uint8_t x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6) {
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_instInhabitedPass___lambda__1(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_7; lean_object* x_8;
|
||||
|
|
@ -207,15 +206,14 @@ return x_1;
|
|||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_instInhabitedPass___lambda__1___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_7; lean_object* x_8;
|
||||
x_7 = lean_unbox(x_2);
|
||||
lean_dec(x_2);
|
||||
x_8 = l_Lean_Compiler_LCNF_instInhabitedPass___lambda__1(x_1, x_7, x_3, x_4, x_5, x_6);
|
||||
lean_object* x_7;
|
||||
x_7 = l_Lean_Compiler_LCNF_instInhabitedPass___lambda__1(x_1, x_2, x_3, x_4, x_5, x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
lean_dec(x_2);
|
||||
lean_dec(x_1);
|
||||
return x_8;
|
||||
return x_7;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Compiler_LCNF_instInhabitedPassInstaller___rarg___closed__1() {
|
||||
|
|
@ -438,7 +436,7 @@ x_3 = l_Lean_Compiler_LCNF_Phase_instToStringPhase(x_2);
|
|||
return x_3;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Array_mapMUnsafe_map___at_Lean_Compiler_LCNF_Pass_mkPerDeclaration___elambda__1___spec__1(lean_object* x_1, size_t x_2, size_t x_3, lean_object* x_4, uint8_t x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9) {
|
||||
LEAN_EXPORT lean_object* l_Array_mapMUnsafe_map___at_Lean_Compiler_LCNF_Pass_mkPerDeclaration___elambda__1___spec__1(lean_object* x_1, size_t x_2, size_t x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_10;
|
||||
|
|
@ -449,6 +447,7 @@ lean_object* x_11;
|
|||
lean_dec(x_8);
|
||||
lean_dec(x_7);
|
||||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_1);
|
||||
x_11 = lean_alloc_ctor(0, 2, 0);
|
||||
lean_ctor_set(x_11, 0, x_4);
|
||||
|
|
@ -457,63 +456,64 @@ return x_11;
|
|||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16;
|
||||
lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15;
|
||||
x_12 = lean_array_uget(x_4, x_3);
|
||||
x_13 = lean_unsigned_to_nat(0u);
|
||||
x_14 = lean_array_uset(x_4, x_3, x_13);
|
||||
x_15 = lean_box(x_5);
|
||||
lean_inc(x_1);
|
||||
lean_inc(x_8);
|
||||
lean_inc(x_7);
|
||||
lean_inc(x_6);
|
||||
x_16 = lean_apply_6(x_1, x_12, x_15, x_6, x_7, x_8, x_9);
|
||||
if (lean_obj_tag(x_16) == 0)
|
||||
lean_inc(x_5);
|
||||
x_15 = lean_apply_6(x_1, x_12, x_5, x_6, x_7, x_8, x_9);
|
||||
if (lean_obj_tag(x_15) == 0)
|
||||
{
|
||||
lean_object* x_17; lean_object* x_18; size_t x_19; size_t x_20; lean_object* x_21;
|
||||
x_17 = lean_ctor_get(x_16, 0);
|
||||
lean_object* x_16; lean_object* x_17; size_t x_18; size_t x_19; lean_object* x_20;
|
||||
x_16 = lean_ctor_get(x_15, 0);
|
||||
lean_inc(x_16);
|
||||
x_17 = lean_ctor_get(x_15, 1);
|
||||
lean_inc(x_17);
|
||||
x_18 = lean_ctor_get(x_16, 1);
|
||||
lean_inc(x_18);
|
||||
lean_dec(x_16);
|
||||
x_19 = 1;
|
||||
x_20 = lean_usize_add(x_3, x_19);
|
||||
x_21 = lean_array_uset(x_14, x_3, x_17);
|
||||
x_3 = x_20;
|
||||
x_4 = x_21;
|
||||
x_9 = x_18;
|
||||
lean_dec(x_15);
|
||||
x_18 = 1;
|
||||
x_19 = lean_usize_add(x_3, x_18);
|
||||
x_20 = lean_array_uset(x_14, x_3, x_16);
|
||||
x_3 = x_19;
|
||||
x_4 = x_20;
|
||||
x_9 = x_17;
|
||||
goto _start;
|
||||
}
|
||||
else
|
||||
{
|
||||
uint8_t x_23;
|
||||
uint8_t x_22;
|
||||
lean_dec(x_14);
|
||||
lean_dec(x_8);
|
||||
lean_dec(x_7);
|
||||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_1);
|
||||
x_23 = !lean_is_exclusive(x_16);
|
||||
if (x_23 == 0)
|
||||
x_22 = !lean_is_exclusive(x_15);
|
||||
if (x_22 == 0)
|
||||
{
|
||||
return x_16;
|
||||
return x_15;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_24; lean_object* x_25; lean_object* x_26;
|
||||
x_24 = lean_ctor_get(x_16, 0);
|
||||
x_25 = lean_ctor_get(x_16, 1);
|
||||
lean_inc(x_25);
|
||||
lean_object* x_23; lean_object* x_24; lean_object* x_25;
|
||||
x_23 = lean_ctor_get(x_15, 0);
|
||||
x_24 = lean_ctor_get(x_15, 1);
|
||||
lean_inc(x_24);
|
||||
lean_dec(x_16);
|
||||
x_26 = lean_alloc_ctor(1, 2, 0);
|
||||
lean_ctor_set(x_26, 0, x_24);
|
||||
lean_ctor_set(x_26, 1, x_25);
|
||||
return x_26;
|
||||
lean_inc(x_23);
|
||||
lean_dec(x_15);
|
||||
x_25 = lean_alloc_ctor(1, 2, 0);
|
||||
lean_ctor_set(x_25, 0, x_23);
|
||||
lean_ctor_set(x_25, 1, x_24);
|
||||
return x_25;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Pass_mkPerDeclaration___elambda__1(lean_object* x_1, lean_object* x_2, uint8_t x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7) {
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Pass_mkPerDeclaration___elambda__1(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_8; size_t x_9; size_t x_10; lean_object* x_11;
|
||||
|
|
@ -529,7 +529,7 @@ LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Pass_mkPerDeclaration(lean_object*
|
|||
_start:
|
||||
{
|
||||
lean_object* x_5; lean_object* x_6;
|
||||
x_5 = lean_alloc_closure((void*)(l_Lean_Compiler_LCNF_Pass_mkPerDeclaration___elambda__1___boxed), 7, 1);
|
||||
x_5 = lean_alloc_closure((void*)(l_Lean_Compiler_LCNF_Pass_mkPerDeclaration___elambda__1), 7, 1);
|
||||
lean_closure_set(x_5, 0, x_2);
|
||||
x_6 = lean_alloc_ctor(0, 3, 1);
|
||||
lean_ctor_set(x_6, 0, x_4);
|
||||
|
|
@ -542,25 +542,13 @@ return x_6;
|
|||
LEAN_EXPORT lean_object* l_Array_mapMUnsafe_map___at_Lean_Compiler_LCNF_Pass_mkPerDeclaration___elambda__1___spec__1___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9) {
|
||||
_start:
|
||||
{
|
||||
size_t x_10; size_t x_11; uint8_t x_12; lean_object* x_13;
|
||||
size_t x_10; size_t x_11; lean_object* x_12;
|
||||
x_10 = lean_unbox_usize(x_2);
|
||||
lean_dec(x_2);
|
||||
x_11 = lean_unbox_usize(x_3);
|
||||
lean_dec(x_3);
|
||||
x_12 = lean_unbox(x_5);
|
||||
lean_dec(x_5);
|
||||
x_13 = l_Array_mapMUnsafe_map___at_Lean_Compiler_LCNF_Pass_mkPerDeclaration___elambda__1___spec__1(x_1, x_10, x_11, x_4, x_12, x_6, x_7, x_8, x_9);
|
||||
return x_13;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Pass_mkPerDeclaration___elambda__1___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_8; lean_object* x_9;
|
||||
x_8 = lean_unbox(x_3);
|
||||
lean_dec(x_3);
|
||||
x_9 = l_Lean_Compiler_LCNF_Pass_mkPerDeclaration___elambda__1(x_1, x_2, x_8, x_4, x_5, x_6, x_7);
|
||||
return x_9;
|
||||
x_12 = l_Array_mapMUnsafe_map___at_Lean_Compiler_LCNF_Pass_mkPerDeclaration___elambda__1___spec__1(x_1, x_10, x_11, x_4, x_5, x_6, x_7, x_8, x_9);
|
||||
return x_12;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Pass_mkPerDeclaration___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4) {
|
||||
|
|
|
|||
58
stage0/stdlib/Lean/Compiler/LCNF/Passes.c
generated
58
stage0/stdlib/Lean/Compiler/LCNF/Passes.c
generated
|
|
@ -107,7 +107,7 @@ static lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_Passes
|
|||
static lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_Passes___hyg_586____lambda__3___closed__2;
|
||||
extern lean_object* l_Lean_Compiler_LCNF_pullInstances;
|
||||
static lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_Passes___hyg_586____lambda__2___closed__2;
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_init___elambda__1(lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_init___elambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Compiler_LCNF_simp(lean_object*, lean_object*);
|
||||
static lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_Passes___hyg_586____lambda__2___closed__1;
|
||||
uint8_t lean_nat_dec_le(lean_object*, lean_object*);
|
||||
|
|
@ -120,7 +120,7 @@ static lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_Passes
|
|||
static lean_object* l_Lean_Compiler_LCNF_builtinPassManager___closed__12;
|
||||
static lean_object* l_Lean_Compiler_LCNF_addPass___closed__12;
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_getPassManager___boxed(lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at_Lean_Compiler_LCNF_init___elambda__1___spec__1(lean_object*, size_t, size_t, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at_Lean_Compiler_LCNF_init___elambda__1___spec__1(lean_object*, size_t, size_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_ImportM_runCoreM___rarg(lean_object*, lean_object*, lean_object*);
|
||||
static lean_object* l_Lean_Compiler_LCNF_builtinPassManager___closed__11;
|
||||
lean_object* lean_st_ref_set(lean_object*, lean_object*, lean_object*);
|
||||
|
|
@ -157,7 +157,7 @@ static lean_object* l_Lean_Compiler_LCNF_builtinPassManager___closed__9;
|
|||
static lean_object* l_Lean_Compiler_LCNF_init___closed__2;
|
||||
uint8_t lean_string_dec_eq(lean_object*, lean_object*);
|
||||
uint8_t lean_nat_dec_lt(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at_Lean_Compiler_LCNF_init___elambda__1___spec__1(lean_object* x_1, size_t x_2, size_t x_3, lean_object* x_4, uint8_t x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9) {
|
||||
LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at_Lean_Compiler_LCNF_init___elambda__1___spec__1(lean_object* x_1, size_t x_2, size_t x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_10;
|
||||
|
|
@ -190,7 +190,7 @@ return x_18;
|
|||
}
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_init___elambda__1(lean_object* x_1, uint8_t x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6) {
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_init___elambda__1(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_7; lean_object* x_8; uint8_t x_9;
|
||||
|
|
@ -304,46 +304,42 @@ return x_1;
|
|||
LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at_Lean_Compiler_LCNF_init___elambda__1___spec__1___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9) {
|
||||
_start:
|
||||
{
|
||||
size_t x_10; size_t x_11; uint8_t x_12; lean_object* x_13;
|
||||
size_t x_10; size_t x_11; lean_object* x_12;
|
||||
x_10 = lean_unbox_usize(x_2);
|
||||
lean_dec(x_2);
|
||||
x_11 = lean_unbox_usize(x_3);
|
||||
lean_dec(x_3);
|
||||
x_12 = lean_unbox(x_5);
|
||||
lean_dec(x_5);
|
||||
x_13 = l_Array_foldlMUnsafe_fold___at_Lean_Compiler_LCNF_init___elambda__1___spec__1(x_1, x_10, x_11, x_4, x_12, x_6, x_7, x_8, x_9);
|
||||
x_12 = l_Array_foldlMUnsafe_fold___at_Lean_Compiler_LCNF_init___elambda__1___spec__1(x_1, x_10, x_11, x_4, x_5, x_6, x_7, x_8, x_9);
|
||||
lean_dec(x_8);
|
||||
lean_dec(x_7);
|
||||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_1);
|
||||
return x_13;
|
||||
return x_12;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_init___elambda__1___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_7; lean_object* x_8;
|
||||
x_7 = lean_unbox(x_2);
|
||||
lean_dec(x_2);
|
||||
x_8 = l_Lean_Compiler_LCNF_init___elambda__1(x_1, x_7, x_3, x_4, x_5, x_6);
|
||||
lean_object* x_7;
|
||||
x_7 = l_Lean_Compiler_LCNF_init___elambda__1(x_1, x_2, x_3, x_4, x_5, x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
return x_8;
|
||||
lean_dec(x_2);
|
||||
return x_7;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Compiler_LCNF_builtinPassManager___closed__1() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1; uint8_t x_2; lean_object* x_3;
|
||||
x_1 = lean_unsigned_to_nat(1u);
|
||||
x_2 = 0;
|
||||
x_3 = lean_alloc_ctor(0, 1, 3);
|
||||
lean_ctor_set(x_3, 0, x_1);
|
||||
lean_ctor_set_uint8(x_3, sizeof(void*)*1, x_2);
|
||||
lean_ctor_set_uint8(x_3, sizeof(void*)*1 + 1, x_2);
|
||||
lean_ctor_set_uint8(x_3, sizeof(void*)*1 + 2, x_2);
|
||||
return x_3;
|
||||
uint8_t x_1; lean_object* x_2;
|
||||
x_1 = 0;
|
||||
x_2 = lean_alloc_ctor(0, 0, 3);
|
||||
lean_ctor_set_uint8(x_2, 0, x_1);
|
||||
lean_ctor_set_uint8(x_2, 1, x_1);
|
||||
lean_ctor_set_uint8(x_2, 2, x_1);
|
||||
return x_2;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Compiler_LCNF_builtinPassManager___closed__2() {
|
||||
|
|
@ -359,15 +355,13 @@ return x_3;
|
|||
static lean_object* _init_l_Lean_Compiler_LCNF_builtinPassManager___closed__3() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1; uint8_t x_2; lean_object* x_3;
|
||||
x_1 = lean_unsigned_to_nat(1u);
|
||||
x_2 = 1;
|
||||
x_3 = lean_alloc_ctor(0, 1, 3);
|
||||
lean_ctor_set(x_3, 0, x_1);
|
||||
lean_ctor_set_uint8(x_3, sizeof(void*)*1, x_2);
|
||||
lean_ctor_set_uint8(x_3, sizeof(void*)*1 + 1, x_2);
|
||||
lean_ctor_set_uint8(x_3, sizeof(void*)*1 + 2, x_2);
|
||||
return x_3;
|
||||
uint8_t x_1; lean_object* x_2;
|
||||
x_1 = 1;
|
||||
x_2 = lean_alloc_ctor(0, 0, 3);
|
||||
lean_ctor_set_uint8(x_2, 0, x_1);
|
||||
lean_ctor_set_uint8(x_2, 1, x_1);
|
||||
lean_ctor_set_uint8(x_2, 2, x_1);
|
||||
return x_2;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Compiler_LCNF_builtinPassManager___closed__4() {
|
||||
|
|
|
|||
391
stage0/stdlib/Lean/Compiler/LCNF/PhaseExt.c
generated
391
stage0/stdlib/Lean/Compiler/LCNF/PhaseExt.c
generated
|
|
@ -13,10 +13,10 @@
|
|||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____lambda__3___boxed(lean_object*, lean_object*, lean_object*);
|
||||
size_t lean_usize_add(size_t, size_t);
|
||||
LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAux_traverse___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____spec__3(size_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAux_traverse___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____spec__3(size_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_baseExt;
|
||||
static lean_object* l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____spec__2___closed__3;
|
||||
lean_object* lean_mk_empty_array_with_capacity(lean_object*);
|
||||
lean_object* l_Lean_Name_str___override(lean_object*, lean_object*);
|
||||
lean_object* lean_nat_div(lean_object*, lean_object*);
|
||||
|
|
@ -24,27 +24,26 @@ lean_object* l_Lean_PersistentEnvExtension_getModuleEntries___rarg(lean_object*,
|
|||
LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_forM___at_Lean_Compiler_LCNF_forEachDecl___spec__3(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
uint8_t lean_usize_dec_eq(size_t, size_t);
|
||||
lean_object* lean_array_uget(lean_object*, size_t);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____lambda__3___boxed(lean_object*, lean_object*, lean_object*);
|
||||
static lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____closed__5;
|
||||
static lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____closed__5;
|
||||
uint8_t l_Lean_Name_quickLt(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_getBaseDeclCore_x3f(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_getBaseDecl_x3f___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Std_Range_forIn_loop___at_Lean_Compiler_LCNF_forEachDecl___spec__2(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
size_t lean_usize_sub(size_t, size_t);
|
||||
LEAN_EXPORT lean_object* l_Array_qsort_sort___at___private_Lean_Compiler_LCNF_PhaseExt_0__Lean_Compiler_LCNF_sortDecls___spec__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
static lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____closed__7;
|
||||
LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_foldlM___at_Lean_Compiler_LCNF_forEachDecl___spec__4(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____spec__2(lean_object*, size_t, size_t, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_foldlMAux_traverse___at_Lean_Compiler_LCNF_forEachDecl___spec__7___rarg___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* lean_st_ref_get(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Array_binSearchAux___at___private_Lean_Compiler_LCNF_PhaseExt_0__Lean_Compiler_LCNF_findAtSorted_x3f___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_foldlMAux___at_Lean_Compiler_LCNF_forEachDecl___spec__5(lean_object*, lean_object*, lean_object*);
|
||||
extern lean_object* l_Lean_instHashableName;
|
||||
uint8_t lean_name_eq(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____spec__2(lean_object*, size_t, size_t, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_forM___at_Lean_Compiler_LCNF_forEachDecl___spec__3___lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_getDeclAt_x3f___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
static lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____closed__7;
|
||||
static lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____closed__3;
|
||||
static lean_object* l_Array_qsort_sort___at___private_Lean_Compiler_LCNF_PhaseExt_0__Lean_Compiler_LCNF_sortDecls___spec__1___closed__1;
|
||||
static lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____closed__3;
|
||||
lean_object* lean_array_push(lean_object*, lean_object*);
|
||||
lean_object* lean_array_get_size(lean_object*);
|
||||
lean_object* l_Array_qpartition_loop___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
|
|
@ -57,39 +56,39 @@ uint8_t lean_usize_dec_lt(size_t, size_t);
|
|||
LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_forM___at_Lean_Compiler_LCNF_forEachDecl___spec__3___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l___private_Lean_Compiler_LCNF_PhaseExt_0__Lean_Compiler_LCNF_sortDecls(lean_object*);
|
||||
lean_object* lean_nat_add(lean_object*, lean_object*);
|
||||
static lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____closed__4;
|
||||
LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_foldlM___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____spec__5(lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Std_Range_forIn_loop___at_Lean_Compiler_LCNF_forEachDecl___spec__2___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_foldlM___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____spec__5(lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l___private_Lean_Compiler_LCNF_PhaseExt_0__Lean_Compiler_LCNF_declLt___boxed(lean_object*, lean_object*);
|
||||
static lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____closed__8;
|
||||
static lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____closed__8;
|
||||
size_t lean_uint64_to_usize(uint64_t);
|
||||
static lean_object* l_Lean_Compiler_LCNF_Decl_saveBase___closed__1;
|
||||
LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at_Lean_Compiler_LCNF_forEachDecl___spec__6(lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_PersistentHashMap_getCollisionNodeSize___rarg(lean_object*);
|
||||
uint64_t l_Lean_Name_hash___override(lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insert___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____spec__1(lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____lambda__3(lean_object*, lean_object*, lean_object*);
|
||||
lean_object* lean_array_fget(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insert___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____spec__1(lean_object*, lean_object*, lean_object*);
|
||||
uint8_t lean_nat_dec_eq(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Array_forInUnsafe_loop___at_Lean_Compiler_LCNF_forEachDecl___spec__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* lean_st_ref_take(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAux_traverse___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____spec__3___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* lean_nat_sub(lean_object*, lean_object*);
|
||||
LEAN_EXPORT uint8_t l___private_Lean_Compiler_LCNF_PhaseExt_0__Lean_Compiler_LCNF_declLt(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____lambda__3(lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____spec__2___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* lean_array_swap(lean_object*, lean_object*, lean_object*);
|
||||
static size_t l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____spec__2___closed__2;
|
||||
lean_object* lean_array_get(lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48_(lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49_(lean_object*);
|
||||
lean_object* lean_array_fset(lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____lambda__5___boxed(lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAtCollisionNodeAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____spec__4(lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAtCollisionNodeAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____spec__4(lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_registerPersistentEnvExtensionUnsafe___rarg(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_findAux___at_Lean_Compiler_LCNF_getBaseDeclCore_x3f___spec__2___boxed(lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_findAux___at_Lean_Compiler_LCNF_getBaseDeclCore_x3f___spec__2(lean_object*, size_t, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Array_qsort_sort___at___private_Lean_Compiler_LCNF_PhaseExt_0__Lean_Compiler_LCNF_sortDecls___spec__1(lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
static lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____closed__1;
|
||||
static lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____closed__4;
|
||||
size_t lean_usize_shift_left(size_t, size_t);
|
||||
lean_object* l_Lean_Compiler_LCNF_Pass_mkPerDeclaration(lean_object*, lean_object*, uint8_t, lean_object*);
|
||||
static lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____closed__1;
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____lambda__5(lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____lambda__5(lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_getDecl_x3f___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Decl_saveBase(lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_PersistentHashMap_foldlMAux___at_Lean_mkModuleData___spec__3___rarg(lean_object*, lean_object*, lean_object*);
|
||||
|
|
@ -98,34 +97,36 @@ LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_foldlMAux___at_Lean_Compiler_L
|
|||
size_t lean_usize_mul(size_t, size_t);
|
||||
static lean_object* l_Lean_Compiler_LCNF_getBaseDeclCore_x3f___closed__2;
|
||||
lean_object* l_Lean_Expr_bvar___override(lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_saveBase___lambda__1(lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
static lean_object* l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____spec__2___closed__3;
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_saveBase___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
size_t lean_usize_of_nat(lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_forEachDecl(lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____lambda__5___boxed(lean_object*);
|
||||
lean_object* l_Lean_PersistentEnvExtension_addEntry___rarg(lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_getDecl_x3f(lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_getDecl_x3f(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
size_t lean_usize_land(size_t, size_t);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____lambda__1(lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____lambda__1(lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_PersistentHashMap_mkEmptyEntriesArray(lean_object*, lean_object*);
|
||||
static lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____closed__2;
|
||||
static lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____closed__2;
|
||||
LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at_Lean_Compiler_LCNF_forEachDecl___spec__6___rarg___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
static lean_object* l___private_Lean_Compiler_LCNF_PhaseExt_0__Lean_Compiler_LCNF_findAtSorted_x3f___closed__1;
|
||||
LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at_Lean_Compiler_LCNF_forEachDecl___spec__6___rarg(lean_object*, lean_object*, size_t, size_t, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
static lean_object* l_Lean_Compiler_LCNF_getBaseDeclCore_x3f___closed__1;
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____lambda__2(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____lambda__2(lean_object*, lean_object*);
|
||||
static lean_object* l___private_Lean_Compiler_LCNF_PhaseExt_0__Lean_Compiler_LCNF_findAtSorted_x3f___closed__2;
|
||||
LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_find_x3f___at_Lean_Compiler_LCNF_getBaseDeclCore_x3f___spec__1(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Decl_saveBase___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Array_forInUnsafe_loop___at_Lean_Compiler_LCNF_forEachDecl___spec__1(lean_object*, lean_object*, size_t, size_t, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
uint8_t lean_nat_dec_le(lean_object*, lean_object*);
|
||||
uint8_t lean_usize_dec_le(size_t, size_t);
|
||||
static lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____closed__9;
|
||||
LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_foldlMAux_traverse___at_Lean_Compiler_LCNF_forEachDecl___spec__7___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Environment_addExtraName(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Array_binSearchAux___at___private_Lean_Compiler_LCNF_PhaseExt_0__Lean_Compiler_LCNF_findAtSorted_x3f___spec__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
static lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____closed__9;
|
||||
static lean_object* l_Lean_Compiler_LCNF_saveBase___closed__1;
|
||||
lean_object* lean_st_ref_set(lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____lambda__4(lean_object*);
|
||||
uint8_t lean_nat_dec_eq(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____lambda__4(lean_object*);
|
||||
lean_object* l_Lean_Environment_getModuleIdxFor_x3f(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_PersistentHashMap_mkEmptyEntries(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_saveBase;
|
||||
|
|
@ -133,24 +134,24 @@ static lean_object* l_Lean_Compiler_LCNF_saveBase___closed__3;
|
|||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_saveBase___lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
extern lean_object* l_Lean_Compiler_LCNF_instInhabitedDecl;
|
||||
lean_object* l_Lean_Environment_allImportedModuleNames(lean_object*);
|
||||
static lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____lambda__4___closed__1;
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_saveBaseDeclCore(lean_object*, lean_object*);
|
||||
static size_t l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____spec__2___closed__1;
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_getDeclAt_x3f(lean_object*, uint8_t, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_PersistentEnvExtension_getState___rarg(lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l___private_Lean_Compiler_LCNF_PhaseExt_0__Lean_Compiler_LCNF_findAtSorted_x3f(lean_object*, lean_object*);
|
||||
static size_t l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____spec__2___closed__2;
|
||||
LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_findAtAux___at_Lean_Compiler_LCNF_getBaseDeclCore_x3f___spec__3(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
static lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____closed__6;
|
||||
LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAux_traverse___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____spec__3___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
static lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____closed__6;
|
||||
static lean_object* l___private_Lean_Compiler_LCNF_PhaseExt_0__Lean_Compiler_LCNF_findAtSorted_x3f___closed__3;
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_getBaseDecl_x3f(lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* lean_usize_to_nat(size_t);
|
||||
lean_object* l_Lean_Compiler_LCNF_getPhase(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_EStateM_pure___rarg(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____spec__2___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_PersistentHashMap_mkCollisionNode___rarg(lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
static lean_object* l_Lean_Compiler_LCNF_saveBase___closed__4;
|
||||
lean_object* l_Lean_PersistentHashMap_instInhabitedPersistentHashMap___rarg(lean_object*, lean_object*);
|
||||
static lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____lambda__4___closed__1;
|
||||
static size_t l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____spec__2___closed__1;
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
uint8_t lean_nat_dec_lt(lean_object*, lean_object*);
|
||||
extern lean_object* l_Lean_Name_instBEqName;
|
||||
LEAN_EXPORT uint8_t l___private_Lean_Compiler_LCNF_PhaseExt_0__Lean_Compiler_LCNF_declLt(lean_object* x_1, lean_object* x_2) {
|
||||
|
|
@ -496,41 +497,43 @@ return x_3;
|
|||
LEAN_EXPORT lean_object* l___private_Lean_Compiler_LCNF_PhaseExt_0__Lean_Compiler_LCNF_findAtSorted_x3f(lean_object* x_1, lean_object* x_2) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; lean_object* x_7; lean_object* x_8; lean_object* x_9; lean_object* x_10; lean_object* x_11; uint8_t x_12;
|
||||
lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; uint8_t x_7; lean_object* x_8; lean_object* x_9; lean_object* x_10; lean_object* x_11; lean_object* x_12; uint8_t x_13;
|
||||
x_3 = lean_box(0);
|
||||
x_4 = l___private_Lean_Compiler_LCNF_PhaseExt_0__Lean_Compiler_LCNF_findAtSorted_x3f___closed__1;
|
||||
x_5 = l___private_Lean_Compiler_LCNF_PhaseExt_0__Lean_Compiler_LCNF_findAtSorted_x3f___closed__2;
|
||||
x_6 = l___private_Lean_Compiler_LCNF_PhaseExt_0__Lean_Compiler_LCNF_findAtSorted_x3f___closed__3;
|
||||
x_7 = lean_alloc_ctor(0, 5, 0);
|
||||
lean_ctor_set(x_7, 0, x_2);
|
||||
lean_ctor_set(x_7, 1, x_3);
|
||||
lean_ctor_set(x_7, 2, x_4);
|
||||
lean_ctor_set(x_7, 3, x_5);
|
||||
lean_ctor_set(x_7, 4, x_6);
|
||||
x_8 = lean_array_get_size(x_1);
|
||||
x_9 = lean_unsigned_to_nat(1u);
|
||||
x_10 = lean_nat_sub(x_8, x_9);
|
||||
x_11 = lean_unsigned_to_nat(0u);
|
||||
x_12 = lean_nat_dec_lt(x_11, x_8);
|
||||
lean_dec(x_8);
|
||||
if (x_12 == 0)
|
||||
x_7 = 0;
|
||||
x_8 = lean_alloc_ctor(0, 5, 1);
|
||||
lean_ctor_set(x_8, 0, x_2);
|
||||
lean_ctor_set(x_8, 1, x_3);
|
||||
lean_ctor_set(x_8, 2, x_4);
|
||||
lean_ctor_set(x_8, 3, x_5);
|
||||
lean_ctor_set(x_8, 4, x_6);
|
||||
lean_ctor_set_uint8(x_8, sizeof(void*)*5, x_7);
|
||||
x_9 = lean_array_get_size(x_1);
|
||||
x_10 = lean_unsigned_to_nat(1u);
|
||||
x_11 = lean_nat_sub(x_9, x_10);
|
||||
x_12 = lean_unsigned_to_nat(0u);
|
||||
x_13 = lean_nat_dec_lt(x_12, x_9);
|
||||
lean_dec(x_9);
|
||||
if (x_13 == 0)
|
||||
{
|
||||
lean_object* x_13;
|
||||
lean_dec(x_10);
|
||||
lean_dec(x_7);
|
||||
lean_object* x_14;
|
||||
lean_dec(x_11);
|
||||
lean_dec(x_8);
|
||||
lean_dec(x_1);
|
||||
x_13 = lean_box(0);
|
||||
return x_13;
|
||||
x_14 = lean_box(0);
|
||||
return x_14;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_14; lean_object* x_15; lean_object* x_16;
|
||||
x_14 = lean_box(0);
|
||||
x_15 = l_Lean_Compiler_LCNF_instInhabitedDecl;
|
||||
x_16 = l_Array_binSearchAux___at___private_Lean_Compiler_LCNF_PhaseExt_0__Lean_Compiler_LCNF_findAtSorted_x3f___spec__1(x_15, x_14, x_1, x_7, x_11, x_10);
|
||||
lean_dec(x_7);
|
||||
lean_object* x_15; lean_object* x_16; lean_object* x_17;
|
||||
x_15 = lean_box(0);
|
||||
x_16 = l_Lean_Compiler_LCNF_instInhabitedDecl;
|
||||
x_17 = l_Array_binSearchAux___at___private_Lean_Compiler_LCNF_PhaseExt_0__Lean_Compiler_LCNF_findAtSorted_x3f___spec__1(x_16, x_15, x_1, x_8, x_12, x_11);
|
||||
lean_dec(x_8);
|
||||
lean_dec(x_1);
|
||||
return x_16;
|
||||
return x_17;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -545,7 +548,7 @@ lean_dec(x_2);
|
|||
return x_7;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAux_traverse___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____spec__3(size_t x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6) {
|
||||
LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAux_traverse___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____spec__3(size_t x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_7; uint8_t x_8;
|
||||
|
|
@ -572,7 +575,7 @@ x_17 = lean_usize_shift_right(x_12, x_16);
|
|||
x_18 = lean_unsigned_to_nat(1u);
|
||||
x_19 = lean_nat_add(x_5, x_18);
|
||||
lean_dec(x_5);
|
||||
x_20 = l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____spec__2(x_6, x_17, x_1, x_9, x_10);
|
||||
x_20 = l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____spec__2(x_6, x_17, x_1, x_9, x_10);
|
||||
x_4 = lean_box(0);
|
||||
x_5 = x_19;
|
||||
x_6 = x_20;
|
||||
|
|
@ -580,7 +583,7 @@ goto _start;
|
|||
}
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAtCollisionNodeAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____spec__4(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4) {
|
||||
LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAtCollisionNodeAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____spec__4(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_5; lean_object* x_6; lean_object* x_7; uint8_t x_8;
|
||||
|
|
@ -672,7 +675,7 @@ return x_29;
|
|||
}
|
||||
}
|
||||
}
|
||||
static size_t _init_l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____spec__2___closed__1() {
|
||||
static size_t _init_l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____spec__2___closed__1() {
|
||||
_start:
|
||||
{
|
||||
size_t x_1; size_t x_2; size_t x_3;
|
||||
|
|
@ -682,17 +685,17 @@ x_3 = lean_usize_shift_left(x_1, x_2);
|
|||
return x_3;
|
||||
}
|
||||
}
|
||||
static size_t _init_l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____spec__2___closed__2() {
|
||||
static size_t _init_l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____spec__2___closed__2() {
|
||||
_start:
|
||||
{
|
||||
size_t x_1; size_t x_2; size_t x_3;
|
||||
x_1 = 1;
|
||||
x_2 = l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____spec__2___closed__1;
|
||||
x_2 = l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____spec__2___closed__1;
|
||||
x_3 = lean_usize_sub(x_2, x_1);
|
||||
return x_3;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____spec__2___closed__3() {
|
||||
static lean_object* _init_l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____spec__2___closed__3() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1;
|
||||
|
|
@ -700,7 +703,7 @@ x_1 = l_Lean_PersistentHashMap_mkEmptyEntries(lean_box(0), lean_box(0));
|
|||
return x_1;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____spec__2(lean_object* x_1, size_t x_2, size_t x_3, lean_object* x_4, lean_object* x_5) {
|
||||
LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____spec__2(lean_object* x_1, size_t x_2, size_t x_3, lean_object* x_4, lean_object* x_5) {
|
||||
_start:
|
||||
{
|
||||
if (lean_obj_tag(x_1) == 0)
|
||||
|
|
@ -713,7 +716,7 @@ lean_object* x_7; size_t x_8; size_t x_9; size_t x_10; size_t x_11; lean_object*
|
|||
x_7 = lean_ctor_get(x_1, 0);
|
||||
x_8 = 1;
|
||||
x_9 = 5;
|
||||
x_10 = l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____spec__2___closed__2;
|
||||
x_10 = l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____spec__2___closed__2;
|
||||
x_11 = lean_usize_land(x_2, x_10);
|
||||
x_12 = lean_usize_to_nat(x_11);
|
||||
x_13 = lean_array_get_size(x_7);
|
||||
|
|
@ -813,7 +816,7 @@ lean_object* x_35; size_t x_36; size_t x_37; lean_object* x_38; lean_object* x_3
|
|||
x_35 = lean_ctor_get(x_15, 0);
|
||||
x_36 = lean_usize_shift_right(x_2, x_9);
|
||||
x_37 = lean_usize_add(x_3, x_8);
|
||||
x_38 = l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____spec__2(x_35, x_36, x_37, x_4, x_5);
|
||||
x_38 = l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____spec__2(x_35, x_36, x_37, x_4, x_5);
|
||||
lean_ctor_set(x_15, 0, x_38);
|
||||
x_39 = lean_array_fset(x_17, x_12, x_15);
|
||||
lean_dec(x_12);
|
||||
|
|
@ -828,7 +831,7 @@ lean_inc(x_40);
|
|||
lean_dec(x_15);
|
||||
x_41 = lean_usize_shift_right(x_2, x_9);
|
||||
x_42 = lean_usize_add(x_3, x_8);
|
||||
x_43 = l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____spec__2(x_40, x_41, x_42, x_4, x_5);
|
||||
x_43 = l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____spec__2(x_40, x_41, x_42, x_4, x_5);
|
||||
x_44 = lean_alloc_ctor(1, 1, 0);
|
||||
lean_ctor_set(x_44, 0, x_43);
|
||||
x_45 = lean_array_fset(x_17, x_12, x_44);
|
||||
|
|
@ -859,7 +862,7 @@ lean_inc(x_48);
|
|||
lean_dec(x_1);
|
||||
x_49 = 1;
|
||||
x_50 = 5;
|
||||
x_51 = l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____spec__2___closed__2;
|
||||
x_51 = l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____spec__2___closed__2;
|
||||
x_52 = lean_usize_land(x_2, x_51);
|
||||
x_53 = lean_usize_to_nat(x_52);
|
||||
x_54 = lean_array_get_size(x_48);
|
||||
|
|
@ -944,7 +947,7 @@ if (lean_is_exclusive(x_57)) {
|
|||
}
|
||||
x_73 = lean_usize_shift_right(x_2, x_50);
|
||||
x_74 = lean_usize_add(x_3, x_49);
|
||||
x_75 = l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____spec__2(x_71, x_73, x_74, x_4, x_5);
|
||||
x_75 = l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____spec__2(x_71, x_73, x_74, x_4, x_5);
|
||||
if (lean_is_scalar(x_72)) {
|
||||
x_76 = lean_alloc_ctor(1, 1, 0);
|
||||
} else {
|
||||
|
|
@ -981,7 +984,7 @@ if (x_82 == 0)
|
|||
{
|
||||
lean_object* x_83; lean_object* x_84; size_t x_85; uint8_t x_86;
|
||||
x_83 = lean_unsigned_to_nat(0u);
|
||||
x_84 = l_Lean_PersistentHashMap_insertAtCollisionNodeAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____spec__4(x_1, x_83, x_4, x_5);
|
||||
x_84 = l_Lean_PersistentHashMap_insertAtCollisionNodeAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____spec__4(x_1, x_83, x_4, x_5);
|
||||
x_85 = 7;
|
||||
x_86 = lean_usize_dec_le(x_85, x_3);
|
||||
if (x_86 == 0)
|
||||
|
|
@ -999,8 +1002,8 @@ lean_inc(x_90);
|
|||
x_91 = lean_ctor_get(x_84, 1);
|
||||
lean_inc(x_91);
|
||||
lean_dec(x_84);
|
||||
x_92 = l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____spec__2___closed__3;
|
||||
x_93 = l_Lean_PersistentHashMap_insertAux_traverse___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____spec__3(x_3, x_90, x_91, lean_box(0), x_83, x_92);
|
||||
x_92 = l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____spec__2___closed__3;
|
||||
x_93 = l_Lean_PersistentHashMap_insertAux_traverse___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____spec__3(x_3, x_90, x_91, lean_box(0), x_83, x_92);
|
||||
lean_dec(x_91);
|
||||
lean_dec(x_90);
|
||||
return x_93;
|
||||
|
|
@ -1027,7 +1030,7 @@ x_96 = lean_alloc_ctor(1, 2, 0);
|
|||
lean_ctor_set(x_96, 0, x_94);
|
||||
lean_ctor_set(x_96, 1, x_95);
|
||||
x_97 = lean_unsigned_to_nat(0u);
|
||||
x_98 = l_Lean_PersistentHashMap_insertAtCollisionNodeAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____spec__4(x_96, x_97, x_4, x_5);
|
||||
x_98 = l_Lean_PersistentHashMap_insertAtCollisionNodeAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____spec__4(x_96, x_97, x_4, x_5);
|
||||
x_99 = 7;
|
||||
x_100 = lean_usize_dec_le(x_99, x_3);
|
||||
if (x_100 == 0)
|
||||
|
|
@ -1045,8 +1048,8 @@ lean_inc(x_104);
|
|||
x_105 = lean_ctor_get(x_98, 1);
|
||||
lean_inc(x_105);
|
||||
lean_dec(x_98);
|
||||
x_106 = l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____spec__2___closed__3;
|
||||
x_107 = l_Lean_PersistentHashMap_insertAux_traverse___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____spec__3(x_3, x_104, x_105, lean_box(0), x_97, x_106);
|
||||
x_106 = l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____spec__2___closed__3;
|
||||
x_107 = l_Lean_PersistentHashMap_insertAux_traverse___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____spec__3(x_3, x_104, x_105, lean_box(0), x_97, x_106);
|
||||
lean_dec(x_105);
|
||||
lean_dec(x_104);
|
||||
return x_107;
|
||||
|
|
@ -1064,7 +1067,7 @@ return x_98;
|
|||
}
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insert___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____spec__1(lean_object* x_1, lean_object* x_2, lean_object* x_3) {
|
||||
LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insert___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____spec__1(lean_object* x_1, lean_object* x_2, lean_object* x_3) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_4;
|
||||
|
|
@ -1077,7 +1080,7 @@ x_6 = lean_ctor_get(x_1, 1);
|
|||
x_7 = l_Lean_Name_hash___override(x_2);
|
||||
x_8 = lean_uint64_to_usize(x_7);
|
||||
x_9 = 1;
|
||||
x_10 = l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____spec__2(x_5, x_8, x_9, x_2, x_3);
|
||||
x_10 = l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____spec__2(x_5, x_8, x_9, x_2, x_3);
|
||||
x_11 = lean_unsigned_to_nat(1u);
|
||||
x_12 = lean_nat_add(x_6, x_11);
|
||||
lean_dec(x_6);
|
||||
|
|
@ -1096,7 +1099,7 @@ lean_dec(x_1);
|
|||
x_15 = l_Lean_Name_hash___override(x_2);
|
||||
x_16 = lean_uint64_to_usize(x_15);
|
||||
x_17 = 1;
|
||||
x_18 = l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____spec__2(x_13, x_16, x_17, x_2, x_3);
|
||||
x_18 = l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____spec__2(x_13, x_16, x_17, x_2, x_3);
|
||||
x_19 = lean_unsigned_to_nat(1u);
|
||||
x_20 = lean_nat_add(x_14, x_19);
|
||||
lean_dec(x_14);
|
||||
|
|
@ -1107,7 +1110,7 @@ return x_21;
|
|||
}
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_foldlM___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____spec__5(lean_object* x_1, lean_object* x_2, lean_object* x_3) {
|
||||
LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_foldlM___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____spec__5(lean_object* x_1, lean_object* x_2, lean_object* x_3) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_4; lean_object* x_5;
|
||||
|
|
@ -1118,7 +1121,7 @@ x_5 = l_Lean_PersistentHashMap_foldlMAux___at_Lean_mkModuleData___spec__3___rarg
|
|||
return x_5;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____lambda__1(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4) {
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____lambda__1(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_5;
|
||||
|
|
@ -1128,17 +1131,17 @@ lean_ctor_set(x_5, 1, x_4);
|
|||
return x_5;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____lambda__2(lean_object* x_1, lean_object* x_2) {
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____lambda__2(lean_object* x_1, lean_object* x_2) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_3; lean_object* x_4;
|
||||
x_3 = lean_ctor_get(x_2, 0);
|
||||
lean_inc(x_3);
|
||||
x_4 = l_Lean_PersistentHashMap_insert___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____spec__1(x_1, x_3, x_2);
|
||||
x_4 = l_Lean_PersistentHashMap_insert___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____spec__1(x_1, x_3, x_2);
|
||||
return x_4;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____lambda__3(lean_object* x_1, lean_object* x_2, lean_object* x_3) {
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____lambda__3(lean_object* x_1, lean_object* x_2, lean_object* x_3) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_4;
|
||||
|
|
@ -1146,21 +1149,21 @@ x_4 = lean_array_push(x_1, x_3);
|
|||
return x_4;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____lambda__4___closed__1() {
|
||||
static lean_object* _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____lambda__4___closed__1() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1;
|
||||
x_1 = lean_alloc_closure((void*)(l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____lambda__3___boxed), 3, 0);
|
||||
x_1 = lean_alloc_closure((void*)(l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____lambda__3___boxed), 3, 0);
|
||||
return x_1;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____lambda__4(lean_object* x_1) {
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____lambda__4(lean_object* x_1) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; lean_object* x_7; lean_object* x_8; lean_object* x_9; lean_object* x_10;
|
||||
x_2 = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____lambda__4___closed__1;
|
||||
x_2 = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____lambda__4___closed__1;
|
||||
x_3 = l___private_Lean_Compiler_LCNF_PhaseExt_0__Lean_Compiler_LCNF_findAtSorted_x3f___closed__2;
|
||||
x_4 = l_Lean_PersistentHashMap_foldlM___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____spec__5(x_1, x_2, x_3);
|
||||
x_4 = l_Lean_PersistentHashMap_foldlM___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____spec__5(x_1, x_2, x_3);
|
||||
x_5 = lean_array_get_size(x_4);
|
||||
x_6 = lean_unsigned_to_nat(1u);
|
||||
x_7 = lean_nat_sub(x_5, x_6);
|
||||
|
|
@ -1172,7 +1175,7 @@ lean_dec(x_7);
|
|||
return x_10;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____lambda__5(lean_object* x_1) {
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____lambda__5(lean_object* x_1) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_2;
|
||||
|
|
@ -1180,7 +1183,7 @@ x_2 = lean_box(0);
|
|||
return x_2;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____closed__1() {
|
||||
static lean_object* _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____closed__1() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1;
|
||||
|
|
@ -1188,17 +1191,17 @@ x_1 = lean_mk_string_from_bytes("compBaseDecls", 13);
|
|||
return x_1;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____closed__2() {
|
||||
static lean_object* _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____closed__2() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1; lean_object* x_2; lean_object* x_3;
|
||||
x_1 = lean_box(0);
|
||||
x_2 = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____closed__1;
|
||||
x_2 = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____closed__1;
|
||||
x_3 = l_Lean_Name_str___override(x_1, x_2);
|
||||
return x_3;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____closed__3() {
|
||||
static lean_object* _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____closed__3() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1;
|
||||
|
|
@ -1206,21 +1209,21 @@ x_1 = l_Lean_PersistentHashMap_mkEmptyEntriesArray(lean_box(0), lean_box(0));
|
|||
return x_1;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____closed__4() {
|
||||
static lean_object* _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____closed__4() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1; lean_object* x_2;
|
||||
x_1 = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____closed__3;
|
||||
x_1 = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____closed__3;
|
||||
x_2 = lean_alloc_ctor(0, 1, 0);
|
||||
lean_ctor_set(x_2, 0, x_1);
|
||||
return x_2;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____closed__5() {
|
||||
static lean_object* _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____closed__5() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1; lean_object* x_2; lean_object* x_3;
|
||||
x_1 = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____closed__4;
|
||||
x_1 = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____closed__4;
|
||||
x_2 = lean_unsigned_to_nat(0u);
|
||||
x_3 = lean_alloc_ctor(0, 2, 0);
|
||||
lean_ctor_set(x_3, 0, x_1);
|
||||
|
|
@ -1228,52 +1231,52 @@ lean_ctor_set(x_3, 1, x_2);
|
|||
return x_3;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____closed__6() {
|
||||
static lean_object* _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____closed__6() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1; lean_object* x_2;
|
||||
x_1 = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____closed__5;
|
||||
x_1 = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____closed__5;
|
||||
x_2 = lean_alloc_closure((void*)(l_EStateM_pure___rarg), 2, 1);
|
||||
lean_closure_set(x_2, 0, x_1);
|
||||
return x_2;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____closed__7() {
|
||||
static lean_object* _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____closed__7() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1;
|
||||
x_1 = lean_alloc_closure((void*)(l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____lambda__2), 2, 0);
|
||||
x_1 = lean_alloc_closure((void*)(l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____lambda__2), 2, 0);
|
||||
return x_1;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____closed__8() {
|
||||
static lean_object* _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____closed__8() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1;
|
||||
x_1 = lean_alloc_closure((void*)(l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____lambda__4), 1, 0);
|
||||
x_1 = lean_alloc_closure((void*)(l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____lambda__4), 1, 0);
|
||||
return x_1;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____closed__9() {
|
||||
static lean_object* _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____closed__9() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1;
|
||||
x_1 = lean_alloc_closure((void*)(l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____lambda__5___boxed), 1, 0);
|
||||
x_1 = lean_alloc_closure((void*)(l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____lambda__5___boxed), 1, 0);
|
||||
return x_1;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48_(lean_object* x_1) {
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49_(lean_object* x_1) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_2; lean_object* x_3; lean_object* x_4; lean_object* x_5; lean_object* x_6; lean_object* x_7; lean_object* x_8; lean_object* x_9; lean_object* x_10;
|
||||
x_2 = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____closed__5;
|
||||
x_3 = lean_alloc_closure((void*)(l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____lambda__1___boxed), 4, 1);
|
||||
x_2 = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____closed__5;
|
||||
x_3 = lean_alloc_closure((void*)(l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____lambda__1___boxed), 4, 1);
|
||||
lean_closure_set(x_3, 0, x_2);
|
||||
x_4 = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____closed__2;
|
||||
x_5 = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____closed__6;
|
||||
x_6 = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____closed__7;
|
||||
x_7 = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____closed__8;
|
||||
x_8 = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____closed__9;
|
||||
x_4 = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____closed__2;
|
||||
x_5 = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____closed__6;
|
||||
x_6 = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____closed__7;
|
||||
x_7 = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____closed__8;
|
||||
x_8 = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____closed__9;
|
||||
x_9 = lean_alloc_ctor(0, 6, 0);
|
||||
lean_ctor_set(x_9, 0, x_4);
|
||||
lean_ctor_set(x_9, 1, x_5);
|
||||
|
|
@ -1285,19 +1288,19 @@ x_10 = l_Lean_registerPersistentEnvExtensionUnsafe___rarg(x_9, x_1);
|
|||
return x_10;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAux_traverse___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____spec__3___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6) {
|
||||
LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAux_traverse___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____spec__3___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6) {
|
||||
_start:
|
||||
{
|
||||
size_t x_7; lean_object* x_8;
|
||||
x_7 = lean_unbox_usize(x_1);
|
||||
lean_dec(x_1);
|
||||
x_8 = l_Lean_PersistentHashMap_insertAux_traverse___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____spec__3(x_7, x_2, x_3, x_4, x_5, x_6);
|
||||
x_8 = l_Lean_PersistentHashMap_insertAux_traverse___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____spec__3(x_7, x_2, x_3, x_4, x_5, x_6);
|
||||
lean_dec(x_3);
|
||||
lean_dec(x_2);
|
||||
return x_8;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____spec__2___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5) {
|
||||
LEAN_EXPORT lean_object* l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____spec__2___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5) {
|
||||
_start:
|
||||
{
|
||||
size_t x_6; size_t x_7; lean_object* x_8;
|
||||
|
|
@ -1305,34 +1308,34 @@ x_6 = lean_unbox_usize(x_2);
|
|||
lean_dec(x_2);
|
||||
x_7 = lean_unbox_usize(x_3);
|
||||
lean_dec(x_3);
|
||||
x_8 = l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____spec__2(x_1, x_6, x_7, x_4, x_5);
|
||||
x_8 = l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____spec__2(x_1, x_6, x_7, x_4, x_5);
|
||||
return x_8;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____lambda__1___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4) {
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____lambda__1___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_5;
|
||||
x_5 = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____lambda__1(x_1, x_2, x_3, x_4);
|
||||
x_5 = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____lambda__1(x_1, x_2, x_3, x_4);
|
||||
lean_dec(x_3);
|
||||
lean_dec(x_2);
|
||||
return x_5;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____lambda__3___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3) {
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____lambda__3___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_4;
|
||||
x_4 = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____lambda__3(x_1, x_2, x_3);
|
||||
x_4 = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____lambda__3(x_1, x_2, x_3);
|
||||
lean_dec(x_2);
|
||||
return x_4;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____lambda__5___boxed(lean_object* x_1) {
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____lambda__5___boxed(lean_object* x_1) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_2;
|
||||
x_2 = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____lambda__5(x_1);
|
||||
x_2 = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____lambda__5(x_1);
|
||||
lean_dec(x_1);
|
||||
return x_2;
|
||||
}
|
||||
|
|
@ -1389,7 +1392,7 @@ x_4 = lean_ctor_get(x_1, 0);
|
|||
lean_inc(x_4);
|
||||
lean_dec(x_1);
|
||||
x_5 = 5;
|
||||
x_6 = l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____spec__2___closed__2;
|
||||
x_6 = l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____spec__2___closed__2;
|
||||
x_7 = lean_usize_land(x_2, x_6);
|
||||
x_8 = lean_usize_to_nat(x_7);
|
||||
x_9 = lean_box(2);
|
||||
|
|
@ -1508,7 +1511,7 @@ return x_7;
|
|||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_8; lean_object* x_9; lean_object* x_10; lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; lean_object* x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19; lean_object* x_20; uint8_t x_21;
|
||||
lean_object* x_8; lean_object* x_9; lean_object* x_10; lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15; uint8_t x_16; lean_object* x_17; lean_object* x_18; lean_object* x_19; lean_object* x_20; lean_object* x_21; uint8_t x_22;
|
||||
x_8 = lean_ctor_get(x_3, 0);
|
||||
lean_inc(x_8);
|
||||
lean_dec(x_3);
|
||||
|
|
@ -1521,36 +1524,38 @@ x_12 = lean_box(0);
|
|||
x_13 = l___private_Lean_Compiler_LCNF_PhaseExt_0__Lean_Compiler_LCNF_findAtSorted_x3f___closed__1;
|
||||
x_14 = l___private_Lean_Compiler_LCNF_PhaseExt_0__Lean_Compiler_LCNF_findAtSorted_x3f___closed__2;
|
||||
x_15 = l___private_Lean_Compiler_LCNF_PhaseExt_0__Lean_Compiler_LCNF_findAtSorted_x3f___closed__3;
|
||||
x_16 = lean_alloc_ctor(0, 5, 0);
|
||||
lean_ctor_set(x_16, 0, x_2);
|
||||
lean_ctor_set(x_16, 1, x_12);
|
||||
lean_ctor_set(x_16, 2, x_13);
|
||||
lean_ctor_set(x_16, 3, x_14);
|
||||
lean_ctor_set(x_16, 4, x_15);
|
||||
x_17 = lean_array_get_size(x_11);
|
||||
x_18 = lean_unsigned_to_nat(1u);
|
||||
x_19 = lean_nat_sub(x_17, x_18);
|
||||
x_20 = lean_unsigned_to_nat(0u);
|
||||
x_21 = lean_nat_dec_lt(x_20, x_17);
|
||||
lean_dec(x_17);
|
||||
if (x_21 == 0)
|
||||
x_16 = 0;
|
||||
x_17 = lean_alloc_ctor(0, 5, 1);
|
||||
lean_ctor_set(x_17, 0, x_2);
|
||||
lean_ctor_set(x_17, 1, x_12);
|
||||
lean_ctor_set(x_17, 2, x_13);
|
||||
lean_ctor_set(x_17, 3, x_14);
|
||||
lean_ctor_set(x_17, 4, x_15);
|
||||
lean_ctor_set_uint8(x_17, sizeof(void*)*5, x_16);
|
||||
x_18 = lean_array_get_size(x_11);
|
||||
x_19 = lean_unsigned_to_nat(1u);
|
||||
x_20 = lean_nat_sub(x_18, x_19);
|
||||
x_21 = lean_unsigned_to_nat(0u);
|
||||
x_22 = lean_nat_dec_lt(x_21, x_18);
|
||||
lean_dec(x_18);
|
||||
if (x_22 == 0)
|
||||
{
|
||||
lean_object* x_22;
|
||||
lean_dec(x_19);
|
||||
lean_dec(x_16);
|
||||
lean_object* x_23;
|
||||
lean_dec(x_20);
|
||||
lean_dec(x_17);
|
||||
lean_dec(x_11);
|
||||
x_22 = lean_box(0);
|
||||
return x_22;
|
||||
x_23 = lean_box(0);
|
||||
return x_23;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_23; lean_object* x_24; lean_object* x_25;
|
||||
x_23 = lean_box(0);
|
||||
x_24 = l_Lean_Compiler_LCNF_instInhabitedDecl;
|
||||
x_25 = l_Array_binSearchAux___at___private_Lean_Compiler_LCNF_PhaseExt_0__Lean_Compiler_LCNF_findAtSorted_x3f___spec__1(x_24, x_23, x_11, x_16, x_20, x_19);
|
||||
lean_dec(x_16);
|
||||
lean_object* x_24; lean_object* x_25; lean_object* x_26;
|
||||
x_24 = lean_box(0);
|
||||
x_25 = l_Lean_Compiler_LCNF_instInhabitedDecl;
|
||||
x_26 = l_Array_binSearchAux___at___private_Lean_Compiler_LCNF_PhaseExt_0__Lean_Compiler_LCNF_findAtSorted_x3f___spec__1(x_25, x_24, x_11, x_17, x_21, x_20);
|
||||
lean_dec(x_17);
|
||||
lean_dec(x_11);
|
||||
return x_25;
|
||||
return x_26;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1639,7 +1644,7 @@ static lean_object* _init_l_Lean_Compiler_LCNF_Decl_saveBase___closed__1() {
|
|||
_start:
|
||||
{
|
||||
lean_object* x_1; lean_object* x_2;
|
||||
x_1 = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____closed__5;
|
||||
x_1 = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____closed__5;
|
||||
x_2 = lean_alloc_ctor(0, 2, 0);
|
||||
lean_ctor_set(x_2, 0, x_1);
|
||||
lean_ctor_set(x_2, 1, x_1);
|
||||
|
|
@ -1786,28 +1791,35 @@ lean_dec(x_3);
|
|||
return x_7;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_getDecl_x3f(lean_object* x_1, uint8_t x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6) {
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_getDecl_x3f(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_7;
|
||||
x_7 = l_Lean_Compiler_LCNF_getDeclAt_x3f(x_1, x_2, x_4, x_5, x_6);
|
||||
return x_7;
|
||||
lean_object* x_7; lean_object* x_8; lean_object* x_9; uint8_t x_10; lean_object* x_11;
|
||||
x_7 = l_Lean_Compiler_LCNF_getPhase(x_2, x_3, x_4, x_5, x_6);
|
||||
x_8 = lean_ctor_get(x_7, 0);
|
||||
lean_inc(x_8);
|
||||
x_9 = lean_ctor_get(x_7, 1);
|
||||
lean_inc(x_9);
|
||||
lean_dec(x_7);
|
||||
x_10 = lean_unbox(x_8);
|
||||
lean_dec(x_8);
|
||||
x_11 = l_Lean_Compiler_LCNF_getDeclAt_x3f(x_1, x_10, x_4, x_5, x_9);
|
||||
return x_11;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_getDecl_x3f___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_7; lean_object* x_8;
|
||||
x_7 = lean_unbox(x_2);
|
||||
lean_dec(x_2);
|
||||
x_8 = l_Lean_Compiler_LCNF_getDecl_x3f(x_1, x_7, x_3, x_4, x_5, x_6);
|
||||
lean_object* x_7;
|
||||
x_7 = l_Lean_Compiler_LCNF_getDecl_x3f(x_1, x_2, x_3, x_4, x_5, x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
return x_8;
|
||||
lean_dec(x_2);
|
||||
return x_7;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_saveBase___lambda__1(lean_object* x_1, uint8_t x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6) {
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_saveBase___lambda__1(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_7; uint8_t x_8;
|
||||
|
|
@ -1884,14 +1896,13 @@ return x_1;
|
|||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_saveBase___lambda__1___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_7; lean_object* x_8;
|
||||
x_7 = lean_unbox(x_2);
|
||||
lean_dec(x_2);
|
||||
x_8 = l_Lean_Compiler_LCNF_saveBase___lambda__1(x_1, x_7, x_3, x_4, x_5, x_6);
|
||||
lean_object* x_7;
|
||||
x_7 = l_Lean_Compiler_LCNF_saveBase___lambda__1(x_1, x_2, x_3, x_4, x_5, x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
return x_8;
|
||||
lean_dec(x_2);
|
||||
return x_7;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Array_forInUnsafe_loop___at_Lean_Compiler_LCNF_forEachDecl___spec__1(lean_object* x_1, lean_object* x_2, size_t x_3, size_t x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8) {
|
||||
|
|
@ -2559,31 +2570,31 @@ l___private_Lean_Compiler_LCNF_PhaseExt_0__Lean_Compiler_LCNF_findAtSorted_x3f__
|
|||
lean_mark_persistent(l___private_Lean_Compiler_LCNF_PhaseExt_0__Lean_Compiler_LCNF_findAtSorted_x3f___closed__2);
|
||||
l___private_Lean_Compiler_LCNF_PhaseExt_0__Lean_Compiler_LCNF_findAtSorted_x3f___closed__3 = _init_l___private_Lean_Compiler_LCNF_PhaseExt_0__Lean_Compiler_LCNF_findAtSorted_x3f___closed__3();
|
||||
lean_mark_persistent(l___private_Lean_Compiler_LCNF_PhaseExt_0__Lean_Compiler_LCNF_findAtSorted_x3f___closed__3);
|
||||
l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____spec__2___closed__1 = _init_l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____spec__2___closed__1();
|
||||
l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____spec__2___closed__2 = _init_l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____spec__2___closed__2();
|
||||
l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____spec__2___closed__3 = _init_l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____spec__2___closed__3();
|
||||
lean_mark_persistent(l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____spec__2___closed__3);
|
||||
l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____lambda__4___closed__1 = _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____lambda__4___closed__1();
|
||||
lean_mark_persistent(l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____lambda__4___closed__1);
|
||||
l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____closed__1 = _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____closed__1();
|
||||
lean_mark_persistent(l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____closed__1);
|
||||
l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____closed__2 = _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____closed__2();
|
||||
lean_mark_persistent(l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____closed__2);
|
||||
l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____closed__3 = _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____closed__3();
|
||||
lean_mark_persistent(l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____closed__3);
|
||||
l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____closed__4 = _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____closed__4();
|
||||
lean_mark_persistent(l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____closed__4);
|
||||
l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____closed__5 = _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____closed__5();
|
||||
lean_mark_persistent(l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____closed__5);
|
||||
l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____closed__6 = _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____closed__6();
|
||||
lean_mark_persistent(l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____closed__6);
|
||||
l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____closed__7 = _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____closed__7();
|
||||
lean_mark_persistent(l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____closed__7);
|
||||
l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____closed__8 = _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____closed__8();
|
||||
lean_mark_persistent(l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____closed__8);
|
||||
l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____closed__9 = _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____closed__9();
|
||||
lean_mark_persistent(l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48____closed__9);
|
||||
if (builtin) {res = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_48_(lean_io_mk_world());
|
||||
l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____spec__2___closed__1 = _init_l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____spec__2___closed__1();
|
||||
l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____spec__2___closed__2 = _init_l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____spec__2___closed__2();
|
||||
l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____spec__2___closed__3 = _init_l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____spec__2___closed__3();
|
||||
lean_mark_persistent(l_Lean_PersistentHashMap_insertAux___at_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____spec__2___closed__3);
|
||||
l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____lambda__4___closed__1 = _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____lambda__4___closed__1();
|
||||
lean_mark_persistent(l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____lambda__4___closed__1);
|
||||
l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____closed__1 = _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____closed__1();
|
||||
lean_mark_persistent(l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____closed__1);
|
||||
l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____closed__2 = _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____closed__2();
|
||||
lean_mark_persistent(l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____closed__2);
|
||||
l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____closed__3 = _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____closed__3();
|
||||
lean_mark_persistent(l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____closed__3);
|
||||
l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____closed__4 = _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____closed__4();
|
||||
lean_mark_persistent(l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____closed__4);
|
||||
l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____closed__5 = _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____closed__5();
|
||||
lean_mark_persistent(l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____closed__5);
|
||||
l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____closed__6 = _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____closed__6();
|
||||
lean_mark_persistent(l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____closed__6);
|
||||
l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____closed__7 = _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____closed__7();
|
||||
lean_mark_persistent(l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____closed__7);
|
||||
l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____closed__8 = _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____closed__8();
|
||||
lean_mark_persistent(l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____closed__8);
|
||||
l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____closed__9 = _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____closed__9();
|
||||
lean_mark_persistent(l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49____closed__9);
|
||||
if (builtin) {res = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_PhaseExt___hyg_49_(lean_io_mk_world());
|
||||
if (lean_io_result_is_error(res)) return res;
|
||||
l_Lean_Compiler_LCNF_baseExt = lean_io_result_get_value(res);
|
||||
lean_mark_persistent(l_Lean_Compiler_LCNF_baseExt);
|
||||
|
|
|
|||
801
stage0/stdlib/Lean/Compiler/LCNF/PrettyPrinter.c
generated
801
stage0/stdlib/Lean/Compiler/LCNF/PrettyPrinter.c
generated
File diff suppressed because it is too large
Load diff
503
stage0/stdlib/Lean/Compiler/LCNF/PullFunDecls.c
generated
503
stage0/stdlib/Lean/Compiler/LCNF/PullFunDecls.c
generated
File diff suppressed because it is too large
Load diff
1204
stage0/stdlib/Lean/Compiler/LCNF/PullLetDecls.c
generated
1204
stage0/stdlib/Lean/Compiler/LCNF/PullLetDecls.c
generated
File diff suppressed because it is too large
Load diff
344
stage0/stdlib/Lean/Compiler/LCNF/ReduceJpArity.c
generated
344
stage0/stdlib/Lean/Compiler/LCNF/ReduceJpArity.c
generated
|
|
@ -20,21 +20,19 @@ lean_object* l_Lean_Name_str___override(lean_object*, lean_object*);
|
|||
static lean_object* l_Lean_Compiler_LCNF_reduceJpArity___closed__3;
|
||||
uint8_t lean_usize_dec_eq(size_t, size_t);
|
||||
lean_object* lean_array_uget(lean_object*, size_t);
|
||||
LEAN_EXPORT lean_object* l_Array_forInUnsafe_loop___at_Lean_Compiler_LCNF_ReduceJpArity_reduce___spec__2(lean_object*, lean_object*, size_t, size_t, lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Compiler_LCNF_eraseParam(lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_ReduceJpArity_reduce___lambda__1(lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Array_forInUnsafe_loop___at_Lean_Compiler_LCNF_ReduceJpArity_reduce___spec__2(lean_object*, lean_object*, size_t, size_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Compiler_LCNF_eraseParam(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_ReduceJpArity_reduce___lambda__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Array_toSubarray___rarg(lean_object*, lean_object*, lean_object*);
|
||||
lean_object* lean_array_push(lean_object*, lean_object*);
|
||||
lean_object* lean_array_get_size(lean_object*);
|
||||
LEAN_EXPORT lean_object* l___private_Init_Data_Array_BasicAux_0__mapMonoMImp___at_Lean_Compiler_LCNF_ReduceJpArity_reduce___spec__8(lean_object*, lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l___private_Init_Data_Array_BasicAux_0__mapMonoMImp___at_Lean_Compiler_LCNF_ReduceJpArity_reduce___spec__8(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Array_forInUnsafe_loop___at_Lean_Compiler_LCNF_ReduceJpArity_reduce___spec__7___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_updateAltCodeImp(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ReduceJpArity___hyg_881_(lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ReduceJpArity___hyg_882_(lean_object*);
|
||||
static lean_object* l_Lean_Compiler_LCNF_ReduceJpArity_reduce___closed__1;
|
||||
uint8_t lean_usize_dec_lt(size_t, size_t);
|
||||
LEAN_EXPORT lean_object* l___private_Init_Data_Array_BasicAux_0__mapMonoMImp___at_Lean_Compiler_LCNF_ReduceJpArity_reduce___spec__8___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_ReduceJpArity_reduce___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Compiler_LCNF_Code_inferType(lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Compiler_LCNF_Code_inferType(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* lean_nat_add(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Array_forInUnsafe_loop___at_Lean_Compiler_LCNF_ReduceJpArity_reduce___spec__2___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_RBNode_find___at_Lean_Compiler_LCNF_ReduceJpArity_reduce___spec__6(lean_object*, lean_object*);
|
||||
|
|
@ -43,38 +41,35 @@ lean_object* lean_array_fget(lean_object*, lean_object*);
|
|||
lean_object* l_Lean_RBNode_setBlack___rarg(lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_RBNode_find___at_Lean_Compiler_LCNF_ReduceJpArity_reduce___spec__6___boxed(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_reduceJpArity;
|
||||
static lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ReduceJpArity___hyg_881____closed__2;
|
||||
static lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ReduceJpArity___hyg_882____closed__2;
|
||||
lean_object* lean_array_fset(lean_object*, lean_object*, lean_object*);
|
||||
static lean_object* l_Lean_Compiler_LCNF_reduceJpArity___closed__4;
|
||||
LEAN_EXPORT lean_object* l___private_Init_Data_Array_BasicAux_0__mapMonoMImp_go___at_Lean_Compiler_LCNF_ReduceJpArity_reduce___spec__9(lean_object*, lean_object*, lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l___private_Init_Data_Array_BasicAux_0__mapMonoMImp_go___at_Lean_Compiler_LCNF_ReduceJpArity_reduce___spec__9(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
uint8_t l_Lean_Name_quickCmp(lean_object*, lean_object*);
|
||||
static lean_object* l_Lean_Compiler_LCNF_reduceJpArity___closed__1;
|
||||
static lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ReduceJpArity___hyg_881____closed__3;
|
||||
static lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ReduceJpArity___hyg_882____closed__3;
|
||||
static lean_object* l_Lean_Compiler_LCNF_reduceJpArity___closed__2;
|
||||
lean_object* l_Lean_Compiler_LCNF_Pass_mkPerDeclaration(lean_object*, lean_object*, uint8_t, lean_object*);
|
||||
lean_object* l_Array_reverse___rarg(lean_object*);
|
||||
lean_object* l___private_Lean_Compiler_LCNF_CompilerM_0__Lean_Compiler_LCNF_updateFunDeclImp(lean_object*, lean_object*, lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Compiler_LCNF_CompilerM_0__Lean_Compiler_LCNF_updateFunDeclImp(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
size_t lean_usize_of_nat(lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_RBNode_insert___at_Lean_Compiler_LCNF_ReduceJpArity_reduce___spec__4(lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Compiler_LCNF_mkForallParams(lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Compiler_LCNF_mkForallParams(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
size_t lean_ptr_addr(lean_object*);
|
||||
static lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ReduceJpArity___hyg_882____closed__1;
|
||||
LEAN_EXPORT lean_object* l_Array_forInUnsafe_loop___at_Lean_Compiler_LCNF_ReduceJpArity_reduce___spec__2___at_Lean_Compiler_LCNF_ReduceJpArity_reduce___spec__3___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_collectExpr(lean_object*, lean_object*);
|
||||
static lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ReduceJpArity___hyg_881____closed__1;
|
||||
lean_object* l_Lean_Compiler_LCNF_AltCore_getCode(lean_object*);
|
||||
uint8_t l_Lean_RBNode_isRed___rarg(lean_object*);
|
||||
LEAN_EXPORT lean_object* l___private_Init_Data_Array_BasicAux_0__mapMonoMImp_go___at_Lean_Compiler_LCNF_ReduceJpArity_reduce___spec__9___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
uint8_t lean_nat_dec_eq(lean_object*, lean_object*);
|
||||
static lean_object* l_Lean_Compiler_LCNF_ReduceJpArity_reduce___closed__2;
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_ReduceJpArity_reduce(lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_ReduceJpArity_reduce(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Compiler_LCNF_Code_collectUsed(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Decl_reduceJpArity(lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Decl_reduceJpArity(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_RBNode_findCore___at_Lean_Compiler_LCNF_ReduceJpArity_reduce___spec__1(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Array_forInUnsafe_loop___at_Lean_Compiler_LCNF_ReduceJpArity_reduce___spec__7(lean_object*, size_t, size_t, lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Decl_reduceJpArity___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Array_forInUnsafe_loop___at_Lean_Compiler_LCNF_ReduceJpArity_reduce___spec__2___at_Lean_Compiler_LCNF_ReduceJpArity_reduce___spec__3(lean_object*, size_t, size_t, lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Array_forInUnsafe_loop___at_Lean_Compiler_LCNF_ReduceJpArity_reduce___spec__7(lean_object*, size_t, size_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Array_forInUnsafe_loop___at_Lean_Compiler_LCNF_ReduceJpArity_reduce___spec__2___at_Lean_Compiler_LCNF_ReduceJpArity_reduce___spec__3(lean_object*, size_t, size_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_RBNode_ins___at_Lean_Compiler_LCNF_ReduceJpArity_reduce___spec__5(lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_ReduceJpArity_reduce___lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
uint8_t lean_nat_dec_lt(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_RBNode_findCore___at_Lean_Compiler_LCNF_ReduceJpArity_reduce___spec__1(lean_object* x_1, lean_object* x_2) {
|
||||
_start:
|
||||
|
|
@ -120,7 +115,7 @@ goto _start;
|
|||
}
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Array_forInUnsafe_loop___at_Lean_Compiler_LCNF_ReduceJpArity_reduce___spec__2(lean_object* x_1, lean_object* x_2, size_t x_3, size_t x_4, lean_object* x_5, lean_object* x_6, uint8_t x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10, lean_object* x_11) {
|
||||
LEAN_EXPORT lean_object* l_Array_forInUnsafe_loop___at_Lean_Compiler_LCNF_ReduceJpArity_reduce___spec__2(lean_object* x_1, lean_object* x_2, size_t x_3, size_t x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10, lean_object* x_11) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_12;
|
||||
|
|
@ -259,7 +254,7 @@ goto _start;
|
|||
}
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Array_forInUnsafe_loop___at_Lean_Compiler_LCNF_ReduceJpArity_reduce___spec__2___at_Lean_Compiler_LCNF_ReduceJpArity_reduce___spec__3(lean_object* x_1, size_t x_2, size_t x_3, lean_object* x_4, lean_object* x_5, uint8_t x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10) {
|
||||
LEAN_EXPORT lean_object* l_Array_forInUnsafe_loop___at_Lean_Compiler_LCNF_ReduceJpArity_reduce___spec__2___at_Lean_Compiler_LCNF_ReduceJpArity_reduce___spec__3(lean_object* x_1, size_t x_2, size_t x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_11;
|
||||
|
|
@ -2836,7 +2831,7 @@ goto _start;
|
|||
}
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Array_forInUnsafe_loop___at_Lean_Compiler_LCNF_ReduceJpArity_reduce___spec__7(lean_object* x_1, size_t x_2, size_t x_3, lean_object* x_4, lean_object* x_5, uint8_t x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10) {
|
||||
LEAN_EXPORT lean_object* l_Array_forInUnsafe_loop___at_Lean_Compiler_LCNF_ReduceJpArity_reduce___spec__7(lean_object* x_1, size_t x_2, size_t x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_11;
|
||||
|
|
@ -3037,7 +3032,7 @@ goto _start;
|
|||
}
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l___private_Init_Data_Array_BasicAux_0__mapMonoMImp_go___at_Lean_Compiler_LCNF_ReduceJpArity_reduce___spec__9(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, uint8_t x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9) {
|
||||
LEAN_EXPORT lean_object* l___private_Init_Data_Array_BasicAux_0__mapMonoMImp_go___at_Lean_Compiler_LCNF_ReduceJpArity_reduce___spec__9(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_10; uint8_t x_11;
|
||||
|
|
@ -3050,6 +3045,7 @@ lean_object* x_12;
|
|||
lean_dec(x_8);
|
||||
lean_dec(x_7);
|
||||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_2);
|
||||
lean_dec(x_1);
|
||||
|
|
@ -3060,86 +3056,87 @@ return x_12;
|
|||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_13; lean_object* x_14; lean_object* x_15;
|
||||
lean_object* x_13; lean_object* x_14;
|
||||
x_13 = lean_array_fget(x_3, x_2);
|
||||
x_14 = lean_box(x_5);
|
||||
lean_inc(x_1);
|
||||
lean_inc(x_8);
|
||||
lean_inc(x_7);
|
||||
lean_inc(x_6);
|
||||
lean_inc(x_5);
|
||||
lean_inc(x_4);
|
||||
lean_inc(x_13);
|
||||
x_15 = lean_apply_7(x_1, x_13, x_4, x_14, x_6, x_7, x_8, x_9);
|
||||
if (lean_obj_tag(x_15) == 0)
|
||||
x_14 = lean_apply_7(x_1, x_13, x_4, x_5, x_6, x_7, x_8, x_9);
|
||||
if (lean_obj_tag(x_14) == 0)
|
||||
{
|
||||
lean_object* x_16; lean_object* x_17; size_t x_18; size_t x_19; uint8_t x_20;
|
||||
x_16 = lean_ctor_get(x_15, 0);
|
||||
lean_object* x_15; lean_object* x_16; size_t x_17; size_t x_18; uint8_t x_19;
|
||||
x_15 = lean_ctor_get(x_14, 0);
|
||||
lean_inc(x_15);
|
||||
x_16 = lean_ctor_get(x_14, 1);
|
||||
lean_inc(x_16);
|
||||
x_17 = lean_ctor_get(x_15, 1);
|
||||
lean_inc(x_17);
|
||||
lean_dec(x_15);
|
||||
x_18 = lean_ptr_addr(x_13);
|
||||
lean_dec(x_14);
|
||||
x_17 = lean_ptr_addr(x_13);
|
||||
lean_dec(x_13);
|
||||
x_19 = lean_ptr_addr(x_16);
|
||||
x_20 = lean_usize_dec_eq(x_18, x_19);
|
||||
if (x_20 == 0)
|
||||
x_18 = lean_ptr_addr(x_15);
|
||||
x_19 = lean_usize_dec_eq(x_17, x_18);
|
||||
if (x_19 == 0)
|
||||
{
|
||||
lean_object* x_21; lean_object* x_22; lean_object* x_23;
|
||||
x_21 = lean_unsigned_to_nat(1u);
|
||||
x_22 = lean_nat_add(x_2, x_21);
|
||||
x_23 = lean_array_fset(x_3, x_2, x_16);
|
||||
lean_object* x_20; lean_object* x_21; lean_object* x_22;
|
||||
x_20 = lean_unsigned_to_nat(1u);
|
||||
x_21 = lean_nat_add(x_2, x_20);
|
||||
x_22 = lean_array_fset(x_3, x_2, x_15);
|
||||
lean_dec(x_2);
|
||||
x_2 = x_22;
|
||||
x_3 = x_23;
|
||||
x_9 = x_17;
|
||||
x_2 = x_21;
|
||||
x_3 = x_22;
|
||||
x_9 = x_16;
|
||||
goto _start;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_25; lean_object* x_26;
|
||||
lean_dec(x_16);
|
||||
x_25 = lean_unsigned_to_nat(1u);
|
||||
x_26 = lean_nat_add(x_2, x_25);
|
||||
lean_object* x_24; lean_object* x_25;
|
||||
lean_dec(x_15);
|
||||
x_24 = lean_unsigned_to_nat(1u);
|
||||
x_25 = lean_nat_add(x_2, x_24);
|
||||
lean_dec(x_2);
|
||||
x_2 = x_26;
|
||||
x_9 = x_17;
|
||||
x_2 = x_25;
|
||||
x_9 = x_16;
|
||||
goto _start;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
uint8_t x_28;
|
||||
uint8_t x_27;
|
||||
lean_dec(x_13);
|
||||
lean_dec(x_8);
|
||||
lean_dec(x_7);
|
||||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
lean_dec(x_2);
|
||||
lean_dec(x_1);
|
||||
x_28 = !lean_is_exclusive(x_15);
|
||||
if (x_28 == 0)
|
||||
x_27 = !lean_is_exclusive(x_14);
|
||||
if (x_27 == 0)
|
||||
{
|
||||
return x_15;
|
||||
return x_14;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_29; lean_object* x_30; lean_object* x_31;
|
||||
x_29 = lean_ctor_get(x_15, 0);
|
||||
x_30 = lean_ctor_get(x_15, 1);
|
||||
lean_inc(x_30);
|
||||
lean_object* x_28; lean_object* x_29; lean_object* x_30;
|
||||
x_28 = lean_ctor_get(x_14, 0);
|
||||
x_29 = lean_ctor_get(x_14, 1);
|
||||
lean_inc(x_29);
|
||||
lean_dec(x_15);
|
||||
x_31 = lean_alloc_ctor(1, 2, 0);
|
||||
lean_ctor_set(x_31, 0, x_29);
|
||||
lean_ctor_set(x_31, 1, x_30);
|
||||
return x_31;
|
||||
lean_inc(x_28);
|
||||
lean_dec(x_14);
|
||||
x_30 = lean_alloc_ctor(1, 2, 0);
|
||||
lean_ctor_set(x_30, 0, x_28);
|
||||
lean_ctor_set(x_30, 1, x_29);
|
||||
return x_30;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l___private_Init_Data_Array_BasicAux_0__mapMonoMImp___at_Lean_Compiler_LCNF_ReduceJpArity_reduce___spec__8(lean_object* x_1, lean_object* x_2, lean_object* x_3, uint8_t x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8) {
|
||||
LEAN_EXPORT lean_object* l___private_Init_Data_Array_BasicAux_0__mapMonoMImp___at_Lean_Compiler_LCNF_ReduceJpArity_reduce___spec__8(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_9; lean_object* x_10;
|
||||
|
|
@ -3148,7 +3145,7 @@ x_10 = l___private_Init_Data_Array_BasicAux_0__mapMonoMImp_go___at_Lean_Compiler
|
|||
return x_10;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_ReduceJpArity_reduce___lambda__1(lean_object* x_1, lean_object* x_2, uint8_t x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7) {
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_ReduceJpArity_reduce___lambda__1(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_8; lean_object* x_9;
|
||||
|
|
@ -3219,11 +3216,11 @@ static lean_object* _init_l_Lean_Compiler_LCNF_ReduceJpArity_reduce___closed__2(
|
|||
_start:
|
||||
{
|
||||
lean_object* x_1;
|
||||
x_1 = lean_alloc_closure((void*)(l_Lean_Compiler_LCNF_ReduceJpArity_reduce___lambda__1___boxed), 7, 0);
|
||||
x_1 = lean_alloc_closure((void*)(l_Lean_Compiler_LCNF_ReduceJpArity_reduce___lambda__1), 7, 0);
|
||||
return x_1;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_ReduceJpArity_reduce(lean_object* x_1, lean_object* x_2, uint8_t x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7) {
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_ReduceJpArity_reduce(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7) {
|
||||
_start:
|
||||
{
|
||||
switch (lean_obj_tag(x_1)) {
|
||||
|
|
@ -3428,6 +3425,7 @@ lean_inc(x_46);
|
|||
lean_inc(x_6);
|
||||
lean_inc(x_5);
|
||||
lean_inc(x_4);
|
||||
lean_inc(x_3);
|
||||
lean_inc(x_2);
|
||||
x_47 = l_Lean_Compiler_LCNF_ReduceJpArity_reduce(x_46, x_2, x_3, x_4, x_5, x_6, x_7);
|
||||
if (lean_obj_tag(x_47) == 0)
|
||||
|
|
@ -3648,6 +3646,7 @@ lean_dec(x_44);
|
|||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
lean_dec(x_2);
|
||||
lean_dec(x_1);
|
||||
x_91 = !lean_is_exclusive(x_47);
|
||||
|
|
@ -3682,6 +3681,7 @@ lean_inc(x_97);
|
|||
lean_inc(x_6);
|
||||
lean_inc(x_5);
|
||||
lean_inc(x_4);
|
||||
lean_inc(x_3);
|
||||
lean_inc(x_2);
|
||||
x_98 = l_Lean_Compiler_LCNF_ReduceJpArity_reduce(x_97, x_2, x_3, x_4, x_5, x_6, x_7);
|
||||
if (lean_obj_tag(x_98) == 0)
|
||||
|
|
@ -3747,6 +3747,7 @@ lean_dec(x_124);
|
|||
lean_inc(x_6);
|
||||
lean_inc(x_5);
|
||||
lean_inc(x_4);
|
||||
lean_inc(x_3);
|
||||
lean_inc(x_99);
|
||||
x_125 = l_Lean_Compiler_LCNF_Code_inferType(x_99, x_3, x_4, x_5, x_6, x_114);
|
||||
if (lean_obj_tag(x_125) == 0)
|
||||
|
|
@ -3760,6 +3761,7 @@ lean_dec(x_125);
|
|||
lean_inc(x_6);
|
||||
lean_inc(x_5);
|
||||
lean_inc(x_4);
|
||||
lean_inc(x_3);
|
||||
lean_inc(x_118);
|
||||
x_128 = l_Lean_Compiler_LCNF_mkForallParams(x_118, x_126, x_3, x_4, x_5, x_6, x_127);
|
||||
if (lean_obj_tag(x_128) == 0)
|
||||
|
|
@ -3846,6 +3848,7 @@ lean_dec(x_95);
|
|||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
lean_dec(x_2);
|
||||
x_146 = !lean_is_exclusive(x_128);
|
||||
if (x_146 == 0)
|
||||
|
|
@ -3879,6 +3882,7 @@ lean_dec(x_95);
|
|||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
lean_dec(x_2);
|
||||
x_150 = !lean_is_exclusive(x_125);
|
||||
if (x_150 == 0)
|
||||
|
|
@ -3907,6 +3911,7 @@ lean_dec(x_1);
|
|||
lean_inc(x_6);
|
||||
lean_inc(x_5);
|
||||
lean_inc(x_4);
|
||||
lean_inc(x_3);
|
||||
lean_inc(x_99);
|
||||
x_154 = l_Lean_Compiler_LCNF_Code_inferType(x_99, x_3, x_4, x_5, x_6, x_114);
|
||||
if (lean_obj_tag(x_154) == 0)
|
||||
|
|
@ -3920,6 +3925,7 @@ lean_dec(x_154);
|
|||
lean_inc(x_6);
|
||||
lean_inc(x_5);
|
||||
lean_inc(x_4);
|
||||
lean_inc(x_3);
|
||||
lean_inc(x_118);
|
||||
x_157 = l_Lean_Compiler_LCNF_mkForallParams(x_118, x_155, x_3, x_4, x_5, x_6, x_156);
|
||||
if (lean_obj_tag(x_157) == 0)
|
||||
|
|
@ -4004,6 +4010,7 @@ lean_dec(x_95);
|
|||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
lean_dec(x_2);
|
||||
x_175 = lean_ctor_get(x_157, 0);
|
||||
lean_inc(x_175);
|
||||
|
|
@ -4038,6 +4045,7 @@ lean_dec(x_95);
|
|||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
lean_dec(x_2);
|
||||
x_179 = lean_ctor_get(x_154, 0);
|
||||
lean_inc(x_179);
|
||||
|
|
@ -4276,6 +4284,7 @@ lean_dec(x_95);
|
|||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
lean_dec(x_2);
|
||||
lean_dec(x_1);
|
||||
x_223 = !lean_is_exclusive(x_98);
|
||||
|
|
@ -4314,6 +4323,7 @@ lean_dec(x_227);
|
|||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
lean_dec(x_2);
|
||||
x_230 = lean_alloc_ctor(0, 2, 0);
|
||||
lean_ctor_set(x_230, 0, x_1);
|
||||
|
|
@ -4349,6 +4359,7 @@ x_243 = l_Array_forInUnsafe_loop___at_Lean_Compiler_LCNF_ReduceJpArity_reduce___
|
|||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
lean_dec(x_2);
|
||||
lean_dec(x_234);
|
||||
x_244 = !lean_is_exclusive(x_243);
|
||||
|
|
@ -4403,6 +4414,7 @@ x_260 = l_Array_forInUnsafe_loop___at_Lean_Compiler_LCNF_ReduceJpArity_reduce___
|
|||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
lean_dec(x_2);
|
||||
lean_dec(x_251);
|
||||
x_261 = lean_ctor_get(x_260, 0);
|
||||
|
|
@ -4693,6 +4705,7 @@ lean_object* x_317;
|
|||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
lean_dec(x_2);
|
||||
x_317 = lean_alloc_ctor(0, 2, 0);
|
||||
lean_ctor_set(x_317, 0, x_1);
|
||||
|
|
@ -4715,40 +4728,38 @@ return x_3;
|
|||
LEAN_EXPORT lean_object* l_Array_forInUnsafe_loop___at_Lean_Compiler_LCNF_ReduceJpArity_reduce___spec__2___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10, lean_object* x_11) {
|
||||
_start:
|
||||
{
|
||||
size_t x_12; size_t x_13; uint8_t x_14; lean_object* x_15;
|
||||
size_t x_12; size_t x_13; lean_object* x_14;
|
||||
x_12 = lean_unbox_usize(x_3);
|
||||
lean_dec(x_3);
|
||||
x_13 = lean_unbox_usize(x_4);
|
||||
lean_dec(x_4);
|
||||
x_14 = lean_unbox(x_7);
|
||||
lean_dec(x_7);
|
||||
x_15 = l_Array_forInUnsafe_loop___at_Lean_Compiler_LCNF_ReduceJpArity_reduce___spec__2(x_1, x_2, x_12, x_13, x_5, x_6, x_14, x_8, x_9, x_10, x_11);
|
||||
x_14 = l_Array_forInUnsafe_loop___at_Lean_Compiler_LCNF_ReduceJpArity_reduce___spec__2(x_1, x_2, x_12, x_13, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
|
||||
lean_dec(x_10);
|
||||
lean_dec(x_9);
|
||||
lean_dec(x_8);
|
||||
lean_dec(x_7);
|
||||
lean_dec(x_6);
|
||||
lean_dec(x_2);
|
||||
lean_dec(x_1);
|
||||
return x_15;
|
||||
return x_14;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Array_forInUnsafe_loop___at_Lean_Compiler_LCNF_ReduceJpArity_reduce___spec__2___at_Lean_Compiler_LCNF_ReduceJpArity_reduce___spec__3___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10) {
|
||||
_start:
|
||||
{
|
||||
size_t x_11; size_t x_12; uint8_t x_13; lean_object* x_14;
|
||||
size_t x_11; size_t x_12; lean_object* x_13;
|
||||
x_11 = lean_unbox_usize(x_2);
|
||||
lean_dec(x_2);
|
||||
x_12 = lean_unbox_usize(x_3);
|
||||
lean_dec(x_3);
|
||||
x_13 = lean_unbox(x_6);
|
||||
lean_dec(x_6);
|
||||
x_14 = l_Array_forInUnsafe_loop___at_Lean_Compiler_LCNF_ReduceJpArity_reduce___spec__2___at_Lean_Compiler_LCNF_ReduceJpArity_reduce___spec__3(x_1, x_11, x_12, x_4, x_5, x_13, x_7, x_8, x_9, x_10);
|
||||
x_13 = l_Array_forInUnsafe_loop___at_Lean_Compiler_LCNF_ReduceJpArity_reduce___spec__2___at_Lean_Compiler_LCNF_ReduceJpArity_reduce___spec__3(x_1, x_11, x_12, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
|
||||
lean_dec(x_9);
|
||||
lean_dec(x_8);
|
||||
lean_dec(x_7);
|
||||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_1);
|
||||
return x_14;
|
||||
return x_13;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_RBNode_find___at_Lean_Compiler_LCNF_ReduceJpArity_reduce___spec__6___boxed(lean_object* x_1, lean_object* x_2) {
|
||||
|
|
@ -4764,63 +4775,22 @@ return x_3;
|
|||
LEAN_EXPORT lean_object* l_Array_forInUnsafe_loop___at_Lean_Compiler_LCNF_ReduceJpArity_reduce___spec__7___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10) {
|
||||
_start:
|
||||
{
|
||||
size_t x_11; size_t x_12; uint8_t x_13; lean_object* x_14;
|
||||
size_t x_11; size_t x_12; lean_object* x_13;
|
||||
x_11 = lean_unbox_usize(x_2);
|
||||
lean_dec(x_2);
|
||||
x_12 = lean_unbox_usize(x_3);
|
||||
lean_dec(x_3);
|
||||
x_13 = lean_unbox(x_6);
|
||||
lean_dec(x_6);
|
||||
x_14 = l_Array_forInUnsafe_loop___at_Lean_Compiler_LCNF_ReduceJpArity_reduce___spec__7(x_1, x_11, x_12, x_4, x_5, x_13, x_7, x_8, x_9, x_10);
|
||||
x_13 = l_Array_forInUnsafe_loop___at_Lean_Compiler_LCNF_ReduceJpArity_reduce___spec__7(x_1, x_11, x_12, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
|
||||
lean_dec(x_9);
|
||||
lean_dec(x_8);
|
||||
lean_dec(x_7);
|
||||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_1);
|
||||
return x_14;
|
||||
return x_13;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l___private_Init_Data_Array_BasicAux_0__mapMonoMImp_go___at_Lean_Compiler_LCNF_ReduceJpArity_reduce___spec__9___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_10; lean_object* x_11;
|
||||
x_10 = lean_unbox(x_5);
|
||||
lean_dec(x_5);
|
||||
x_11 = l___private_Init_Data_Array_BasicAux_0__mapMonoMImp_go___at_Lean_Compiler_LCNF_ReduceJpArity_reduce___spec__9(x_1, x_2, x_3, x_4, x_10, x_6, x_7, x_8, x_9);
|
||||
return x_11;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l___private_Init_Data_Array_BasicAux_0__mapMonoMImp___at_Lean_Compiler_LCNF_ReduceJpArity_reduce___spec__8___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_9; lean_object* x_10;
|
||||
x_9 = lean_unbox(x_4);
|
||||
lean_dec(x_4);
|
||||
x_10 = l___private_Init_Data_Array_BasicAux_0__mapMonoMImp___at_Lean_Compiler_LCNF_ReduceJpArity_reduce___spec__8(x_1, x_2, x_3, x_9, x_5, x_6, x_7, x_8);
|
||||
return x_10;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_ReduceJpArity_reduce___lambda__1___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_8; lean_object* x_9;
|
||||
x_8 = lean_unbox(x_3);
|
||||
lean_dec(x_3);
|
||||
x_9 = l_Lean_Compiler_LCNF_ReduceJpArity_reduce___lambda__1(x_1, x_2, x_8, x_4, x_5, x_6, x_7);
|
||||
return x_9;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_ReduceJpArity_reduce___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_8; lean_object* x_9;
|
||||
x_8 = lean_unbox(x_3);
|
||||
lean_dec(x_3);
|
||||
x_9 = l_Lean_Compiler_LCNF_ReduceJpArity_reduce(x_1, x_2, x_8, x_4, x_5, x_6, x_7);
|
||||
return x_9;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Decl_reduceJpArity(lean_object* x_1, uint8_t x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6) {
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Decl_reduceJpArity(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_7;
|
||||
|
|
@ -4892,91 +4862,83 @@ return x_23;
|
|||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; lean_object* x_29; lean_object* x_30;
|
||||
lean_object* x_24; lean_object* x_25; lean_object* x_26; lean_object* x_27; lean_object* x_28; uint8_t x_29; lean_object* x_30; lean_object* x_31;
|
||||
x_24 = lean_ctor_get(x_1, 0);
|
||||
x_25 = lean_ctor_get(x_1, 1);
|
||||
x_26 = lean_ctor_get(x_1, 2);
|
||||
x_27 = lean_ctor_get(x_1, 3);
|
||||
x_28 = lean_ctor_get(x_1, 4);
|
||||
x_29 = lean_ctor_get_uint8(x_1, sizeof(void*)*5);
|
||||
lean_inc(x_28);
|
||||
lean_inc(x_27);
|
||||
lean_inc(x_26);
|
||||
lean_inc(x_25);
|
||||
lean_inc(x_24);
|
||||
lean_dec(x_1);
|
||||
x_29 = lean_box(0);
|
||||
x_30 = l_Lean_Compiler_LCNF_ReduceJpArity_reduce(x_28, x_29, x_2, x_3, x_4, x_5, x_6);
|
||||
if (lean_obj_tag(x_30) == 0)
|
||||
x_30 = lean_box(0);
|
||||
x_31 = l_Lean_Compiler_LCNF_ReduceJpArity_reduce(x_28, x_30, x_2, x_3, x_4, x_5, x_6);
|
||||
if (lean_obj_tag(x_31) == 0)
|
||||
{
|
||||
lean_object* x_31; lean_object* x_32; lean_object* x_33; lean_object* x_34; lean_object* x_35;
|
||||
x_31 = lean_ctor_get(x_30, 0);
|
||||
lean_inc(x_31);
|
||||
x_32 = lean_ctor_get(x_30, 1);
|
||||
lean_object* x_32; lean_object* x_33; lean_object* x_34; lean_object* x_35; lean_object* x_36;
|
||||
x_32 = lean_ctor_get(x_31, 0);
|
||||
lean_inc(x_32);
|
||||
if (lean_is_exclusive(x_30)) {
|
||||
lean_ctor_release(x_30, 0);
|
||||
lean_ctor_release(x_30, 1);
|
||||
x_33 = x_30;
|
||||
x_33 = lean_ctor_get(x_31, 1);
|
||||
lean_inc(x_33);
|
||||
if (lean_is_exclusive(x_31)) {
|
||||
lean_ctor_release(x_31, 0);
|
||||
lean_ctor_release(x_31, 1);
|
||||
x_34 = x_31;
|
||||
} else {
|
||||
lean_dec_ref(x_30);
|
||||
x_33 = lean_box(0);
|
||||
lean_dec_ref(x_31);
|
||||
x_34 = lean_box(0);
|
||||
}
|
||||
x_34 = lean_alloc_ctor(0, 5, 0);
|
||||
lean_ctor_set(x_34, 0, x_24);
|
||||
lean_ctor_set(x_34, 1, x_25);
|
||||
lean_ctor_set(x_34, 2, x_26);
|
||||
lean_ctor_set(x_34, 3, x_27);
|
||||
lean_ctor_set(x_34, 4, x_31);
|
||||
if (lean_is_scalar(x_33)) {
|
||||
x_35 = lean_alloc_ctor(0, 2, 0);
|
||||
x_35 = lean_alloc_ctor(0, 5, 1);
|
||||
lean_ctor_set(x_35, 0, x_24);
|
||||
lean_ctor_set(x_35, 1, x_25);
|
||||
lean_ctor_set(x_35, 2, x_26);
|
||||
lean_ctor_set(x_35, 3, x_27);
|
||||
lean_ctor_set(x_35, 4, x_32);
|
||||
lean_ctor_set_uint8(x_35, sizeof(void*)*5, x_29);
|
||||
if (lean_is_scalar(x_34)) {
|
||||
x_36 = lean_alloc_ctor(0, 2, 0);
|
||||
} else {
|
||||
x_35 = x_33;
|
||||
x_36 = x_34;
|
||||
}
|
||||
lean_ctor_set(x_35, 0, x_34);
|
||||
lean_ctor_set(x_35, 1, x_32);
|
||||
return x_35;
|
||||
lean_ctor_set(x_36, 0, x_35);
|
||||
lean_ctor_set(x_36, 1, x_33);
|
||||
return x_36;
|
||||
}
|
||||
else
|
||||
{
|
||||
lean_object* x_36; lean_object* x_37; lean_object* x_38; lean_object* x_39;
|
||||
lean_object* x_37; lean_object* x_38; lean_object* x_39; lean_object* x_40;
|
||||
lean_dec(x_27);
|
||||
lean_dec(x_26);
|
||||
lean_dec(x_25);
|
||||
lean_dec(x_24);
|
||||
x_36 = lean_ctor_get(x_30, 0);
|
||||
lean_inc(x_36);
|
||||
x_37 = lean_ctor_get(x_30, 1);
|
||||
x_37 = lean_ctor_get(x_31, 0);
|
||||
lean_inc(x_37);
|
||||
if (lean_is_exclusive(x_30)) {
|
||||
lean_ctor_release(x_30, 0);
|
||||
lean_ctor_release(x_30, 1);
|
||||
x_38 = x_30;
|
||||
x_38 = lean_ctor_get(x_31, 1);
|
||||
lean_inc(x_38);
|
||||
if (lean_is_exclusive(x_31)) {
|
||||
lean_ctor_release(x_31, 0);
|
||||
lean_ctor_release(x_31, 1);
|
||||
x_39 = x_31;
|
||||
} else {
|
||||
lean_dec_ref(x_30);
|
||||
x_38 = lean_box(0);
|
||||
lean_dec_ref(x_31);
|
||||
x_39 = lean_box(0);
|
||||
}
|
||||
if (lean_is_scalar(x_38)) {
|
||||
x_39 = lean_alloc_ctor(1, 2, 0);
|
||||
if (lean_is_scalar(x_39)) {
|
||||
x_40 = lean_alloc_ctor(1, 2, 0);
|
||||
} else {
|
||||
x_39 = x_38;
|
||||
x_40 = x_39;
|
||||
}
|
||||
lean_ctor_set(x_39, 0, x_36);
|
||||
lean_ctor_set(x_39, 1, x_37);
|
||||
return x_39;
|
||||
lean_ctor_set(x_40, 0, x_37);
|
||||
lean_ctor_set(x_40, 1, x_38);
|
||||
return x_40;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Decl_reduceJpArity___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_7; lean_object* x_8;
|
||||
x_7 = lean_unbox(x_2);
|
||||
lean_dec(x_2);
|
||||
x_8 = l_Lean_Compiler_LCNF_Decl_reduceJpArity(x_1, x_7, x_3, x_4, x_5, x_6);
|
||||
return x_8;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Compiler_LCNF_reduceJpArity___closed__1() {
|
||||
_start:
|
||||
{
|
||||
|
|
@ -4999,7 +4961,7 @@ static lean_object* _init_l_Lean_Compiler_LCNF_reduceJpArity___closed__3() {
|
|||
_start:
|
||||
{
|
||||
lean_object* x_1;
|
||||
x_1 = lean_alloc_closure((void*)(l_Lean_Compiler_LCNF_Decl_reduceJpArity___boxed), 6, 0);
|
||||
x_1 = lean_alloc_closure((void*)(l_Lean_Compiler_LCNF_Decl_reduceJpArity), 6, 0);
|
||||
return x_1;
|
||||
}
|
||||
}
|
||||
|
|
@ -5023,7 +4985,7 @@ x_1 = l_Lean_Compiler_LCNF_reduceJpArity___closed__4;
|
|||
return x_1;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ReduceJpArity___hyg_881____closed__1() {
|
||||
static lean_object* _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ReduceJpArity___hyg_882____closed__1() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1;
|
||||
|
|
@ -5031,31 +4993,31 @@ x_1 = lean_mk_string_from_bytes("Compiler", 8);
|
|||
return x_1;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ReduceJpArity___hyg_881____closed__2() {
|
||||
static lean_object* _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ReduceJpArity___hyg_882____closed__2() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1; lean_object* x_2; lean_object* x_3;
|
||||
x_1 = lean_box(0);
|
||||
x_2 = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ReduceJpArity___hyg_881____closed__1;
|
||||
x_2 = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ReduceJpArity___hyg_882____closed__1;
|
||||
x_3 = l_Lean_Name_str___override(x_1, x_2);
|
||||
return x_3;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ReduceJpArity___hyg_881____closed__3() {
|
||||
static lean_object* _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ReduceJpArity___hyg_882____closed__3() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1; lean_object* x_2; lean_object* x_3;
|
||||
x_1 = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ReduceJpArity___hyg_881____closed__2;
|
||||
x_1 = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ReduceJpArity___hyg_882____closed__2;
|
||||
x_2 = l_Lean_Compiler_LCNF_reduceJpArity___closed__1;
|
||||
x_3 = l_Lean_Name_str___override(x_1, x_2);
|
||||
return x_3;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ReduceJpArity___hyg_881_(lean_object* x_1) {
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ReduceJpArity___hyg_882_(lean_object* x_1) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_2; uint8_t x_3; lean_object* x_4;
|
||||
x_2 = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ReduceJpArity___hyg_881____closed__3;
|
||||
x_2 = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ReduceJpArity___hyg_882____closed__3;
|
||||
x_3 = 1;
|
||||
x_4 = l_Lean_registerTraceClass(x_2, x_3, x_1);
|
||||
return x_4;
|
||||
|
|
@ -5096,13 +5058,13 @@ l_Lean_Compiler_LCNF_reduceJpArity___closed__4 = _init_l_Lean_Compiler_LCNF_redu
|
|||
lean_mark_persistent(l_Lean_Compiler_LCNF_reduceJpArity___closed__4);
|
||||
l_Lean_Compiler_LCNF_reduceJpArity = _init_l_Lean_Compiler_LCNF_reduceJpArity();
|
||||
lean_mark_persistent(l_Lean_Compiler_LCNF_reduceJpArity);
|
||||
l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ReduceJpArity___hyg_881____closed__1 = _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ReduceJpArity___hyg_881____closed__1();
|
||||
lean_mark_persistent(l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ReduceJpArity___hyg_881____closed__1);
|
||||
l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ReduceJpArity___hyg_881____closed__2 = _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ReduceJpArity___hyg_881____closed__2();
|
||||
lean_mark_persistent(l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ReduceJpArity___hyg_881____closed__2);
|
||||
l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ReduceJpArity___hyg_881____closed__3 = _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ReduceJpArity___hyg_881____closed__3();
|
||||
lean_mark_persistent(l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ReduceJpArity___hyg_881____closed__3);
|
||||
res = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ReduceJpArity___hyg_881_(lean_io_mk_world());
|
||||
l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ReduceJpArity___hyg_882____closed__1 = _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ReduceJpArity___hyg_882____closed__1();
|
||||
lean_mark_persistent(l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ReduceJpArity___hyg_882____closed__1);
|
||||
l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ReduceJpArity___hyg_882____closed__2 = _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ReduceJpArity___hyg_882____closed__2();
|
||||
lean_mark_persistent(l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ReduceJpArity___hyg_882____closed__2);
|
||||
l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ReduceJpArity___hyg_882____closed__3 = _init_l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ReduceJpArity___hyg_882____closed__3();
|
||||
lean_mark_persistent(l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ReduceJpArity___hyg_882____closed__3);
|
||||
res = l_Lean_Compiler_LCNF_initFn____x40_Lean_Compiler_LCNF_ReduceJpArity___hyg_882_(lean_io_mk_world());
|
||||
if (lean_io_result_is_error(res)) return res;
|
||||
lean_dec_ref(res);
|
||||
return lean_io_result_mk_ok(lean_box(0));
|
||||
|
|
|
|||
2416
stage0/stdlib/Lean/Compiler/LCNF/Renaming.c
generated
Normal file
2416
stage0/stdlib/Lean/Compiler/LCNF/Renaming.c
generated
Normal file
File diff suppressed because it is too large
Load diff
1729
stage0/stdlib/Lean/Compiler/LCNF/Simp.c
generated
1729
stage0/stdlib/Lean/Compiler/LCNF/Simp.c
generated
File diff suppressed because it is too large
Load diff
30
stage0/stdlib/Lean/Compiler/LCNF/Simp/Basic.c
generated
30
stage0/stdlib/Lean/Compiler/LCNF/Simp/Basic.c
generated
|
|
@ -15,17 +15,17 @@ extern "C" {
|
|||
#endif
|
||||
LEAN_EXPORT uint8_t l_Lean_Compiler_LCNF_hasLocalInst(lean_object*);
|
||||
lean_object* lean_st_ref_get(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Simp_findFunDecl_x3f(lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Simp_findFunDecl_x3f(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Simp_findExpr___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Simp_findFunDecl_x3f___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
uint8_t l___private_Lean_Compiler_InlineAttrs_0__Lean_Compiler_hasInlineAttrCore(lean_object*, uint8_t, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Simp_findExpr(lean_object*, uint8_t, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Simp_findExpr(lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
uint8_t l_Lean_Compiler_hasSpecializeAttribute(lean_object*, lean_object*);
|
||||
uint8_t l_Lean_BinderInfo_isInstImplicit(uint8_t);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Decl_isTemplateLike___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Compiler_LCNF_findFunDecl_x3f(lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Compiler_LCNF_findFunDecl_x3f(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Decl_isTemplateLike(lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Compiler_LCNF_findLetDecl_x3f(lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Compiler_LCNF_findLetDecl_x3f(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_hasLocalInst___boxed(lean_object*);
|
||||
lean_object* l_Lean_Meta_isInstance(lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT uint8_t l_Lean_Compiler_LCNF_hasLocalInst(lean_object* x_1) {
|
||||
|
|
@ -252,7 +252,7 @@ lean_dec(x_2);
|
|||
return x_5;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Simp_findExpr(lean_object* x_1, uint8_t x_2, uint8_t x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7) {
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Simp_findExpr(lean_object* x_1, uint8_t x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7) {
|
||||
_start:
|
||||
{
|
||||
switch (lean_obj_tag(x_1)) {
|
||||
|
|
@ -344,19 +344,18 @@ return x_24;
|
|||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Simp_findExpr___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_8; uint8_t x_9; lean_object* x_10;
|
||||
uint8_t x_8; lean_object* x_9;
|
||||
x_8 = lean_unbox(x_2);
|
||||
lean_dec(x_2);
|
||||
x_9 = lean_unbox(x_3);
|
||||
lean_dec(x_3);
|
||||
x_10 = l_Lean_Compiler_LCNF_Simp_findExpr(x_1, x_8, x_9, x_4, x_5, x_6, x_7);
|
||||
x_9 = l_Lean_Compiler_LCNF_Simp_findExpr(x_1, x_8, x_3, x_4, x_5, x_6, x_7);
|
||||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
return x_10;
|
||||
lean_dec(x_3);
|
||||
return x_9;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Simp_findFunDecl_x3f(lean_object* x_1, uint8_t x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6) {
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Simp_findFunDecl_x3f(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6) {
|
||||
_start:
|
||||
{
|
||||
switch (lean_obj_tag(x_1)) {
|
||||
|
|
@ -502,14 +501,13 @@ return x_36;
|
|||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Simp_findFunDecl_x3f___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_7; lean_object* x_8;
|
||||
x_7 = lean_unbox(x_2);
|
||||
lean_dec(x_2);
|
||||
x_8 = l_Lean_Compiler_LCNF_Simp_findFunDecl_x3f(x_1, x_7, x_3, x_4, x_5, x_6);
|
||||
lean_object* x_7;
|
||||
x_7 = l_Lean_Compiler_LCNF_Simp_findFunDecl_x3f(x_1, x_2, x_3, x_4, x_5, x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
return x_8;
|
||||
lean_dec(x_2);
|
||||
return x_7;
|
||||
}
|
||||
}
|
||||
lean_object* initialize_Init(uint8_t builtin, lean_object*);
|
||||
|
|
|
|||
27
stage0/stdlib/Lean/Compiler/LCNF/Simp/Config.c
generated
27
stage0/stdlib/Lean/Compiler/LCNF/Simp/Config.c
generated
|
|
@ -17,16 +17,7 @@ LEAN_EXPORT uint8_t l_Lean_Compiler_LCNF_Simp_Config_etaPoly___default;
|
|||
LEAN_EXPORT uint8_t l_Lean_Compiler_LCNF_Simp_Config_implementedBy___default;
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Simp_instInhabitedConfig;
|
||||
static lean_object* l_Lean_Compiler_LCNF_Simp_instInhabitedConfig___closed__1;
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Simp_Config_smallThreshold___default;
|
||||
LEAN_EXPORT uint8_t l_Lean_Compiler_LCNF_Simp_Config_inlinePartial___default;
|
||||
static lean_object* _init_l_Lean_Compiler_LCNF_Simp_Config_smallThreshold___default() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1;
|
||||
x_1 = lean_unsigned_to_nat(1u);
|
||||
return x_1;
|
||||
}
|
||||
}
|
||||
static uint8_t _init_l_Lean_Compiler_LCNF_Simp_Config_etaPoly___default() {
|
||||
_start:
|
||||
{
|
||||
|
|
@ -54,15 +45,13 @@ return x_1;
|
|||
static lean_object* _init_l_Lean_Compiler_LCNF_Simp_instInhabitedConfig___closed__1() {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_1; uint8_t x_2; lean_object* x_3;
|
||||
x_1 = lean_unsigned_to_nat(0u);
|
||||
x_2 = 0;
|
||||
x_3 = lean_alloc_ctor(0, 1, 3);
|
||||
lean_ctor_set(x_3, 0, x_1);
|
||||
lean_ctor_set_uint8(x_3, sizeof(void*)*1, x_2);
|
||||
lean_ctor_set_uint8(x_3, sizeof(void*)*1 + 1, x_2);
|
||||
lean_ctor_set_uint8(x_3, sizeof(void*)*1 + 2, x_2);
|
||||
return x_3;
|
||||
uint8_t x_1; lean_object* x_2;
|
||||
x_1 = 0;
|
||||
x_2 = lean_alloc_ctor(0, 0, 3);
|
||||
lean_ctor_set_uint8(x_2, 0, x_1);
|
||||
lean_ctor_set_uint8(x_2, 1, x_1);
|
||||
lean_ctor_set_uint8(x_2, 2, x_1);
|
||||
return x_2;
|
||||
}
|
||||
}
|
||||
static lean_object* _init_l_Lean_Compiler_LCNF_Simp_instInhabitedConfig() {
|
||||
|
|
@ -82,8 +71,6 @@ _G_initialized = true;
|
|||
res = initialize_Init(builtin, lean_io_mk_world());
|
||||
if (lean_io_result_is_error(res)) return res;
|
||||
lean_dec_ref(res);
|
||||
l_Lean_Compiler_LCNF_Simp_Config_smallThreshold___default = _init_l_Lean_Compiler_LCNF_Simp_Config_smallThreshold___default();
|
||||
lean_mark_persistent(l_Lean_Compiler_LCNF_Simp_Config_smallThreshold___default);
|
||||
l_Lean_Compiler_LCNF_Simp_Config_etaPoly___default = _init_l_Lean_Compiler_LCNF_Simp_Config_etaPoly___default();
|
||||
l_Lean_Compiler_LCNF_Simp_Config_inlinePartial___default = _init_l_Lean_Compiler_LCNF_Simp_Config_inlinePartial___default();
|
||||
l_Lean_Compiler_LCNF_Simp_Config_implementedBy___default = _init_l_Lean_Compiler_LCNF_Simp_Config_implementedBy___default();
|
||||
|
|
|
|||
15869
stage0/stdlib/Lean/Compiler/LCNF/Simp/ConstantFold.c
generated
Normal file
15869
stage0/stdlib/Lean/Compiler/LCNF/Simp/ConstantFold.c
generated
Normal file
File diff suppressed because it is too large
Load diff
76
stage0/stdlib/Lean/Compiler/LCNF/Simp/DefaultAlt.c
generated
76
stage0/stdlib/Lean/Compiler/LCNF/Simp/DefaultAlt.c
generated
|
|
@ -18,7 +18,6 @@ lean_object* lean_mk_empty_array_with_capacity(lean_object*);
|
|||
uint8_t lean_usize_dec_eq(size_t, size_t);
|
||||
lean_object* lean_array_uget(lean_object*, size_t);
|
||||
static lean_object* l_Lean_Compiler_LCNF_Simp_addDefaultAlt___closed__2;
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Simp_addDefaultAlt___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* lean_array_push(lean_object*, lean_object*);
|
||||
lean_object* lean_array_get_size(lean_object*);
|
||||
static lean_object* l_Array_forInUnsafe_loop___at_Lean_Compiler_LCNF_Simp_addDefaultAlt___spec__2___closed__3;
|
||||
|
|
@ -39,8 +38,7 @@ static lean_object* l_Std_Range_forIn_loop___at___private_Lean_Compiler_LCNF_Sim
|
|||
static lean_object* l_Std_Range_forIn_loop___at___private_Lean_Compiler_LCNF_Simp_DefaultAlt_0__Lean_Compiler_LCNF_Simp_getMaxOccs_getNumOccsOf___spec__1___closed__2;
|
||||
LEAN_EXPORT lean_object* l___private_Lean_Compiler_LCNF_Simp_DefaultAlt_0__Lean_Compiler_LCNF_Simp_getMaxOccs___boxed(lean_object*);
|
||||
static lean_object* l_Std_Range_forIn_loop___at___private_Lean_Compiler_LCNF_Simp_DefaultAlt_0__Lean_Compiler_LCNF_Simp_getMaxOccs_getNumOccsOf___spec__1___closed__4;
|
||||
LEAN_EXPORT lean_object* l_Array_forInUnsafe_loop___at_Lean_Compiler_LCNF_Simp_addDefaultAlt___spec__2___lambda__1(lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_panic___at_Lean_Compiler_LCNF_Simp_addDefaultAlt___spec__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Array_forInUnsafe_loop___at_Lean_Compiler_LCNF_Simp_addDefaultAlt___spec__2___lambda__1(lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
static lean_object* l_Array_forInUnsafe_loop___at_Lean_Compiler_LCNF_Simp_addDefaultAlt___spec__2___closed__2;
|
||||
static lean_object* l_panic___at_Lean_Compiler_LCNF_Simp_addDefaultAlt___spec__1___closed__1;
|
||||
lean_object* l___private_Init_Util_0__mkPanicMessageWithDecl(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
|
|
@ -51,15 +49,15 @@ size_t lean_usize_of_nat(lean_object*);
|
|||
LEAN_EXPORT lean_object* l_Std_Range_forIn_loop___at___private_Lean_Compiler_LCNF_Simp_DefaultAlt_0__Lean_Compiler_LCNF_Simp_getMaxOccs___spec__2___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Std_Range_forIn_loop___at___private_Lean_Compiler_LCNF_Simp_DefaultAlt_0__Lean_Compiler_LCNF_Simp_getMaxOccs_getNumOccsOf___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
static lean_object* l_panic___at_Lean_Compiler_LCNF_Simp_addDefaultAlt___spec__1___closed__3;
|
||||
LEAN_EXPORT lean_object* l_Array_forInUnsafe_loop___at_Lean_Compiler_LCNF_Simp_addDefaultAlt___spec__2(lean_object*, lean_object*, size_t, size_t, lean_object*, lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Array_forInUnsafe_loop___at_Lean_Compiler_LCNF_Simp_addDefaultAlt___spec__2(lean_object*, lean_object*, size_t, size_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Std_Range_forIn_loop___at___private_Lean_Compiler_LCNF_Simp_DefaultAlt_0__Lean_Compiler_LCNF_Simp_getMaxOccs___spec__2(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Array_forInUnsafe_loop___at_Lean_Compiler_LCNF_Simp_addDefaultAlt___spec__2___lambda__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
uint8_t lean_nat_dec_le(lean_object*, lean_object*);
|
||||
LEAN_EXPORT uint8_t l_Array_anyMUnsafe_any___at_Lean_Compiler_LCNF_Simp_addDefaultAlt___spec__3(lean_object*, size_t, size_t);
|
||||
lean_object* l_Lean_Compiler_LCNF_AltCore_getCode(lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Simp_addDefaultAlt(lean_object*, lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Compiler_LCNF_eraseCode(lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Compiler_LCNF_eraseParams(lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Simp_addDefaultAlt(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Compiler_LCNF_eraseCode(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Compiler_LCNF_eraseParams(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_instInhabitedReaderT___rarg___boxed(lean_object*, lean_object*);
|
||||
extern lean_object* l_Lean_Core_instMonadCoreM;
|
||||
uint8_t lean_nat_dec_eq(lean_object*, lean_object*);
|
||||
|
|
@ -71,9 +69,9 @@ static lean_object* l_Array_forInUnsafe_loop___at_Lean_Compiler_LCNF_Simp_addDef
|
|||
LEAN_EXPORT lean_object* l_Std_Range_forIn_loop___at___private_Lean_Compiler_LCNF_Simp_DefaultAlt_0__Lean_Compiler_LCNF_Simp_getMaxOccs___spec__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Std_Range_forIn_loop___at___private_Lean_Compiler_LCNF_Simp_DefaultAlt_0__Lean_Compiler_LCNF_Simp_getMaxOccs___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_panic___at___private_Lean_Compiler_LCNF_Basic_0__Lean_Compiler_LCNF_updateAltImp___spec__1(lean_object*);
|
||||
LEAN_EXPORT lean_object* l_panic___at_Lean_Compiler_LCNF_Simp_addDefaultAlt___spec__1(lean_object*, lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_panic___at_Lean_Compiler_LCNF_Simp_addDefaultAlt___spec__1(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
extern lean_object* l_instInhabitedPUnit;
|
||||
lean_object* l_Lean_Compiler_LCNF_Simp_markSimplified___rarg(lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Compiler_LCNF_Simp_markSimplified___rarg(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
static lean_object* l_panic___at_Lean_Compiler_LCNF_Simp_addDefaultAlt___spec__1___closed__4;
|
||||
uint8_t lean_nat_dec_lt(lean_object*, lean_object*);
|
||||
static lean_object* _init_l_Std_Range_forIn_loop___at___private_Lean_Compiler_LCNF_Simp_DefaultAlt_0__Lean_Compiler_LCNF_Simp_getMaxOccs_getNumOccsOf___spec__1___closed__1() {
|
||||
|
|
@ -694,18 +692,17 @@ lean_closure_set(x_2, 0, x_1);
|
|||
return x_2;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_panic___at_Lean_Compiler_LCNF_Simp_addDefaultAlt___spec__1(lean_object* x_1, lean_object* x_2, lean_object* x_3, uint8_t x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8) {
|
||||
LEAN_EXPORT lean_object* l_panic___at_Lean_Compiler_LCNF_Simp_addDefaultAlt___spec__1(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_9; lean_object* x_10; lean_object* x_11; lean_object* x_12;
|
||||
lean_object* x_9; lean_object* x_10; lean_object* x_11;
|
||||
x_9 = l_panic___at_Lean_Compiler_LCNF_Simp_addDefaultAlt___spec__1___closed__5;
|
||||
x_10 = lean_panic_fn(x_9, x_1);
|
||||
x_11 = lean_box(x_4);
|
||||
x_12 = lean_apply_7(x_10, x_2, x_3, x_11, x_5, x_6, x_7, x_8);
|
||||
return x_12;
|
||||
x_11 = lean_apply_7(x_10, x_2, x_3, x_4, x_5, x_6, x_7, x_8);
|
||||
return x_11;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Array_forInUnsafe_loop___at_Lean_Compiler_LCNF_Simp_addDefaultAlt___spec__2___lambda__1(lean_object* x_1, uint8_t x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, uint8_t x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10) {
|
||||
LEAN_EXPORT lean_object* l_Array_forInUnsafe_loop___at_Lean_Compiler_LCNF_Simp_addDefaultAlt___spec__2___lambda__1(lean_object* x_1, uint8_t x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14; lean_object* x_15;
|
||||
|
|
@ -759,7 +756,7 @@ x_6 = l___private_Init_Util_0__mkPanicMessageWithDecl(x_1, x_2, x_3, x_4, x_5);
|
|||
return x_6;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Array_forInUnsafe_loop___at_Lean_Compiler_LCNF_Simp_addDefaultAlt___spec__2(lean_object* x_1, lean_object* x_2, size_t x_3, size_t x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, uint8_t x_8, lean_object* x_9, lean_object* x_10, lean_object* x_11, lean_object* x_12) {
|
||||
LEAN_EXPORT lean_object* l_Array_forInUnsafe_loop___at_Lean_Compiler_LCNF_Simp_addDefaultAlt___spec__2(lean_object* x_1, lean_object* x_2, size_t x_3, size_t x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10, lean_object* x_11, lean_object* x_12) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_13;
|
||||
|
|
@ -770,6 +767,7 @@ lean_object* x_14;
|
|||
lean_dec(x_11);
|
||||
lean_dec(x_10);
|
||||
lean_dec(x_9);
|
||||
lean_dec(x_8);
|
||||
lean_dec(x_7);
|
||||
lean_dec(x_6);
|
||||
x_14 = lean_alloc_ctor(0, 2, 0);
|
||||
|
|
@ -871,6 +869,7 @@ x_50 = l_Array_forInUnsafe_loop___at_Lean_Compiler_LCNF_Simp_addDefaultAlt___spe
|
|||
lean_inc(x_11);
|
||||
lean_inc(x_10);
|
||||
lean_inc(x_9);
|
||||
lean_inc(x_8);
|
||||
lean_inc(x_7);
|
||||
lean_inc(x_6);
|
||||
x_51 = l_panic___at_Lean_Compiler_LCNF_Simp_addDefaultAlt___spec__1(x_50, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
|
||||
|
|
@ -895,6 +894,7 @@ lean_dec(x_24);
|
|||
lean_dec(x_11);
|
||||
lean_dec(x_10);
|
||||
lean_dec(x_9);
|
||||
lean_dec(x_8);
|
||||
lean_dec(x_7);
|
||||
lean_dec(x_6);
|
||||
x_54 = !lean_is_exclusive(x_51);
|
||||
|
|
@ -1012,6 +1012,7 @@ x_85 = l_Array_forInUnsafe_loop___at_Lean_Compiler_LCNF_Simp_addDefaultAlt___spe
|
|||
lean_inc(x_11);
|
||||
lean_inc(x_10);
|
||||
lean_inc(x_9);
|
||||
lean_inc(x_8);
|
||||
lean_inc(x_7);
|
||||
lean_inc(x_6);
|
||||
x_86 = l_panic___at_Lean_Compiler_LCNF_Simp_addDefaultAlt___spec__1(x_85, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
|
||||
|
|
@ -1038,6 +1039,7 @@ lean_dec(x_58);
|
|||
lean_dec(x_11);
|
||||
lean_dec(x_10);
|
||||
lean_dec(x_9);
|
||||
lean_dec(x_8);
|
||||
lean_dec(x_7);
|
||||
lean_dec(x_6);
|
||||
x_90 = lean_ctor_get(x_86, 0);
|
||||
|
|
@ -1136,7 +1138,7 @@ lean_ctor_set(x_4, 1, x_3);
|
|||
return x_4;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Simp_addDefaultAlt(lean_object* x_1, lean_object* x_2, lean_object* x_3, uint8_t x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8) {
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Simp_addDefaultAlt(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_9; lean_object* x_41; lean_object* x_42; uint8_t x_43;
|
||||
|
|
@ -1188,6 +1190,7 @@ lean_object* x_53;
|
|||
lean_dec(x_7);
|
||||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
lean_dec(x_2);
|
||||
x_53 = lean_alloc_ctor(0, 2, 0);
|
||||
|
|
@ -1205,6 +1208,7 @@ lean_dec(x_41);
|
|||
lean_dec(x_7);
|
||||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
lean_dec(x_2);
|
||||
x_54 = lean_alloc_ctor(0, 2, 0);
|
||||
|
|
@ -1311,6 +1315,7 @@ lean_dec(x_11);
|
|||
lean_dec(x_7);
|
||||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
lean_dec(x_2);
|
||||
x_39 = lean_alloc_ctor(0, 2, 0);
|
||||
|
|
@ -1321,48 +1326,35 @@ return x_39;
|
|||
}
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_panic___at_Lean_Compiler_LCNF_Simp_addDefaultAlt___spec__1___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_9; lean_object* x_10;
|
||||
x_9 = lean_unbox(x_4);
|
||||
lean_dec(x_4);
|
||||
x_10 = l_panic___at_Lean_Compiler_LCNF_Simp_addDefaultAlt___spec__1(x_1, x_2, x_3, x_9, x_5, x_6, x_7, x_8);
|
||||
return x_10;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Array_forInUnsafe_loop___at_Lean_Compiler_LCNF_Simp_addDefaultAlt___spec__2___lambda__1___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_11; uint8_t x_12; lean_object* x_13;
|
||||
uint8_t x_11; lean_object* x_12;
|
||||
x_11 = lean_unbox(x_2);
|
||||
lean_dec(x_2);
|
||||
x_12 = lean_unbox(x_6);
|
||||
lean_dec(x_6);
|
||||
x_13 = l_Array_forInUnsafe_loop___at_Lean_Compiler_LCNF_Simp_addDefaultAlt___spec__2___lambda__1(x_1, x_11, x_3, x_4, x_5, x_12, x_7, x_8, x_9, x_10);
|
||||
x_12 = l_Array_forInUnsafe_loop___at_Lean_Compiler_LCNF_Simp_addDefaultAlt___spec__2___lambda__1(x_1, x_11, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
|
||||
lean_dec(x_9);
|
||||
lean_dec(x_8);
|
||||
lean_dec(x_7);
|
||||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
return x_13;
|
||||
return x_12;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Array_forInUnsafe_loop___at_Lean_Compiler_LCNF_Simp_addDefaultAlt___spec__2___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10, lean_object* x_11, lean_object* x_12) {
|
||||
_start:
|
||||
{
|
||||
size_t x_13; size_t x_14; uint8_t x_15; lean_object* x_16;
|
||||
size_t x_13; size_t x_14; lean_object* x_15;
|
||||
x_13 = lean_unbox_usize(x_3);
|
||||
lean_dec(x_3);
|
||||
x_14 = lean_unbox_usize(x_4);
|
||||
lean_dec(x_4);
|
||||
x_15 = lean_unbox(x_8);
|
||||
lean_dec(x_8);
|
||||
x_16 = l_Array_forInUnsafe_loop___at_Lean_Compiler_LCNF_Simp_addDefaultAlt___spec__2(x_1, x_2, x_13, x_14, x_5, x_6, x_7, x_15, x_9, x_10, x_11, x_12);
|
||||
x_15 = l_Array_forInUnsafe_loop___at_Lean_Compiler_LCNF_Simp_addDefaultAlt___spec__2(x_1, x_2, x_13, x_14, x_5, x_6, x_7, x_8, x_9, x_10, x_11, x_12);
|
||||
lean_dec(x_2);
|
||||
lean_dec(x_1);
|
||||
return x_16;
|
||||
return x_15;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Array_anyMUnsafe_any___at_Lean_Compiler_LCNF_Simp_addDefaultAlt___spec__3___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3) {
|
||||
|
|
@ -1379,16 +1371,6 @@ x_7 = lean_box(x_6);
|
|||
return x_7;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Simp_addDefaultAlt___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_9; lean_object* x_10;
|
||||
x_9 = lean_unbox(x_4);
|
||||
lean_dec(x_4);
|
||||
x_10 = l_Lean_Compiler_LCNF_Simp_addDefaultAlt(x_1, x_2, x_3, x_9, x_5, x_6, x_7, x_8);
|
||||
return x_10;
|
||||
}
|
||||
}
|
||||
lean_object* initialize_Init(uint8_t builtin, lean_object*);
|
||||
lean_object* initialize_Lean_Compiler_LCNF_Simp_SimpM(uint8_t builtin, lean_object*);
|
||||
static bool _G_initialized = false;
|
||||
|
|
|
|||
136
stage0/stdlib/Lean/Compiler/LCNF/Simp/FunDeclInfo.c
generated
136
stage0/stdlib/Lean/Compiler/LCNF/Simp/FunDeclInfo.c
generated
|
|
@ -34,7 +34,7 @@ static lean_object* l_List_forIn_loop___at_Lean_Compiler_LCNF_Simp_FunDeclInfoMa
|
|||
lean_object* lean_st_ref_get(lean_object*, lean_object*);
|
||||
uint8_t lean_name_eq(lean_object*, lean_object*);
|
||||
static lean_object* l_List_forIn_loop___at_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_format___spec__4___closed__3;
|
||||
lean_object* l_Lean_Compiler_LCNF_Simp_findFunDecl_x3f(lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Compiler_LCNF_Simp_findFunDecl_x3f(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* lean_array_get_size(lean_object*);
|
||||
static lean_object* l_Lean_Compiler_LCNF_Simp_instReprFunDeclInfo___closed__1;
|
||||
LEAN_EXPORT lean_object* l_Lean_HashMap_insert___at_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_add___spec__3___boxed(lean_object*, lean_object*, lean_object*);
|
||||
|
|
@ -59,7 +59,7 @@ static lean_object* l___private_Lean_Compiler_LCNF_Simp_FunDeclInfo_0__Lean_Comp
|
|||
static lean_object* l_Lean_Compiler_LCNF_Simp_FunDeclInfo_noConfusion___rarg___closed__1;
|
||||
lean_object* lean_array_fset(lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Simp_FunDeclInfo_toCtorIdx(uint8_t);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_format(lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_format(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* lean_st_mk_ref(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Simp_FunDeclInfo_toCtorIdx___boxed(lean_object*);
|
||||
static lean_object* l___private_Lean_Compiler_LCNF_Simp_FunDeclInfo_0__Lean_Compiler_LCNF_Simp_reprFunDeclInfo____x40_Lean_Compiler_LCNF_Simp_FunDeclInfo___hyg_8____closed__17;
|
||||
|
|
@ -70,24 +70,24 @@ LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Simp_FunDeclInfo_noConfusion___rar
|
|||
static lean_object* l___private_Lean_Compiler_LCNF_Simp_FunDeclInfo_0__Lean_Compiler_LCNF_Simp_reprFunDeclInfo____x40_Lean_Compiler_LCNF_Simp_FunDeclInfo___hyg_8____closed__8;
|
||||
size_t lean_usize_modn(size_t, lean_object*);
|
||||
static lean_object* l___private_Lean_Compiler_LCNF_Simp_FunDeclInfo_0__Lean_Compiler_LCNF_Simp_reprFunDeclInfo____x40_Lean_Compiler_LCNF_Simp_FunDeclInfo___hyg_8____closed__2;
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_update_addArgOcc(lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_update_go___lambda__1(lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Compiler_LCNF_getBinderName(lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_update_addArgOcc(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_update_go___lambda__1(lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Compiler_LCNF_getBinderName(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_AssocList_find_x3f___at_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_add___spec__2(lean_object*, lean_object*);
|
||||
size_t lean_usize_of_nat(lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_AssocList_find_x3f___at_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_add___spec__2___boxed(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_update_addOccs(lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_update_addOccs(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
static lean_object* l___private_Lean_Compiler_LCNF_Simp_FunDeclInfo_0__Lean_Compiler_LCNF_Simp_reprFunDeclInfo____x40_Lean_Compiler_LCNF_Simp_FunDeclInfo___hyg_8____closed__1;
|
||||
LEAN_EXPORT lean_object* l_Lean_AssocList_erase___at_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_restore___spec__2___boxed(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l___private_Lean_Compiler_LCNF_Simp_FunDeclInfo_0__Lean_Compiler_LCNF_Simp_reprFunDeclInfo____x40_Lean_Compiler_LCNF_Simp_FunDeclInfo___hyg_8____boxed(lean_object*, lean_object*);
|
||||
static lean_object* l___private_Lean_Compiler_LCNF_Simp_FunDeclInfo_0__Lean_Compiler_LCNF_Simp_reprFunDeclInfo____x40_Lean_Compiler_LCNF_Simp_FunDeclInfo___hyg_8____closed__15;
|
||||
static lean_object* l___private_Lean_Compiler_LCNF_Simp_FunDeclInfo_0__Lean_Compiler_LCNF_Simp_reprFunDeclInfo____x40_Lean_Compiler_LCNF_Simp_FunDeclInfo___hyg_8____closed__3;
|
||||
static lean_object* l___private_Lean_Compiler_LCNF_Simp_FunDeclInfo_0__Lean_Compiler_LCNF_Simp_reprFunDeclInfo____x40_Lean_Compiler_LCNF_Simp_FunDeclInfo___hyg_8____closed__5;
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_update_go(uint8_t, lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_update_go(uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Simp_instInhabitedFunDeclInfoMap;
|
||||
lean_object* l___private_Lean_Data_HashMap_0__Lean_numBucketsForCapacity(lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_update(lean_object*, lean_object*, uint8_t, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_List_forIn_loop___at_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_format___spec__4(lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_update(lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_List_forIn_loop___at_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_format___spec__4(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Simp_FunDeclInfo_noConfusion___rarg___lambda__1___boxed(lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_format___spec__3___boxed(lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_AssocList_foldlM___at_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_format___spec__2___boxed(lean_object*, lean_object*);
|
||||
|
|
@ -105,11 +105,11 @@ static lean_object* l___private_Lean_Compiler_LCNF_Simp_FunDeclInfo_0__Lean_Comp
|
|||
lean_object* lean_nat_mul(lean_object*, lean_object*);
|
||||
static lean_object* l___private_Lean_Compiler_LCNF_Simp_FunDeclInfo_0__Lean_Compiler_LCNF_Simp_reprFunDeclInfo____x40_Lean_Compiler_LCNF_Simp_FunDeclInfo___hyg_8____closed__7;
|
||||
lean_object* lean_st_ref_set(lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_update_go___spec__1(lean_object*, size_t, size_t, lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_update_go___spec__1(lean_object*, size_t, size_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_AssocList_foldlM___at_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_format___spec__2(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_AssocList_contains___at_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_add___spec__4___boxed(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_HashMapImp_expand___at_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_add___spec__5(lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Compiler_LCNF_getFunDecl(lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* l_Lean_Compiler_LCNF_getFunDecl(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
lean_object* lean_mk_array(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_update_go___spec__1___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
static lean_object* l_Lean_Compiler_LCNF_Simp_instInhabitedFunDeclInfoMap___closed__1;
|
||||
|
|
@ -125,7 +125,7 @@ LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Simp_FunDeclInfo_noConfusion(lean_
|
|||
lean_object* lean_nat_to_int(lean_object*);
|
||||
LEAN_EXPORT lean_object* l___private_Lean_Compiler_LCNF_Simp_FunDeclInfo_0__Lean_Compiler_LCNF_Simp_reprFunDeclInfo____x40_Lean_Compiler_LCNF_Simp_FunDeclInfo___hyg_8_(uint8_t, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_HashMapImp_erase___at_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_restore___spec__1(lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_update_go___spec__2(uint8_t, lean_object*, size_t, size_t, lean_object*, lean_object*, uint8_t, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_update_go___spec__2(uint8_t, lean_object*, size_t, size_t, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_update_addOccs___boxed(lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*, lean_object*);
|
||||
static lean_object* l___private_Lean_Compiler_LCNF_Simp_FunDeclInfo_0__Lean_Compiler_LCNF_Simp_reprFunDeclInfo____x40_Lean_Compiler_LCNF_Simp_FunDeclInfo___hyg_8____closed__16;
|
||||
LEAN_EXPORT lean_object* l_Lean_AssocList_replace___at_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_add___spec__8___boxed(lean_object*, lean_object*, lean_object*);
|
||||
|
|
@ -723,7 +723,7 @@ lean_ctor_set(x_2, 0, x_1);
|
|||
return x_2;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_List_forIn_loop___at_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_format___spec__4(lean_object* x_1, lean_object* x_2, uint8_t x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7) {
|
||||
LEAN_EXPORT lean_object* l_List_forIn_loop___at_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_format___spec__4(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7) {
|
||||
_start:
|
||||
{
|
||||
if (lean_obj_tag(x_1) == 0)
|
||||
|
|
@ -818,7 +818,7 @@ return x_35;
|
|||
}
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_format(lean_object* x_1, uint8_t x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6) {
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_format(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_7; lean_object* x_8; lean_object* x_9;
|
||||
|
|
@ -896,27 +896,25 @@ return x_7;
|
|||
LEAN_EXPORT lean_object* l_List_forIn_loop___at_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_format___spec__4___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_8; lean_object* x_9;
|
||||
x_8 = lean_unbox(x_3);
|
||||
lean_dec(x_3);
|
||||
x_9 = l_List_forIn_loop___at_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_format___spec__4(x_1, x_2, x_8, x_4, x_5, x_6, x_7);
|
||||
lean_object* x_8;
|
||||
x_8 = l_List_forIn_loop___at_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_format___spec__4(x_1, x_2, x_3, x_4, x_5, x_6, x_7);
|
||||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
return x_9;
|
||||
lean_dec(x_3);
|
||||
return x_8;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_format___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_7; lean_object* x_8;
|
||||
x_7 = lean_unbox(x_2);
|
||||
lean_dec(x_2);
|
||||
x_8 = l_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_format(x_1, x_7, x_3, x_4, x_5, x_6);
|
||||
lean_object* x_7;
|
||||
x_7 = l_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_format(x_1, x_2, x_3, x_4, x_5, x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
return x_8;
|
||||
lean_dec(x_2);
|
||||
return x_7;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_AssocList_find_x3f___at_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_add___spec__2(lean_object* x_1, lean_object* x_2) {
|
||||
|
|
@ -1583,7 +1581,7 @@ lean_dec(x_2);
|
|||
return x_3;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_update_addArgOcc(lean_object* x_1, lean_object* x_2, uint8_t x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7) {
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_update_addArgOcc(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_8; lean_object* x_9;
|
||||
|
|
@ -1668,18 +1666,17 @@ return x_31;
|
|||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_update_addArgOcc___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_8; lean_object* x_9;
|
||||
x_8 = lean_unbox(x_3);
|
||||
lean_dec(x_3);
|
||||
x_9 = l_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_update_addArgOcc(x_1, x_2, x_8, x_4, x_5, x_6, x_7);
|
||||
lean_object* x_8;
|
||||
x_8 = l_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_update_addArgOcc(x_1, x_2, x_3, x_4, x_5, x_6, x_7);
|
||||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
lean_dec(x_2);
|
||||
return x_9;
|
||||
return x_8;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_update_addOccs(lean_object* x_1, lean_object* x_2, uint8_t x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7) {
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_update_addOccs(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7) {
|
||||
_start:
|
||||
{
|
||||
switch (lean_obj_tag(x_1)) {
|
||||
|
|
@ -1795,18 +1792,17 @@ return x_38;
|
|||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_update_addOccs___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_8; lean_object* x_9;
|
||||
x_8 = lean_unbox(x_3);
|
||||
lean_dec(x_3);
|
||||
x_9 = l_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_update_addOccs(x_1, x_2, x_8, x_4, x_5, x_6, x_7);
|
||||
lean_object* x_8;
|
||||
x_8 = l_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_update_addOccs(x_1, x_2, x_3, x_4, x_5, x_6, x_7);
|
||||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
lean_dec(x_2);
|
||||
return x_9;
|
||||
return x_8;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_update_go___spec__1(lean_object* x_1, size_t x_2, size_t x_3, lean_object* x_4, lean_object* x_5, uint8_t x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10) {
|
||||
LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_update_go___spec__1(lean_object* x_1, size_t x_2, size_t x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_11;
|
||||
|
|
@ -1839,7 +1835,7 @@ return x_19;
|
|||
}
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_update_go___spec__2(uint8_t x_1, lean_object* x_2, size_t x_3, size_t x_4, lean_object* x_5, lean_object* x_6, uint8_t x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10, lean_object* x_11) {
|
||||
LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_update_go___spec__2(uint8_t x_1, lean_object* x_2, size_t x_3, size_t x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10, lean_object* x_11) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_12;
|
||||
|
|
@ -1854,6 +1850,7 @@ lean_dec(x_13);
|
|||
lean_inc(x_10);
|
||||
lean_inc(x_9);
|
||||
lean_inc(x_8);
|
||||
lean_inc(x_7);
|
||||
lean_inc(x_6);
|
||||
x_15 = l_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_update_go(x_1, x_14, x_6, x_7, x_8, x_9, x_10, x_11);
|
||||
if (lean_obj_tag(x_15) == 0)
|
||||
|
|
@ -1877,6 +1874,7 @@ uint8_t x_21;
|
|||
lean_dec(x_10);
|
||||
lean_dec(x_9);
|
||||
lean_dec(x_8);
|
||||
lean_dec(x_7);
|
||||
lean_dec(x_6);
|
||||
x_21 = !lean_is_exclusive(x_15);
|
||||
if (x_21 == 0)
|
||||
|
|
@ -1904,6 +1902,7 @@ lean_object* x_25;
|
|||
lean_dec(x_10);
|
||||
lean_dec(x_9);
|
||||
lean_dec(x_8);
|
||||
lean_dec(x_7);
|
||||
lean_dec(x_6);
|
||||
x_25 = lean_alloc_ctor(0, 2, 0);
|
||||
lean_ctor_set(x_25, 0, x_5);
|
||||
|
|
@ -1912,7 +1911,7 @@ return x_25;
|
|||
}
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_update_go___lambda__1(lean_object* x_1, uint8_t x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, uint8_t x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10) {
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_update_go___lambda__1(lean_object* x_1, uint8_t x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_11; lean_object* x_12;
|
||||
|
|
@ -1923,6 +1922,7 @@ lean_dec(x_1);
|
|||
lean_inc(x_9);
|
||||
lean_inc(x_8);
|
||||
lean_inc(x_7);
|
||||
lean_inc(x_6);
|
||||
lean_inc(x_5);
|
||||
x_12 = l_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_update_go(x_2, x_11, x_5, x_6, x_7, x_8, x_9, x_10);
|
||||
if (lean_obj_tag(x_12) == 0)
|
||||
|
|
@ -1940,6 +1940,7 @@ uint8_t x_15;
|
|||
lean_dec(x_9);
|
||||
lean_dec(x_8);
|
||||
lean_dec(x_7);
|
||||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_3);
|
||||
x_15 = !lean_is_exclusive(x_12);
|
||||
|
|
@ -1963,7 +1964,7 @@ return x_18;
|
|||
}
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_update_go(uint8_t x_1, lean_object* x_2, lean_object* x_3, uint8_t x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8) {
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_update_go(uint8_t x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8) {
|
||||
_start:
|
||||
{
|
||||
switch (lean_obj_tag(x_2)) {
|
||||
|
|
@ -2045,6 +2046,7 @@ lean_dec(x_33);
|
|||
lean_inc(x_7);
|
||||
lean_inc(x_6);
|
||||
lean_inc(x_5);
|
||||
lean_inc(x_4);
|
||||
lean_inc(x_3);
|
||||
x_36 = l_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_update_go(x_1, x_35, x_3, x_4, x_5, x_6, x_7, x_8);
|
||||
if (lean_obj_tag(x_36) == 0)
|
||||
|
|
@ -2064,6 +2066,7 @@ lean_dec(x_34);
|
|||
lean_dec(x_7);
|
||||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
x_39 = !lean_is_exclusive(x_36);
|
||||
if (x_39 == 0)
|
||||
|
|
@ -2135,6 +2138,7 @@ lean_dec(x_44);
|
|||
lean_dec(x_7);
|
||||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
x_62 = lean_box(0);
|
||||
lean_ctor_set(x_55, 0, x_62);
|
||||
|
|
@ -2152,6 +2156,7 @@ lean_dec(x_44);
|
|||
lean_dec(x_7);
|
||||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
x_64 = lean_box(0);
|
||||
lean_ctor_set(x_55, 0, x_64);
|
||||
|
|
@ -2169,6 +2174,7 @@ x_68 = l_Array_foldlMUnsafe_fold___at_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_upd
|
|||
lean_dec(x_7);
|
||||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
lean_dec(x_44);
|
||||
return x_68;
|
||||
|
|
@ -2192,6 +2198,7 @@ lean_dec(x_44);
|
|||
lean_dec(x_7);
|
||||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
x_73 = lean_box(0);
|
||||
x_74 = lean_alloc_ctor(0, 2, 0);
|
||||
|
|
@ -2211,6 +2218,7 @@ lean_dec(x_44);
|
|||
lean_dec(x_7);
|
||||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
x_76 = lean_box(0);
|
||||
x_77 = lean_alloc_ctor(0, 2, 0);
|
||||
|
|
@ -2229,6 +2237,7 @@ x_81 = l_Array_foldlMUnsafe_fold___at_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_upd
|
|||
lean_dec(x_7);
|
||||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
lean_dec(x_44);
|
||||
return x_81;
|
||||
|
|
@ -2243,6 +2252,7 @@ lean_dec(x_44);
|
|||
lean_dec(x_7);
|
||||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
x_82 = !lean_is_exclusive(x_45);
|
||||
if (x_82 == 0)
|
||||
|
|
@ -2284,6 +2294,7 @@ lean_dec(x_87);
|
|||
lean_dec(x_7);
|
||||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
x_91 = lean_box(0);
|
||||
x_92 = lean_alloc_ctor(0, 2, 0);
|
||||
|
|
@ -2303,6 +2314,7 @@ lean_dec(x_87);
|
|||
lean_dec(x_7);
|
||||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
x_94 = lean_box(0);
|
||||
x_95 = lean_alloc_ctor(0, 2, 0);
|
||||
|
|
@ -2329,6 +2341,7 @@ lean_object* x_100; lean_object* x_101;
|
|||
lean_dec(x_7);
|
||||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_4);
|
||||
lean_dec(x_3);
|
||||
lean_dec(x_2);
|
||||
x_100 = lean_box(0);
|
||||
|
|
@ -2343,64 +2356,57 @@ return x_101;
|
|||
LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_update_go___spec__1___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10) {
|
||||
_start:
|
||||
{
|
||||
size_t x_11; size_t x_12; uint8_t x_13; lean_object* x_14;
|
||||
size_t x_11; size_t x_12; lean_object* x_13;
|
||||
x_11 = lean_unbox_usize(x_2);
|
||||
lean_dec(x_2);
|
||||
x_12 = lean_unbox_usize(x_3);
|
||||
lean_dec(x_3);
|
||||
x_13 = lean_unbox(x_6);
|
||||
lean_dec(x_6);
|
||||
x_14 = l_Array_foldlMUnsafe_fold___at_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_update_go___spec__1(x_1, x_11, x_12, x_4, x_5, x_13, x_7, x_8, x_9, x_10);
|
||||
x_13 = l_Array_foldlMUnsafe_fold___at_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_update_go___spec__1(x_1, x_11, x_12, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
|
||||
lean_dec(x_9);
|
||||
lean_dec(x_8);
|
||||
lean_dec(x_7);
|
||||
lean_dec(x_6);
|
||||
lean_dec(x_5);
|
||||
lean_dec(x_1);
|
||||
return x_14;
|
||||
return x_13;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Array_foldlMUnsafe_fold___at_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_update_go___spec__2___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10, lean_object* x_11) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_12; size_t x_13; size_t x_14; uint8_t x_15; lean_object* x_16;
|
||||
uint8_t x_12; size_t x_13; size_t x_14; lean_object* x_15;
|
||||
x_12 = lean_unbox(x_1);
|
||||
lean_dec(x_1);
|
||||
x_13 = lean_unbox_usize(x_3);
|
||||
lean_dec(x_3);
|
||||
x_14 = lean_unbox_usize(x_4);
|
||||
lean_dec(x_4);
|
||||
x_15 = lean_unbox(x_7);
|
||||
lean_dec(x_7);
|
||||
x_16 = l_Array_foldlMUnsafe_fold___at_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_update_go___spec__2(x_12, x_2, x_13, x_14, x_5, x_6, x_15, x_8, x_9, x_10, x_11);
|
||||
x_15 = l_Array_foldlMUnsafe_fold___at_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_update_go___spec__2(x_12, x_2, x_13, x_14, x_5, x_6, x_7, x_8, x_9, x_10, x_11);
|
||||
lean_dec(x_2);
|
||||
return x_16;
|
||||
return x_15;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_update_go___lambda__1___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8, lean_object* x_9, lean_object* x_10) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_11; uint8_t x_12; lean_object* x_13;
|
||||
uint8_t x_11; lean_object* x_12;
|
||||
x_11 = lean_unbox(x_2);
|
||||
lean_dec(x_2);
|
||||
x_12 = lean_unbox(x_6);
|
||||
lean_dec(x_6);
|
||||
x_13 = l_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_update_go___lambda__1(x_1, x_11, x_3, x_4, x_5, x_12, x_7, x_8, x_9, x_10);
|
||||
return x_13;
|
||||
x_12 = l_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_update_go___lambda__1(x_1, x_11, x_3, x_4, x_5, x_6, x_7, x_8, x_9, x_10);
|
||||
return x_12;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_update_go___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_9; uint8_t x_10; lean_object* x_11;
|
||||
uint8_t x_9; lean_object* x_10;
|
||||
x_9 = lean_unbox(x_1);
|
||||
lean_dec(x_1);
|
||||
x_10 = lean_unbox(x_4);
|
||||
lean_dec(x_4);
|
||||
x_11 = l_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_update_go(x_9, x_2, x_3, x_10, x_5, x_6, x_7, x_8);
|
||||
return x_11;
|
||||
x_10 = l_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_update_go(x_9, x_2, x_3, x_4, x_5, x_6, x_7, x_8);
|
||||
return x_10;
|
||||
}
|
||||
}
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_update(lean_object* x_1, lean_object* x_2, uint8_t x_3, uint8_t x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8) {
|
||||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_update(lean_object* x_1, lean_object* x_2, uint8_t x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8) {
|
||||
_start:
|
||||
{
|
||||
lean_object* x_9; lean_object* x_10; lean_object* x_11; lean_object* x_12; lean_object* x_13; lean_object* x_14;
|
||||
|
|
@ -2478,13 +2484,11 @@ return x_26;
|
|||
LEAN_EXPORT lean_object* l_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_update___boxed(lean_object* x_1, lean_object* x_2, lean_object* x_3, lean_object* x_4, lean_object* x_5, lean_object* x_6, lean_object* x_7, lean_object* x_8) {
|
||||
_start:
|
||||
{
|
||||
uint8_t x_9; uint8_t x_10; lean_object* x_11;
|
||||
uint8_t x_9; lean_object* x_10;
|
||||
x_9 = lean_unbox(x_3);
|
||||
lean_dec(x_3);
|
||||
x_10 = lean_unbox(x_4);
|
||||
lean_dec(x_4);
|
||||
x_11 = l_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_update(x_1, x_2, x_9, x_10, x_5, x_6, x_7, x_8);
|
||||
return x_11;
|
||||
x_10 = l_Lean_Compiler_LCNF_Simp_FunDeclInfoMap_update(x_1, x_2, x_9, x_4, x_5, x_6, x_7, x_8);
|
||||
return x_10;
|
||||
}
|
||||
}
|
||||
lean_object* initialize_Init(uint8_t builtin, lean_object*);
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue