Skip to content

Recursive structs #34

@snaffi

Description

@snaffi

Hi, this fix #26 didn't work with another type of recursive structs

Code

package main

import (
	"context"
	"flag"
	"log"
	"net/http"
	"os"

	"github.com/semrush/zenrpc"
)

type MyModelWithRef struct {
	Model *MyModel
}

type MyModel struct {
	List []*MyModelWithRef
}

type MyService struct{ zenrpc.Service }

func (s MyService) SomeMethod(ctx context.Context, model MyModel) error {
	return nil
}


//go:generate zenrpc

func main() {
	addr := flag.String("addr", "localhost:9999", "listen address")
	flag.Parse()

	rpc := zenrpc.NewServer(zenrpc.Options{ExposeSMD: true})
	rpc.Register("service", MyService{})
	rpc.Use(zenrpc.Logger(log.New(os.Stderr, "", log.LstdFlags)))

	http.Handle("/", rpc)

	log.Printf("starting on %s", *addr)
	log.Fatal(http.ListenAndServe(*addr, nil))
}

Error

Generator version: 1.0.1
Entrypoint: ./
runtime: goroutine stack exceeds 1000000000-byte limit
fatal error: stack overflow


Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions