I think this in correct. Specifically, `require_ident_patterns_only` means "require_only_types" with this implementation. I.e. I believe `foo` will parse but `bar` will not (currently, we wish that only `bar` parses):

```rust
extern { 
    fn foo(~int) -> int;
    fn bar(argument: ~int) -> int;
}
```

I think you need to put the `if` specifically around the `self.parse_pat()` line.