refactor: style, fun, hlint, ...
[mate.git] / Mate / Utilities.hs
index c76d68043c94877ef187389e80929ac175bb2a46..565d4b1809528f786a88f57179bdddbf4d443484 100644 (file)
@@ -5,6 +5,7 @@ module Mate.Utilities where
 import Data.Word
 import qualified Data.Map as M
 import qualified Data.ByteString.Lazy as B
+import Data.List
 
 import JVM.ClassFile
 
@@ -43,6 +44,8 @@ methodGetArgsCount cls idx = fromIntegral $ length args
 methodHaveReturnValue :: Class Direct -> Word16 -> Bool
 methodHaveReturnValue cls idx = case ret of
     ReturnsVoid -> False;
+    (Returns BoolType) -> True
+    (Returns CharByte) -> True
     (Returns IntType) -> True;
     (Returns (Array _ _)) -> True
     (Returns (ObjectType _)) -> True;
@@ -53,3 +56,7 @@ methodHaveReturnValue cls idx = case ret of
     (CIfaceMethod _ nt') -> nt'
     _ -> error "methodHaveReturnValue: something wrong. abort."
   (MethodSignature _ ret) = ntSignature nt
+
+lookupMethodSig :: B.ByteString -> MethodSignature -> Class Direct -> Maybe (Method Direct)
+lookupMethodSig name sig cls =
+  find (\x -> methodName x == name && methodSignature x == sig) $ classMethods cls