Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

allow circular require #120

Open
daurnimator opened this issue Aug 26, 2018 · 5 comments
Open

allow circular require #120

daurnimator opened this issue Aug 26, 2018 · 5 comments

Comments

@daurnimator
Copy link

You can have interfaces that include each other:

interface foo
    bar: bar
end
interface bar
    foo: foo
end

However if I want to split that into two files (say, foo.tld and bar.tld), then tlc fails with type error, circular require

@mascarenhas
Copy link
Collaborator

The problem is that a Typed Lua require maps to a Lua require, and Lua does not allow circular module references. A possible solution would be for the Typed Lua compiler to notice when a module is only being required for its types (its members are only referenced in type declarations), and not emit a require in the generated Lua file for that case. The compiler would also need to defer the circular require error until the module doing the offending require has been analyzed and it knows whether this is a runtime require or not.

@daurnimator
Copy link
Author

I feel like require here needs to act more like include

@mascarenhas
Copy link
Collaborator

Do you mean source file inclusion? Lua (and by extension Typed Lua) cannot really have circular requires with the way its modules work, so the exception would really have to be for modules that are required just for their types.

@daurnimator
Copy link
Author

This was in reference to .tld files.

@mascarenhas
Copy link
Collaborator

Sorry, saw that part only now!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants