title: Keyword arguments with do-block
body: <p>I have a function that looks something like this.</p>
  
  <pre><code>def test(options \\ []) do
    # Fun stuff happens here :)
  end
  </code></pre>
  
  <p>It accepts several (optional) keyword arguments, including <code>do:</code>. I'd like to be able to call it like this.</p>
  
  <pre><code>test foo: 1 do
    "Hello"
  end
  </code></pre>
  
  <p>However, this gives an error.</p>
  
  <blockquote>
  <pre><code>** (UndefinedFunctionError) function Example.test/2 is undefined or private. Did you mean one of:
  
        * test/0
        * test/1
  
      Example.test([foo: 1], [do: "Hello"])
      (elixir) lib/code.ex:376: Code.require_file/2
  </code></pre>
  </blockquote>
  
  <p>As you can see from the error, the syntax above is desugaring to two separate keyword lists. Now, I can call this function using the following slightly inconvenient syntax</p>
  
  <pre><code>Example.test foo: 1, do: (
    "Hello"
  )
  </code></pre>
  
  <p>but is there any way to provide a <code>do</code>-block in addition to other keyword arguments in one function call?</p>