<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">Hi there,</div><div class=""><br class=""></div><div class=""><b class="">main </b>is common used naming for executables that contains main function. It’s required by Swift compiler and Swift Package Manager can’t do anything about that.</div><div class="">If you create a simple command line tool in Xcode, it will create <b class="">main.swift</b> file. If you try to rename it, it will feil.</div><div class="">I think this is correct behaviour.</div><div class="">If you still think that Swift should support <b class="">Main.swift&nbsp;</b>with upper case letter, than it should be discussed with compiler team.</div><div class=""><br class=""></div><div class="">- Kostiantyn</div><div class=""><br class=""></div>
&gt; Hi there,<br class="">&gt; <br class="">&gt; This is what happened as I was trying out the Swift Package Manager for another project similar to the one shown below:<br class="">&gt; <br class="">&gt; ~ $ mkdir example<br class="">&gt; ~ $ cd example/<br class="">&gt; example $ touch Package.swift<br class="">&gt; example $ mkdir Sources<br class="">&gt; <br class="">&gt; example $ vi Sources/Example.swift<br class="">&gt; example $ cat Sources/Example.swift<br class="">&gt; func printOther() {<br class="">&gt; print("other")<br class="">&gt; }<br class="">&gt; <br class="">&gt; example $ vi Sources/Main.swift<br class="">&gt; example $ cat Sources/Main.swift<br class="">&gt; print("Hello World")<br class="">&gt; printOther()<br class="">&gt; <br class="">&gt; <br class="">&gt; example $ swift build<br class="">&gt; Compile Swift Module 'example' (2 sources)<br class="">&gt; /PATH/example/Sources/Main.swift:1:1: error: expressions are not allowed at the top level<br class="">&gt; print("Hello World")<br class="">&gt; ^<br class="">&gt; /PATH/example/Sources/Main.swift:2:1: error: expressions are not allowed at the top level<br class="">&gt; printOther()<br class="">&gt; ^<br class="">&gt; /PATH/example/Sources/Main.swift:1:1: error: expressions are not allowed at the top level<br class="">&gt; print("Hello World")<br class="">&gt; ^<br class="">&gt; /PATH/example/Sources/Main.swift:2:1: error: expressions are not allowed at the top level<br class="">&gt; printOther()<br class="">&gt; ^<br class="">&gt; &lt;unknown&gt;:0: error: build had 1 command failures<br class="">&gt; error: exit(1): /PATH-SWIFT/usr/bin/swift-build-tool -f /PATH/example/.build/debug.yaml<br class="">&gt; <br class="">&gt; <br class="">&gt; example $ mv Sources/Main.swift Sources/main.swift<br class="">&gt; example $ swift build<br class="">&gt; Compile Swift Module 'example' (2 sources)<br class="">&gt; Linking .build/debug/example<br class="">&gt; example $ .build/debug/example<br class="">&gt; Hello World<br class="">&gt; other<br class="">&gt; example $<br class="">&gt; <br class="">&gt; <br class="">&gt; I had to renameMain.swifttomain.swift. Is there a design decision on why the filename for the main swift file has to be lowercase or is this a bug?<br class="">&gt; <br class="">&gt; If it’s a design decision, why are directory names forsource files allowed to have variations likeSources,Source,srcandsrcsas statedhere(<a href="https://github.com/apple/swift-package-manager/blob/master/Documentation/SourceLayouts.md#other-rules" class="">https://github.com/apple/swift-package-manager/blob/master/Documentation/SourceLayouts.md#other-rules</a>)but not the main swift file?<br class="">&gt; <br class="">&gt; I’d be ok if onlyMain.swiftandmain.swiftare allowed since other files in theSourcesdirectory are commonly UpperCamelCasedue to the Type naming conventions e.g.example-package-playingcard/Sources(<a href="https://github.com/apple/example-package-playingcard/tree/master/Sources" class="">https://github.com/apple/example-package-playingcard/tree/master/Sources</a>).<br class="">&gt; <br class="">&gt; Or maybe I’m just being pedantic?<br class="">&gt; <br class="">&gt; p.s. evenPackage.swiftis capitalized and notpackage.swift<br class="">&gt; <br class="">&gt; $ swift --version<br class="">&gt; Swift version 3.0-dev (LLVM 752e1430fc, Clang 1e6cba3ce3, Swift 56052cfe61)<br class="">&gt; Target: x86_64-unknown-linux-gnu<br class="">&gt; <br class="">&gt; <br class="">&gt; <br class="">&gt; <br class="">&gt;<span class="Apple-converted-space">&nbsp;</span>

</body></html>