@@ -54,7 +54,8 @@ noAnnotations = WildcardAnnotations False
5454caseSplit :: (PscIde m, MonadLogger m, MonadError PscIdeError m) =>
5555 Text -> m [Constructor]
5656caseSplit q = do
57− (tc, args) <- splitTypeConstructor (parseType' (T.unpack q))
57+ type' <- parseType' (T.unpack q)
58+ (tc, args) <- splitTypeConstructor type'
5859 (EDType _ _ (DataType typeVars ctors)) <- findTypeDeclaration tc
5960 let applyTypeVars = everywhereOnTypes (replaceAllTypeVars (zip (map fst typeVars) args))
6061 let appliedCtors = map (\(n, ts) -> (n, map applyTypeVars ts)) ctors
@@ -119,11 +120,14 @@ addClause s wca =
119120 " = ?" <> (T.strip . T.pack . runIdent $ fName)
120121 in [s, template]
121122
122−parseType' :: String -> Type
123−parseType' s = let (Right t) = do
124− ts <- lex "" s
125− runTokenParser "" (parseType <* P.eof) ts
126− in t
123+parseType' :: (MonadError PscIdeError m) =>
124+ String -> m Type
125+parseType' s =
126+ case lex "<psc-ide>" s >>= runTokenParser "<psc-ide>" (parseType <* P.eof) of
127+ Right type' -> pure type'
128+ Left err ->
129+ throwError (GeneralError ("Parsing the splittype failed with:"
130+ ++ show err))
127131
128132parseTypeDeclaration' :: String -> (Ident, Type)
129133parseTypeDeclaration' s =