try! Swift San Joseの作業メモ
WWDC18 に付随して行われた try! Swift San Jose に参加してきた。前半は Swift コミッターによるパネルディスカッション、後半は Open Source Swift にコントリビュートするというワークショップだった。このワークショップを通して apple/swift に Pull Request を送ることができた。
最近読んだ id:higepon さんの ログのすすめ をとても良いと感じていて、ワークショップの作業はログを書きながら行ってみた。ログを残すことによって、自分が今取り組んでいる課題は何か、次に行うべき作業は何か、かなり明確にすることができた。特に Swift コンパイラという普段自分が扱っているコードベースとは全く異なる環境ではかなり助けになる実感があった。 せっかくなので、その時の作業メモを残しておく。
バグチケット
https://bugs.swift.org/browse/SR-7844?filter=10451
<stdin>:3:3: error: computed property must have accessors specified } ^
こうしたい
<stdin>:3:3: error: subscript must have accessors specified } ^
作業ログ
# ゴール - [x]subscript の diagnostics が computed property になっているのを修正する - [x]どういう時に出るエラーか - getter がない時に出る # 分からないこと - [x] 開発環境 - Xcode or Vim? - どっちでもいい - [x] デバッグの仕方 - バグを再現するテストを書いて、直ったことを確認する - PRにはテストが必要 - テストは短ければ短いほどいい - [x]テストの書き方 # やること - [x] issue に自分をアサインする - [x] bug をバイナリで reproduce する - ビルドした swift を実行する - <unknown>:0: error: Swift does not support the SDK 'MacOSX10.13.sdk’ - xcode-select で Xcode10beta見るようにしたら直った - [x] テストを動かす - [x] バグを再現するテスト書く - test/decl/subscript/subscripting.swift 173行目 - [x] computed property の方のテストが壊れていないことを確認する - test/decl/var/properties.swift 379行目 - [x] どこをどうやって修正するか - include/swift/AST/DiagnosticsParse.def - 251行目、プレースホルダを使うように文言を修正する - "%select{variable|subscript}0 must provide either a getter or “ こういうやつ??? - [x] %select を使って修正する - https://github.com/apple/swift/blob/master/docs/Diagnostics.md - [x] 呼び元で引数を渡す - lib/Parse/ParseDecl.cpp - computed propertyとsubscriptを区別する - bool Parser::parseGetSetImpl 多分ここにisSubscript を渡さないといけない - static void diagnoseRedundantAccessors の引数に isSubscript というのがある (lib/Parse/ParseDecl.cpp 4016行目) - [x] 自分の環境に fork して clone する - [x] 自分がforkした方に修正を入れる - [ ] 自分がforkした方でビルドする - [ ] 自分がforkした方でテストを通す - [x] fork し直すのではなく、git の remote origin を変更した - [x] PRを作る
このようにゴール、分からないこと、やることのアウトラインを先に書いて、作業を進めながら詳細を書き足していった。