[swift-evolution] [Pitch] Remove type-inference for stored property

Vladimir.S svabox at gmail.com
Fri Apr 7 06:07:42 CDT 2017

On 07.04.2017 10:21, Daniel Duan via swift-evolution wrote:
> Hi all,
> In a discussion about inferring parameter types from default value,
> Slava brought up some performance problems caused by type inference for
> stored properties in side types:
> https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20170313/033882.html
>  Towards the end, the post mentioned that some Swift team members
> contemplated requiring types for stored properties in type declarations.
> I think this idea deserves some more attention. Hence this last minute
> idea-floating.
> In addition to solving a performance headache in implementation,
> there're always the general benefit of making type declartion more
> explicit and readable (clarity for reader should out-weigh pleasure of
> the author). Making the language slightly more consistent (we are not
> inferring types for default parameter values in function anyways).
> The cons for doing this are obvious too: the inference makes the
> language feels more friendly and is, undoubtedly, a beloved feature for
> many. This would be a source breaking change.
> Just thought I'd float the idea to gather some quick reaction. What do
> y'all think?

Although it seems like only an implementation-side problem(i.e. "let's just 
improve implementation"), I see a benefits to require type for stored 
property *if* it is not obvious what the type is for *reader*. I.e. if we 
have something like this, I don't think we should require a type:
struct S {
   var x = 0

but I do think it will be better to require a type in such cases :

struct S{
   var x = something(SomeType(), 123, "123") // can be generic func

> Daniel Duan _______________________________________________
> swift-evolution mailing list swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution

More information about the swift-evolution mailing list