Skip to content

References #6

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

Merged
merged 30 commits into from
Nov 9, 2022
Merged

References #6

merged 30 commits into from
Nov 9, 2022

Conversation

LukeMathWalker
Copy link
Owner

@LukeMathWalker LukeMathWalker commented Nov 9, 2022

I got a bit carried away while working on this.

This PR:

  • Ensures that we can safely resolved re-export items, no matter if they are reported directly (i.e. pub use hyper::Server), if a module is re-exported (i.e. pub use hyper::body), if the entire crate is re-exported (i.e. pub use hyper) or if a glob is used (i.e. pub use hyper::*). I hopefully don't have to touch this stuff again.
  • Implements basic support for immutable references, without taking borrow-checking into account (yet). If you ask for a reference, pavex will feed a reference to your function - even if you technically are not allowed to because the type has been moved before.
  • All tests now check that the code they generate compiles.

While working on this I found what looks like a bug in rustdoc (rust-lang/rust#104064) - it probably means we won't be able to handle primitive types until it's resolved, I haven't fully tested its ramifications.

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

@LukeMathWalker LukeMathWalker merged commit 9794880 into main Nov 9, 2022
@LukeMathWalker LukeMathWalker deleted the references branch November 9, 2022 09:50
LukeMathWalker added a commit that referenced this pull request Feb 14, 2023
* Improve error message

* Add test capturing the code that we'd like to compile.

* Make the test red. Now we need to make it pass.

* Parse shared references into a ResolvedType.

* Test is green!

* Add disclaimer to the generated code.

* Update snapshots.

* Add request scoped references to the test.

* Handle references.

* Introduce a `Constructor` enum that allows for inlineable transformations (i.e. transformations that do not map to a callable). We introduce a shared reference variant.

* Handle references to request scoped types.

* Test is green.

* Transient references, yay!

* Start trying to compile the generated code. Ouch.

* Import types from `pavex_runtime`

* Refactor `rustdoc` into multiple sub-modules.

* More docs.

* Add module docs. Refine visibility.

* Index via PackageSpec

* Rename methods. Pass collection as input to Crate::new

* Move package spec logic into a new constructor.

* _Almost_ back to green.

* Workaround a bug in Rustdoc.

* Fix all the "old" tests.

* Fix reference bug.

* Clean up the API for the rustdoc query module.

* Refactor type resolution in ResolvedPath.

* Tests are green again.

* Enforce that resolution of a type happens using a fully qualified path.

* Show off the example in the README.
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

Successfully merging this pull request may close these issues.

1 participant