@@ -104,28 +104,28 @@ def transformCmd (env : Env) (cmd : Command) : CoreTransformM (Env × List State
104104 | some info =>
105105 let freshId ← genSSAIdent name.name
106106 let some mty := LTy.toMonoType? info.ty
107- | throw s! "SSA: type of '{ name.name} ' is not a monotype"
107+ | throw (Strata.DiagnosticModel.fromMessage s! "SSA: type of '{ name.name} ' is not a monotype")
108108 let env' := env.insert name.name { ident := freshId, ty := info.ty }
109109 incrementStat s! "{ Stats.renamedVars} "
110110 return (env', [Statement.init freshId (.forAll [] mty) (.det expr') smd])
111- | none => throw s! "SSA: variable '{ name.name} ' not found in environment (set)"
111+ | none => throw (Strata.DiagnosticModel.fromMessage s! "SSA: variable '{ name.name} ' not found in environment (set)")
112112 | .cmd (.set name .nondet smd) =>
113113 match env.get? name.name with
114114 | some info =>
115115 let freshId ← genSSAIdent name.name
116116 let some mty := LTy.toMonoType? info.ty
117- | throw s! "SSA: type of '{ name.name} ' is not a monotype"
117+ | throw (Strata.DiagnosticModel.fromMessage s! "SSA: type of '{ name.name} ' is not a monotype")
118118 let env' := env.insert name.name { ident := freshId, ty := info.ty }
119119 incrementStat s! "{ Stats.renamedVars} "
120120 return (env', [Statement.init freshId (.forAll [] mty) .nondet smd])
121- | none => throw s! "SSA: variable '{ name.name} ' not found in environment (havoc)"
121+ | none => throw (Strata.DiagnosticModel.fromMessage s! "SSA: variable '{ name.name} ' not found in environment (havoc)")
122122 | .cmd (.assert label b amd) =>
123123 return (env, [Statement.assert label (rewriteExpr env b) amd])
124124 | .cmd (.assume label b amd) =>
125125 return (env, [Statement.assume label (rewriteExpr env b) amd])
126126 | .cmd (.cover label b cmd') =>
127127 return (env, [Statement.cover label (rewriteExpr env b) cmd'])
128- | .call _ _ _ => throw "SSA: unexpected call command (callElim should have run first)"
128+ | .call _ _ _ => throw (Strata.DiagnosticModel.fromMessage "SSA: unexpected call command (callElim should have run first)" )
129129
130130private def collectAllKeys (envs : List Env) : List String :=
131131 let hs := envs.foldl (fun acc env =>
@@ -149,7 +149,7 @@ def emitJoinMerges (condVar : Expression.Ident)
149149 let elseId := getIdOr elseInfo preInfo origName
150150 let ty := getTyOr thenInfo elseInfo preInfo
151151 let some mty := LTy.toMonoType? ty
152- | throw s! "SSA: type of '{ origName} ' is not a monotype at join point"
152+ | throw (Strata.DiagnosticModel.fromMessage s! "SSA: type of '{ origName} ' is not a monotype at join point")
153153 let freshId ← genSSAIdent origName
154154 let iteExpr : Expression.Expr :=
155155 Lambda.LExpr.ite () (createFvar condVar) (createFvar thenId) (createFvar elseId)
@@ -176,7 +176,7 @@ def emitNondetJoinHavocs (preEnv thenEnv elseEnv : Env)
176176 if varChanged thenInfo preInfo || varChanged elseInfo preInfo then
177177 let ty := getTyOr thenInfo elseInfo preInfo
178178 let some mty := LTy.toMonoType? ty
179- | throw s! "SSA: type of '{ origName} ' is not a monotype at nondet join"
179+ | throw (Strata.DiagnosticModel.fromMessage s! "SSA: type of '{ origName} ' is not a monotype at nondet join")
180180 let freshId ← genSSAIdent origName
181181 havoces := havoces ++ [Statement.init freshId (.forAll [] mty) .nondet md]
182182 env := env.insert origName { ident := freshId, ty := ty }
@@ -214,7 +214,7 @@ partial def transformStmt (env : Env) (s : Statement) : CoreTransformM (Env × L
214214 let (mergedEnv, havoces) ← emitNondetJoinHavocs env thenEnv elseEnv md
215215 return (mergedEnv, [Stmt.ite .nondet thenStmts' elseStmts' md] ++ havoces)
216216 | .loop _ _ _ _ _ =>
217- throw "SSA: unexpected loop statement (loopElim should have run first)"
217+ throw (Strata.DiagnosticModel.fromMessage "SSA: unexpected loop statement (loopElim should have run first)" )
218218 | .exit label md => return (env, [Stmt.exit label md])
219219 | .funcDecl decl md => return (env, [Stmt.funcDecl decl md])
220220 | .typeDecl tc md => return (env, [Stmt.typeDecl tc md])
0 commit comments