summaryrefslogtreecommitdiffstats
path: root/source
diff options
context:
space:
mode:
Diffstat (limited to 'source')
-rw-r--r--source/core/slang-signal.cpp9
-rw-r--r--source/core/slang-signal.h2
-rw-r--r--source/slang/slang-api.cpp6
3 files changed, 17 insertions, 0 deletions
diff --git a/source/core/slang-signal.cpp b/source/core/slang-signal.cpp
index 4ae75eb0e..8a7690351 100644
--- a/source/core/slang-signal.cpp
+++ b/source/core/slang-signal.cpp
@@ -6,6 +6,8 @@
namespace Slang
{
+thread_local String g_lastSignalMessage;
+
static const char* _getSignalTypeAsText(SignalType type)
{
switch (type)
@@ -54,6 +56,8 @@ String _getMessage(SignalType type, char const* message)
printf("%s\n", _getMessage(type, message).getBuffer());
}
+ g_lastSignalMessage = _getMessage(type, message);
+
#if SLANG_HAS_EXCEPTIONS
switch (type)
{
@@ -75,4 +79,9 @@ String _getMessage(SignalType type, char const* message)
#endif
}
+const char* getLastSignalMessage()
+{
+ return g_lastSignalMessage.getBuffer();
+}
+
} // namespace Slang
diff --git a/source/core/slang-signal.h b/source/core/slang-signal.h
index 356ae42f6..b71b27581 100644
--- a/source/core/slang-signal.h
+++ b/source/core/slang-signal.h
@@ -35,6 +35,8 @@ enum class SignalType
::Slang::handleSignal(::Slang::SignalType::AbortCompilation, msg)
+const char* getLastSignalMessage();
+
} // namespace Slang
#endif
diff --git a/source/slang/slang-api.cpp b/source/slang/slang-api.cpp
index 18d2a5083..e510fc9a2 100644
--- a/source/slang/slang-api.cpp
+++ b/source/slang/slang-api.cpp
@@ -3,6 +3,7 @@
#include "../core/slang-performance-profiler.h"
#include "../core/slang-rtti-info.h"
#include "../core/slang-shared-library.h"
+#include "../core/slang-signal.h"
#include "../slang-record-replay/record/slang-global-session.h"
#include "../slang-record-replay/util/record-utility.h"
#include "slang-capability.h"
@@ -173,6 +174,11 @@ SLANG_API SlangResult slang_createGlobalSessionWithoutCoreModule(
return SLANG_OK;
}
+SLANG_API const char* slang_getLastInternalErrorMessage()
+{
+ return Slang::getLastSignalMessage();
+}
+
SLANG_API void spDestroySession(SlangSession* inSession)
{
if (!inSession)