Commit Graph

13 Commits

Author SHA1 Message Date
Jordan Rose
1d03915dfc Make sure static vars in protocols don't get mutating setters.
Static members are never mutating, and having them be mutating in protocols
resulted in requirement mismatches.

rdar://problem/19887250

Swift SVN r25593
2015-02-27 04:54:01 +00:00
Dmitri Hrybenko
3b04d1b013 tests: reorganize tests so that they actually use the target platform
Most tests were using %swift or similar substitutions, which did not
include the target triple and SDK.  The driver was defaulting to the
host OS.  Thus, we could not run the tests when the standard library was
not built for OS X.

Swift SVN r24504
2015-01-19 06:52:49 +00:00
David Farler
7d316d100a Improve diagnostics for static stored properties
Append "did you mean 'static'?" when hitting the unimplemented class
stored properties diagnostic in a class context.

Provide a fix-it for typing "static final" in a class, which is
redundant.

Swift SVN r24358
2015-01-11 02:16:58 +00:00
David Farler
567fd12e80 Don't allow 'class final' spelled stored properties in classed
The previous patch to allow static class stored properties
inadvertently allowed 'class final' spellings for static
stored properties in classes. This patch only allows 'static'
spellings to create the global storage.

Swift SVN r24323
2015-01-09 20:40:36 +00:00
David Farler
3530e542ca Static class stored properties
rdar://problem/19422120

Allow static/class final stored properties to get through to the
mangled global property implementations.

Swift SVN r24303
2015-01-09 09:54:18 +00:00
David Farler
87c3d7421f Refine static func and var syntax
rdar://problem/17198298

- Allow 'static' in protocol property and func requirements, but not 'class'.
- Allow 'static' methods in classes - they are 'class final'.
- Only allow 'class' methods in classes (or extensions of classes)
- Remove now unneeded diagnostics related to finding 'static' in previously banned places.
- Update relevant diagnostics to make the new rules clear.

Swift SVN r24260
2015-01-08 03:03:29 +00:00
Chris Lattner
a048b078e3 Implement: <rdar://problem/16181314> don't require immediate initialization of 'let' values
... now that we have an exquisitely shaved yak.

This provides a simple and uniform model for "let" constants: they are always either
immediately initialized in their declaration, or they are initialized dynamically
exactly once before any use.  

This is a simple generalization of our current model for initializers, but enables
the use of let constants in more cases in local context, e.g. patterns like this:

   let x : SomeThing

   if condition {
     x = foo()
   } else {
     x = bar()
   }
   use(x)

Previously this would have to be declared a "var" for no good reason: the value is
only ever initialized, never actually mutated.

The implementation of this is reasonably straight-forward now that the infrastructure
is in place: Sema treats 'let' constants as "settable" if they lack an initializer
(either in the declaration or in a non-PBD binding).  This exposes them as an lvalue
at the AST level.  SILGen then lowers these things to an alloc_stack, and DI enforces
the "initialization only" requirement that it already enforces for uninitialized 'let'
properties in structs/classes.



Swift SVN r23916
2014-12-13 07:17:44 +00:00
Denis Vnukov
ffbed6979d Fix for rdar://problem/18990358 (Fuzzing swift: Swift verifier crashes).
Having VarDecl created with IsStatic=false and then modifying it to true later seems 
fragile, e.g. in this bug this attribute was not properly set because of early-outs. 
In this patch I just moved code fixing VarDecl, but in future we should consider 
making this flag immutable and initializing it on creation.



Swift SVN r23406
2014-11-18 16:02:28 +00:00
Doug Gregor
da32b678a1 Allow class/static properties to overload instance properties rdar://problem/18409106.
Swift SVN r22166
2014-09-22 06:14:07 +00:00
Chris Lattner
91e658488a fix <rdar://problem/17200672> Let in protocol causes unclear errors and crashes
We were correctly rejecting 'let' decls in a protocol if it had a get/set specifier,
but not if a stored let.


Swift SVN r19034
2014-06-20 05:08:54 +00:00
Chris Lattner
c02489c57f Enable support for class properties in protocols.
This fixes <rdar://problem/16953517> Class properties should be allowed in protocols, even without stored class properties



Swift SVN r18345
2014-05-18 20:17:20 +00:00
Ted Kremenek
fad874708e Adjust test cases.
Swift SVN r17964
2014-05-12 22:01:52 +00:00
Dmitri Hrybenko
571c9b3c5e Split 'type' keyword into 'static' and 'class'
rdar://15911697


Swift SVN r13908
2014-02-14 14:50:32 +00:00