Disclaimer: I’m undoubtedly biased. You can find the original opinions in the thread “P2025R1: issues fixed?”, 13/05/2020 to 20/05/2020.
The wording consists of two major parts:
| package name.anton3.layout | |
| import java.util.* | |
| import kotlin.collections.ArrayList | |
| import kotlin.math.abs | |
| class Dummy | |
| fun readResource(name: String): String { | |
| return Dummy::class.java.classLoader.getResource(name)!!.readText() |
This paper provides an alternative abbreviated lambda expression syntax, as well as an alternative syntax for transparent functions, compared to [@P0573R2].
[@P0573R2] introduces a notion of transparent functions, which aim to behave as close as possible to as if their body was directly inserted into the caller (except that their arguments are only computed a single time).
| package name.anton3.vkapi.generator.json | |
| import com.fasterxml.jackson.annotation.JsonUnwrapped | |
| import com.fasterxml.jackson.core.JsonParser | |
| import com.fasterxml.jackson.databind.* | |
| import com.fasterxml.jackson.databind.deser.ContextualDeserializer | |
| import com.fasterxml.jackson.databind.deser.ResolvableDeserializer | |
| import com.fasterxml.jackson.databind.deser.std.StdDeserializer | |
| import com.fasterxml.jackson.databind.node.ObjectNode | |
| import com.fasterxml.jackson.databind.node.TreeTraversingParser |
| task<void> foo() { | |
| co_return uninlineable_mess(); | |
| } |
Typed throws annotation specifies that a function can only throw errors of a certain type:
| // Feature 1: @mixin extension | |
| struct Pizza { | |
| var containsCheese: Bool | |
| init(cheese: Bool) { ... } | |
| func prepare() { print(self) } | |
| } | |
| struct Margherita { | |
| var pizza: Pizza | |
| init() { pizza = Pizza(cheese: true) } |
Bitwise and arithmetic operators are very different, and their precedence relationship is not obvious.
This proposal re-architects guard case and if case grammar for unwrapping complex enumerations. It drops the case keyword from if and guard, replaces = with ~=, and introduces the := operator that combines declaration with assignment.