summaryrefslogtreecommitdiff
path: root/indra/lscript/lscript_compile/lscript_error.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/lscript/lscript_compile/lscript_error.cpp')
-rw-r--r--indra/lscript/lscript_compile/lscript_error.cpp77
1 files changed, 77 insertions, 0 deletions
diff --git a/indra/lscript/lscript_compile/lscript_error.cpp b/indra/lscript/lscript_compile/lscript_error.cpp
new file mode 100644
index 0000000000..0bc51a65ed
--- /dev/null
+++ b/indra/lscript/lscript_compile/lscript_error.cpp
@@ -0,0 +1,77 @@
+/**
+ * @file lscript_error.cpp
+ * @brief error reporting class and strings
+ *
+ * Copyright (c) 2002-$CurrentYear$, Linden Research, Inc.
+ * $License$
+ */
+
+#include "linden_common.h"
+
+#include "lscript_error.h"
+
+S32 gColumn = 0;
+S32 gLine = 0;
+S32 gInternalColumn = 0;
+S32 gInternalLine = 0;
+
+LLScriptGenerateErrorText gErrorToText;
+
+void LLScriptFilePosition::fdotabs(FILE *fp, S32 tabs, S32 tabsize)
+{
+ S32 i;
+ for (i = 0; i < tabs * tabsize; i++)
+ {
+ fprintf(fp, " ");
+ }
+}
+
+char *gWarningText[LSWARN_EOF] =
+{
+ "INVALID",
+ "Dead code found beyond return statement"
+};
+
+char *gErrorText[LSERROR_EOF] =
+{
+ "INVALID",
+ "Syntax error",
+ "Not all code paths return a value",
+ "Function returns a value but return statement doesn't",
+ "Return statement type doesn't match function return type",
+ "Global functions can't change state",
+ "Name previously declared within scope",
+ "Name not defined within scope",
+ "Type mismatch",
+ "Expression must act on LValue",
+ "Byte code assembly failed -- out of memory",
+ "Function call mismatches type or number of arguments",
+ "Use of vector or quaternion method on incorrect type",
+ "Lists can't be included in lists",
+ "Unitialized variables can't be included in lists",
+ "Declaration requires a new scope -- use { and }"
+};
+
+void LLScriptGenerateErrorText::writeWarning(FILE *fp, LLScriptFilePosition *pos, LSCRIPTWarnings warning)
+{
+ fprintf(fp, "(%d, %d) : WARNING : %s\n", pos->mLineNumber, pos->mColumnNumber, gWarningText[warning]);
+ mTotalWarnings++;
+}
+
+void LLScriptGenerateErrorText::writeWarning(FILE *fp, S32 line, S32 col, LSCRIPTWarnings warning)
+{
+ fprintf(fp, "(%d, %d) : WARNING : %s\n", line, col, gWarningText[warning]);
+ mTotalWarnings++;
+}
+
+void LLScriptGenerateErrorText::writeError(FILE *fp, LLScriptFilePosition *pos, LSCRIPTErrors error)
+{
+ fprintf(fp, "(%d, %d) : ERROR : %s\n", pos->mLineNumber, pos->mColumnNumber, gErrorText[error]);
+ mTotalErrors++;
+}
+
+void LLScriptGenerateErrorText::writeError(FILE *fp, S32 line, S32 col, LSCRIPTErrors error)
+{
+ fprintf(fp, "(%d, %d) : ERROR : %s\n", line, col, gErrorText[error]);
+ mTotalErrors++;
+}