Commit Graph

1918 Commits

Author SHA1 Message Date
Joe Pamer
a17cec6cb2 Some test and diagnostic cleanup:
- Mine conjunction constraints for constraint failure data. (rdar://problem/16833763)
- Rather than crash, add a diagnostic to signify a missing user constraint. (rdar://problem/16747055) I don't have a deterministic repro for this to include as a test, but users hit it from time to time, I'd like to address this issue holistically, and we're hoping that the new diagnostic will help us collect isolated repros.
- As promised, remove the temporary "compiler_submit_version" build configuration predicate in time for WWDC. (rdar://problem/16380797)

Swift SVN r17705
2014-05-08 18:46:08 +00:00
Chris Lattner
d500e40dc7 Fix <rdar://problem/16843747> Disallow a single semicolon to be used as the only statement within a switch case
go back to disallowing ; in switch statements, people should use break
for empty statements.  It is much more explicit and obvious what you mean.




Swift SVN r17662
2014-05-08 01:08:51 +00:00
Dmitri Hrybenko
69464ac0a2 Parser/code completion: don't drop code completion bits
rdar://16813332

Swift SVN r17630
2014-05-07 14:53:02 +00:00
Chris Lattner
8f9aeecd9c implement <rdar://problem/16835718> Ban multiple trailing closures
Swift SVN r17606
2014-05-07 05:42:26 +00:00
Chris Lattner
40a8fda572 inline hasExprCallSuffix into its two callers now that it is trivial. NFC.
Swift SVN r17605
2014-05-07 05:31:24 +00:00
Chris Lattner
d2a604ab66 Remove trailing closure parsing from 'parseExprCallSuffix'. This is
leftovers from one of the old selector syntaxes.  The general expression
suffix parsing loop handles trailing closures in a superset of the cases
that this code does.  NFC.


Swift SVN r17604
2014-05-07 05:30:00 +00:00
Joe Groff
05c80a8fe9 AST: Avoid instantiating all members when implicit destructors are inserted into classes.
We were accidentally forcing all members of a class to be instantiated in two places:

- by trying to look up an existing destructor decl in the class, and
- by adding the implicit destructor to the class, because addMember needlessly called loadAllMembers.

Fix the former problem by adding a 'has destructor' bit to ClassDecl so we can track whether the implicit destructor needs to be added without querying its members. Fix the latter by making IterableDeclContext::addMember not call loadAllMembers, and making loadAllMembers not barf when it sees existing members in the context.

Together with Jordan and JoeP's changes, this makes many interpreter tests now compile 3-20x faster.

Swift SVN r17562
2014-05-06 20:30:08 +00:00
Argyrios Kyrtzidis
717966f579 [Parser] Emit error + fixit if 'inout' appears after the parameter.
Swift SVN r17518
2014-05-06 01:39:35 +00:00
Chris Lattner
fcb3b0e98c Rework capture list parsing and generalize it. Now the preparse is
much fuzzier, and the real parse is stricter.  Also, generalize this
to support the full "unowned name = expr" syntax in the capture list.

There is still a lot missing here.



Swift SVN r17499
2014-05-05 23:53:53 +00:00
Doug Gregor
03066701e7 Type parsing: don't create the identifier '_'; use Identifier().
Swift SVN r17453
2014-05-05 16:36:35 +00:00
Chris Lattner
0bab49db70 use consumeIdentifier a bit more to simplify parser logic, NFC.
Swift SVN r17452
2014-05-05 16:32:14 +00:00
Chris Lattner
d230228cdd store the capture list of a ClosureExpr in the AST and print it out
in the AST dumper.


Swift SVN r17451
2014-05-05 16:25:33 +00:00
Chris Lattner
ad0e63b15e fix <rdar://problem/16189360> [DF] Assert on subscript with variadic parameter
When rebuilding accesser parameter lists, make sure not to drop varargs
information.


Swift SVN r17448
2014-05-05 15:34:04 +00:00
Argyrios Kyrtzidis
dfa772de8b [AST] Set the source range of ParamDecl as the argument+parameter range and keep track of its parent pattern.
Swift SVN r17441
2014-05-05 15:14:31 +00:00
Chris Lattner
c24991cff6 Fix <rdar://problem/16798323> Following a 'break' statment by another statement on a new line result in an error/fit-it
Introduce a small amount of whitespace sensitivity into break/continue parsing
so that we don't consider an identifier on the next line to be a label.



Swift SVN r17439
2014-05-05 14:53:57 +00:00
Chris Lattner
92af326a15 generalize consumeIdentifier to work with self and Self. Use it in a few
more places to simplify code.  NFC.


Swift SVN r17438
2014-05-05 14:48:56 +00:00
Chris Lattner
502e663e23 inline parsePatternIdentifier into its only caller, and simplify the result.
Swift SVN r17407
2014-05-04 23:14:15 +00:00
Doug Gregor
eb7a9144a8 Bring keyword arguments to subscripts.
Subscript declarations were still encoding the names of index
variables in the subscript type, which unintentionally made them
keyword arguments. Bring subscript declarations into the modern day,
using compound names to encode the subscript argument names, which
provides consistency for the keyword-argument world
<rdar://problem/14462349>. Note that arguments in subscripts default
to not being keyword arguments, which seems like the right default.

We now get keyword arguments for subscripts, so one can overload
subscripts on the names of the indices, and distinguish at the call
site. Under -strict-keyword-arguments, we require strictness here as well.

The IRGen/IDE/SILGen test updates are because the mangling of common
subscripts changed from accidentally having keyword arguments to not
having keyword arguments.

Swift SVN r17393
2014-05-04 19:31:09 +00:00
Chris Lattner
1262105e61 Start parsing capture lists in closure expressions. Still much work
to go.



Swift SVN r17367
2014-05-04 05:39:22 +00:00
Chris Lattner
8f444a4a61 simplify some parsing logic by using Token::isIdentifierOrNone more,
and rearrange some closure parsing logic to tidy it up, NFC.


Swift SVN r17363
2014-05-04 04:42:53 +00:00
Chris Lattner
d83289cb49 the 'destructor' keyword got renamed to 'deinit' a long time ago, remove
parsing and fixit support for 'destructor'.


Swift SVN r17361
2014-05-04 04:28:25 +00:00
Chris Lattner
bf666142b8 Finish <rdar://problem/16688592> Change "-> Self" syntax, and introduce a new "convenience" context sensitive keyword
This rejects the "-> Self" syntax and provides a fixit for the new syntax.


Swift SVN r17358
2014-05-04 04:09:42 +00:00
Chris Lattner
2427e36ff8 Introduce a new "convenience" context sensitive keyword, which can only be
used on init decls, with the same semantics as "-> Self".  Switch the ast
printer, and fixits to use it.

As driveby's, simplify verification of contextual keywords in declparsing,
and rename parseConstructor/Destructor to parseInit/Deinit.


Swift SVN r17356
2014-05-04 04:02:32 +00:00
Joe Groff
3b4a9d2ba5 Add a 'conditionallyUnreachable' builtin.
This builtin only becomes unreachable when assert_configuration calls have been folded, allowing library-level checks to become unreachable based on the assert level.

Swift SVN r17322
2014-05-03 19:41:40 +00:00
Chris Lattner
1a422e0c6e Make the parser reject (with a fixit) use of the @weak/@unowned attributes,
pointing people to use the context sensitive keywords instead. 

This completes:
<rdar://problem/16782966> make weak and unowned be context sensitive keywords



Swift SVN r17300
2014-05-03 01:18:22 +00:00
Manman Ren
7140f46889 [SILParser] teach SILParser to handle multiple results when looking up a member of an enum.
When enum is defined inside a class, looking up a member of the enum can return
multiple results, one of them is the enum itself. Teach SILParser to find
the correct result.

rdar://16764223


Swift SVN r17292
2014-05-03 00:07:35 +00:00
Ted Kremenek
4e70269c53 More renaming 'unchecked optional' to 'implicitly unwrapped optional'.
Swift SVN r17236
2014-05-02 06:22:01 +00:00
Chris Lattner
b3133da827 Parse weak/unowned/unowned(safe)/unowned(unsafe) as context sensitive keywords.
This is part of <rdar://problem/16782966> make weak and unowned be context sensitive keywords

The part still missing is where we ban the attribute with a fixit to use the
non-attribute syntax.



Swift SVN r17235
2014-05-02 06:21:44 +00:00
Ted Kremenek
050fd53af7 Rename UncheckedOptional to ImplicitlyUnwrappedOptional.
Swift SVN r17232
2014-05-02 06:13:57 +00:00
Argyrios Kyrtzidis
2442d063ef [IDE] Fix syntax annotation crash with #if blocks that are missing an #endif.
rdar://16785562

Swift SVN r17231
2014-05-02 06:12:05 +00:00
Chris Lattner
029fe4f3af fix <rdar://problem/16792027> compiler infinite loops on a really really mutating function
by restructuring context sensitive keywords a bit.


Swift SVN r17228
2014-05-02 05:43:37 +00:00
Chris Lattner
0f6c01a6e8 factor a test for decl contextual keywords out into a helper function. NFC.
Swift SVN r17227
2014-05-02 04:33:35 +00:00
Doug Gregor
f3977e3f03 Introduce @NSManaged attribute with basic semantic analysis.
We're still missing a number of checks here, as well as the
functionality to turn @NSManaged properties into computed properties.

Swift SVN r17166
2014-05-01 18:55:32 +00:00
Doug Gregor
3d3ff6811a Add a pile of missing #includes exposed by pruning includes in top-of-tree LLVM.
Swift SVN r17157
2014-05-01 14:26:34 +00:00
Doug Gregor
9cfb1b5ca4 Keep track of the locations of the element names in a TupleExpr.
As part of this, use tail allocation to reduce the memory footprint of
TupleExprs. Use factory methods to make it easier to construct.

I'll be using this information in a follow-on patch. SourceKit
probably wants it as well.


Swift SVN r17129
2014-05-01 00:16:36 +00:00
Doug Gregor
ca62675c64 Rip out the parsing code for default values in patterns.
This code was already unused.


Swift SVN r17091
2014-04-30 13:59:44 +00:00
Doug Gregor
d003b74c85 An argument with a default value has a keyword argument.
Arguments with default values are one of those places where you
really, really want keyword arguments: make that the default.


Swift SVN r17080
2014-04-30 06:51:43 +00:00
Doug Gregor
0863b2c6ec Operators may never have keyword arguments.
Swift SVN r17071
2014-04-30 04:35:02 +00:00
Doug Gregor
72e32c93af Make argument names default to keyword arguments in the cases where Objective-C has names.
Introduce a model where an argument name is a keyword argument if: 

  - It is an argument to an initializer, or
  - It is an argument to a method after the first argument, or
  - It is preceded by a back-tick (`), or
  - Both a keyword argument name and an internal parameter name are
    specified. 

Provide diagnostics Fix-Its to clean up cases where the user is
probably confused, i.e.,

  - "_ x: Int" -> "x: Int" where "x" would not have been a keyword
  argument anyway
  - "x x: Int" -> "`x: Int"

This covers the compiler side of <rdar://problem/16741975> and
<rdar://problem/16742001>.

Update the AST printer to print in this form, never printing just 
a type for a parameter name because we're also going to adopt
<rdar://problem/16737312> and it was easier to move the tests once
rather than twice.

Standard library and test updates coming separately.




Swift SVN r17056
2014-04-30 00:04:04 +00:00
Dmitri Hrybenko
eb801209ab Code completion: don't consider type in the previous line to be a code
completion prefix in the next line

rdar://16216624

Swift SVN r17038
2014-04-29 16:48:49 +00:00
Chris Lattner
db876399ad create a helper function for creating a TypeExpr from a
specialized declref, factoring some code.  NFC


Swift SVN r17021
2014-04-29 05:33:32 +00:00
Chris Lattner
30915de98f Form TypeExprs for non-specialized unqualified declrefs that refer to types... like "Int".
Building on previous work, this allows us to properly handle things like Int?() and Int[]().

Of course doing this exposed that TypeExpr was not correct in lots of ways, so this also:
 - Revamps TypeExpr processing to carry a decl in the TypeLoc instead of 
   carrying a Type.  This allows us to correctly handle more complex generics case.  
 - Enhances CSGen to properly open generic types so we can infer generic type parameters from
   context.


Swift SVN r17019
2014-04-29 05:25:21 +00:00
Doug Gregor
7c8605e6b5 Diagnose use of _ after ` in a parameter declaration; it makes no sense.
Swift SVN r16992
2014-04-28 19:41:02 +00:00
Doug Gregor
2872287dcd Add support for marking function arguments with the back-tick ("`").
Part of <rdar://problem/16742001>. At the moment, this is just a
parsing thing, because argument names are still API by default
anyway.

Swift SVN r16991
2014-04-28 19:35:57 +00:00
Doug Gregor
ab6b22fc75 When not used for an escaped identifier, back-tick is a token.
First part of <rdar://problem/16742001>.

Swift SVN r16990
2014-04-28 19:35:56 +00:00
Doug Gregor
4e4173f2e6 Remove the "separated" declaration syntax <rdar://problem/16742067>.
Swift SVN r16979
2014-04-28 14:44:53 +00:00
Chris Lattner
c45e6b75fd Rip out logic added to me misunderstanding ExistentialMetatypeType,
and teach type checking to resolve TypeExprs that lack TypeReprs.

This gets us debugged enough to start shoving all local type references
down the TypeExpr path, which is significant progress.


Swift SVN r16958
2014-04-28 04:42:44 +00:00
Chris Lattner
11a79fafb6 tighten up some logic, principly by using dyn_cast instead of dyn_cast_or_null,
NFC.


Swift SVN r16954
2014-04-27 23:42:16 +00:00
Ted Kremenek
dc46a2617c Add error+fixit to steer people from '@unchecked T?' to 'T!'.
Swift SVN r16951
2014-04-27 22:46:21 +00:00
Ted Kremenek
ccc5d6a8d2 Remove support for vestigial commas between type attributes.
Swift SVN r16948
2014-04-27 22:08:10 +00:00