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