| 338 | } |
| 339 | |
| 340 | static void appendSpecialForms( |
| 341 | bytedance::bolt::FunctionSignatureMap& signatureMap, |
| 342 | const std::string& specialForms) { |
| 343 | auto specialFormNames = splitNames(specialForms); |
| 344 | for (const auto& [name, signatures] : kSpecialForms) { |
| 345 | if (specialFormNames.count(name) == 0) { |
| 346 | LOG(INFO) << "Skipping special form: " << name; |
| 347 | continue; |
| 348 | } |
| 349 | std::vector<std::shared_ptr<const bytedance::bolt::exec::FunctionSignature>> |
| 350 | rawSignatures; |
| 351 | for (const auto& signature : signatures) { |
| 352 | rawSignatures.push_back(signature); |
| 353 | } |
| 354 | signatureMap.insert({name, std::move(rawSignatures)}); |
| 355 | } |
| 356 | } |
| 357 | |
| 358 | /// Returns if `functionName` with the given `argTypes` is deterministic. |
| 359 | /// Returns true if the function was not found or determinism cannot be |
no test coverage detected