Commit Graph

1938 Commits

Author SHA1 Message Date
Slava Pestov
83c90b6b2a AST: Turn NominalTypeDecl::getStoredProperties() into a request
This improves on the previous situation:

- The request ensures that the backing storage for lazy properties
  and property wrappers gets synthesized first; previously it was
  only somewhat guaranteed by callers.

- Instead of returning a range this just returns an ArrayRef,
  which simplifies clients.

- Indexing into the ArrayRef is O(1), which addresses some FIXMEs
  in the SIL optimizer.
2019-07-16 16:38:38 -04:00
Xi Ge
8915cf8c4d Sourcekit/Evaluator: refactor cursor-info resolver to using the evaluator model. NFC
This change adds a new IDE request ID zone and refactors the cursor-info resolver
to use the request evaluator model.
2019-07-16 09:55:16 -07:00
Doug Gregor
f97cf53808 Merge pull request #26131 from DougGregor/requestify-type-check-function-body
[Type checker] Requestify type checking of a function body
2019-07-15 16:39:31 -07:00
Doug Gregor
ff2cb3305d [Type checker] Factor "type check function body until" into a request.
Extend the "type check function body" request to also cover the case
where we have a specific ending source location. Fold all of this
functionality into a single request, so we consistently go through a
request to compute a type-checked function body.
2019-07-12 17:40:53 -07:00
Xi Ge
a35ee51502 Merge pull request #26117 from nkcsgexi/52392291
SourceKit/Formatting: avoid indenting for consecutive dot-member calls
2019-07-12 16:58:03 -07:00
Xi Ge
f27ccabdb1 SourceKit/Formatting: avoid indenting for consecutive dot-member calls
rdar://52392291
2019-07-12 14:03:03 -07:00
David Ungar
6e1f6f25e3 Add getPtrOrNull to NullablePtr 2019-07-11 11:10:32 -07:00
John McCall
2c9cfb9e61 Merge pull request #26019 from rjmccall/dependent-conf-mangling
Fixes for mangling dependent protocol conformances
2019-07-09 20:06:19 -04:00
pschuh
4fd0671e54 Merge pull request #25870 from pschuh/cpp-1
Add -enable-cxx-interop flag and support for extern "C" {}
2019-07-09 11:37:31 -07:00
John McCall
5e24f8d916 Remove error-prone overload of Mangler::appendOperator.
Unfortunately we're probably stuck with the bizarre behavior usage
here for dependent protocol conformances.
2019-07-09 01:18:36 -04:00
Parker Schuh
fa69a73ee4 Add -enable-cxx-interop flag and support for extern "C" {} 2019-07-08 11:43:35 -07:00
Jonas Devlieghere
fe2ad03f93 Revert "[ClangImporter] Merge Swift & Clang VFS" 2019-07-05 15:30:43 -07:00
swift-ci
a84972b816 Merge pull request #25976 from DougGregor/drop-enable-opaque-result-types 2019-07-05 12:42:27 -07:00
Doug Gregor
d0c5b6a4e1 Drop the unused -enable-opaque-result-types command-line option 2019-07-05 11:34:10 -07:00
Jonas Devlieghere
f359cef5d0 [ClangImporter] Merge Swift & Clang VFS
The clang importer has to deal with two virtual file systems, one coming
from clang, and one coming from swift. Currently, if both are set, we
emit a diagnostic that we'll pick the swift one.

This commit changes that, by merging the two virtual file systems into a
single overlay file system, and using that. To make this possible, we
always initialize the file manager with an overlay file system. In the
clang importer, we then create a new overlay file system, starting with
the one coming from clang, and adding overlays from swift on top.

The motivation for this change is the reproducer infrastructure in LLDB,
which adds a third virtual file system to the mix.
2019-07-03 17:40:31 -07:00
Michael Munday
d45dc38208 Merge pull request #21078 from linux-on-ibm-z/s390x-bytetreeserialize
[Basic] Serialize integers in the specified byte order
2019-07-02 21:14:26 +01:00
Michael Munday
ce3aff12da [Basic] Always serialize integers in little-endian byte order
This change fixes the ExponentialGrowthAppendingBinaryByteStream
tests on big endian machines.

