重命名
重命名符号(textDocument/rename,在 VS Code 中按 F2)会依据项目索引和编辑器中打开的文件,修改整个项目中所有写出该符号名称的位置。clice refactor rename 在命令行中运行同一套引擎;其文档页面详细说明了重命名的关联范围,以及哪些情况会被拒绝。
修改内容
重命名会修改符号的声明、定义和所有使用位置,并同时重命名必须与它保持同名的符号。
跨文件重命名
重命名函数会修改项目中该函数的声明、定义和每一处调用;宏内写出的名称保持不变,并在消息中指出
重命名的关联范围
重命名类会同时重命名其构造函数和析构函数,重命名模板会同时重命名其特化,重命名虚函数会同时重命名覆盖它的函数
重命名宏
重命名宏会修改定义它的 #if 各分支中的 #define、保护默认定义的 #ifndef,以及它的每一处使用(无论是作为另一个宏的实参,还是写在另一个宏的宏体中);由 ## 拼接而成的使用保持不变,并在消息中指出
重命名模板中的依赖名
在模板中,依赖模板参数的调用若被已索引的实例化解析到被重命名的方法,也会重命名;若被另一个实例化解析到另一个同名方法,重命名会中止;若没有任何实例化解析它,则保持不变并在消息中指出
Objective-C 名称
重命名 Objective-C 的类、协议、分类(category)或实例变量会修改每一处写出该名称的位置
拒绝重命名的情况
无法重命名的符号或不合适的新名称都会被拒绝,并说明原因。
不允许重命名的名称
在运算符、系统头文件中的符号或宏、编译命令定义的宏、各次实例化解析到多个符号的名称,或构造函数调用的括号上触发重命名时,会提示无法重命名的原因;光标不在任何名称上时,不执行任何操作
不允许使用的新名称
若新名称不是合法标识符、是关键字、在同一作用域内已被占用,或是宏名,重命名会被拒绝并说明原因;形成函数重载或使用保留名称时会执行重命名并发出警告;成员可以使用同级派生类成员的名称
不允许使用的新宏名
宏没有作用域:已被项目中的符号、宏或 #ifdef 使用的新名称会被拒绝,defined 同样会被拒绝;使用保留名称时会执行重命名并发出警告
Objective-C 方法与属性
重命名 Objective-C 的方法或属性会被拒绝并说明原因
方法的选择器(selector)对应其消息可能发往的所有同名方法,属性则对应其存取方法以及它合成的实例变量;由属性合成的实例变量没有可供重命名的声明。
