This is a tangent from the original question, but is __shared a planned feature? Or just experimental work?
Dave > On Dec 11, 2017, at 17:12, Slava Pestov <spes...@apple.com> wrote: > > Sorry, what I meant is that they make sense with our language model, but it’s > not surprising that it doesn’t work today. In any case, __shared is not yet > completely implemented or even designed, so it doesn’t matter. > > Slava > >> On Dec 11, 2017, at 2:05 PM, David Zarzycki <d...@znu.io> wrote: >> >> Hi Slava, >> >> Interesting. Did I make a mistake in my test then? Both __shared @escaping >> and __shared @autoclosure are failing below. >> >> Dave >> >>> On Dec 11, 2017, at 16:58, Slava Pestov via swift-dev <swift-dev@swift.org> >>> wrote: >>> >>> I think perhaps __shared @escaping and __shared @autoclosure should be OK. >>> You’re just passing the context as a +0 value instead of +1. Also __shared >>> varargs make sense for the same reason. But it’s not important to get that >>> working right now. >>> >>> The others look OK. >>> >>> Slava >>> >>>> On Dec 11, 2017, at 1:15 PM, David Zarzycki via swift-dev >>>> <swift-dev@swift.org> wrote: >>>> >>>> Hello! I’m trying to test which ParameterTypeFlags flag combinations are >>>> valid. I wrote the following test case. Are the results “as expected”, or >>>> are some of the failures incorrect? >>>> >>>> // RUN: %target-typecheck-verify-swift >>>> >>>> >>>> // >>>> // isVariadic is NOT compatible with any flag combinations >>>> // >>>> // expected-error@+1 {{@autoclosure must not be used on variadic >>>> parameters}} >>>> func v_and_autoclosure(arg : @autoclosure ()->()...) {} >>>> // expected-error@+1 {{@escaping attribute may only be used in function >>>> parameter position}} >>>> func v_and_escaping(arg : @escaping ()->()...) {} >>>> // expected-error@+1 {{'inout' must not be used on variadic parameters}} >>>> func v_and_inout(arg : inout Int...) {} >>>> // expected-error@+1 {{'__shared' must not be used on variadic parameters}} >>>> func v_and_shared(arg : __shared Int...) {} >>>> >>>> // >>>> // 'inout' is NOT compatible with remaining parameter flag combinations >>>> // >>>> // expected-error@+1 {{parameter must not have multiple '__owned', >>>> 'inout', '__shared', 'var', or 'let' specifiers}} >>>> func inout_and_shared(arg : inout __shared Int) {} >>>> // expected-error@+1 {{'inout' may only be used on parameters}} >>>> func inout_and_escaping(arg : @escaping inout ()->()) {} >>>> // expected-error@+1 {{@escaping attribute may only be used in function >>>> parameter position}} >>>> func escaping_and_inout(arg : inout @escaping ()->()) {} >>>> // expected-error@+1 {{@autoclosure may only be used on parameters}} >>>> func inout_and_autoclosure(arg : inout @autoclosure ()->()) {} >>>> // expected-error@+1 {{'inout' may only be used on parameters}} >>>> func autoclosure_and_inout(arg : @autoclosure inout ()->()) {} >>>> >>>> // >>>> // '__shared' is NOT compatible with remaining parameter flag combinations >>>> // >>>> // expected-error@+1 {{'__shared' may only be used on parameters}} >>>> func autoclosure_and_shared(arg : @autoclosure __shared ()->()) {} >>>> // expected-error@+1 {{@autoclosure may only be used on parameters}} >>>> func shared_and_autoclosure(arg : __shared @autoclosure ()->()) {} >>>> // expected-error@+1 {{'__shared' may only be used on parameters}} >>>> func escaping_and_shared(arg : @escaping __shared ()->()) {} >>>> // expected-error@+1 {{@escaping attribute may only be used in function >>>> parameter position}} >>>> func shared_and_escaping(arg : __shared @escaping ()->()) {} >>>> >>>> // >>>> // @autoclosure and @escaping are the only valid parameter flag >>>> combinations >>>> // >>>> func autoclosure_and_escaping(arg : @autoclosure @escaping ()->()) {} >>>> func escaping_and_autoclosure(arg : @escaping @autoclosure ()->()) {} >>>> _______________________________________________ >>>> swift-dev mailing list >>>> swift-dev@swift.org >>>> https://lists.swift.org/mailman/listinfo/swift-dev >>> >>> _______________________________________________ >>> swift-dev mailing list >>> swift-dev@swift.org >>> https://lists.swift.org/mailman/listinfo/swift-dev >> > _______________________________________________ swift-dev mailing list swift-dev@swift.org https://lists.swift.org/mailman/listinfo/swift-dev