Commit Graph

3024 Commits

Author SHA1 Message Date
Doug Gregor
a47f30f6aa Factor out NominalTypeDecl::prepareExtensions(). NFC
Swift SVN r26064
2015-03-12 21:11:02 +00:00
John McCall
1c4c716868 Allow getSourceRange() to be implemented with
getStartLoc()/getEndLoc() and switch most expressions
to do so.

Swift SVN r26061
2015-03-12 20:53:28 +00:00
John McCall
dd48c25d3f Parse 'try' expressions.
We parse 'try' as if it were a unary operator allowed on an
arbitrary element of an expr-sequence, but sequence-folding
constrains it to never appear on the RHS of most operators.

We do allow it on the RHS of an assignment or conditional
operator, but not if there's anything to the right which
was not parsed within the RHS.

We do this for assignments so that
  var x = try whatever
and
  x = try whatever
both work as you might expect.

We do this for conditionals because it feels natural to
allow 'try' in the center operand, and then disallowing it
in the right operand feels very strange.

In both case, this works largely because these operators are
assumed to be very low-precedence; there are no standard
operators which would parse outside the RHS.  But if you
create one and use 'try' before it, we'll diagnose it.

Swift SVN r26052
2015-03-12 18:59:21 +00:00
John McCall
700c2db290 Dynamically dispatch getStartLoc, getEndLoc, and getLoc.
Swift SVN r26043
2015-03-12 08:27:01 +00:00
Xi Ge
405936e0fc [SyntaxColoring] Address Argyrios' comments
Swift SVN r26035
2015-03-12 07:17:41 +00:00
Chris Lattner
c28a18e9da make the ast dumper handle null conditions without crashing. NFC.
Swift SVN r26032
2015-03-12 05:01:48 +00:00
Adrian Prantl
9d14113bf3 Adapt for Mach-O clang module container format transition.
NOTE: This may require deleting the Module Cache that build-script
       creates in the swift build dir.

rdar://problem/19104245

Swift SVN r26021
2015-03-12 02:00:56 +00:00
Adrian Prantl
83fce2670e Revert "Adapt for Mach-O clang module container format transition."
This reverts commit 25995 (this commit was missing a few LLVM libraries).

Swift SVN r26020
2015-03-12 02:00:55 +00:00
Jordan Rose
c9eeed3e2d Remove staging option -enable-private-discriminators.
Private discriminators for everybody!

Swift SVN r25997
2015-03-11 23:07:44 +00:00
Adrian Prantl
ae3d758fa8 Adapt for Mach-O clang module container format transition.
NOTE: This may require deleting the Module Cache that build-script
       creates in the swift build dir.

Swift SVN r25995
2015-03-11 22:55:37 +00:00
Doug Gregor
eb572e6a63 Simplify and improve our handling of generic parameters/signatures/interface types in ProtocolConformance.
This ends up being NFC right now because we're not really creating
inherited conformances consistently, so the cases where it might
matter (reshuffling generic parameters as we go up an inheritance
chain) either fail for other reasons or don't change.

Swift SVN r25993
2015-03-11 20:47:33 +00:00
Doug Gregor
bc799c3fbc Remove ProtocolConformance::getSubstitutedGenericParams().
It's unused and wrong. NFC

Swift SVN r25992
2015-03-11 20:42:47 +00:00
Denis Vnukov
9e76e2ba50 Minor (swift migrator related fixes):
Corrected several places where compiler generated AST nodes were not properly 
marked as implicit.

For interpolated strings also fixed string segment locations and made sure 
the first and last segments are preserved in AST even if they are empty.



Swift SVN r25983
2015-03-11 18:08:36 +00:00
Xi Ge
737f0ca6a6 [CodeCompletion] Using canAttributeAppearOnDecl() to decide whether an attribute is applicable.
Swift SVN r25961
2015-03-10 22:31:43 +00:00
Chris Lattner
c64d6e206c fix another warning, NFC since FindLocalVal is only used on
parameter patterns, which are not refutable.