Force ExponentialGrowthAppendingBinaryByteStreams to use little-
endian byte order. We always used little-endian byte order anyway
and it seems very unlikely we'll need the flexibility to make the
stream big-endian in the future. The benefit of this is that we
can use portable APIs while still allowing the compiler to remove
conditional byte swaps.

Also replace writeRaw with writeInteger and make it explicitly
little-endian to make the API cleaner and more portable.
2019-07-02 11:36:58 -04:00
Ben Langmuir
c6eade1c44 [code-completion] Disable diagnostics in @functionBuilder bodies
When performing code-completion inside the body of a @functionBuilder
closure/function, set the flag to suppress diagnostics. This works
around a big performance problem in some complex bodies that do not
typecheck, which is typical during code-completion. A real-world example
with SwitfUI went from ~50 seconds to 0.5. We do not disable diagnostics
in general because the diagnostic paths provide falback types that are
useful to code-completion.

rdar://52356229
2019-07-02 07:33:14 -07:00
Jordan Rose
119b25f272 Merge pull request #25800 from jrose-apple/etiquette-and-protocol
[Serialization] Deserialize protocol requirement signatures lazily
2019-06-28 13:16:53 -07:00
David Ungar
200eb30371 Merge pull request #25692 from davidungar/A-6-14
[Name Lookup, ASTScope] simplified and debugged
2019-06-27 20:07:41 -07:00
David Ungar
33204e1519 Fixes 2019-06-27 16:17:13 -07:00
David Ungar
be4151eadf set default 2019-06-27 15:32:47 -07:00
David Ungar
d11b572d97 Default ASTEnableScopeLookup to false. 2019-06-27 15:27:01 -07:00
Jordan Rose
cce8d2fde0 [Serialization] Deserialize protocol requirement signatures lazily
Always good to do less work, and it's a stepping stone towards
recovering from trying to deserialize a protocol with missing
requirements.
2019-06-27 14:52:47 -07:00
Argyrios Kyrtzidis
7fd19f3d67 Merge pull request #25674 from akyrtzi/disable-typo-correction
Disable typo-correction by default until we can make it work within acceptable performance bounds
2019-06-25 09:06:27 -07:00
David Ungar
3a3145c0f4 Alternate SelfDC computation, fixes, and cleanups.
ASTScopeLookup by default
Create empty fn bodies for IDE tests.
Include initializer source range for property wrappers.
Add -disable-astscope-lookup
2019-06-23 09:17:09 -07:00
Argyrios Kyrtzidis
cf65b8f952 Disable typo-correction by default until we can make it work within acceptable performance bounds
Typo-correction can be so expensive that it can slow down typechecking over 10x.
It can be a significant productivity drain for developing on large projects.

Unfortunately it is best that we disable it until we can dedicate the time to address its performance issues
and we are certain it works within acceptable performance bounds.

rdar://51966070
2019-06-22 17:02:03 -07:00
Saleem Abdulrasool
38995f5d80 Merge pull request #25070 from moatom/fix-include-guard
Fix include guards
2019-06-20 17:26:08 -07:00
Michael Gottesman
32fe5eba89 [gardening] Fix a file level comment to be a doxygen comment. 2019-06-19 22:46:51 -07:00
swift-ci
63ad18242b Merge remote-tracking branch 'origin/master' into master-next 2019-06-17 15:10:02 -07:00
Alexis Laferrière
36e5b5ae78 Merge pull request #25152 from xymus/explicit-intro-version
Add CLI option to warn when a public decl has no introduction version
2019-06-17 15:01:41 -07:00
Alexis Laferrière
c44cff7c97 Add a CLI option to warn when a public decl has no availability
Add the command line option -require-explicit-availability to detect public
or `@usableFromInline` declarations and warn if they don't declare
an introduction OS version. This option should catch forgotten `@available`
attributes in frameworks where all services are expected to be introduced
by an OS version.

