title: Swift compiler cannot distinguish two initializers
body: <p>Basically, I have a class called UserData and multiple initializers for it. In particular, I have a copy initializer which looks like: </p>
  
  <pre><code>init (_ origin: UserData){
      // copy over everything
  }
  </code></pre>
  
  <p>And another initializer which is used when I need to read the data from a file:</p>
  
  <pre><code>convenience init (Read _: Bool) {
      // read stuff and call another initializer
  }
  </code></pre>
  
  <p>Then I always got a compiler error saying cannot convert Bool to UserData whenever I tried to do <code>var something = UserData(true)</code>.
  I tried adding label, but compiler said extroneous label since there is only one parameter. I could make a workaround by adding another random parameter to the second initializer. But why is the compiler always trying to interpret the call to something does not match the type while there is another that matches the type? </p>