Commit Graph

3981 Commits

Author SHA1 Message Date
Alex Hoppen
63c31033fc [Frontend] Load standard libarary in CompilerInstance::setup
Instead of checking that the stdlib can be loaded in a variety of places, check it when setting up the compiler instance. This required a couple more checks to avoid loading the stdlib in cases where it’s not needed.

To be able to differentiate stdlib loading failures from other setup errors, make `CompilerInstance::setup` return an error message on failure via an inout parameter. Consume that error on the call side, replacing a previous, more generic error message, adding error handling where appropriate or ignoring the error message, depending on the context.
2021-12-13 15:32:08 +01:00
swift-ci
a7042191fd Merge remote-tracking branch 'origin/main' into rebranch 2021-12-10 22:53:35 -08:00
Ellie Shin
2ab97edd6a Merge pull request #40494 from apple/es-complete
[Module Aliasing] Add module aliasing option to swift-ide-test
Add module aliasing handling in code complete
Resolves rdar://86294338
2021-12-10 22:36:50 -08:00
Ellie Shin
93132b8ce3 Add module aliasing option to swift-ide-test
Add module aliasing handling in code complete
Resolves rdar://86294338
2021-12-09 15:36:55 -08:00
swift-ci
8abc3941d1 Merge remote-tracking branch 'origin/main' into rebranch 2021-12-07 08:14:19 -08:00
Alex Hoppen
1739c23a9b Merge pull request #40158 from ahoppen/pr/cancel-code-completion
[SourceKit] Support cancellation of code completion like requests
2021-12-07 17:10:05 +01:00
swift-ci
c8b6479e28 Merge remote-tracking branch 'origin/main' into rebranch 2021-12-06 09:56:58 -08:00
Rintaro Ishizaki
94a372e8ca [CodeCompletion] Use enums in bit fields as-is
We don't need to convert them from/to integer
2021-12-03 15:33:28 -08:00
Pavel Yaskevich
d0fc580623 [IDE] Skip complex closures while checking pattern bindings
This preserves previous behavior where multi-statement closures
where always type-checked without context.
2021-12-03 10:54:56 -08:00
Alex Hoppen
177ab6e8e7 [SourceKit] Support cancellation of code completion like requests
Essentially, just wire up cancellation tokens and cancellation flags for `CompletionInstance` and make sure to return `CancellableResult::cancelled()` when cancellation is detected.

rdar://83391488
2021-12-02 13:05:03 +01:00
swift-ci
9fb0628010 Merge remote-tracking branch 'origin/main' into rebranch 2021-12-01 04:13:53 -08:00
Ben Barham
7871205a0b Merge pull request #40343 from bnbarham/structure-args
[SourceKit] Use stack of argument mappings when walking the syntax model
2021-12-01 22:07:01 +10:00
swift-ci
1d4f42450d Merge remote-tracking branch 'origin/main' into rebranch 2021-12-01 01:13:14 -08:00
Ben Barham
6dd9b65eca Merge pull request #40289 from ileitch/SR-13766-no-crash
[Index] Apply RelationContainedBy role to references contained by VarDecl.
2021-12-01 19:08:44 +10:00
Ben Barham
3ceb0a30df [SourceKit] Use stack of argument mappings when walking the syntax model
A single map of arguments allows an argument to be added to an incorrect
node, eg. when the parent node isn't handled but the argument is mapped.
Use a stack of (parent, mappings) instead and check that the parent
matches to ensure this cannot happen.
2021-12-01 14:02:53 +10:00
swift-ci
bc71cf7c54 Merge remote-tracking branch 'origin/main' into rebranch 2021-11-30 15:21:46 -08:00
Ben Barham
9180e010c1 Merge pull request #40323 from bnbarham/lint-crash
[SourceKit] Add structure node for SubscriptExpr
2021-12-01 08:57:16 +10:00
swift-ci
ee96d2798c Merge remote-tracking branch 'origin/main' into rebranch 2021-11-30 08:33:02 -08:00
Saleem Abdulrasool
349af3707d Merge pull request #40305 from compnerd/semitruck
gardening: make c++98-compat-extra-semi an error
2021-11-30 08:18:36 -08:00
Ben Barham
cb81c1a1aa [SourceKit] Add structure node for SubscriptExpr
Arguments in `SubscriptExpr` are visited since the recent `ArgumentList`
refactoring, but were being added to the containing `CallExpr`. Add a
node for the `SubscriptExpr` itself so that its argument is added there
instead of the `CallExpr`.

Also remove `key.nameoffset` and `key.namelength` from the response when
both are 0 to match the rest of the offsets and lengths.

Resolves rdar://85412164.
2021-11-30 19:56:48 +10:00
Ian Leitch
1ef1e2f829 [Index] Apply RelationContainedBy role to references contained by VarDecl.
This reverts commit abf6a30ba0.
2021-11-30 10:54:14 +01:00
swift-ci
917aa99862 Merge remote-tracking branch 'origin/main' into rebranch 2021-11-30 00:33:02 -08:00
Pavel Yaskevich
bc54bc6bb7 Revert "[TypeChecker] SE-0326: Enable multi-statement closure inference by default" 2021-11-29 17:26:08 -08:00
swift-ci
97e55f52e8 Merge remote-tracking branch 'origin/main' into rebranch 2021-11-29 05:53:07 -08:00
Anthony Latsis
9fc633e0b8 Merge pull request #39652 from AnthonyLatsis/no-context
TypeResolution: Abolish TypeResolutionStage::Contextual
2021-11-29 16:44:27 +03:00
swift-ci
844c9e802c Merge remote-tracking branch 'origin/main' into rebranch 2021-11-28 21:53:03 -08:00
Saleem Abdulrasool
910fbee14e gardening: make c++98-compat-extra-semi an error
This cleans up 90 instances of this warning and reduces the build spew
when building on Linux.  This helps identify actual issues when
building which can get lost in the stream of warning messages.  It also
helps restore the ability to build the compiler with gcc.
2021-11-27 11:40:17 -08:00
Becca Royal-Gordon
1880118e70 Restructure getDisplayDecl() Sendable forcing
Move this into a helper function that lives in Sema, avoiding libswiftAST calling into libswiftSema.
2021-11-19 17:51:27 -08:00
Anthony Latsis
6e764aa26c TypeResolution: Remove the last remaining use of 'forContextual' 2021-11-19 16:46:20 +03:00
swift-ci
6b368bda82 Merge remote-tracking branch 'origin/main' into rebranch 2021-11-17 10:33:34 -08:00
Pavel Yaskevich
63f355fde0 Merge pull request #39989 from xedin/more-diag-improvements-for-multi-stmt-closures
[TypeChecker] SE-0326: Enable multi-statement closure inference by default
2021-11-17 10:14:58 -08:00
Ben Barham
11f28196bc Merge pull request #40168 from bnbarham/rebranch-failures
[rebranch] Fix compilation failures
2021-11-17 08:50:11 +10:00
Pavel Yaskevich
ceb6d7e2b0 [IDE] Skip complex closures while checking pattern bindings
This preserves previous behavior where multi-statement closures
where always type-checked without context.
2021-11-15 16:42:05 -08:00
Ben Barham
abf6a30ba0 Revert "[Index] Apply RelationContainedBy role to references contained by VarDecl." 2021-11-16 08:56:01 +10:00
Ben Barham
e139a2f2ea [rebranch] Rename various functions to match new names in LLVM
llvm-project 601102d282d5e9a1429fea52ee17303aec8a7c10 renamed various
functions in `CharInfo.h` and `Lexer.h`. Rename uses in Swift.
2021-11-13 15:33:09 +10:00
Rintaro Ishizaki
73be942082 [CodeCompletion] NFC: Make enums in CodeCompletionResult scoped 2021-11-11 11:30:04 -08:00
Ben Barham
940322bc3d Merge pull request #38883 from ileitch/SR-13766
[Index] Apply RelationContainedBy role to references contained by VarDecl.
2021-11-11 11:19:35 +10:00
Ian Leitch
887e71009a [Index] Apply RelationContainedBy role to references contained by VarDecl.
References associated with a `VarDecl` had no `RelationContainedBy` role, resulting in "orphaned" references. From the perspective of identifying unused code (in tools using the index, like [Periphery](https://github.com/peripheryapp/periphery)), this made it impossible to identify that a variable's type, initializer and custom attributes are associated with the variable.

Resolves: [SR-13766](https://bugs.swift.org/browse/SR-13766)
2021-11-10 09:43:24 +00:00
Ben Barham
f6db91e3f9 [SourceKit] Ignore references without a location
A keypath using dynamic member lookup results in various `KeyPathExpr`
that have components with no location. Ignore these and any other
references that have a missing location.

Resolves rdar://85237365
2021-11-10 14:52:46 +10:00
Alex Hoppen
86a1bfd340 Merge pull request #39631 from ahoppen/pr/cancel-completion-infrastructure
[CodeCompletion] Refactor how code completion results are returned to support cancellation
2021-11-09 13:35:18 +01:00
Rintaro Ishizaki
a87996c23d [CodeCompletion] 'nil'/'[]'/'[:]' default arguments are "interesting"
func foo(arg: Int? = nil)

Code completion didn't sugget 'foo()' call pattern variant for this
function.
2021-11-05 22:29:14 -07:00
Alex Hoppen
c9f5331804 [SourceKit] Pass CompletionContext by reference to CompletionInstance 2021-10-29 12:00:12 +02:00
Alex Hoppen
76f2dbe5e8 [swift-ide-test] Use dedicated method for code completion on CompletionInstance instead of generic performOperation 2021-10-28 11:10:30 +02:00
Alex Hoppen
974829e290 [swift-ide-test] Use dedicated method for conformingMethodList on CompletionInstance instead of generic performOperation 2021-10-28 11:10:30 +02:00
Alex Hoppen
4ee9b0dec6 [swift-ide-test] Use dedicated method for typeContextInfo on CompletionInstance instead of generic performOperation
We are migrating all users of `performOperation` to dedicated methods on `CodeCompletionInstance`. Do the same in `swift-ide-test`.
2021-10-28 11:10:30 +02:00
Alex Hoppen
163ccf9184 [SourceKit] Move invocation of code completion second pass for code completion from SoruceKit to CompletionInstance 2021-10-28 11:10:30 +02:00
Alex Hoppen
367c9819ef [SourceKit] Move invocation of code completion second pass for ConformingMethodList from SoruceKit to CompletionInstance 2021-10-28 11:10:30 +02:00
Alex Hoppen
ab257bbda3 [SourceKit] Move invocation of code completion second pass for TypeContextInfo from SoruceKit to CompletionInstance
The invocation of the code completion second pass should be implementation detail of `CompletionInstance`. Create a method on `CompletionInstance` that correctly invokes the second pass and just reutnrs the type context info results to the caller.
2021-10-28 11:10:30 +02:00
Alex Hoppen
b6e03e3d98 [CodeCompletion] Make sure callback is always called from performOperation
We had some situations left that neither returned an error, nor called the callback with results in `performOperation`. Return an error in these and adjust the tests to correctly match the error.
2021-10-28 11:10:30 +02:00
Alex Hoppen
2fcb24e716 [CodeCompletion] Refactor how code completion results are returned to support cancellation
This refactors a bunch of code-completion methods around `performOperation` to return their results via a callback only instead of the current mixed approach  of indicating failure via a return value, returning an error string as an inout parameter and success results via a callback. The new guarantee should be that the callback is always called exactly once on control flow graph.

Other than a support for passing the (currently unused) cancelled state through the different instance, there should be no functionality change.
2021-10-28 11:10:30 +02:00