Commit Graph

1935 Commits

Author SHA1 Message Date
Joe Groff
f0c2ce454d Sema: Reject objc-ness in extensions to CF types.
CF types don't have real class objects (yet...), so there's nowhere to introduce ObjC metadata for methods or protocol conformance. Let's reject them in Sema. It's still reasonable to extend CF types with pure Swift methods, and this works now. <rdar://problem/17569520>

Swift SVN r19589
2014-07-07 00:03:35 +00:00
Chris Lattner
ece48b07aa update test for @objc diagnostics change.
Swift SVN r19570
2014-07-04 17:26:33 +00:00
Chris Lattner
7a56499d61 Start making @objc not start with an @ sign:
- Change the parser to accept "objc" without an @ sign as a contextual
   keyword, including the dance to handle the general parenthesized case.
 - Update all comments to refer to "objc" instead of "@objc".
 - Update all diagnostics accordingly.
 - Update all tests that fail due to the diagnostics change.
 - Switch the stdlib to use the new syntax.

This does not switch all tests to use the new syntax, nor does it warn about
the old syntax yet.  That will be forthcoming.  Also, this needs a bit of 
refactoring, which will be coming up.



Swift SVN r19555
2014-07-04 05:57:57 +00:00
Jordan Rose
40e9cd8e43 Check 'public(set)' modifiers a little more.
- Setters cannot (in this release) have more accessibility than getters.
- The modifiers don't make sense for constants and read-only vars/subscripts.

Swift SVN r19548
2014-07-04 01:53:48 +00:00
Jordan Rose
61d12a314f Add a test for local enum == synthesis.
Along the way, fix AST printing for PatternBindingDecls that contain no
variables.

Swift SVN r19520
2014-07-03 17:45:37 +00:00
Ted Kremenek
d075f06573 Require a minimum deployment target of iOS 7 or OSX 10.9
Implements <rdar://problem/17532113>

Swift SVN r19451
2014-07-02 06:23:38 +00:00
Manman Ren
2b2330bf5b [attribute] rename @noinline to @inline(never).
Add support for parsing inline(never), it can be easily expanded to
handle inline(always).

rdar://17527111


Swift SVN r19447
2014-07-02 01:27:05 +00:00
Chris Lattner
f241c66cd7 implement <rdar://problem/17473876> @IBOutlet attribute shouldn't make properties implicitly optional or weak
Now the @IBOutlet attribute has no implicit effect on the type or storage of a property.  It still performs
validity checks of course.


Swift SVN r19344
2014-06-30 15:54:24 +00:00
Nadav Rotem
92d8688983 Add the @semantics attribute.
The @semantics attribute allows the stdlib to mark some functions as
having a specific semantics. The optimizer can use this information
to optimize the code.



Swift SVN r19328
2014-06-30 05:52:46 +00:00
Joe Groff
fc392cc942 Sema: Strip out inout conversion constraint systems.
JoeP helped tweak things to ensure that pointer conversions are still
considered, but we no longer need the disjunction on InOutExprs to accommodate
user-defined inout conversions.

This causes some regressions in error reporting:

<rdar://problem/17489983> inout type mismatches complain about '@lvalue inout T'
<rdar://problem/17489894> inout not rejected as operand to assignment operator