Swift SVN r25955
2015-03-10 21:13:53 +00:00
Chris Lattner
43c18ccfec add a missing case for the new pattern I introduced. This isn't used by anything
that I can see, but is good for completeness.


Swift SVN r25952
2015-03-10 20:10:47 +00:00
Chris Lattner
9ac6c23c1d rename IsaPattern -> IsPattern to follow source syntax, NFC.
Swift SVN r25951
2015-03-10 20:09:02 +00:00
Chris Lattner
90920ec02f rename the IsaExpr AST node to IsExpr to follow the syntax of the language, NFC.
Swift SVN r25933
2015-03-10 17:11:37 +00:00
Chris Lattner
db187f2183 Enhance VarPattern to capture a bit indicating whether the pattern was a var or let.
Previously we only used this information in the parser, but Sema needs to know as well.

NFC except in -dump-ast.



Swift SVN r25914
2015-03-10 06:07:56 +00:00
Chris Lattner
de808d1603 Progress on: <rdar://problem/19382878> Introduce new x? pattern
This introduces a new pattern, spelled "x?" which is sugar for
matching ".Some(x)".  It also changes the parser slightly so that
_ (the discard expr) is parsed as a unary expr instead of as an
expr.  This allows it to have postfix ? after it, which is important
in pattern contexts to support "case _?:".



Swift SVN r25907
2015-03-10 01:00:23 +00:00
Argyrios Kyrtzidis
8d4b0ed470 [IDE] Include control-flow statements in the syntax structure model.
rdar://19988592

Swift SVN r25868
2015-03-09 00:42:42 +00:00
Jordan Rose
772a124b63 Compute captures after all bodies have been type-checked, as a separate pass.
We already have the restriction that captures can't be computed until
everything is type-checked, but previously we tried to compute captures
/immediately/ after a closure was type-checked. Unfortunately, we either
type-checked too early (before @noescape was propagated onto multi-statement
closures) or too late (trying to compute autoclosure captures at the point
the autoclosure was introduced).

Now, all closure captures are computed after type-checking, and local
function captures as well. They also more consistently reuse the capture
list of nested closures/functions. Because captures can be computed on
demand, there is now a flag on CaptureInfo for whether we've computed
captures yet. Note that some functions will never have captures computed,
namely those that are not in a local context.

rdar://problem/19956242

Swift SVN r25776
2015-03-05 02:33:37 +00:00
Ted Kremenek
9e7471d68b Revert "Revert "Rework processing of @noescape closures a bit to fix rdar://19981118:""
Turns out llvm::DataLayoutPass is used in other places, so the bots are still unhappy.
Re-applying the original change so we can fix the problem holistically.

Swift SVN r25761
2015-03-04 20:15:45 +00:00
Ted Kremenek
6781ac7bec Revert "Rework processing of @noescape closures a bit to fix rdar://19981118:"
This is breaking the testing bot because DataLayoutPass was just removed from LLVM trunk.
Chris is the best one to fix this change, but we need to get the bots green.

Swift SVN r25760
2015-03-04 20:03:33 +00:00
Chris Lattner
ab43e444d6 Rework processing of @noescape closures a bit to fix rdar://19981118:
- Have Sema, not SILGen decide if a vardecl can be captured by address
  instead of by-box.  This is a non-local property that is best computed
  during capture set formation.  Sema captures this as a bit on the new
  CapturedValue entry.
- Rework some diagnostic emission to centralize a class of noescape 
  diagnostics in capture set calculation.  Previously, funcdecl closures
  produced their diagnostics there, but ClosureExprs produced them in
  MiscDiagnostics (NFC for this part).

This fixes <rdar://problem/19981118> Swift 1.2 beta 2: Closures nested in @noescape closures copy, rather than reference, captured vars.



Swift SVN r25759
2015-03-04 19:30:36 +00:00
Chris Lattner
83009065f8 - Rework computation of "direct" closure capture formation to be based on whether
the DeclRefExpr's access semantics is "direct to storage" instead of basing it
  on the weird special case we were using before.
- Change AST dumper to print the "direct" flag.

NFC.



