107 |
(* normal processing -- used when there is no cycle to report *) |
(* normal processing -- used when there is no cycle to report *) |
108 |
fun normal_processing () = let |
fun normal_processing () = let |
109 |
val context = SrcPath.sameDirContext group |
val context = SrcPath.sameDirContext group |
|
val _ = Say.vsay ["[scanning ", SrcPath.descr group, "]\n"] |
|
110 |
|
|
111 |
fun work stream = let |
fun work stream = let |
112 |
val source = |
val source = |
242 |
if !(#anyErrors source) then NONE |
if !(#anyErrors source) then NONE |
243 |
else SOME parseResult |
else SOME parseResult |
244 |
end |
end |
245 |
|
fun openIt () = TextIO.openIn (SrcPath.osstring group) |
246 |
val pro = |
val pro = |
247 |
SafeIO.perform { openIt = |
SafeIO.perform { openIt = openIt, |
|
fn () => SrcPath.openTextIn group, |
|
248 |
closeIt = TextIO.closeIn, |
closeIt = TextIO.closeIn, |
249 |
work = work, |
work = work, |
250 |
cleanup = fn () => () } |
cleanup = fn () => () } |
261 |
h :: t => (report (h, t); NONE) |
h :: t => (report (h, t); NONE) |
262 |
| [] => |
| [] => |
263 |
(case getStable group of |
(case getStable group of |
264 |
NONE => normal_processing () |
NONE => |
265 |
| SOME g => SOME g) |
(Say.vsay ["[scanning ", SrcPath.descr group, |
266 |
|
"]\n"]; |
267 |
|
normal_processing ()) |
268 |
|
| SOME g => |
269 |
|
(Say.vsay ["[library ", SrcPath.descr group, |
270 |
|
" is stable]\n"]; |
271 |
|
SOME g)) |
272 |
end |
end |
273 |
in |
in |
274 |
case mparse (group, [], ref false, stabthis) of |
case mparse (group, [], ref false, stabthis) of |