[swift-dev] How do I start implementing a feature?

David Zarzycki zarzycki at icloud.com
Tue Aug 22 07:07:47 CDT 2017



> On Aug 22, 2017, at 01:24, Daryle Walker <darylew at mac.com> wrote:
> 
>> On Aug 21, 2017, at 3:55 PM, David Zarzycki <zarzycki at icloud.com> wrote:
>> 
>> The easiest way to start adding new features to an existing project is by cribbing from existing features that are sufficiently similar (at least enough to get started and see what fails to compile after some changes). For example, if you wanted to implement a new and awesome loop construct, then start by copying, pasting, and renaming the implementation details for an existing loop that you like (be it “for” or “while”, etc). You’ll learn far faster this way than any other way. :-)
> 
> I’m trying to figure out where are these features and what directories I need to look at.
> 
> The steps I would go are:
> 1. Create a new test file for the AST phase with “alter MyAlterTest1 {}”. Figure out where the corresponding makefile/whatever is and add the test file there too.

Just create a test file somewhere in test directory hierarchy. The test suite will automatically notice it when the test suite is run.

As for creating new source files, that tends not to be done in the project. Take parsing for example:

lib/Parse/CMakeLists.txt
lib/Parse/Confusables.cpp
lib/Parse/Lexer.cpp
lib/Parse/ParseDecl.cpp
lib/Parse/ParseExpr.cpp
lib/Parse/ParseGeneric.cpp
lib/Parse/ParseIfConfig.cpp
lib/Parse/ParsePattern.cpp
lib/Parse/ParseStmt.cpp
lib/Parse/ParseType.cpp
lib/Parse/Parser.cpp
lib/Parse/PersistentParserState.cpp
lib/Parse/Scope.cpp

Notice now *all* of the declaration parsing is done in one file. If you want to add a new decl kind, then you’ll need to update that file and dependent files.

Good luck,
Dave
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-dev/attachments/20170822/8dbc71f7/attachment.html>


More information about the swift-dev mailing list