Skip to content

Instantly share code, notes, and snippets.

A summary of previous discussions on P2025

Objections to the proposal

Disclaimer: I’m undoubtedly biased. You can find the original opinions in the thread “P2025R1: issues fixed?”, 13/05/2020 to 20/05/2020.

1. The proposed language rules are too complex.

The wording consists of two major parts:

Anton3 / layout_generator.kt
Last active March 12, 2020 00:07
Needs "books.txt" in the resources directory. Try experimenting with weights on line 136
package name.anton3.layout
import java.util.*
import kotlin.collections.ArrayList
import kotlin.math.abs
class Dummy
fun readResource(name: String): String {

Alternative abbreviated lambdas


This paper provides an alternative abbreviated lambda expression syntax, as well as an alternative syntax for transparent functions, compared to [@P0573R2].

Motivation and scope

[@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).

Alias expressions


Alias expressions allow setting up a constructed object before returning it from a function or passing it as a function argument, while incurring no copies or moves.


Sometimes we want to create an object, set it up and return it.

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
Anton3 / after_inlining.cpp
Created July 25, 2019 19:31
Inlining coroutines
task<void> foo() {
co_return uninlineable_mess();
Anton3 /
Last active February 18, 2017 13:21
Draft of "Typed throws" proposal

Allow Type Annotation on Throws


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) }

Feature name


Bitwise and arithmetic operators are very different, and their precedence relationship is not obvious.

Simplifying guard case/if case syntax

  • Proposal: TBD
  • Author: Erica Sadun
  • Status: TBD
  • Review manager: TBD


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.