From 965f939967566815f4e29c57c0bb3a4b158bdc6b Mon Sep 17 00:00:00 2001 From: Lea Anthony Date: Fri, 8 Sep 2023 12:03:55 +1000 Subject: [PATCH] Fix parser/generator tests --- v3/internal/parser/parser.go | 18 +++++++------ .../testdata/function_single/bindings_main.js | 27 ++++++------------- v3/pkg/application/messageprocessor.go | 2 +- v3/pkg/application/messageprocessor_call.go | 4 +-- .../application/messageprocessor_clipboard.go | 4 +-- .../messageprocessor_contextmenu.go | 2 +- v3/pkg/application/messageprocessor_dialog.go | 4 +-- v3/pkg/application/messageprocessor_events.go | 4 +-- .../application/messageprocessor_screens.go | 2 +- v3/pkg/application/messageprocessor_system.go | 2 +- v3/pkg/application/messageprocessor_window.go | 4 +-- 11 files changed, 32 insertions(+), 41 deletions(-) diff --git a/v3/internal/parser/parser.go b/v3/internal/parser/parser.go index b1ef5152..6aacc530 100644 --- a/v3/internal/parser/parser.go +++ b/v3/internal/parser/parser.go @@ -400,15 +400,17 @@ func (p *Project) parseBoundStructMethods(name string, pkg *ParsedPackage) error var alias *uint32 var err error // Check for the text `wails:methodID ` - for _, docstring := range funcDecl.Doc.List { - if strings.Contains(docstring.Text, "//wails:methodID") { - idString := strings.TrimSpace(strings.TrimPrefix(docstring.Text, "//wails:methodID")) - parsedID, err := strconv.ParseUint(idString, 10, 32) - if err != nil { - return fmt.Errorf("invalid value in `wails:methodID` directive: '%s'. Expected a valid uint32 value", idString) + if funcDecl.Doc != nil { + for _, docstring := range funcDecl.Doc.List { + if strings.Contains(docstring.Text, "//wails:methodID") { + idString := strings.TrimSpace(strings.TrimPrefix(docstring.Text, "//wails:methodID")) + parsedID, err := strconv.ParseUint(idString, 10, 32) + if err != nil { + return fmt.Errorf("invalid value in `wails:methodID` directive: '%s'. Expected a valid uint32 value", idString) + } + alias = lo.ToPtr(uint32(parsedID)) + break } - alias = lo.ToPtr(uint32(parsedID)) - break } } id, err := hash.Fnv(fqn) diff --git a/v3/internal/parser/testdata/function_single/bindings_main.js b/v3/internal/parser/testdata/function_single/bindings_main.js index 0a156d14..c9a4675b 100644 --- a/v3/internal/parser/testdata/function_single/bindings_main.js +++ b/v3/internal/parser/testdata/function_single/bindings_main.js @@ -2,28 +2,17 @@ // Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL // This file is automatically generated. DO NOT EDIT -function GreetService(method) { - return { - packageName: "main", - serviceName: "GreetService", - methodName: method, - args: Array.prototype.slice.call(arguments, 1), - }; -} - -/** - * GreetService.Greet - * Greet someone - * @param name {string} - * @returns {Promise} - **/ -function Greet(name) { - return wails.Call(GreetService("Greet", name)); -} window.go = window.go || {}; window.go.main = { GreetService: { - Greet, + + /** + * GreetService.Greet + * Greet someone + * @param name {string} + * @returns {Promise} + **/ + Greet: function(name) { wails.CallByID(1411160069, ...Array.prototype.slice.call(arguments, 0)); }, }, }; diff --git a/v3/pkg/application/messageprocessor.go b/v3/pkg/application/messageprocessor.go index c06d7b21..f5fb9b72 100644 --- a/v3/pkg/application/messageprocessor.go +++ b/v3/pkg/application/messageprocessor.go @@ -140,7 +140,7 @@ func (m *MessageProcessor) HandleRuntimeCallWithIDs(rw http.ResponseWriter, r *h case systemRequest: m.processSystemMethod(method, rw, r, targetWindow, params) default: - m.httpError(rw, "Unknown runtime call: %s", object) + m.httpError(rw, "Unknown runtime call: %d", object) } } diff --git a/v3/pkg/application/messageprocessor_call.go b/v3/pkg/application/messageprocessor_call.go index c7b52306..4dd3b41b 100644 --- a/v3/pkg/application/messageprocessor_call.go +++ b/v3/pkg/application/messageprocessor_call.go @@ -26,7 +26,7 @@ func (m *MessageProcessor) callCallback(window *WebviewWindow, callID *string, r func (m *MessageProcessor) processCallMethod(method int, rw http.ResponseWriter, r *http.Request, window *WebviewWindow, params QueryParams) { args, err := params.Args() if err != nil { - m.httpError(rw, "Unable to parse arguments: %s", err) + m.httpError(rw, "Unable to parse arguments: %s", err.Error()) return } callID := args.String("call-id") @@ -76,7 +76,7 @@ func (m *MessageProcessor) processCallMethod(method int, rw http.ResponseWriter, }() m.ok(rw) default: - m.httpError(rw, "Unknown call method: %s", method) + m.httpError(rw, "Unknown call method: %d", method) } } diff --git a/v3/pkg/application/messageprocessor_clipboard.go b/v3/pkg/application/messageprocessor_clipboard.go index 289e9d4f..7aae8e7e 100644 --- a/v3/pkg/application/messageprocessor_clipboard.go +++ b/v3/pkg/application/messageprocessor_clipboard.go @@ -18,7 +18,7 @@ func (m *MessageProcessor) processClipboardMethod(method int, rw http.ResponseWr args, err := params.Args() if err != nil { - m.httpError(rw, "Unable to parse arguments: %s", err) + m.httpError(rw, "Unable to parse arguments: %s", err.Error()) return } @@ -37,7 +37,7 @@ func (m *MessageProcessor) processClipboardMethod(method int, rw http.ResponseWr m.text(rw, text) m.Info("Runtime Call:", "method", "Clipboard."+clipboardMethods[method], "text", text) default: - m.httpError(rw, "Unknown clipboard method: %s", method) + m.httpError(rw, "Unknown clipboard method: %d", method) return } diff --git a/v3/pkg/application/messageprocessor_contextmenu.go b/v3/pkg/application/messageprocessor_contextmenu.go index edd5fb2a..30e8c05c 100644 --- a/v3/pkg/application/messageprocessor_contextmenu.go +++ b/v3/pkg/application/messageprocessor_contextmenu.go @@ -32,7 +32,7 @@ func (m *MessageProcessor) processContextMenuMethod(method int, rw http.Response window.openContextMenu(&data) m.ok(rw) default: - m.httpError(rw, "Unknown contextmenu method: %s", method) + m.httpError(rw, "Unknown contextmenu method: %d", method) } m.Info("Runtime:", "method", "ContextMenu."+contextmenuMethodNames[method]) diff --git a/v3/pkg/application/messageprocessor_dialog.go b/v3/pkg/application/messageprocessor_dialog.go index 0120db22..7f831488 100644 --- a/v3/pkg/application/messageprocessor_dialog.go +++ b/v3/pkg/application/messageprocessor_dialog.go @@ -43,7 +43,7 @@ func (m *MessageProcessor) processDialogMethod(method int, rw http.ResponseWrite args, err := params.Args() if err != nil { - m.httpError(rw, "Unable to parse arguments: %s", err) + m.httpError(rw, "Unable to parse arguments: %s", err.Error()) return } dialogID := args.String("dialog-id") @@ -164,7 +164,7 @@ func (m *MessageProcessor) processDialogMethod(method int, rw http.ResponseWrite m.Info("Runtime:", "method", methodName, "options", options) default: - m.httpError(rw, "Unknown dialog method: %s", method) + m.httpError(rw, "Unknown dialog method: %d", method) } } diff --git a/v3/pkg/application/messageprocessor_events.go b/v3/pkg/application/messageprocessor_events.go index 3cd37dcb..cebc9ff8 100644 --- a/v3/pkg/application/messageprocessor_events.go +++ b/v3/pkg/application/messageprocessor_events.go @@ -20,7 +20,7 @@ func (m *MessageProcessor) processEventsMethod(method int, rw http.ResponseWrite case EventsEmit: err := params.ToStruct(&event) if err != nil { - m.httpError(rw, "Error parsing event: %s", err) + m.httpError(rw, "Error parsing event: %s", err.Error()) return } if event.Name == "" { @@ -31,7 +31,7 @@ func (m *MessageProcessor) processEventsMethod(method int, rw http.ResponseWrite globalApplication.Events.Emit(&event) m.ok(rw) default: - m.httpError(rw, "Unknown event method: %s", method) + m.httpError(rw, "Unknown event method: %d", method) return } diff --git a/v3/pkg/application/messageprocessor_screens.go b/v3/pkg/application/messageprocessor_screens.go index 52f7caa9..e178d22b 100644 --- a/v3/pkg/application/messageprocessor_screens.go +++ b/v3/pkg/application/messageprocessor_screens.go @@ -41,7 +41,7 @@ func (m *MessageProcessor) processScreensMethod(method int, rw http.ResponseWrit } m.json(rw, screen) default: - m.httpError(rw, "Unknown screens method: %s", method) + m.httpError(rw, "Unknown screens method: %d", method) } m.Info("Runtime:", "method", "Screens."+screensMethodNames[method]) diff --git a/v3/pkg/application/messageprocessor_system.go b/v3/pkg/application/messageprocessor_system.go index a7cc44e1..c94b9ff1 100644 --- a/v3/pkg/application/messageprocessor_system.go +++ b/v3/pkg/application/messageprocessor_system.go @@ -18,7 +18,7 @@ func (m *MessageProcessor) processSystemMethod(method int, rw http.ResponseWrite case SystemIsDarkMode: m.json(rw, globalApplication.IsDarkMode()) default: - m.httpError(rw, "Unknown system method: %s", method) + m.httpError(rw, "Unknown system method: %d", method) } m.Info("Runtime:", "method", "System."+systemMethodNames[method]) diff --git a/v3/pkg/application/messageprocessor_window.go b/v3/pkg/application/messageprocessor_window.go index c643beee..9d06e278 100644 --- a/v3/pkg/application/messageprocessor_window.go +++ b/v3/pkg/application/messageprocessor_window.go @@ -74,7 +74,7 @@ func (m *MessageProcessor) processWindowMethod(method int, rw http.ResponseWrite args, err := params.Args() if err != nil { - m.httpError(rw, "Unable to parse arguments: %s", err) + m.httpError(rw, "Unable to parse arguments: %s", err.Error()) return } @@ -252,7 +252,7 @@ func (m *MessageProcessor) processWindowMethod(method int, rw http.ResponseWrite window.SetZoom(*zoomLevel) m.ok(rw) default: - m.httpError(rw, "Unknown window method id: %s", method) + m.httpError(rw, "Unknown window method id: %d", method) } m.Info("Runtime:", "method", "Window."+windowMethodNames[method])