Commit Graph

26578 Commits

Author SHA1 Message Date
Nathan Hawes
3e8278ae71 Merge pull request #33676 from nathawes/parser-completion-fixes
[Parse][IDE] Various parser fixes for code completion
2020-08-28 22:11:31 -07:00
Doug Gregor
10fa19b2b5 Merge pull request #33674 from DougGregor/concurrency-objc-import-async
[Concurrency] Import Objective-C methods with completion handlers as async
2020-08-28 19:48:02 -07:00
Suyash Srijan
172c4be02d [Sema] Diagnose use of ambiguous property wrappers (#33688) 2020-08-29 02:38:42 +01:00
Nathan Hawes
89803560f9 [Parse] Perform the single expression function body transform for delayed parsing as well
We were previously only doing it when parsing up front.
2020-08-28 17:09:37 -07:00
Mike Ash
50ea66d1d9 Merge pull request #33585 from mikeash/type-lookup-error-reporting
Add error reporting when looking up types by demangled name.
2020-08-28 17:42:47 -04:00
Varun Gandhi
8df83150fb Merge pull request #33541 from varungandhi-apple/vg-clang-types-in-sil-setup
Setup code for Clang types in SIL.
2020-08-28 14:34:27 -07:00
Robert Widmann
7c8041ae9a Merge pull request #33672 from CodaFi/ceci-nest-pas-une-pipeline
[NFC] Clean Up FrontendTool
2020-08-28 14:07:03 -07:00
Mike Ash
0990fa90b3 Merge pull request #33647 from mikeash/shrink-concurrentreadablehashmap
[Runtime] Shrink ConcurrentReadableHashMap a bit.
2020-08-28 14:45:17 -04:00
Mike Ash
fd6922f92d Add error reporting when looking up types by demangled name. 2020-08-28 14:43:51 -04:00
Rintaro Ishizaki
c48a676a1c Merge pull request #31679 from Jumhyn/implicit-member-chains-different-types
[SE-0287] [Sema] Implementation for implicit member chains
2020-08-28 10:47:53 -07:00
Pavel Yaskevich
a6c3e6f543 Merge pull request #33658 from xedin/introduce-hole-type
[ConstraintSystem] Introduce a new type to represent a type hole
2020-08-28 10:40:15 -07:00
Joe Groff
f588f2f478 Merge pull request #33650 from jckarter/global_init_mangling
Remove hardcoded symbol name parsing from SILOptimizer passes
2020-08-28 08:34:35 -07:00
Doug Gregor
1e5d30f5ca [Concurrency] Import Objective-C methods with completion handlers as async
When a given Objective-C method has a completion handler parameter
with an appropriate signature, import that Objective-C method as
async. For example, consider the following CloudKit API:

    - (void)fetchShareParticipantWithUserRecordID:(CKRecordID
*)userRecordID
            completionHandler:(void (^)(CKShareParticipant * _Nullable shareParticipant, NSError * _Nullable error))completionHandler;

With the experimental concurrency model, this would import as:

    func fetchShareParticipant(withUserRecordID userRecordID: CKRecord.ID) async throws -> CKShare.Participant?

The compiler will be responsible for turning the caller's continuation
into a block to pass along to the completion handler. When the error
parameter of the completion handler is non-null, the async call
will result in that error being thrown. Otherwise, the other arguments
passed to that completion handler will be returned as the result of
the async call.

async versions of methods are imported alongside their
completion-handler versions, to maintain source compatibility with
existing code that provides a completion handler.

Note that this only covers the Clang importer portion of this task.
2020-08-27 21:30:13 -07:00
Luciano Almeida
82fc202d52 Merge pull request #33603 from LucianoPAlmeida/SR-13079-improve-kp-optional-root-diagnostics
[Sema] Improve diagnostics for key path root type inferred as option accessing wrapped member
2020-08-27 23:54:09 -03:00
Robert Widmann
4c56c95674 Define doesActionRequireInputs 2020-08-27 16:17:20 -07:00
Robert Widmann
fe7444ffa3 Add doesActionRequireSwiftStandardLibrary 2020-08-27 16:17:20 -07:00
Robert Widmann
4c7ccf5abe [NFC] Clean Up FrontendTool
Try to impose a simple structure that splits performing actions from the
pre and post-pipeline conditions. Wherever actions would take more than
a simple return, split them into functions. Refine functions that
perform effects to return status codes when they fail. Finally,
delineate functions that need semantic analysis from those that do not.

Overall this should be NFC.
2020-08-27 16:15:44 -07:00
Luciano Almeida
4b921c3487 [Sema] Improve diagnostics for key path root type inferred as option accessing wrapped member 2020-08-27 20:07:18 -03:00
Joe Groff
0bef4a661b Give global once symbols stabler manglings.
This allows symbol ordering and other analyses to be more robust with regards to these symbols.
2020-08-27 16:00:20 -07:00
Varun Gandhi
c4ad840ad3 [NFC] Reuse SILExtInfoBuilder's main constructor in default constructor. 2020-08-27 13:14:05 -07:00
Varun Gandhi
f86aad9b29 [NFC] Extract computation of SILExtInfoBuilder bits into new method. 2020-08-27 13:14:05 -07:00
Varun Gandhi
eeec16f143 [NFC] Remove redundant ExtInfo parameter for getBridgedFunctionType.
At all call-sites, the extInfo passed as the third argument is computed directly
from the second argument, so we compute it directly in getBridgedFunctionType.
2020-08-27 13:14:05 -07:00
Varun Gandhi
eead4ae8f0 [NFC] Remove unused function parameter. 2020-08-27 13:14:05 -07:00
Varun Gandhi
8da4d53d2c [NFC] Use ClangTypeInfo's implicit null state instead of an extra Optional. 2020-08-27 13:14:05 -07:00
Varun Gandhi
eaac23fdd4 [NFC] Remove ASTExtInfo::assertIsFunctionType in favor of checkInvariants.
Invariants should be checked only when calling build(), not when the builder
itself is created.
2020-08-27 13:14:05 -07:00
Varun Gandhi
c890cdd1a3 [AST] Add functionality for computing Clang types for SIL functions. 2020-08-27 13:14:05 -07:00
Artem Chikin
99938758f7 Merge pull request #33630 from artemcm/ScannerCanImport
[Explicit Module Builds] Handle #canImport in the dependency scanner by adding scanner "loaders" to the ASTContext.
2020-08-27 11:24:26 -07:00
Mike Ash
4cd1b715bd [Runtime] Shrink ConcurrentReadableHashMap a bit.
We're using a lot of space on the free lists. Each vector is three words, and we have two of them. Switch to a single linked list. We only need one list, as both kinds of pointers just get free()'d. A linked list optimizes for the common case where the list is empty. This takes us from six words to one.

Also make ReaderCount, ElementCount, and ElementCapacity uint32_ts. The size_ts were unnecessarily large and this saves some space on 64-bit systems.

While we're in there, add 0/NULL initialization to all elements. The current use in the runtime is unaffected (it's statically allocated) but the local variables used in the test were tripping over this.
2020-08-27 13:05:40 -04:00
Pavel Yaskevich
b6c2f89414 [AST] NFC: Fix a typo in the HasTypeHole description 2020-08-26 20:07:25 -07:00
Frederick Kellison-Linn
30e52be19c [AST] Properly initialize FunctionRefKind for UnresolvedMemberExpr 2020-08-26 22:42:30 -04:00
Frederick Kellison-Linn
352adc3b5d Remove Argument from UnresolvedMemberExpr
Instead, an expresison like `.foo()` is represented as an `UnresolvedMemberExpr` nested inside a `CallExpr`.
2020-08-26 22:42:30 -04:00
Frederick Kellison-Linn
5de23f5cfc [Sema] Rebase and address feedback for implicit member chains 2020-08-26 22:42:30 -04:00
Frederick Kellison-Linn
f5845666e6 [AST] Introduce UnresolvedMemberChainResultExpr
Introduce a new expression type for representing the result of an unresolved member chain. Use this expression type instead of an implicit ParenExpr for giving unresolved member chain result types representation in the AST during type checking.
2020-08-26 22:42:29 -04:00
Frederick Kellison-Linn
4e9b7b20db [Sema] Inject implicit ParenExpr for unresolved member chains
In order to give unresolved member chain result types visibility in the AST, we inject an implicit ParenExpr in CSGen that lives only for the duration of type checking, and gets removed during solution application.
2020-08-26 22:42:29 -04:00
Frederick Kellison-Linn
3b5deab114 More diagnostic improvements 2020-08-26 22:42:29 -04:00
Frederick Kellison-Linn
5b5e30b6d7 Implement implicit member chains 2020-08-26 22:42:29 -04:00
Pavel Yaskevich
78ea3de8e4 [AST] Introduce a new type to represent a type hole in constraint system
Instead of using `UnresolvedType` as a placeholder for a type hole,
let's switch over to a dedicated "rich" `HoleType` which is capable
of storing "originator" type - type variable or dependent member
type which couldn't be resolved.

