Skip to content
This repository was archived by the owner on Oct 25, 2023. It is now read-only.

Commit f1d9921

Browse files
committed
refactor: remove many used Target methods
1 parent f8b7eeb commit f1d9921

File tree

6 files changed

+69
-133
lines changed

6 files changed

+69
-133
lines changed

Diff for: Lake/Build/Context.lean

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ namespace Lake
1919
abbrev BuildTask := OptionIOTask
2020

2121
/-- A Lake build job. -/
22-
abbrev Job := BuildTask BuildTrace
22+
abbrev Job := BuildTask Unit
2323

2424
/-- A Lake context with some additional caching for builds. -/
2525
structure BuildContext extends Context where

Diff for: Lake/Build/Imports.lean

+3-3
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,12 @@ def Package.buildImportsAndDeps (imports : List String) (self : Package) : Build
4242
let mods := (← getWorkspace).processImportList imports
4343
let (importTargets, bStore) ← RecBuildM.runIn {} <| mods.mapM fun mod =>
4444
if mod.shouldPrecompile then
45-
buildIndexTop mod.dynlib <&> (·.withoutInfo)
45+
(discard ·.task) <$> buildIndexTop mod.dynlib
4646
else
47-
buildIndexTop mod.leanBin
47+
(discard ·.task) <$> buildIndexTop mod.leanBin
4848
let dynlibTargets := bStore.collectModuleFacetArray Module.dynlibFacet
4949
let externLibTargets := bStore.collectSharedExternLibs
50-
importTargets.forM (·.buildOpaque)
50+
importTargets.forM (liftM <| await ·)
5151
-- NOTE: Unix requires the full file name of the dynlib (Windows doesn't care)
5252
let dynlibs ← dynlibTargets.mapM fun dynlib => do
5353
return FilePath.mk <| nameToSharedLib (← dynlib.build).toString

Diff for: Lake/Build/Index.lean

+1-1
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ export BuildInfo (build)
102102
@[inline] def mkFacetTargetConfig (build : ι → IndexBuildM (ActiveBuildTarget α))
103103
[h : FamilyDef Fam facet (ActiveBuildTarget α)] : FacetConfig Fam ι facet where
104104
build := cast (by rw [← h.family_key_eq_type]) build
105-
getJob? := some (fun data => let_fun target := ofFamily data; (·.2) <$> target.task)
105+
getJob? := some fun data => discard <| ofFamily data
106106

107107
/-! ### Lean Executable Builds -/
108108

Diff for: Lake/Build/Target.lean

+63-114
Original file line numberDiff line numberDiff line change
@@ -13,81 +13,72 @@ namespace Lake
1313
/-! # Active Targets -/
1414
--------------------------------------------------------------------------------
1515

16-
structure ActiveTarget.{u,v} (ι : Type u) (k : Type u → Type v) (τ : Type u) where
17-
task : k (ι × τ)
18-
19-
instance [Inhabited ι] [Inhabited τ] [Pure k] : Inhabited (ActiveTarget ι k τ) :=
20-
⟨⟨pure default⟩⟩
16+
def ActiveTarget.{u,v} (ι : Type u) (k : Type u → Type v) (τ : Type u) :=
17+
k (ι × τ)
2118

2219
namespace ActiveTarget
2320

24-
def withoutInfo [Functor k] (target : ActiveTarget ι k t) : ActiveTarget PUnit k t :=
25-
mk <| (fun (_,t) => ((),t)) <$> target.task
21+
@[inline] def mk (task : k (ι × τ)) : ActiveTarget ι k τ :=
22+
task
2623

27-
def «opaque» [Functor k] (task : k t) : ActiveTarget PUnit k t :=
28-
mk <| ((), ·) <$> task
24+
@[inline] def task (target : ActiveTarget ι k τ) : k (ι × τ) :=
25+
target
2926

30-
protected def pure [Pure k] (info : ι) (trace : τ) : ActiveTarget ι k τ :=
31-
mk <| pure (info, trace)
32-
33-
def nil [NilTrace τ] [Pure k] : ActiveTarget PUnit k τ :=
34-
mk <| pure ((), nilTrace)
27+
instance [Inhabited ι] [Inhabited τ] [Pure k] : Inhabited (ActiveTarget ι k τ) :=
28+
⟨mk <| pure default⟩
3529

36-
protected def bindSync [BindSync m n k] (self : ActiveTarget ι k α) (f : ι → α → m β) : n (k β) :=
37-
bindSync self.task fun (i, a) => f i a
30+
@[inline] def «opaque» [Functor k] (task : k t) : ActiveTarget PUnit k t :=
31+
mk <| ((), ·) <$> task
3832

39-
protected def bindOpaqueSync [BindSync m n k] (self : ActiveTarget ι k α) (f : α → m β) : n (k β) :=
40-
bindSync self.task fun (_, a) => f a
33+
@[inline] def nil [NilTrace τ] [Pure k] : ActiveTarget PUnit k τ :=
34+
mk <| pure ((), nilTrace)
4135

42-
protected def bindAsync [BindAsync n k] (self : ActiveTarget ι k α) (f : ι → α → n (k β)) : n (k β) :=
43-
bindAsync self.task fun (i, a) => f i a
36+
@[inline] protected def bindSync [BindSync m n k]
37+
(self : ActiveTarget ι k α) (f : ι → α → m β) : n (k β) :=
38+
bindSync self fun (i, a) => f i a
4439

45-
protected def bindOpaqueAsync [BindAsync n k] (self : ActiveTarget ι k α) (f : α → n (k β)) : n (k β) :=
46-
bindAsync self.task fun (_, a) => f a
40+
@[inline] protected def bindOpaqueSync [BindSync m n k]
41+
(self : ActiveTarget ι k α) (f : α → m β) : n (k β) :=
42+
bindSync self fun (_, a) => f a
4743

48-
def materialize [Await k n] [MonadLiftT n m] [Functor m] (self : ActiveTarget ι k τ) : m τ :=
49-
(·.2) <$> liftM (await self.task)
44+
@[inline] protected def bindAsync [BindAsync n k]
45+
(self : ActiveTarget ι k α) (f : ι → α → n (k β)) : n (k β) :=
46+
bindAsync self fun (i, a) => f i a
5047

51-
def materializeAsync [Functor k] (self : ActiveTarget ι k τ) : k τ :=
52-
(·.2) <$> self.task
48+
@[inline] protected def bindOpaqueAsync [BindAsync n k]
49+
(self : ActiveTarget ι k α) (f : α → n (k β)) : n (k β) :=
50+
bindAsync self fun (_, a) => f a
5351

54-
def build [Await k n] [MonadLiftT n m] [Functor m] (self : ActiveTarget ι k τ) : m ι :=
52+
@[inline] def build
53+
[Await k n] [MonadLiftT n m] [Functor m] (self : ActiveTarget ι k τ) : m ι :=
5554
(·.1) <$> liftM (await self.task)
5655

57-
def buildOpaque [Await k n] [MonadLiftT n m] [Functor m] (self : ActiveTarget ι k τ) : m PUnit :=
58-
discard <| self.materialize
56+
@[inline] def buildOpaque
57+
[Await k n] [MonadLiftT n m] [Functor m] (self : ActiveTarget ι k τ) : m PUnit :=
58+
discard <| liftM (await self.task)
5959

60-
def mixOpaqueAsync
61-
[MixTrace τ] [SeqWithAsync n k] [MonadLiftT n m] [Monad m]
62-
(t1 : ActiveTarget α k τ) (t2 : ActiveTarget β k τ) : m (ActiveTarget PUnit k τ) := do
63-
pure <| mk <| ← liftM <| seqWithAsync (fun (_,t) (_,t') => ((), mixTrace t t')) t1.task t2.task
60+
variable [MixTrace τ] [SeqWithAsync n k] [MonadLiftT n m] [Monad m]
6461

65-
section
66-
variable [NilTrace τ] [MixTrace τ]
67-
68-
def materializeList [Await k n] [MonadLiftT n m] [Monad m] (targets : List (ActiveTarget ι k τ)) : m τ := do
69-
targets.foldlM (fun tr t => return mixTrace tr <| ← t.materialize) nilTrace
70-
71-
def materializeArray [Await k n] [MonadLiftT n m] [Monad m] (targets : Array (ActiveTarget ι k τ)) : m τ := do
72-
targets.foldlM (fun tr t => return mixTrace tr <| ← t.materialize) nilTrace
62+
def mixOpaqueAsync
63+
(t1 : ActiveTarget α k τ) (t2 : ActiveTarget β k τ) : m (ActiveTarget PUnit k τ) :=
64+
mk <$> liftM (seqWithAsync (fun (_,t) (_,t') => ((), mixTrace t t')) t1 t2)
7365

74-
variable [SeqWithAsync n k] [Monad n] [MonadLiftT n m] [Monad m] [Pure k]
66+
variable [NilTrace τ] [Monad n] [Pure k]
7567

7668
def collectList (targets : List (ActiveTarget ι k τ)) : m (ActiveTarget (List ι) k τ) := mk <$> do
77-
liftM <| foldLeftListAsync (fun (i,t') (a,t) => (i :: a, mixTrace t t')) ([], nilTrace) <| targets.map (·.task)
69+
liftM <| foldLeftListAsync (fun (i,t') (a,t) => (i :: a, mixTrace t t')) ([], nilTrace) targets
7870

7971
def collectArray (targets : Array (ActiveTarget ι k τ)) : m (ActiveTarget (Array ι) k τ) := mk <$> do
80-
liftM <| foldRightArrayAsync (fun (a,t) (i,t') => (a.push i, mixTrace t t')) (#[], nilTrace) <| targets.map (·.task)
72+
liftM <| foldRightArrayAsync (fun (a,t) (i,t') => (a.push i, mixTrace t t')) (#[], nilTrace) targets
8173

8274
variable [Functor k]
8375

8476
def collectOpaqueList (targets : List (ActiveTarget ι k τ)) : m (ActiveTarget PUnit k τ) := «opaque» <$> do
85-
liftM <| foldLeftListAsync (fun (_,t') t => mixTrace t t') nilTrace <| targets.map (·.task)
77+
liftM <| foldLeftListAsync (fun (_,t') t => mixTrace t t') nilTrace targets
8678

8779
def collectOpaqueArray (targets : Array (ActiveTarget ι k τ)) : m (ActiveTarget PUnit k τ) := «opaque» <$> do
88-
liftM <| foldRightArrayAsync (fun t (_,t') => mixTrace t t') nilTrace <| targets.map (·.task)
80+
liftM <| foldRightArrayAsync (fun t (_,t') => mixTrace t t') nilTrace targets
8981

90-
end
9182
end ActiveTarget
9283

9384
--------------------------------------------------------------------------------
@@ -102,88 +93,46 @@ instance [Inhabited ι] [Inhabited τ] [Pure n] [Pure k] : Inhabited (Target ι
10293

10394
namespace Target
10495

105-
def «opaque» [Functor n] [Functor k] (task : n (k τ)) : Target PUnit n k τ :=
106-
mk <| ((fun t => ((), t)) <$> ·) <$> task
107-
108-
def opaqueSync [Sync m n k] [Functor m] (act : m τ) : Target PUnit n k τ :=
109-
mk <| sync <| ((), ·) <$> act
110-
111-
def opaqueAsync [Async m n k] [Functor m] (act : m τ) : Target PUnit n k τ :=
112-
mk <| async <| ((), ·) <$> act
96+
@[inline] def active [Pure n] (target : ActiveTarget ι k τ) : Target ι n k τ :=
97+
mk <| pure target
11398

114-
protected def sync [Sync m n k] [Functor m] (info : ι) (act : m τ) : Target ι n k τ :=
115-
mk <| sync <| (info, ·) <$> act
116-
117-
protected def async [Async m n k] [Functor m] (info : ι) (act : m τ) : Target ι n k τ :=
118-
mk <| async <| (info, ·) <$> act
119-
120-
def active [Pure n] (target : ActiveTarget ι k τ) : Target ι n k τ :=
121-
mk <| pure target.task
122-
123-
protected def pure [Pure n] [Pure k] (info : ι) (trace : τ) : Target ι n k τ :=
124-
mk <| pure <| pure (info, trace)
125-
126-
def nil [NilTrace τ] [Pure n] [Pure k] : Target PUnit n k τ :=
99+
@[inline] def nil [NilTrace τ] [Pure n] [Pure k] : Target PUnit n k τ :=
127100
mk <| pure <| pure <| ((), nilTrace)
128101

129-
def computeSync [Functor m] [ComputeTrace ι m τ] [Sync m n k] (info : ι) : Target ι n k τ :=
130-
mk <| sync <| (info, ·) <$> ComputeTrace.computeTrace info
131-
132-
def computeAsync [Functor m] [ComputeTrace ι m τ] [Async m n k] (info : ι) : Target ι n k τ :=
133-
mk <| async <| (info, ·) <$> ComputeTrace.computeTrace info
134-
135-
def activate [Functor n] (self : Target ι n k τ) : n (ActiveTarget ι k τ) :=
102+
@[inline] def activate [Functor n] (self : Target ι n k τ) : n (ActiveTarget ι k τ) :=
136103
(.mk ·) <$> self.task
137104

138-
def materializeAsync [Functor n] [Functor k] (self : Target ι n k τ) : n (k τ) :=
105+
@[inline] def materializeAsync [Functor n] [Functor k] (self : Target ι n k τ) : n (k τ) :=
139106
((·.2) <$> ·) <$> self.task
140107

141108
def materialize [Await k m'] [MonadLiftT m' m] [MonadLiftT n m] [Functor m] [Bind m] (self : Target ι n k τ) : m τ :=
142109
liftM self.task >>= fun t => (·.2) <$> liftM (await t)
143110

144-
def build [Await k m'] [MonadLiftT m' m] [MonadLiftT n m] [Functor m] [Bind m] (self : Target ι n k τ) : m ι :=
145-
liftM self.task >>= fun t => (·.1) <$> liftM (await t)
146-
147-
def buildOpaque [Await k m'] [MonadLiftT m' m] [MonadLiftT n m] [Functor m] [Bind m] (self : Target ι n k τ) : m PUnit :=
148-
discard self.materialize
149-
150-
def buildAsync [Functor n] [Functor k] (self : Target ι n k τ) : n (k ι) :=
151-
((·.1) <$> ·) <$> self.task
152-
153-
def buildOpaqueAsync [Functor n] [Functor k] (self : Target ι n k τ) : n (k PUnit) :=
154-
discard <$> self.task
155-
156-
protected def bindSync [BindSync m n k] [Bind n] (self : Target ι n k τ) (f : ι → τ → m β) : n (k β) :=
111+
@[inline] protected def bindSync [BindSync m n k] [Bind n]
112+
(self : Target ι n k τ) (f : ι → τ → m β) : n (k β) :=
157113
self.task >>= fun tk => bindSync tk fun (i,t) => f i t
158114

159-
protected def bindOpaqueSync [BindSync m n k] [Bind n] (self : Target ι n k τ) (f : τ → m β) : n (k β) :=
115+
@[inline] protected def bindOpaqueSync
116+
[BindSync m n k] [Bind n] (self : Target ι n k τ) (f : τ → m β) : n (k β) :=
160117
self.task >>= fun tk => bindSync tk fun (_,t) => f t
161118

162-
protected def bindAsync [BindAsync n k] [Bind n] (self : Target ι n k τ) (f : ι → τ → n (k β)) : n (k β) :=
119+
@[inline] protected def bindAsync
120+
[BindAsync n k] [Bind n] (self : Target ι n k τ) (f : ι → τ → n (k β)) : n (k β) :=
163121
self.task >>= fun tk => bindAsync tk fun (i,t) => f i t
164122

165-
protected def bindOpaqueAsync [BindAsync n k] [Bind n] (self : Target ι n k τ) (f : τ → n (k β)) : n (k β) :=
123+
@[inline] protected def bindOpaqueAsync
124+
[BindAsync n k] [Bind n] (self : Target ι n k τ) (f : τ → n (k β)) : n (k β) :=
166125
self.task >>= fun tk => bindAsync tk fun (_,t) => f t
167126

168127
def mixOpaqueAsync
169128
[MixTrace τ] [SeqWithAsync n k] [Functor k] [Monad n]
170-
(t1 : Target α n k τ) (t2 : Target β n k τ) : Target PUnit n k τ :=
171-
mk do
172-
let tk1 ← t1.materializeAsync
173-
let tk2 ← t2.materializeAsync
174-
((fun t => ((),t)) <$> ·) <$> seqWithAsync mixTrace tk1 tk2
129+
(t1 : Target α n k τ) (t2 : Target β n k τ) : Target PUnit n k τ := mk do
130+
let tk1 ← t1.materializeAsync
131+
let tk2 ← t2.materializeAsync
132+
((fun t => ((),t)) <$> ·) <$> seqWithAsync mixTrace tk1 tk2
175133

176134
section
177135
variable [NilTrace τ] [MixTrace τ]
178-
179-
def materializeList [Await k m] [MonadLiftT n m] [Monad m] (targets : List (Target ι n k τ)) : m τ := do
180-
let tasks ← targets.mapM (·.task)
181-
tasks.foldlM (fun tr τ => return mixTrace tr (← liftM <| await τ).2) nilTrace
182-
183-
def materializeArray [Await k m] [MonadLiftT n m] [Monad m] (targets : Array (Target ι n k τ)) : m τ := do
184-
let tasks ← targets.mapM (·.task)
185-
tasks.foldlM (fun tr τ => return mixTrace tr (← liftM <| await τ).2) nilTrace
186-
187136
variable [SeqWithAsync n' k] [Monad n'] [MonadLiftT n' n] [Monad n] [Pure k] [Functor k]
188137

189138
def materializeListAsync (targets : List (Target ι n k τ)) : n (k τ) := do
@@ -192,15 +141,15 @@ def materializeListAsync (targets : List (Target ι n k τ)) : n (k τ) := do
192141
def materializeArrayAsync (targets : Array (Target ι n k τ)) : n (k τ) := do
193142
liftM <| foldRightArrayAsync mixTrace nilTrace (← targets.mapM (·.materializeAsync))
194143

195-
def collectList (targets : List (Target ι n k τ)) : Target (List ι) n k τ :=
196-
mk do
197-
let tasks ← targets.mapM (·.task)
198-
liftM <| foldLeftListAsync (fun (i,t') (a,t) => (i :: a, mixTrace t t')) ([], nilTrace) tasks
144+
def collectList (targets : List (Target ι n k τ)) : Target (List ι) n k τ := mk do
145+
let tasks ← targets.mapM (·.task)
146+
let f := fun (i,t') (a,t) => (i :: a, mixTrace t t')
147+
liftM <| foldLeftListAsync f ([], nilTrace) tasks
199148

200-
def collectArray (targets : Array (Target ι n k τ)) : Target (Array ι) n k τ :=
201-
mk do
202-
let tasks ← targets.mapM (·.task)
203-
liftM <| foldRightArrayAsync (fun (a,t) (i,t') => (a.push i, mixTrace t t')) (#[], nilTrace) tasks
149+
def collectArray (targets : Array (Target ι n k τ)) : Target (Array ι) n k τ := mk do
150+
let tasks ← targets.mapM (·.task)
151+
let f := fun (a,t) (i,t') => (a.push i, mixTrace t t')
152+
liftM <| foldRightArrayAsync f (#[], nilTrace) tasks
204153

205154
def collectOpaqueList (targets : List (Target ι n k τ)) : Target PUnit n k τ :=
206155
mk <| ((fun t => ((), t)) <$> ·) <$> materializeListAsync targets

Diff for: Lake/Build/TargetTypes.lean

-13
Original file line numberDiff line numberDiff line change
@@ -73,16 +73,3 @@ abbrev OpaqueTarget := BuildTarget Unit
7373

7474
/-- An `ActiveBuildTarget` with no artifact information. -/
7575
abbrev ActiveOpaqueTarget := ActiveBuildTarget Unit
76-
77-
namespace OpaqueTarget
78-
79-
abbrev mk (task : SchedulerM Job) : OpaqueTarget :=
80-
Target.opaque task
81-
82-
abbrev mk' (task : BuildM Job) : OpaqueTarget :=
83-
Target.opaque <| task.catchFailure fun _ => pure failure
84-
85-
abbrev async (act : BuildM BuildTrace) : OpaqueTarget :=
86-
Target.opaqueAsync act
87-
88-
end OpaqueTarget

Diff for: Lake/CLI/Build.lean

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ structure BuildSpec where
1717
/-- Get the `Job` associated with some `ActiveBuildTarget` `BuildData`. -/
1818
@[inline] def BuildData.toJob
1919
[FamilyDef BuildData k (ActiveBuildTarget α)] (data : BuildData k) : Job :=
20-
ofFamily data |>.materializeAsync
20+
discard <| ofFamily data
2121

2222
@[inline] def mkBuildSpec (info : BuildInfo)
2323
[FamilyDef BuildData info.key (ActiveBuildTarget α)] : BuildSpec :=

0 commit comments

Comments
 (0)