From ff40ce294345de0ad1df0eb1989126ee02e18309 Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Mon, 7 Nov 2022 20:51:57 +0100 Subject: [PATCH] fix unknown type not handled and add go interface as recognizable type --- backend/parsers/windmill-parser-go/src/lib.rs | 21 ++++++++++++++++++- frontend/src/lib/infer.ts | 2 ++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/backend/parsers/windmill-parser-go/src/lib.rs b/backend/parsers/windmill-parser-go/src/lib.rs index 40c762ff7d..e198d5cfc8 100644 --- a/backend/parsers/windmill-parser-go/src/lib.rs +++ b/backend/parsers/windmill-parser-go/src/lib.rs @@ -99,6 +99,11 @@ fn parse_go_typ(typ: &parser_go_ast::Expr) -> (Option, Typ) { Typ::Object(typs), ) } + Expr::InterfaceType(_) => (Some("interface{}".to_string()), Typ::Object(vec![])), + Expr::MapType(_) => ( + Some("map[string]interface{}".to_string()), + Typ::Object(vec![]), + ), _ => (None, Typ::Unknown), } } @@ -122,7 +127,7 @@ package main import "fmt" -func main(x int, y string, z bool, l []string, o struct { Name string `json:"name"` }) { +func main(x int, y string, z bool, l []string, o struct { Name string `json:"name"` }, n interface{}, m map[string]interface{}) { fmt.Println("hello world") } @@ -172,6 +177,20 @@ func main(x int, y string, z bool, l []string, o struct { Name string `json:"nam default: None, has_default: false }, + Arg { + otyp: Some("interface{}".to_string()), + name: "n".to_string(), + typ: Typ::Object(vec![]), + default: None, + has_default: false + }, + Arg { + otyp: Some("map[string]interface{}".to_string()), + name: "m".to_string(), + typ: Typ::Object(vec![]), + default: None, + has_default: false + }, ] } ); diff --git a/frontend/src/lib/infer.ts b/frontend/src/lib/infer.ts index c0e0f357d4..6c7880db66 100644 --- a/frontend/src/lib/infer.ts +++ b/frontend/src/lib/infer.ts @@ -113,6 +113,8 @@ function argSigToJsonSchemaType( } else { newS.items = { type: 'string' } } + } else { + newS.type = 'object' } if (oldS.type != newS.type) { for (const prop of Object.getOwnPropertyNames(newS)) {