getFunctionSig :: Throws (Located GeneratorError) e => Id -> SymbolTable -> GenerateJvm e MethodSignature
getFunctionSig name table = do
  t <- getSymbolType name table
  case t of
    TFunction argTypes retType ->
        return $ MethodSignature (map getJvmType argTypes)
                                 (Returns $ getJvmType retType)
    _ -> failCheck GeneratorError $ "Invalid function type: " ++ show t
getFunctionSig :: Throws (Located GeneratorError) e => Id -> SymbolTable -> GenerateJvm e MethodSignature
getFunctionSig name table = do
  t <- getSymbolType name table
  case t of
    TFunction argTypes retType ->
        return $ MethodSignature (map getJvmType argTypes)
                                 (Returns $ getJvmType retType)
    _ -> failCheck GeneratorError $ "Invalid function type: " ++ show t
getFunctionSig name table = do
  t <- getSymbolType name table
  case t of
    TFunction argTypes retType ->
        return $ MethodSignature (map getJvmType argTypes)
                                 (Returns $ getJvmType retType)
    _ -> failCheck GeneratorError $ "Invalid function type: " ++ show t