Repository: vyperlang/vyper

Issue:
`vyper-serve` error in compiling functions
### Version Information

* vyper Version: 0.1.0b4
* OS: osx
* Python Version : 3.6

### What's your issue about?

`vyper-serve` cause this error when it compiles some contract which has a function. It seems that it is related to `method_identifiers` and I think the update of struct type broke it. At [this pr](https://github.com/ethereum/vyper/pull/1108) it worked.

```
----------------------------------------
Exception happened during processing of request from ('127.0.0.1', 51116)
Traceback (most recent call last):
  File "/Users/ryuya.nakamura/.pyenv/versions/3.6.5/lib/python3.6/socketserver.py", line 639, in process_request_thread
    self.finish_request(request, client_address)
  File "/Users/ryuya.nakamura/.pyenv/versions/3.6.5/lib/python3.6/socketserver.py", line 361, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "/Users/ryuya.nakamura/.pyenv/versions/3.6.5/lib/python3.6/socketserver.py", line 696, in __init__
    self.handle()
  File "/Users/ryuya.nakamura/.pyenv/versions/3.6.5/lib/python3.6/http/server.py", line 418, in handle
    self.handle_one_request()
  File "/Users/ryuya.nakamura/.pyenv/versions/3.6.5/lib/python3.6/http/server.py", line 406, in handle_one_request
    method()
  File "bin/vyper-serve", line 64, in do_POST
    response, status_code = self._compile(data)
  File "bin/vyper-serve", line 89, in _compile
    output_type='dict',
  File "/Users/ryuya.nakamura/.pyenv/versions/vyper/lib/python3.6/site-packages/vyper-0.1.0b5-py3.6.egg/vyper/compiler.py", line 110, in compile_codes
    raise exc
  File "/Users/ryuya.nakamura/.pyenv/versions/vyper/lib/python3.6/site-packages/vyper-0.1.0b5-py3.6.egg/vyper/compiler.py", line 105, in compile_codes
    out.setdefault(contract_name, {})[output_format] = output_formats_map[output_format](code)
  File "/Users/ryuya.nakamura/.pyenv/versions/vyper/lib/python3.6/site-packages/vyper-0.1.0b5-py3.6.egg/vyper/compiler.py", line 92, in <lambda>
    'method_identifiers': lambda code: parser.mk_method_identifiers(code)
  File "/Users/ryuya.nakamura/.pyenv/versions/vyper/lib/python3.6/site-packages/vyper-0.1.0b5-py3.6.egg/vyper/parser/parser.py", line 143, in mk_method_identifiers
    default_sigs = generate_default_arg_sigs(code, global_ctx._contracts, global_ctx._custom_units)
TypeError: generate_default_arg_sigs() missing 1 required positional argument: '_structs'
----------------------------------------
```


#### Cute Animal Picture

![image](https://user-images.githubusercontent.com/22876645/49916750-abe6ec80-fedf-11e8-9ffd-4c4953ea1569.png)




Discussion:
I think this commit (ab3dd896c3682b80714dd901e8f01cdf5c7cd589) affects.

I changed this line 

https://github.com/ethereum/vyper/blob/9fc121ac631237c55e79289b112a65cbd127ae34/vyper/parser/parser.py#L143

to

```python
default_sigs = generate_default_arg_sigs(code, global_ctx._contracts, global_ctx._custom_units, global_ctx._structs)
```

then that works.

Resolving patch:
diff --git a/vyper/parser/parser.py b/vyper/parser/parser.py
--- a/vyper/parser/parser.py
+++ b/vyper/parser/parser.py
@@ -140,7 +140,7 @@ def mk_method_identifiers(code):
     for code in global_ctx._defs:
         sig = FunctionSignature.from_definition(code, sigs=global_ctx._contracts, custom_units=global_ctx._custom_units)
         if not sig.private:
-            default_sigs = generate_default_arg_sigs(code, global_ctx._contracts, global_ctx._custom_units)
+            default_sigs = generate_default_arg_sigs(code, global_ctx._contracts, global_ctx._custom_units, global_ctx._structs)
             for s in default_sigs:
                 o[s.sig] = hex(s.method_id)
 


Test patch: