@diagnose: управление ворнингами на объявлении 📍
🎛 SE-0522 «Source-Level Control Over Compiler Warnings» (Swift 6.4) настраивает диагностическую группу на одном объявлении: заглушить, оставить предупреждением или поднять до ошибки — без флагов на весь модуль. Значений у as: ровно три: error, warning, ignored. Никакого note. Плюс есть третий, необязательный параметр reason: — строковый литерал без интерполяции, чтобы причина глушения осталась в коде, а не в чьей-то голове.
⚠️ Про приоритеты обычно смешивают два разных правила, а их два. Между атрибутами на одном и том жеобъявлении побеждает лексически последний — это сознательный отход от привычной независимости атрибутов от порядка, и он же позволяет сначала настроить широкую группу, а потом уточнить подгруппу. А вот при вложенности побеждает самое внутреннее объявление, перекрывая родительский скоуп и глобальные флаги. Ещё две вещи. -suppress-warnings стоит вообще вне этой модели: при нём ни один @diagnose не имеет наблюдаемого эффекта, включая as: error. И понижать ошибки нельзя — управляются только диагностики уровня предупреждения. Вешается только на объявления: типы, функции, сабскрипты, вычисляемые свойства, аксессоры, typealias, associatedtype, import. Ни на выражения, ни на замыкания, ни на файл целиком — файловый скоуп это пока Future Direction.