wasm: fix error reporting

This commit is contained in:
Neemek 2025-03-20 19:46:58 +01:00
parent 3fb978638f
commit 18d64656a2
Signed by: neemek
GPG key ID: 28360A8951CD0E9B

View file

@ -55,7 +55,8 @@ func jsErrorOfString(err string) interface{} {
func run(_ js.Value, args []js.Value) interface{} { func run(_ js.Value, args []js.Value) interface{} {
source := args[0].String() source := args[0].String()
outputHandler := args[1] outputHandler := args[1]
resolver := args[2] errorHandler := args[2]
resolver := args[3]
log.Printf("got source: %s", source) log.Printf("got source: %s", source)
lexer := core.NewLexer(source) lexer := core.NewLexer(source)
@ -72,13 +73,21 @@ func run(_ js.Value, args []js.Value) interface{} {
tree, err := parser.Parse() tree, err := parser.Parse()
if err != nil { if err != nil {
return jsErrorOfString(err.Error()) var e core.ParsingError
if errors.As(err, &e) {
errorHandler.Invoke(e.Format([]rune(source)))
return nil
}
errorHandler.Invoke(err.Error())
return nil
} }
log.Printf("Parsed tree: %s", tree.String()) log.Printf("Parsed tree: %s", tree.String())
compiler := core.NewCompiler([]rune(source)) compiler := core.NewCompiler([]rune(source))
log.Printf("Set imports resolver", tree.String())
compiler.SetImportsResolver(&JsResolver{ compiler.SetImportsResolver(&JsResolver{
resolver, resolver,
}) })
@ -91,6 +100,13 @@ func run(_ js.Value, args []js.Value) interface{} {
err = compiler.Compile(tree) err = compiler.Compile(tree)
if err != nil { if err != nil {
var e core.CompilerError
if errors.As(err, &e) {
errorHandler.Invoke(e.Format())
return nil
}
errorHandler.Invoke(err.Error())
return nil return nil
} }