fix(desktop): disable method/marking/static ProGuard optimization

The smoke test discovered that ProGuard's method/marking/static pass
converts kmp-tor's AsyncFs.of() from instance to static. The JVM
then throws IncompatibleClassChangeError at launch because callers
still use invokevirtual.

Also updates smoke-test-desktop.yml trigger: runs on any PR touching
desktopApp/ (not just build config files).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
nrobi144
2026-05-19 09:48:01 +03:00
parent c0c055e771
commit 487dd3f2ac
2 changed files with 10 additions and 14 deletions
+3 -12
View File
@@ -1,20 +1,11 @@
# ⚠️ WARNING: Before merging, change the trigger back to workflow_dispatch only.
# The pull_request trigger is temporary so we can validate this workflow on the PR
# and attach run results as proof-of-work. Production trigger should be:
#
# on:
# workflow_dispatch:
# pull_request:
# paths:
# - 'desktopApp/build.gradle.kts'
# - 'desktopApp/compose-rules.pro'
# - '.github/workflows/smoke-test-desktop.yml'
#
name: Desktop Smoke Test
on:
workflow_dispatch:
pull_request:
paths:
- 'desktopApp/**'
- '.github/workflows/smoke-test-desktop.yml'
permissions:
contents: read
+7 -2
View File
@@ -121,9 +121,14 @@
# Reason: Type 'okio/BufferedSource' is not assignable to
# 'okio/RealBufferedSource'.
#
# Disabling just this sub-pass keeps merging, inlining, peephole and
# Disabling just these sub-passes keeps merging, inlining, peephole and
# dead-code optimizations on. Everything else in `optimize` stays.
-optimizations !method/specialization/returntype
#
# `method/marking/static` converts instance methods to static when they
# don't reference `this`. kmp-tor's `AsyncFs.of()` is called via
# invokevirtual; after ProGuard marks it static the JVM throws
# IncompatibleClassChangeError at launch (discovered by CI smoke test).
-optimizations !method/specialization/returntype,!method/marking/static
# ============================================================================
# Desktop-only: Jackson mobile module does not ship Jackson on Android