1*28613242SJonas Devlieghere //===-- Lua.cpp -----------------------------------------------------------===// 2*28613242SJonas Devlieghere // 3*28613242SJonas Devlieghere // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*28613242SJonas Devlieghere // See https://llvm.org/LICENSE.txt for license information. 5*28613242SJonas Devlieghere // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*28613242SJonas Devlieghere // 7*28613242SJonas Devlieghere //===----------------------------------------------------------------------===// 8*28613242SJonas Devlieghere 9*28613242SJonas Devlieghere #include "Lua.h" 10*28613242SJonas Devlieghere #include "llvm/Support/FormatVariadic.h" 11*28613242SJonas Devlieghere 12*28613242SJonas Devlieghere using namespace lldb_private; 13*28613242SJonas Devlieghere 14*28613242SJonas Devlieghere llvm::Error Lua::Run(llvm::StringRef buffer) { 15*28613242SJonas Devlieghere int error = 16*28613242SJonas Devlieghere luaL_loadbuffer(m_lua_state, buffer.data(), buffer.size(), "buffer") || 17*28613242SJonas Devlieghere lua_pcall(m_lua_state, 0, 0, 0); 18*28613242SJonas Devlieghere if (!error) 19*28613242SJonas Devlieghere return llvm::Error::success(); 20*28613242SJonas Devlieghere 21*28613242SJonas Devlieghere llvm::Error e = llvm::make_error<llvm::StringError>( 22*28613242SJonas Devlieghere llvm::formatv("{0}\n", lua_tostring(m_lua_state, -1)), 23*28613242SJonas Devlieghere llvm::inconvertibleErrorCode()); 24*28613242SJonas Devlieghere // Pop error message from the stack. 25*28613242SJonas Devlieghere lua_pop(m_lua_state, 1); 26*28613242SJonas Devlieghere return e; 27*28613242SJonas Devlieghere } 28