> On Dec 28, 2016, at 11:36, Xiaodi Wu via swift-evolution
> <swift-evolution@swift.org> wrote:
>
>> On Wed, Dec 28, 2016 at 2:29 PM, Micah Hainline via swift-evolution
>> <swift-evolution@swift.org> wrote:
>> > SE-0039 says that resourceName should be a static-string-literal
>>
>> It compiles just fine for me in my project. My next question was going
>> to be do we actually need a change in the language spec, or can we
>> call fixing that a bug, I think you're answering my question for me
>> before I even had to ask it!
>
> I'd call that a bug. It doesn't run, and there's no reason why something not
> allowed by the grammar shouldn't be diagnosed at compile time, IMO.
>
> From _The Swift Programming Language_:
>
> GRAMMAR OF A STRING LITERAL
> string-literal → static-string-literal | interpolated-string-literal
> static-string-literal → "quoted-textopt"
> quoted-text → quoted-text-item quoted-textopt
> quoted-text-item → escaped-character
> quoted-text-item → Any Unicode scalar value except ", \, U+000A, or U+000D
> interpolated-string-literal → "interpolated-textopt"
> interpolated-text → interpolated-text-item interpolated-textopt
> interpolated-text-item → \(expression) | quoted-text-item
> escaped-character → \0 | \\ | \t | \n | \r | \" | \'
> escaped-character → \u{unicode-scalar-digits}
> unicode-scalar-digits → Between one and eight hexadecimal digit
I'm a bit surprised that part of compiling the compiler doesn't seem to involve
parsing these kinds of grammar specs directly to generate the code used to
identify literals. (Or maybe it does and and we just forgot to sync up the
grammar specs and the docs before the last release.)
- Dave Sweeris
_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution