Compare commits

...

2 Commits

Author SHA1 Message Date
Leni Aniva e4d53733d0
feat: Simplify repl 2024-09-07 14:03:29 -07:00
Leni Aniva 68dac4c951
chore: Version bump to 0.2.18 2024-09-07 13:55:41 -07:00
2 changed files with 26 additions and 29 deletions

View File

@ -1,6 +1,6 @@
namespace Pantograph namespace Pantograph
@[export pantograph_version] @[export pantograph_version]
def version := "0.2.17" def version := "0.2.18"
end Pantograph end Pantograph

View File

@ -169,30 +169,28 @@ def execute (command: Protocol.Command): MainM Lean.Json := do
return .ok { tacticErrors? := .some messages } return .ok { tacticErrors? := .some messages }
goal_continue (args: Protocol.GoalContinue): MainM (CR Protocol.GoalContinueResult) := do goal_continue (args: Protocol.GoalContinue): MainM (CR Protocol.GoalContinueResult) := do
let state ← get let state ← get
match state.goalStates.find? args.target with let .some target := state.goalStates.find? args.target | return .error $ errorIndex s!"Invalid state index {args.target}"
| .none => return .error $ errorIndex s!"Invalid state index {args.target}" let nextState? ← match args.branch?, args.goals? with
| .some target => do | .some branchId, .none => do
let nextState? ← match args.branch?, args.goals? with match state.goalStates.find? branchId with
| .some branchId, .none => do | .none => return .error $ errorIndex s!"Invalid state index {branchId}"
match state.goalStates.find? branchId with | .some branch => pure $ goalContinue target branch
| .none => return .error $ errorIndex s!"Invalid state index {branchId}" | .none, .some goals =>
| .some branch => pure $ goalContinue target branch pure $ goalResume target goals
| .none, .some goals => | _, _ => return .error <| errorI "arguments" "Exactly one of {branch, goals} must be supplied"
pure $ goalResume target goals match nextState? with
| _, _ => return .error <| errorI "arguments" "Exactly one of {branch, goals} must be supplied" | .error error => return .error <| errorI "structure" error
match nextState? with | .ok nextGoalState =>
| .error error => return .error <| errorI "structure" error let nextStateId := state.nextId
| .ok nextGoalState => set { state with
let nextStateId := state.nextId goalStates := state.goalStates.insert nextStateId nextGoalState,
set { state with nextId := state.nextId + 1
goalStates := state.goalStates.insert nextStateId nextGoalState, }
nextId := state.nextId + 1 let goals ← goalSerialize nextGoalState (options := state.options)
} return .ok {
let goals ← goalSerialize nextGoalState (options := state.options) nextStateId,
return .ok { goals,
nextStateId, }
goals,
}
goal_delete (args: Protocol.GoalDelete): MainM (CR Protocol.GoalDeleteResult) := do goal_delete (args: Protocol.GoalDelete): MainM (CR Protocol.GoalDeleteResult) := do
let state ← get let state ← get
let goalStates := args.stateIds.foldl (λ map id => map.erase id) state.goalStates let goalStates := args.stateIds.foldl (λ map id => map.erase id) state.goalStates
@ -200,10 +198,9 @@ def execute (command: Protocol.Command): MainM Lean.Json := do
return .ok {} return .ok {}
goal_print (args: Protocol.GoalPrint): MainM (CR Protocol.GoalPrintResult) := do goal_print (args: Protocol.GoalPrint): MainM (CR Protocol.GoalPrintResult) := do
let state ← get let state ← get
match state.goalStates.find? args.stateId with let .some goalState := state.goalStates.find? args.stateId | return .error $ errorIndex s!"Invalid state index {args.stateId}"
| .none => return .error $ errorIndex s!"Invalid state index {args.stateId}" let result ← runMetaInMainM <| goalPrint goalState state.options
| .some goalState => runMetaM <| do return .ok result
return .ok (← goalPrint goalState state.options)
compile_unit (args: Protocol.CompileUnit): MainM (CR Protocol.CompileUnitResult) := do compile_unit (args: Protocol.CompileUnit): MainM (CR Protocol.CompileUnitResult) := do
let module := args.module.toName let module := args.module.toName
try try