// Return true if the given access is on a 'let' lvalue. static bool isLetAccess(const AccessedStorage &storage, SILFunction *F) { if (auto *decl = dyn_cast_or_null<VarDecl>(storage.getDecl(F))) return decl->isLet(); // It's unclear whether a global will ever be missing it's varDecl, but // technically we only preserve it for debug info. So if we don't have a decl, // check the flag on SILGlobalVariable, which is guaranteed valid, if (storage.getKind() == AccessedStorage::Global) return storage.getGlobal()->isLet(); return false; }