module JVM.Data.Convert.Descriptor where import Data.Text (Text) import JVM.Data.Abstract.Descriptor (MethodDescriptor (..), ReturnDescriptor (..)) import JVM.Data.Convert.Type (fieldTypeDescriptor) convertMethodDescriptor :: MethodDescriptor -> Text convertMethodDescriptor :: MethodDescriptor -> Text convertMethodDescriptor (MethodDescriptor [FieldType] params ReturnDescriptor ret) = let params' :: [Text] params' = (FieldType -> Text) -> [FieldType] -> [Text] forall a b. (a -> b) -> [a] -> [b] map FieldType -> Text fieldTypeDescriptor [FieldType] params ret' :: Text ret' = case ReturnDescriptor ret of ReturnDescriptor VoidReturn -> Text "V" TypeReturn FieldType t -> FieldType -> Text fieldTypeDescriptor FieldType t in Text "(" Text -> Text -> Text forall a. Semigroup a => a -> a -> a <> [Text] -> Text forall a. Monoid a => [a] -> a mconcat [Text] params' Text -> Text -> Text forall a. Semigroup a => a -> a -> a <> Text ")" Text -> Text -> Text forall a. Semigroup a => a -> a -> a <> Text ret'