Swift SVN r25749
2015-03-04 06:17:40 +00:00
Devin Coughlin
6b5a3d775e [Sema]Construct type refinement hierarchy for other source files
Resolving signatures of declarations from files other than the primary source
file causes first-pass type checking, including diagnostics for potential
unavailability, to be performed on those declarations. Prior to this commit, the
type refinement context hierarchy was only constructed for the primary file, so
spurious errors were emitted when checking declarations in other files. With
this commit, the availability checker builds the hierarchy for a source file the
first time its hierarchy is queried. We will eventually want to build the
hierarchy more lazily, but that will come later.

Swift SVN r25746
2015-03-04 05:36:48 +00:00
Chris Lattner
3489840b8d rework our representation of capture lists to compute the "isDirect" bit up front
when computing the list.  This simplifies getLocalCaptures to *just* filter out
global captures, and paves the way for other enhancements.  NFC.


Swift SVN r25739
2015-03-04 01:56:48 +00:00
Jordan Rose
c91952130f Wordsmith the errors for Objective-C selector conflicts.
Also, if warning about an accessor that comes from a stored property,
point to the property rather than the (implicit, source-location-less)
accessor decl.

Both of these changes are aimed at improving the presentation in Xcode.

rdar://problem/19927828

Swift SVN r25725
2015-03-03 23:25:46 +00:00
Jordan Rose
cee28189a2 Add a BodyKind for implicitly-synthesized memberwise initializers.
...rather than just assuming any initializer without a body that makes it
to SILGen is a memberwise initializer.

In the long term we want SILGen to stop handling these initializers, at
which point we can see if it makes sense to remove this body kind.

No intended functionality change.

Swift SVN r25723
2015-03-03 23:22:21 +00:00
Xi Ge
3feda28d5e Use isa instead of dyn_cast
Swift SVN r25632
2015-02-28 02:38:50 +00:00
Doug Gregor
bce5c20c25 Teach loadAllMembers() implementations to add the members themselves.
The contract for LazyResolver::loadAllMembers() was that the caller
would handle actually adding the members, since it was an iterable
declaration context and could centralize that (simple) logic. However,
this fails in the Clang importer in rare but amusing ways when some of
the deferred actions (e.g., finishing a protocol conformance) depend
on having the members already set. The deferred action occurs after
the member list is complete in ClangImporter's loadAllMembers(), but
before its caller actual set the member list, leaving incomplete
conformances. Fixes rdar://problem/18884272.

Swift SVN r25630
2015-02-28 01:03:41 +00:00
Doug Gregor
db51abba9a Fix Objective-C printing of init(forFun: ()) initializers.
This is the rest of rdar://problem/19973250, thank you Jordan!

Swift SVN r25623
2015-02-27 22:54:45 +00:00
Doug Gregor
8fcd016b9b Use the @objc name of a property for getters, setters, and Objective-C metadata
Fixes rdar://problem/19963219.

Swift SVN r25622
2015-02-27 22:36:53 +00:00
Doug Gregor
09efc9d78e Allow to one to define zero-parameter initializers with Objective-C names longer than "init".
There are a handful of Objective-C initializers with names like
"initForMemory" that take no parameters. The Clang importer has long
been importing them with a single parameter of type (), e.g.,

  init(forMemory: ())

At some point, our @objc checking got stricter and started rejecting
parameters of type (), making it impossible to define such an
initializer in Swift. Codify this case in @objc checking, fixing
rdar://problem/19973250.

Swift SVN r25611
2015-02-27 21:50:04 +00:00
Doug Gregor
e23c15a9dd Dump the base of a dependent member type.
Swift SVN r25610
2015-02-27 21:50:03 +00:00
Xi Ge
95a431885b When printing the interfaces in a module, denit is not informative
. Thus, this change allows swift-ide-test to ignore deinit when printing
interfaces. Also, to ignore is the default setting. Attribut -skip-deinit
can switch it off.
rdar://19079711

Swift SVN r25608
2015-02-27 21:48:23 +00:00
Devin Coughlin
3fc110e0b8 [Sema]Allow @availability attributes on extensions
This commit allows @availability attributes on extensions.