This makes it easier for the solver to determine origins of
a hole which helps to diagnose certain problems better. It also
helps code completion to locate "expected type" of the context
even when it couldn't be completely resolved.
2020-08-26 16:55:39 -07:00
Mike Ash
58604ff1ba [Runtime] Fix memory ordering on a store in ConcurrentReadableArray. 2020-08-26 13:24:44 -04:00
swift-ci
148ba9d66d Merge pull request #33636 from nate-chandler/move-flag-to-SILExtInfo 2020-08-25 20:31:10 -07:00
Suyash Srijan
79b0a7ef75 [CSDiagnostics] Emit fix-its to insert requirement stubs for missing protocols in context (#33628)
* [CSDiagnostics] Emit fix-its to insert requirement stubs in editor mode for missing protocols in context

* [CSDiagnostics] Only include missing requirements in stub fix-it for missing protocols in context

The conforming type may already have declarations that could satisfy a requirement, so we shouldn't include it in the fix-it
2020-08-26 02:05:29 +01:00
Nate Chandler
f74a3b47fc [SIL] Added async flag to SILExtInfo. 2020-08-25 17:33:27 -07:00
Joe Groff
d82a767e13 SIL: Add a SILFunction::Purpose for global init once functions 2020-08-25 17:06:09 -07:00
Ben Langmuir
8c56ce8484 Merge pull request #33632 from benlangmuir/gardening-libIDE
[gardening] Move some code between sourcekitd and libIDE
2020-08-25 15:31:03 -07:00
Artem Chikin
78159c83f7 [Explicit Module Builds] Handle #canImport in the dependency scanner by adding scanner "loaders" to the ASTContext. 2020-08-25 14:20:38 -07:00
Nate Chandler
5d813f38ec Revert "[SIL] Add flag to SILFunctionType::Profile for async."
This reverts commit b8976a3ec5.
2020-08-25 13:50:16 -07:00
Nate Chandler
94b5f76654 Revert "[SIL] Add SILFunctionType flag for async."
This reverts commit 9b8828848d.
2020-08-25 13:37:26 -07:00
Suyash Srijan
6e6de518eb [Sema] Improve diagnostics for use of self access kind modifier on accessors inside classes (#33602) 2020-08-25 20:02:52 +01:00
Ben Langmuir
af78895c45 [gardening] Sink compiler invocation code into libIDE 2020-08-25 10:39:37 -07:00
Ben Langmuir
cf87ad805f [gardening] Move filter name printing alongside other completion methods 2020-08-25 10:39:19 -07:00
Ben Langmuir
34de805d7f [gardening] Move source text printing alongside other completion methods 2020-08-25 10:39:19 -07:00