<div dir="ltr">We currently have following main conventions for #-directives:<div><br><div>1. Directive without arguments:</div><div>#else</div><div>#end</div><div>#line</div><div>#file</div><div><br></div><div>2. Directive with pseudo-parameters:</div><div>#colorliteral(red: _, green: _, blue: _, alpha: _)</div><div>#imagelitral(imageName: _)</div><div>#fileliteral(resourceName: _)</div><div><br></div><div>3. If</div><div><div>#if comes with a condition argument:</div><div>`#if condition`  and not  `#if(condition)`</div><div>But the idea behind such a &quot;twist&quot; is to use existing experience from normal `if` statements.</div></div><div><br></div><div>4. Setline:</div><div>#setline 10 &quot;main.swift&quot;</div><div><br></div></div><div>I propose that we only leave 1 and 2 syntax, and 3 is discussable. It means that any directive must either have no arguments, or be called using pseudo-function syntax.</div><div><br></div><div>For now, that means that we need to change #setline syntax to the following:</div><div>#setline(10, file: &quot;main.swift&quot;)</div><div><br></div><div>It becomes objectively more readable and more consistent. And all future directives must comply to forms 1 or 2 unless they have a strong reason not to.</div><div><br></div><div>This proposal is tightly connected to my idea for operators:</div><div><a href="https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20160229/011932.html">https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20160229/011932.html</a><br></div></div>