Quantum64
12/09/2022, 11:51 AMFirExpressionResolutionExtensiondmitriy.novozhilov
12/09/2022, 11:54 AMYoussef Shoaib [MOD]
12/09/2022, 1:19 PMaddNewImplicitReceiversdmitriy.novozhilov
12/09/2022, 1:21 PMaddNewImplicitReceiversdmitriy.novozhilov
12/09/2022, 1:22 PMFirExpressionResolutionExtensionQuantum64
12/09/2022, 2:04 PMdmitriy.novozhilov
12/09/2022, 2:07 PMfoo(a, b)
// ---->
foo(
    run {
        someCallback()
        bar(a)
    },
    b
)someCallback()Quantum64
12/09/2022, 2:09 PMYoussef Shoaib [MOD]
12/09/2022, 2:10 PMQuantum64
12/09/2022, 2:10 PMdmitriy.novozhilov
12/09/2022, 2:10 PMQuantum64
12/09/2022, 2:12 PMdmitriy.novozhilov
12/09/2022, 2:12 PMI mean, do you not have this issue already with the variable assignment transformer?Assignment transformer is extremely restricted. Well right now it's not that restricted, but we will change it to disallow changing arguments in any way
dmitriy.novozhilov
12/09/2022, 2:13 PMSo overload selection happens at some point after the arguments are resolved right? Can we not run transformers before that? (But after the arguments are resolved)Not always. Regular arguments are resolved before resolution of call itself. But lambdas and callable references are resolved after candidate for containing call is already chosen
Youssef Shoaib [MOD]
12/09/2022, 2:15 PMQuantum64
12/09/2022, 2:16 PMQuantum64
12/09/2022, 2:19 PMdmitriy.novozhilov
12/09/2022, 2:20 PMWhat about theThis one is very restricted as well (and part of my colleagues thinks that we shouldn't implement this feature at all, because it goes against all our resolution rules)resolverOverloadResolutuonByLambdaReturnType
dmitriy.novozhilov
12/09/2022, 2:29 PMin this way could enable auto-boxing of union types implemented with sealed interfacesI think this specific usecase will be solved when we introduce real union-types in the language itself. This is one of most important features which will we work on after K2 release
Quantum64
12/09/2022, 2:31 PMdmitriy.novozhilov
12/09/2022, 2:31 PMdmitriy.novozhilov
12/09/2022, 2:37 PMI think users installing compilers plugins should know what they are signing up forIt is correct for small projects where all code is owned by 1-3 people But there might be problems in big projects, which may live more than one specific person work on it. So it is discusable topic too I understand your concerns, but during language design we should consider all users, problems and benefits for each (at least each popular) user (and project) type
Quantum64
12/09/2022, 2:49 PMdmitriy.novozhilov
12/09/2022, 3:08 PMYoussef Shoaib [MOD]
12/09/2022, 3:23 PMraulraja
12/09/2022, 6:59 PMFirFileQuantum64
12/10/2022, 3:12 AMraulraja
12/10/2022, 12:45 PMFirElement.transformFirElement.transformChildrenFirStatusTransformerExtensionFirAdditionalCheckersExtensionYoussef Shoaib [MOD]
12/10/2022, 1:10 PMFirExpressionResolutionExtension.addNewImplicitReceiversFirSession.register()raulraja
12/10/2022, 3:56 PMFirExpressionResolutionExtensiondmitriy.novozhilov
12/10/2022, 4:25 PMraulraja
12/10/2022, 5:12 PMquotesinline def assert(inline expr: Boolean): Unit =
  ${ assertImpl('expr) } // the ' is a quote that captures the expr arg at compile time
def assertImpl(expr: Expr[Boolean])(using Quotes) = '{
  if !$expr then
    throw AssertionError(s"failed assertion: ${${ showExpr(expr) }}")
}BooleanExpr[Boolean]assertImplExpr[Boolean]Expr[_]Type[_]Diagnostics"${+expression} + 1".call