[swift-evolution] #pragma

Jean-Daniel Dupas mailing at xenonium.com
Mon Sep 5 15:26:54 CDT 2016


> Le 5 sept. 2016 à 00:53, isidoro carlo ghezzi via swift-evolution <swift-evolution at swift.org> a écrit :
> 
> Hi all,
> 
> I think the "old style" `#pragma` is necessary in Swift.
> Exactly in the same way it is available in C/C++ or Objective-C/C++, or in something else portable way.
> 
> Because `#pragma` is not handled in Swift, in Xcode they overloaded the semantic of comments, giving to the comment `// MARK:` the semantic of `#pragma mark`
> 
> But my point of view is that, I would like that what it is written in a source comment (what it is written after a // or between /* */ ) should be fully ignore by compiler or IDE.
> 
> I understand that maybe a compiler shouldn't lose time handling `#pragma options`, but giving semantics to source comment, I think it can be dangerous and misunderstood.
> 
> The implementation in Swift compiler should be simple, ignoring any line beginning with `#pragma` (ok I know It is not simple)
> The IDE will handle the `#pragma`
> 
> That's why they invented `#pragma`in C/C++ Objective-C/C++ right?

I don’t think it is a reason pragma exists. except for #pragma mark, I’m not sure the compiler ignore any pragma. They are used to control the compiler behaviors (controlling warning, specifying linker dependencies, enabled specific feature like OpenMP, etc…) and not at all to interact with the IDE. I would even says that pragma mark is an abuse of the #pragma construct as it is ignored by the compiler and used by the IDE only.

I’m strongly again introducing #pragma without very very good reason into swift. Asking the IDE to parse comment to extract metadata is not worst abusing pragma to do the same, and at least it is forward and backward compatible with any other tools.



More information about the swift-evolution mailing list