Mercurial > urweb
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 |