fixed assertion failure in skslc SPIR-V output

Bug: oss-fuzz:13683
Change-Id: Ifceacb35417b1175b3d561c4f0f9794987a09ec3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/209162
Reviewed-by: Kevin Lubick <kjlubick@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
diff --git a/src/sksl/SkSLDefines.h b/src/sksl/SkSLDefines.h
index da226f47..21aa7a6 100644
--- a/src/sksl/SkSLDefines.h
+++ b/src/sksl/SkSLDefines.h
@@ -18,9 +18,9 @@
 #endif // SKSL_STANDALONE
 
 #ifdef SKSL_STANDALONE
-#define SkASSERT(x)
-#define SkAssertResult(x) x
-#define SkDEBUGCODE(x)
+#define SkASSERT(x) if (!(x)) abort();
+#define SkAssertResult(x) if (!(x)) abort();
+#define SkDEBUGCODE(...) __VA_ARGS__
 #else
 #include "SkTypes.h"
 #endif
diff --git a/src/sksl/SkSLSPIRVCodeGenerator.cpp b/src/sksl/SkSLSPIRVCodeGenerator.cpp
index c688594..c851db9 100644
--- a/src/sksl/SkSLSPIRVCodeGenerator.cpp
+++ b/src/sksl/SkSLSPIRVCodeGenerator.cpp
@@ -3201,7 +3201,10 @@
             main = entry.first;
         }
     }
-    SkASSERT(main);
+    if (!main) {
+        fErrors.error(0, "program does not contain a main() function");
+        return;
+    }
     for (auto entry : fVariableMap) {
         const Variable* var = entry.first;
         if (var->fStorage == Variable::kGlobal_Storage &&