Unlike other declarations, extensions can be used without referring to them
by name (they don't have one) in the source. For this reason, when checking
the available version range of a declaration we also need to check to see if it is
immediately contained in an extension and use the extension's availability if
the declaration does not have an explicit @availability attribute itself.

This commit also moves building the primary file type refinement context hierarchy
in performTypeChecking() to before we resolve extensions.  Resolving extensions checks for
availability of the extended declaration, so the TRC for the extension must be constructed
before then.

Swift SVN r25589
2015-02-27 02:42:42 +00:00
Chris Lattner
da1dfcd55c implement <rdar://problem/19150249> Allow labeled "break" from an "if" statement
This doesn't allow 'continue' out of an if statement for the same reason we don't
allow it on switch: we'd prefer people to write loops more explicitly.



Swift SVN r25565
2015-02-26 22:32:30 +00:00
Xi Ge
7f668e7b49 Add isUserAccessible() in Decl to show whether swift users should know such decl exists. For instance, a.storage for lazy var a is a inaccessible decl. An implicit decl is not necessarily inaccessible, for instance, self.
Fixing rdar://18760063

Swift SVN r25556
2015-02-26 19:16:54 +00:00
Chris Lattner
a9e69c0c36 Take a bozooka out to fix <rdar://problem/19932544> refine error for using @autoclosure and @noescape on the same decl
We didn't have a consistent way to utter attributes in diagnostics, sometimes saying the

'foo' attribute is not allowed
@foo attribute is not allowed
'foo' is not allowed
@foo is not allowed

etc.  Standardize on the last one, since it is clear (with the @ sign, with no quotes, with no
'attribute' word in the diagnostic) that we're talking about an attribute.  Move a bunch of
diagnostics inline with this.



Swift SVN r25524
2015-02-25 01:19:04 +00:00
Xi Ge
f40003b0b1 Disallow the insertion of attributes such as @autoclosure in code complete string. fixing rdar://19710757
Swift SVN r25523
2015-02-25 00:52:16 +00:00
Adrian Prantl
b347f7eae5 Temporarily disable this assertion until <rdar://problem/19773096> is resolved.
Swift SVN r25503
2015-02-24 17:27:44 +00:00
Joe Groff
7b6c41055f Add mangling for C function pointer types.
Swift SVN r25498
2015-02-24 04:46:07 +00:00
Doug Gregor
2650af4ec6 Dump SILFunctionTypes just by printing the type, which is lame but not a regression.
Swift SVN r25462
2015-02-21 05:00:29 +00:00
Doug Gregor
3ca163d135 Make Type::dump() newlines more debugger-friendly.
Swift SVN r25461
2015-02-21 05:00:19 +00:00
Dave Abrahams
4f9e7b3c15 Add a ReST hacks mode that pretties up headlines
Swift SVN r25458
2015-02-21 04:02:53 +00:00
Devin Coughlin
7ea8aa82ea [Sema] Validate declaration version range availability within lexical scope
This commit validates @availability() attribute version ranges to ensure that
a declaration is not more available than its lexically containing scope. To do so,
we find the inner-most declaration containing an @availability attribute that itself
has an @availability attribute and check that first attribute's available
version range is contained in the enclosing declaration's available range. If not,
we emit a diagnostic.

This commit removes a FIXME for checking @availability and overrides. It appears that
the FIXME is a copy/paste to/from AttributeOverrideChecker, where it still resides.

Swift SVN r25453
2015-02-21 01:34:38 +00:00
Joe Groff
60d27f74ac Add back TypeBase::dumpPrint() to easily dump a type's printed representation from the debugger.
lldb's lack of support for default arguments makes directly calling print() obnoxious.

Swift SVN r25452
2015-02-21 01:33:44 +00:00
Chris Willmore
b31eff245c Add transactional diagnostic support to DiagnosticEngine
Transactions may be opened by calling open() on a DiagnosticTransaction
instance. Any diagnostics recorded during an open transaction will be
saved until the transaction is either committed, at which point they
will be emitted as usual; or aborted, at which point they will be
discarded.

Swift SVN r25437
2015-02-20 22:06:34 +00:00