diff --git a/src/config.go b/src/config.go new file mode 100644 index 0000000..1aa3275 --- /dev/null +++ b/src/config.go @@ -0,0 +1,9 @@ +package main + +var websiteLang = "https://argon.wbell.dev/" +var docs = "https://argon.wbell.dev/docs/" +var mainrepo = "https://github.com/Open-Argon/argon-v3" +var mainissuesPage = "https://github.com/Open-Argon/argon-v3/issues" +var fork = false +var forkrepo = "" +var forkissuesPage = "" diff --git a/src/main.go b/src/main.go index 2f0a21c..c46e91b 100644 --- a/src/main.go +++ b/src/main.go @@ -1,6 +1,7 @@ package main import ( + "fmt" "os" ) @@ -17,6 +18,26 @@ func newscope() ArObject { } func main() { + defer func() { + if r := recover(); r != nil { + fmt.Println("There was a fundamental error in argon v3 that caused it to crash.") + fmt.Println() + if fork { + fmt.Println("This is a fork of Open-Argon. Please report this to the fork's maintainer.") + fmt.Println("Fork repo:", forkrepo) + fmt.Println("Fork issue page:", forkissuesPage) + fmt.Println() + } else { + fmt.Println("Please report this to the Open-Argon team.") + fmt.Println("Main repo:", mainrepo) + fmt.Println("Issue page:", mainissuesPage) + fmt.Println() + } + fmt.Println("please include the following information:") + fmt.Println("panic:", r) + os.Exit(1) + } + }() initRandom() garbageCollect() global := makeGlobal() diff --git a/src/trycatch.go b/src/trycatch.go index 4d37bb5..3817ba1 100644 --- a/src/trycatch.go +++ b/src/trycatch.go @@ -28,9 +28,11 @@ func parseTryCatch(code UNPARSEcode, index int, codelines []UNPARSEcode) (TryCat return TryCatch{}, false, err, i } totalIndex += i - if index+totalIndex >= len(codelines) { - return TryCatch{}, false, ArErr{"Syntax Error", "expected catch statement", code.line, code.path, code.realcode, true}, i - } + /* + if index+totalIndex >= len(codelines) { + return TryCatch{}, false, ArErr{"Syntax Error", "expected catch statement", code.line, code.path, code.realcode, true}, i + } + */ catchtrimmed := strings.TrimSpace(codelines[index+totalIndex].code) if !catchCompiled.MatchString(catchtrimmed) { return TryCatch{}, false, ArErr{"Syntax Error", "invalid syntax", code.line, code.path, code.realcode, true}, i