The option -require-explicit-availability-target "macOS 10.14, iOS 12.0"
can be specified for the compiler to suggest fix-its with the missing
attributes `@available(macOS 10.14, iOS 12.0, *)`.

rdar://51001662
2019-06-17 10:32:58 -07:00
swift-ci
5e5f662fb7 Merge remote-tracking branch 'origin/master' into master-next 2019-06-14 08:09:23 -07:00
David Ungar
06527db4ab Merge pull request #24594 from davidungar/A5-7-ASTOOScope-rebased
[NameLookup] ASTOOScope ontology
2019-06-14 08:03:09 -07:00
swift-ci
3976c46796 Merge remote-tracking branch 'origin/master' into master-next 2019-06-13 20:30:06 -07:00
Doug Gregor
82ed5e9a02 [SE-0258] Implement basic support for property wrapper composition.
When multiple property wrapper attributes are provided on a declaration,
compose them outside-in to form a composite property wrapper type. For
example,

  @A @B @C var foo = 17

will produce

  var $foo = A(initialValue: B(initialValue: C(initialValue: 17)))

and foo's getter/setter will access "foo.value.value.value".
2019-06-13 18:26:29 -07:00
David Ungar
6cfcabd8e5 add -disable-parser-lookup 2019-06-11 09:08:10 -07:00
swift-ci
93e08a6674 Merge remote-tracking branch 'origin/master' into master-next 2019-06-06 11:29:01 -07:00
Mishal Shah
c2848e793f Merge pull request #25236 from apple/update-master-xcode-11-beta1
Update master to build with Xcode 11 beta, macOS 10.15, iOS 13, tvOS 13, and watchOS 6 SDKs
2019-06-06 11:22:40 -07:00
swift-ci
185cf45232 Merge remote-tracking branch 'origin/master' into master-next 2019-06-05 10:09:08 -07:00
Joe Groff
0e63852db2 Merge pull request #25240 from linux-on-ibm-z/cluster-to-apint
Basic: Use APInt to implement ClusteredBitVector
2019-06-05 10:03:32 -07:00
swift-ci
ed38fe6251 Merge remote-tracking branch 'origin/master' into master-next 2019-06-04 10:09:06 -07:00
Michael Munday
192bcb2007 Basic: Use APInt to implement ClusteredBitVector
Simplify the implementation of ClusteredBitVector by using an APInt
to represent the raw bits. This simplification will make it easier
to incrementally move to a representation of bit vectors that works
on both big- and little-endian machines.

This commit also removes reserve and reserveExtra from the API
since they were only used in one place and no longer have any effect
because memory allocation is now handled by the APInt class.
2019-06-04 14:05:10 +01:00
mishal_shah
1e38fc3030 Update master to build with Xcode 11 beta, macOS 10.15, iOS 13, tvOS 13, and watchOS 6 SDKs 2019-06-03 22:50:02 -07:00
Joe Groff
4ed8de10f9 Revert "Revert "Use autolinking to pull in compatibility libraries."" 2019-06-03 20:10:51 -07:00
swift-ci
fd329da063 Merge remote-tracking branch 'origin/master' into master-next 2019-06-03 14:29:47 -07:00
Joe Groff
a7cc3a38cc Revert "Use autolinking to pull in compatibility libraries." 2019-06-03 14:18:39 -07:00
swift-ci
40c3c8caa5 Merge remote-tracking branch 'origin/master' into master-next 2019-06-03 08:30:09 -07:00
moatom
2e95a0d265 Fix include guards 2019-06-02 12:10:43 +09:00
Joe Groff
dffd1b27a1 Use autolinking to pull in compatibility libraries.
Many build systems that support Swift don't use swiftc to drive the linker. To make things
easier for these build systems, also use autolinking to pull in the needed compatibility
libraries. This is less ideal than letting the driver add it at link time, since individual
compile jobs don't know whether they're building an executable or not. Introduce a
`-disable-autolink-runtime-compatibility` flag, which build systems that do drive the linker
with swiftc can pass to avoid autolinking.

rdar://problem/50057445
2019-05-31 13:11:14 -07:00