[swift-evolution] Changing __LINE__ to #line (was Re: [Review] SE-0022: Referencing the Objective-C selector of a method)

davesweeris at mac.com davesweeris at mac.com
Fri Jan 22 18:42:05 CST 2016


This might be worse than what you’re describing, but how much compiler overhead is there in having #calledFromLocation and #currentLocation defined? I *think* the compiler could optimize them away of they aren’t used in any given function, but you’d know way more about that than I would.

- Dave Sweeris

> On Jan 22, 2016, at 16:31, Chris Lattner <clattner at apple.com> wrote:
> 
> 
>> On Jan 22, 2016, at 4:21 PM, David Sweeris via swift-evolution <swift-evolution at swift.org> wrote:
>> 
>> It's only a "compiler-known type" if it's defined that way. What's wrong with just a regular tuple?
>> #location = (path: __FILE__, line: __LINE__, column: __COLUMN__, function: __FUNCTION__)
> 
> This would make sense to me.  One complexity here is that you’d want to use:
> 
> func f(a : Int = #location.line) {}
> 
> and our default argument model doesn’t support that.  A default argument is either an expression, or one of these magic __LINE__ indicators.  They aren’t really first-class values.
> 
> -Chris
> 
>> 
>> - Dave Sweeris
>> 
>>> On Jan 22, 2016, at 11:42, Jordan Rose via swift-evolution <swift-evolution at swift.org> wrote:
>>> 
>>> 
>>>> On Jan 21, 2016, at 21:44, Joe Groff via swift-evolution <swift-evolution at swift.org> wrote:
>>>> 
>>>> 
>>>>> On Jan 21, 2016, at 9:25 PM, Erica Sadun via swift-evolution <swift-evolution at swift.org> wrote:
>>>>> 
>>>>> Okay, you know this was coming: let's Groff this thing.
>>>>> 
>>>>> How about #(line) where you can decouple the specific compiler implementation bits from the keyword bits without hardcoding support, enabling implementation of, for example, #(runcible) for future Swift compiler substitution logic.
>>>> 
>>>> If you're going to bring me into it…I would prefer coalescing all these __FILE__, __LINE__, etc. things into one #sourceLocation structure. If you want one source-location-related thing, you tend to want the others, and you also want to be able to forward the source location info easily through the depths of your assertion/logging framework.
>>> 
>>> The downside is that this becomes Yet Another Compiler-Known Type and Yet Another Thing In the Standard Library. All the current fields are string literals and integer literals.
>>> 
>>> Jordan
>>> _______________________________________________
>>> swift-evolution mailing list
>>> swift-evolution at swift.org
>>> https://lists.swift.org/mailman/listinfo/swift-evolution
>> _______________________________________________
>> swift-evolution mailing list
>> swift-evolution at swift.org
>> https://lists.swift.org/mailman/listinfo/swift-evolution
> 



More information about the swift-evolution mailing list