我想在编译Swift代码时忽略错误。例如,您正在编写一个尚未在您的应用程序中使用的类并且在其中存在错误,或者如果编译器只是对所有这些安全措施感到愚蠢,那么您是否可以编译它?你可以制作编译器编译它,即使它有点像hack-ish?
或者换句话说,如何将错误视为警告?
答案 0 :(得分:3)
不,没有办法做到这一点。编译器错误是错误而不是警告原因:它们是源代码无法恢复的问题。
程序可能会有一些类别的错误,可能会或可能不会在编译器的不同级别捕获:
?123?5445?,asdf,34124:::::!22
编译成Swift程序,因为它不是Swift代码。func foo(_: String) {}; foo(5)
存在语义错误:您将Int
传递给期望String
的函数。过去的语义验证,编译器需要决定为给定的表达式生成什么中间语言代码;它为foo(5)
生成了什么代码?可以粉碎寄存器和堆栈状态以将任何值传递到任何地方,但这明确反对Swift所代表的一切。
super.init
错误是对语言规则的强制执行(在将self
传递给函数或在{上调用方法}之前,必须初始化所有实例变量 {1}})。我无法想到 允许您继续编译过去的硬错误的任何编译器。即使C和C ++是未定义行为的堡垒,也不允许这样做,因为编译过去的错误会将未定义的行为引入编译器;一旦你尝试编码无效的AST,任何事情都可以。您可以获得自我不一致或无意义的程序。就像假设一个错误的陈述是真的允许你证明任何,如果你采用无效代码并允许它编译,就会产生任何数量的完全无意义的东西。