comparison src/elaborate.sml @ 2099:8efba492c48b

Fix a bug in subsignature checking for submodules
author Adam Chlipala <adam@chlipala.net>
date Tue, 30 Dec 2014 17:02:31 -0500
parents 0d898b086bbe
children 32e2752390ad
comparison
equal deleted inserted replaced
2098:b7cb53affc08 2099:8efba492c48b
3343 seek (fn (env, sgi1All as (sgi1, loc)) => 3343 seek (fn (env, sgi1All as (sgi1, loc)) =>
3344 case sgi1 of 3344 case sgi1 of
3345 L'.SgiStr (x', n1, sgn1) => 3345 L'.SgiStr (x', n1, sgn1) =>
3346 if x = x' then 3346 if x = x' then
3347 let 3347 let
3348 (* Don't forget to save & restore the
3349 * counterparts map around recursive calls!
3350 * Otherwise, all sorts of mayhem may result. *)
3351 val saved = !counterparts
3348 val () = subSgn' counterparts env loc sgn1 sgn2 3352 val () = subSgn' counterparts env loc sgn1 sgn2
3353 val () = counterparts := saved
3349 val env = E.pushStrNamedAs env x n1 sgn1 3354 val env = E.pushStrNamedAs env x n1 sgn1
3350 val env = if n1 = n2 then 3355 val env = if n1 = n2 then
3351 env 3356 env
3352 else 3357 else
3353 E.pushStrNamedAs env x n2 3358 E.pushStrNamedAs env x n2