Proto commits in bazelbuild/rules_kotlin

These 37 commits are when the Protocol Buffers files have changed:

Commit:661142b
Author:rbeazleyspot
Committer:GitHub

Add support for experimental treatInternalAsPrivate (#1248) * Add support for experimental treatInternalAsPrivate * Fix ktlint violations * Add experimental_use_public_only_abi_jars docs * Add option to tag rule as kt_public_only_in_abi_plugin_incompatible * Regenerate docs * Split treatInternalAsPrivate and removePrivateClasses flags * Add failure message

The documentation is generated from this commit.

Commit:d964c23
Author:Ben Lee
Committer:GitHub

Drop support for JavaScript (#1185) * Drop support for JavaScript * Remove more * More

Commit:f92d4b7
Author:Ben Lee
Committer:GitHub

Add support for KSP annotation processing via KspCompile (#955)

Commit:25d4c54
Author:Ben Lee
Committer:GitHub

Remove legacy Javac compilation (#694) * Enable experimental_use_abi_jars by default and remove legacy Javac compilation * Add back experimental_use_abi_jars and set it to true * Docs * Remove some unused code * Revert * Flip experimental_use_abi_jars back to false * Enable abi compilation in examples/android/bzl/BUILD.bazel and examples/jetpack_compose/BUILD

Commit:4990696
Author:Benjamin Peterson
Committer:GitHub

Fix typo. (#605)

Commit:89a082c
Author:Jonathan Gerrish
Committer:GitHub

Add support for Kotlin coverage (#508) * Add support for Kotlin coverage * Add tests for coverage support

Commit:cb7e9ce
Author:Jonathan Gerrish
Committer:GitHub

Kotlin Builder reduced classpath - experimental feature (#439) RELEASE NOTES: Adds `experimental_reduce_classpath_mode` to `kt_toolchain`. This is an experimental feature to leveraging jdeps to shrink the total classpath for kotlin compliation.

Commit:9e36fca
Author:Jonathan Gerrish
Committer:GitHub

Strict dependency checking and enforcement. (#438) * Rewire Jdeps so that legacy Jdeps processing (post processing the compiled output with the Sun JDeps tool) happens only on Java classes compiled by the KotlinBuilder. i.e: Java compilation when `experimental_use_abi_jars = False`. 1. Use the existing unused `--output_deps_proto` flag which mirrors the parameter used by the Bazel JavaBuilder, this is passed to the legacy JDepsGenerator. 2. Use a separate `java_classes` output dir to separate Kotlin compiler output from Java compiler output. The JDepsGenerator now only runs on `java_classes`. 3. Merge separate Kotlin + Java Jdeps just as is done already with the new `experimental_use_abi_jars = True` flow. * Fix test: Don't generate Jdeps when testing ABI only. * Strict Kotlin dependency checking/enforcement. RELNOTES: * Add experimental strict dependency checking and enforcement when `experimental_use_abi_jars` is enabled.

Commit:ce925ed
Author:Jonathan Gerrish
Committer:GitHub

Rework Jdeps (#435) * Jdeps generation compiler plugin * Fix failing tests by adding now mandatory jdeps builder parameter. Add new KotlinBuilderJvmJdepsTest. * Rewire Jdeps so that legacy Jdeps processing (post processing the compiled output with the Sun JDeps tool) happens only on Java classes compiled by the KotlinBuilder. i.e: Java compilation when `experimental_use_abi_jars = False`. 1. Use the existing unused `--output_deps_proto` flag which mirrors the parameter used by the Bazel JavaBuilder, this is passed to the legacy JDepsGenerator. 2. Use a separate `java_classes` output dir to separate Kotlin compiler output from Java compiler output. The JDepsGenerator now only runs on `java_classes`. 3. Merge separate Kotlin + Java Jdeps just as is done already with the new `experimental_use_abi_jars = True` flow. * Implement compiler extension logic to track used classes, along with corresponding jar paths * Fix test: Don't generate Jdeps when testing ABI only. * Clean up JdepsParserTest * Support unused direct dependencies * Kotlin compiler plugin emits Kind.UNUSED for unused direct dependencies * Legacy JDepsGenerator considers direct dependencies instead of whole classpath when determining Kind.UNUSED * Ignore Java source local to the target, only external classes should be considered for dependency tracking. * Support dependencies on inlined constants by pulling the import declarations from each file. This is important because by the time the ClassRemapper is able to process classes constant values have been inlined. This still leaves the possibility to miss such dependencies referenced directly by FQN but this refactoring allows us to now grab references during analysis stage so could be achieved parsing expression bodies here. * Fix merge Remove unused code Cache component between task execution and tear down between tests to prevent OOM error. Release Note: Add proper jdeps support for Kotlin Co-authored-by: Olivier Notteghem <oliviern@uber.com>

Commit:1f41e8f
Author:Jiayu Chen
Committer:GitHub

update (#434)

Commit:77b6458
Author:Jonathan Gerrish
Committer:GitHub

Stubs phase compiler plugins now works for JavaBuilder flow (#428)

Commit:2be75c0
Author:Jonathan Gerrish
Committer:GitHub

Rework Kotlin/Java build flow Separates kotlin and java compilation. Enable the new (and hopefully more performant) by adding experimental_use_java_builder=True on the toolchain.

Commit:95b642f
Author:Corbin McNeely-Smith
Committer:GitHub

Restingbull/compiler plugin rework (#393) * Add resources to android example Rework compiler plugins: * require ids * indicate which phase the plugin executes: stub and compile * include plugin dependencies * allow compiler plugins to be exported via the exported_compiler_plugins * allow "bash" substitutions for plugin arguments of working directories (anvil demonstrates) * Update bazel toolchains to 3.7

Commit:54c5ec8
Author:Corbin McNeely-Smith
Committer:GitHub

Add option rules for kotlinc and javac. (#383) * add option rules for kotlinc and javac. * Use repeated fields for all additional flags. * Fix incorrect boolean inverse on epDisableAllChecks * Update test to handle repeated flags.

Commit:53cd4b2
Author:Corbin McNeely-Smith
Committer:GitHub

Adds support to compile using kotlin abi and java ijars. (#294) * Add SkipCodeGen plugin for stopping the compilation process after the analysis phase * Add generate_jvm_service utility rule for embedding service definitions in a jar. * Add jvm-abi-gen and skip-code-gen plugins to the toolchain and tests. * Add skip-code-gen to the builder jar * Up the size the basic jvm test, as it times out occasionally with a full test run. * Add abijar to the builder for generating abis * Add logic to trigger abi generation in the compile command on both the toolchain (experimental_abi_compile=True) and commandline option (-define=experimental_abi_compile=1,0) * Builder supports building abis on request. * integrate build changes and rework the compilation error handling to flow better. * Restructured kt/java compilation for readability * Reworked the CompilationArgs to be more kotlinish * Split the basic jvm test to avoid timing out. Issue: issue/296 Issue: rules_kotlin/issues/296

Commit:484f116
Author:Ilja Kroonen
Committer:GitHub

Adds a kt_plugin rule (#308) Creates a `kt_compiler_plugin` rule to allow kotlin compiler plugins to be specified, and then included with a `plugins=` attribute on kt_jvm_* jobs. This should support arbitrary kotlin compiler plugins, such as the android extensions, open-for-testing, and others. This does _not_ add an exported_plugins infrastructure (such as you get with java_plugins), and it does not change the special-case handling of kapt. It also doesn't do anything to resolve plugin inter-0compatibilities (e.g. the ABI plugin possibly needing information from the parcelizable, or other such interactions) The latter are issues yet to be figured out int he kotlinc plugin infrastructure, and we'll adapt this rule as appropriate. Also adds docs and examples.

Commit:e234ac6
Author:Corbin McNeely-Smith
Committer:GitHub

Ensure that KotlionBuilder workers use a clean directory for each compilation. (#298) * Create WorkingDirectoryContext to handle compilation directory lifecycle. * Thread the working directory to all intermediate directories to ensure hermetic compilation. * Added test for worker hermiticity. * Restructured BazelWorker.kt for easier testing by pulling out the delegation invoker. * Changed the flag enums to be public and static. * Create KotlinBuilderTestComponent for retrieving configured instances for test. * Replaced the use of system user.dir with a more robust path usage. * Ensure js has a clean working area.

Commit:e8fd9ce
Author:Corbin McNeely-Smith
Committer:GitHub

Apply autoformatting to all files. (#302) Ran google java format, ktlint, and buildifier. Added .buildconfig to help standardize formatting.

Commit:b48c3f3
Author:hsyed
Committer:Hassan Syed

Kapt3 use processorpath and processors flags. remove gson usage.

Commit:a4e902d
Author:hsyed
Committer:Hassan Syed

consolate all srcs under src

Commit:303eefb
Author:Hassan Syed
Committer:GitHub

basic js support (#114) Experimental JS support.

Commit:78a2dc5
Author:hsyed
Committer:Hassan Syed

add debug setting and thread it to the builder via the toolchain

Commit:d62ca7d
Author:hsyed
Committer:Hassan Syed

merge task builder into kotlin builder and move task specific logic to executor class

Commit:4ec3449
Author:hsyed
Committer:Hassan Syed

split timing and trace into seperate flags and tidy up

Commit:97b1d49
Author:hsyed
Committer:Hassan Syed

various tidy ups and reorganizations (for a task-model and from the android and js branches)

Commit:42eceb7
Author:Hassan Syed
Committer:GitHub

Source jar (#100) add source jar generation to the builder and remove skylark version

Commit:8baf590
Author:hsyed
Committer:Hassan Syed

kotlin model changes

Commit:268a438
Author:hsyed
Committer:Hassan Syed

Keep the platform and rule type in destructured form in the compilation task.

Commit:f6e3010
Author:Hassan Syed
Committer:GitHub

Remove stdlib (#97) * ensure jar normalization * fix embed resources hash * make the hashing test local and add ij runconfig * remove kotlin_stdlib, refactor bootstrap macro, reorganize source to start working on a task model for the builder

Commit:001c1fc
Author:Hadrien Chauvin
Committer:hsyed

add support for code coverage

Commit:415ee0f
Author:hsyed
Committer:Hassan Syed

cherry pick directory structure from ic branch, refactor and document model.

Commit:ed8ff30
Author:hsyed
Committer:Hassan Syed

tidy ups

Commit:2d517f9
Author:Hassan Syed
Committer:hsyed

issue #69 friend support

Commit:4a41020
Author:hsyed
Committer:hsyed

huge refactor, performance improvments and bazel_deps

Commit:fe7e1b1
Author:hsyed
Committer:hsyed

test refactor and replace moshi with protobuf, start model proto file

Commit:a071dc4
Author:hsyed

reorganize builder packages

Commit:3208b17
Author:David Stanke

initial import from hsyed/rules_kotlin