Swift SVN r19306
2014-06-27 21:50:33 +00:00
Joe Groff
cb48fbd24b Enable pointer conversions.
Swift SVN r19274
2014-06-26 23:26:31 +00:00
Joe Pamer
a314db950e Remove another point of non-determinism while tracking failed constraints, and use this as an opportunity to improve certain diagnostics. (rdar://problem/16808495)
Swift SVN r19244
2014-06-26 19:48:48 +00:00
Doug Gregor
9210cd5ff4 Replace T[] array syntax with [T] in the test suite
Swift SVN r19192
2014-06-25 23:39:24 +00:00
Manman Ren
863138ead7 [noinline diagnostic] allow noinline on Func Decl only.
Also move noinline attribute to use the new infrastructure i.e SIMPLE_DECL_ATTR,
per feedback from Dmitri.

rdar://15882816


Swift SVN r19188
2014-06-25 23:17:43 +00:00
Joe Groff
121798aa84 Make ConstUnsafePointer and AutoreleasingUnsafePointer representable in ObjC.
As well as *UnsafePointer<Void>.

Swift SVN r19161
2014-06-25 16:37:33 +00:00
Jordan Rose
20bc9ec2b9 Add accessibility printing, and test the accessibility inference so far.
Swift SVN r19144
2014-06-24 21:32:15 +00:00
Jordan Rose
f6912b431b Validate which decls can have accessibility attributes.
Swift SVN r19141
2014-06-24 21:32:06 +00:00
Jordan Rose
deaa0a1497 Parse @private, @internal, @public, and the (set) variants of each.
This does no validation of the access control modifiers.

As part of this commit, note that "virtual" attributes may actually be
written in the source under another spelling. Update a few other parts of
the source to account for that.

Swift SVN r19140
2014-06-24 21:32:03 +00:00
Jordan Rose
c6226159c5 Allow class properties to be @objc, and expose them as class methods.
<rdar://problem/17164696>

Swift SVN r19117
2014-06-24 01:23:02 +00:00
Chris Lattner
fbcebcfbe8 allow 'strong' to work with optional qualified reference types as well,
fixing the case Jordan noted in:
<rdar://problem/16954464> Cannot make a strong IBOutlet


Swift SVN r18913
2014-06-15 20:07:03 +00:00
Joe Pamer
ef75f7283a Take first steps towards eliminating un-substituted type variables from our diagnostic output.
Swift SVN r18750
2014-06-09 17:49:43 +00:00
Chris Lattner
2dc1df52d1 Implement <rdar://problem/16954464> Cannot make a strong IBOutlet
This adds support for the "strong" ownership modifier, and specifically 
make it override the "implicit weak" behavior of @IBOutlet.



Swift SVN r18737
2014-06-08 20:49:21 +00:00
Jordan Rose
acda73702d @IBOutlet can only be applied to mutable properties.
Swift SVN r18373
2014-05-19 00:11:21 +00:00
Chris Lattner
fba6b33d71 Fix <rdar://problem/16953061> String outlet crashing in silgen
When type checking a patternbindingdecl with an initializer, we check the
initializer expression, then apply the inferred type to the pattern.  This
works except that we get down to a NamedPattern, see that it has various
attributes on it (e.g. iboutlet, weak) that affect the type of the pattern,
and we weren't re-propaging it back out through the pattern.  Do that.



Swift SVN r18355
2014-05-18 21:29:39 +00:00
Chris Lattner
f29866ef9a rework processing of @IBOutlet's to default to being weak implicit optionals, now that
we can represent such a thing.  

This fixes: <rdar://problem/16655091> @IBOutlet should imply ImplicitlyUnwrappedOptional+weak by default




Swift SVN r18320
2014-05-18 06:10:04 +00:00
Chris Lattner
6d84785e52 Substantially rework how weak pointers are represented in the AST and
at the SIL level.  Now, the referent type of a WeakStorageType is always
an optional type, instead of always being the underlying reference.  This
allows us to represent both optional types.  Before, both of these had the
same AST representation of WeakStorageType(T):

  weak var x : T?
  weak var x : T!

which doesn't work.  Now we represent the optional type explicitly in the
AST and at SIL level.  This also significantly simplifies a bunch of code
that was ripping off the optional type and resynthesizing it in other places,
and makes SILGen of weak pointers much more straight-forward by eliminating
the need for emitRefToOptional and emitOptionalToRef entirely (see the diffs
in test/SILGen/weak).

Weak pointers still have problems, but this is a big step forward.


Swift SVN r18312
2014-05-18 04:53:35 +00:00
Joe Groff
b34abd4d8d Diagnose @objc_block types that aren't representable in ObjC.
We can't compile blocks that aren't representable in ObjC, and they wouldn't be very useful, so reject them. Fixes <rdar://problem/16746132>.

Swift SVN r18171
2014-05-16 04:19:32 +00:00
Joe Groff
3c505753ad Test that @objc inference rejects methods that take non-@objc-able closure parameters.
A closure can only be bridged if its arguments and returns can. Make the diagnostic for non-bridgeable function types a bit more precise too.

Swift SVN r18166
2014-05-16 03:24:30 +00:00
Joe Groff
6b74826898 Improve diagnostic for @UIApplication mixed with top-level code.
Drop a note in the source file containing the top-level code to make it easier to navigate to (and avoid hardcoding the magic "main.swift" name).

Swift SVN r18093
2014-05-15 01:14:59 +00:00
Joe Groff
6e13190f47 Diagnose when @UIApplicationMain tries to coexist with a main.swift file.
Swift SVN r18072
2014-05-14 16:10:29 +00:00
Joe Groff
d3f7c1374e Allow @objc on local-scope classes.
Now that runtime class names are mangled we should be able to safely allow local classes to be @objc without unduly polluting the class namespace. <rdar://problem/16844347>

Swift SVN r18064
2014-05-14 05:31:28 +00:00
Joe Groff
09d8d68099 Allow at most one main class per module.
Register valid @UIApplicationMain classes with the enclosing module, and diagnose when we see more than one.

Swift SVN r18061
2014-05-14 04:40:30 +00:00
Joe Groff
067f810be6 Parse and do basic checking for @UIApplicationMain.
Introduce the UIApplicationMain attribute, and check that it's only applied to nongeneric classes that conform to UIApplicationDelegate.

Swift SVN r18048
2014-05-14 01:06:52 +00:00
Ted Kremenek
fad874708e Adjust test cases.
Swift SVN r17964
2014-05-12 22:01:52 +00:00
Chris Lattner
2eb92598a7 move test/basic/attr to test/attr, and move the sole name binding test in test/basic/lookup to the test/NameBinding
directory.  We now have no basic tests, just advanced ones :-)



Swift SVN r17941
2014-05-12 16:48:41 +00:00