skiptools / skiptools/skip

`if #unavailable(iOS 26.0)` transpiles to `if true`

Open
#516 5 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

transpilation
Dominant language
Swift
Stars
3.2k
Forks
106
Avg merge
6d 13h
Merged PRs (30d)
1

Description

iOS 26 provides a new .glassEffect() modifier, but you have to guard it behind if #available(iOS 26.0, *) blocks unless your app minimum version is iOS 26 or higher.

Unfortunately, #available knows nothing about Android; you can't write if #available(iOS 26.0, Android 34, *). As a result, the final * applies to Android; Skip Lite transpiles if #available(iOS 26.0, *) as simply if true.

But, to my surprise and alarm, if #unavailable(iOS 26.0) also transpiles to if true. I claim it should transpile to if false instead.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Search the transpiler for the handling of Swift #available and #unavailable conditions, then trace how the Android fallback represented by the final * is interpreted. Add coverage for if #unavailable(iOS 26.0) and verify that it transpiles to if false rather than if true.

Written by the indexing model from the issue text.

Assessment

Tech stack
swift
Domain
compilers
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.