2016-08-30 58 views
9

Wyobraźmy sobie mark the following method deprecated w Swift:Traktuj * niektóre * ostrzeżenia jako błędy w Swift?

@available(*, deprecated=1.0) 
func myFunc() { 
    // ... 
} 

I treat warnings as errors in Swift ustawiając OTHER_SWIFT_FLAGS="-warnings-as-errors".

Jak sprawić, aby wyświetlały one te ostrzeżenia jako ostrzeżenia, nadal traktując pozostałe ostrzeżenia jako błędy?


Wydaje się GCC had a pretty good solution tego problemu:

-Werror // treat all warnings as errors 
-Wno-error=<warning> // don't treat <warning> as error (e.g. -Wno-error=switch) 
-Werror=<warning> // treat <warning> as error 

Więc jeśli to było Objective-C, I może po prostu użyć -Werror -Wno-error=deprecated-declarations i dostać dokładnie to, co chcę.

Co to jest odpowiednik dla Swift?


Próbowałem dodanie -Wno-error=deprecated-declarations do OTHER_SWIFT_FLAGS, ale wydaje się, że to nie jest przeznaczona dla Swifta, tak to nie działa.

Odpowiedz

0

To nie jest możliwe. Od wersji Swift 4 kompilator Swift nie ma przełączników umożliwiających włączanie/wyłączanie określonych ostrzeżeń lub promowanie określonych ostrzeżeń na błędy.

Twórcy oprogramowania Swift wyrazili niechęć do dodawania litanii flag kompilatora przy kilku okazjach na liście mailingowej Swift-Evolution. Uzasadnieniem jest to, że chcą uniknąć posiadania jednego "dialektu" Swift, aby każdy programista działał z tymi samymi funkcjami językowymi itp.

To, czy powinno to rozciągać się na coś w rodzaju konkretnych flag ostrzegawczych, jest oczywiście dyskusyjne, ale takie jest obecne oficjalne stanowisko. Jest zdecydowanie możliwe, że zasady te zostaną nieco rozluźnione w przyszłości, ale nie założyłbym się o to.