Avatar
-verify-apply-fixes というのがあるのですが、現在のところエラー文言の修正や fix-it の不一致の修正くらいしかできないです。 $ cat /tmp/t.swift guard false { // expected-error {{...}} {{none}} fatalError() } $ swift -frontend -typecheck -verify-apply-fixes /tmp/t.swift -sdk $(xcrun -show-sdk-path -sdk macosx) /tmp/t.swift:1:35: error: incorrect message found guard false { // expected-error {{...}} {{none}} ^~~ expected 'else' after 'guard' condition $ cat /tmp/t.swift guard false { // expected-error {{expected 'else' after 'guard' condition}} {{none}} fatalError() } $ swift -frontend -typecheck -verify-apply-fixes /tmp/t.swift -sdk $(xcrun -show-sdk-path -sdk macosx) /tmp/t.swift:1:77: error: expected no fix-its; actual fix-it seen: {{12-12=else }} guard false { // expected-error {{expected 'else' after 'guard' condition}} {{none}} ^~~~~~~ {{12-12=else }} $ cat /tmp/t.swift guard false { // expected-error {{expected 'else' after 'guard' condition}} {{12-12=else }}} fatalError() } つまりは -verify モードで出る fix-it をオリジナルファイルに適用するというモードです。
7:10 PM
なので、 $ cat /tmp/t.swift guard false { fatalError() } $ swift -frontend -typecheck -verify /tmp/t.swift -sdk $(xcrun -show-sdk-path -sdk macosx) /tmp/t.swift:1:13: error: unexpected error produced: expected 'else' after 'guard' condition guard false { ^ みたいなときに、 // expected-error {{expected 'else' after 'guard' condition}} を挿入するようなfix-it が出れば良いのですが、現状そうなってないです 🙂
7:14 PM
ちなみに -verify/-verify-apply-fixes の実装はここにあります https://github.com/apple/swift/blob/master/lib/Frontend/DiagnosticVerifier.cpp
The Swift Programming Language. Contribute to apple/swift development by creating an account on GitHub.