Code Monkey home page Code Monkey logo

Comments (5)

jpearll avatar jpearll commented on August 17, 2024 2

Just to share that I've found the simple workaround to embed the external interface (from another package), to a local interface (same package) that is getting referenced by weaver.Implement. The code generation works fine.

from weaver.

spetrovic77 avatar spetrovic77 commented on August 17, 2024 1

Thanks for reporting. Yes, we made a conscious decision not to support implementations of out-of-package interfaces, at least for now. @mwhittaker will have more state on this.

from weaver.

mwhittaker avatar mwhittaker commented on August 17, 2024 1

Hi @ghazimuharam! Here's the code in weaver generate that disallows a struct from implementing a component interface outside its package:

if cn.Obj().Pkg() != g.tset.pkg.Types {
g.errorf(spec.Pos(), "weaver.Implements argument %s is a type outside the current package.", g.tset.typeString(cn))
return
}

As Srdjan said, this was a conscious decision. I don't remember exactly why we made this decision; it might have just been a simplifying assumption for our initial release. Let me think harder about whether there's any disadvantages to allowing a component implementation to be in a separate package from its component interface. If there's none, I can take a stab at relaxing the restriction!

from weaver.

ghazimuharam avatar ghazimuharam commented on August 17, 2024 1

Thank you, @spetrovic77 and @mwhittaker, for responding to my issue. As this appears to be a result of conscious decisions, I understand that I may need to wait for further clarification. However, please do not hesitate to reach out if you require any help from me. In the meantime, I will try to familiarize myself with the entire repository.

from weaver.

mwhittaker avatar mwhittaker commented on August 17, 2024

We explored the idea of allowing component interfaces and implementations to be in separate packages in #282 but ultimately decided to disallow it. In #285, we're updating an error message to suggest @jpearll's workaround.

from weaver.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.