diff options
| author | aarne <aarne@cs.chalmers.se> | 2007-07-02 11:53:04 +0000 |
|---|---|---|
| committer | aarne <aarne@cs.chalmers.se> | 2007-07-02 11:53:04 +0000 |
| commit | c7f488b11e2a44875c80fd456ff5f5b5d86c30d5 (patch) | |
| tree | a27be33a62e264ad0e266c59ae9db80a4e721073 /src/GF/Compile | |
| parent | da6e0efc1118660b39cbbfcde7f01d380661749a (diff) | |
contravariance in forgiving lock fields
Diffstat (limited to 'src/GF/Compile')
| -rw-r--r-- | src/GF/Compile/CheckGrammar.hs | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/GF/Compile/CheckGrammar.hs b/src/GF/Compile/CheckGrammar.hs index 8c113ba97..e980ec14f 100644 --- a/src/GF/Compile/CheckGrammar.hs +++ b/src/GF/Compile/CheckGrammar.hs @@ -912,7 +912,8 @@ checkIfEqLType env t u trm = do checkWarn $ "WARNING: missing lock field" +++ unwords (map prt lo) return (True,t',u',[]) Bad s -> return (False,t',u',s) - where + + where -- t is a subtype of u --- quick hack version of TC.eqVal @@ -967,6 +968,12 @@ checkIfEqLType env t u trm = do in case others of _:_ -> Bad $ "missing record fields" +++ unwords (map prt others) _ -> return locks + -- contravariance + (Prod x a b, Prod y c d) -> do + ls1 <- missingLock g c a + ls2 <- missingLock g b d + return $ ls1 ++ ls2 + _ -> Bad "" sTypes = [typeStr, typeTok, typeString] |
