+1.  This is definitely a useful feature to have and helps advance a clear and 
common pattern among programmers in general.

> On May 28, 2016, at 4:58 PM, Harlan Haskins via swift-evolution 
> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
> 
> Hey everyone,
> 
> I’m working on a draft for #warning in Swift. I’ve implemented the draft as 
> it stands, and it’s pretty nice to work with.
> 
> I’ve pasted it below, and I’d love some feedback! Thanks!
> 
> — Harlan Haskins
> 
> 
> 
> #warning
> 
> Proposal: SE-NNNN 
> <https://github.com/apple/swift-evolution/blob/master/proposals/NNNN-name.md>
> Author: Harlan Haskins <https://github.com/harlanhaskins>
> Status: Awaiting review 
> <https://gist.github.com/harlanhaskins/bfe2d56d7655c5bfdb1855eaf00addb4#rationale>
> Review manager: TBD
>  
> <https://gist.github.com/harlanhaskins/bfe2d56d7655c5bfdb1855eaf00addb4#introduction>Introduction
> 
> It's really common for developers to add TODO/FIXME comments in their source 
> code, but there currently isn't a supported facility to make these visible. 
> People have implemented special workarounds 
> <https://bendodson.com/weblog/2014/10/02/showing-todo-as-warning-in-swift-xcode-project/>
>  to coax Xcode into emitting TODOs and FIXMEs as warnings, but there isn't an 
> accessible way to provide arbitrary warnings, and does not work in a 
> non-Xcode environment.
> 
>  
> <https://gist.github.com/harlanhaskins/bfe2d56d7655c5bfdb1855eaf00addb4#motivation>Motivation
> 
> A #warning is for something you intend to fix before submitting your code or 
> for writing future tasks that you or your teammates intend to complete later. 
> Because this is such a common programming pattern, Swift should have a 
> similar facility.
> 
>  
> <https://gist.github.com/harlanhaskins/bfe2d56d7655c5bfdb1855eaf00addb4#proposed-solution>Proposed
>  solution
> 
> Add #warning(_:) as a new compiler directive that emits a warning diagnostic 
> with the contents, pointing to the start of the message.
> 
> func configPath() -> String {
>   #warning("TODO: load this more safely") // expected-warning {{TODO: load 
> this more safely}}
>   return Bundle.main().path(forResource: "Config", ofType: "plist")!
> }
>  
> <https://gist.github.com/harlanhaskins/bfe2d56d7655c5bfdb1855eaf00addb4#detailed-design>Detailed
>  design
> 
> This will add two new productions to the Swift grammar:
> 
> compiler-control-statement → warning-directive
> warning-directive → #warning( static-string-literal )
> Upon parsing this statement, the Swift compiler will immediately emit a 
> warning and discard the statement.
> 
> If a #warning exists inside a branch of a #if statement that is not taken, 
> then no warning is emitted.
> 
> #if false
> #warning(“This won’t exist”)
> #endif
>  
> <https://gist.github.com/harlanhaskins/bfe2d56d7655c5bfdb1855eaf00addb4#impact-on-existing-code>Impact
>  on existing code
> 
> This change is purely additive; no migration will be required.
> 
>  
> <https://gist.github.com/harlanhaskins/bfe2d56d7655c5bfdb1855eaf00addb4#alternatives-considered>Alternatives
>  considered
> 
> We could do some kind of comment-parsing based approach to surface TODOs and 
> FIXMEs, but #warning serves as a general-purpose facility for reporting at 
> compile time. Plus, not all TODO or FIXME comments should surface as warnings 
> in the source.
> 
> _______________________________________________
> swift-evolution mailing list
> swift-evolution@swift.org <mailto:swift-evolution@swift.org>
> https://lists.swift.org/mailman/listinfo/swift-evolution 
> <https://lists.swift.org/mailman/listinfo/swift-evolution>



~Robert Widmann

_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to