1
0
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:
hallgren
2015-03-02 14:27:36 +00:00
parent 632aab83c3
commit 6480620e1d

View File

@@ -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))