KEMBAR78
switch to custom compose compiler due to CMP-7505 by shishkin-pavel · Pull Request #2293 · JetBrains/compose-multiplatform-core · GitHub
Skip to content

Conversation

@shishkin-pavel
Copy link

@shishkin-pavel shishkin-pavel commented Aug 7, 2025

patched compiler plugin generates additional stubs (1 or 2) for every @Composable function that has at least one default parameter for value class internal/private constructor(baseVal: ...) (internal/private constructor is important)

for every such default argument we are creating stubs where those args are marked nullable, thats where new public api comes from: one old function could be topped with one or two similarly-looking stubs

in some later kotlin/compose version we would leave only one "right" signature (with deprecation cycle), but currently that approach is the only one that preserves compatibility
Fixes CMP-7505

Testing

manual testing + test in compose compiler tests
This should be tested by QA

Release Notes

Fixes - Multiple Platforms

  • Fix "IrLinkageError: Function can not be called: No function found for symbol"

@sekater sekater self-requested a review August 7, 2025 12:59

// Create configuration that we'll use to load Compose compiler plugin
val configuration = project.configurations.create(COMPILER_PLUGIN_CONFIGURATION)
// Add Compose compiler plugin to kotlinPlugin configuration, making sure it works
Copy link
Collaborator

@igordmn igordmn Aug 7, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Release Notes
N/A

As we fix a bug, it should contain "Fixes - Multiplatform" "Fix IrLinkageError: Function can not be called: No function found for symbol"

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

updated description

// Create configuration that we'll use to load Compose compiler plugin
val configuration = project.configurations.create(COMPILER_PLUGIN_CONFIGURATION)
// Add Compose compiler plugin to kotlinPlugin configuration, making sure it works
// for Playground builds as well
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

An open thread until comments from #2290 are resolved

handler.maven {
url("https://storage.googleapis.com/r8-releases/raw")
content {
includeModule("com.android.tools", "r8")
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A QA should be added only for reviewing cherry-pick PRs

@igordmn igordmn removed the request for review from sekater August 7, 2025 13:40
@shishkin-pavel shishkin-pavel merged commit d480514 into jb-main Aug 7, 2025
13 of 14 checks passed
@shishkin-pavel shishkin-pavel deleted the shish/CMP-7505/jb-main branch August 7, 2025 13:51
shishkin-pavel added a commit that referenced this pull request Aug 7, 2025
patched compiler plugin generates additional stubs (1 or 2) for every
`@Composable` function that has at least one default parameter for value
class <A> internal/private constructor(baseVal: ...) (internal/private
constructor is important)

for every such default argument we are creating stubs where those args
are marked nullable, thats where new public api comes from: one old
function could be topped with one or two similarly-looking stubs

in some later kotlin/compose version we would leave only one "right"
signature (with deprecation cycle), but currently that approach is the
only one that preserves compatibility
Fixes [CMP-7505](https://youtrack.jetbrains.com/issue/CMP-7505)

manual testing + test in compose compiler tests
This should be tested by QA

- Fix IrLinkageError: Function can not be called: No function found for
symbol ([CMP-7505](https://youtrack.jetbrains.com/issue/CMP-7505)).
shishkin-pavel added a commit that referenced this pull request Aug 7, 2025
apidump update + remove ExperimentalMaterial3ExpressiveApi
sekater added a commit that referenced this pull request Aug 7, 2025
shishkin-pavel added a commit that referenced this pull request Aug 19, 2025
shishkin-pavel added a commit that referenced this pull request Aug 20, 2025
shishkin-pavel added a commit that referenced this pull request Aug 21, 2025
shishkin-pavel added a commit that referenced this pull request Aug 21, 2025
shishkin-pavel added a commit that referenced this pull request Aug 21, 2025
shishkin-pavel added a commit that referenced this pull request Aug 21, 2025
shishkin-pavel added a commit that referenced this pull request Aug 21, 2025
shishkin-pavel added a commit that referenced this pull request Aug 26, 2025
patched compiler plugin generates additional stubs (1 or 2) for every
`@Composable` function that has at least one default parameter for value
class <A> internal/private constructor(baseVal: ...) (internal/private
constructor is important)

for every such default argument we are creating stubs where those args
are marked nullable, thats where new public api comes from: one old
function could be topped with one or two similarly-looking stubs

in some later kotlin/compose version we would leave only one "right"
signature (with deprecation cycle), but currently that approach is the
only one that preserves compatibility
Fixes [CMP-7505](https://youtrack.jetbrains.com/issue/CMP-7505)

manual testing + test in compose compiler tests
This should be tested by QA

- Fix IrLinkageError: Function can not be called: No function found for
symbol ([CMP-7505](https://youtrack.jetbrains.com/issue/CMP-7505)).
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.

3 participants