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

Implement Jdeps using K2 APIs #1166

Open
wants to merge 4 commits into
base: master
Choose a base branch
from

Conversation

jbarr21
Copy link
Contributor

@jbarr21 jbarr21 commented Apr 26, 2024

This PR adds support for running Jdeps when compiling with K2 (#843).

High level list of changes:

  • Enable K2 tests in paramaterized test class
  • Compile rules_kotlin with Kotlin 2.0 since we require fixes that were made that aren't in K2 preview of v1.9.23
  • Comment out providing the JS standard lib since as of Kotlin 2.0, only a KLIB is shipped & there is no support (klib dependencies support #808)
  • Add JdepsGenExtension2 which leverages FirAdditionalCheckers plugin extension to collect info from the FIR tree
  • Since we don't control instantiation of the checkers, we use the ClassUsageRecorder object to manage collection of AST info
  • The deps info in ClassUsageRecorder is init in the registrar & dumped to a proto on the ClassFileFactoryFinalizerExtension callback since there is no longer a onAnalysisCompleted callback in K2
  • Deps info is collected through various declaration & expression checkers using 3 main types FirClassSymbol, FirTypeRef, & ConeKotlinType which is then pushed into the ClassUsageRecorder so that supertypes & type args can also be collected, if necessary
  • Update the JdepsGenComponentRegistrar to invoke K1 or K2 impl based on language version set in the kotlinc configuration

Note to reviewers: Tests on CI will likely fail until the Kotlin JS std lib for 2.0 issue is properly sorted out
Screenshot 2024-04-26 at 12 05 46 PM

@restingbull
Copy link
Collaborator

This generally looks fine, but I would prefer to wait until the dependencies are out of RC.

Additionally, we have some concerns about backwards compatibility -- I am looking to setup several older version test for our CI.

@Bencodes
Copy link
Collaborator

@jbarr21 Kotlin 2.0 is officially out, are you able to push this PR forward using the official release?

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.

None yet

3 participants