@@ -591,6 +591,9 @@ check' val u@(TUnknown _) = do
591 ty' <- replaceAllVarsWithUnknowns ty
591 ty' <- replaceAllVarsWithUnknowns ty
593 return val'
593 return val'
594+check' val (SaturatedTypeSynonym name args) = do
595+ ty <- expandTypeSynonym name args
594check' v@(NumericLiteral _) Number = return $ TypedValue v Number
597check' v@(NumericLiteral _) Number = return $ TypedValue v Number
595check' v@(StringLiteral _) String = return $ TypedValue v String
598check' v@(StringLiteral _) String = return $ TypedValue v String
596check' v@(BooleanLiteral _) Boolean = return $ TypedValue v Boolean
599check' v@(BooleanLiteral _) Boolean = return $ TypedValue v Boolean
@@ -657,9 +660,6 @@ check' (Constructor c) ty = do
657 repl <- replaceAllTypeSynonyms ty1
660 repl <- replaceAllTypeSynonyms ty1
658 repl `subsumes` ty
661 repl `subsumes` ty
659 return $ TypedValue (Constructor c) ty
662 return $ TypedValue (Constructor c) ty
660−check' val (SaturatedTypeSynonym name args) = do
661− ty <- expandTypeSynonym name args
663check' val ty = throwError $ prettyPrintValue val ++ " does not have type " ++ prettyPrintType ty
663check' val ty = throwError $ prettyPrintValue val ++ " does not have type " ++ prettyPrintType ty
665checkProperties :: [(String, Value)] -> Type -> Bool -> Subst [(String, Value)]
665checkProperties :: [(String, Value)] -> Type -> Bool -> Subst [(String, Value)]