forked from GitHub/gf-core
Fix to avoid "error (no reason given) OCCURRED IN optimizing <cat>"
GF.Compile.Optimize.mkLinReference can fail and cause this error because the helper function inside it applies msum to a list that might be empty (if there is a record type that does not contain a field of type Str). This means that it can return mzero::Err, i.e. Bad "error (no reason given)" which can slip through the top level test that only catches Bad "no string".
This commit is contained in:
@@ -195,6 +195,7 @@ mkLinReference gr typ =
|
||||
RecType [] -> Bad "no string"
|
||||
RecType rs -> do
|
||||
msum (map (\(l,ty) -> mkDefField ty (P trm l)) (sortRec rs))
|
||||
`mplus` Bad "no string"
|
||||
_ | Just _ <- isTypeInts typ -> Bad "no string"
|
||||
_ -> Bad (render ("linearization type field cannot be" <+> typ))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user