Commit Graph

3500 Commits

Author SHA1 Message Date
Hamish Knight
e380c66238 Merge pull request #71357 from hamishknight/scoped-down
Remove FindLocalVal
2024-02-09 10:57:23 +00:00
Hamish Knight
f4b928fd0a Remove FindLocalVal
Replace with an ASTScope lookup. This also lets
us simplify UsableFilteringDeclConsumer, and fixes
a couple of completion bugs.
2024-02-07 23:02:37 +00:00
Hamish Knight
7b4c9fef02 Allow implicit last expressions for functions and closures
Gated behind the experimental feature
`ImplicitLastExprResults`.
2024-02-07 18:14:23 +00:00
Hamish Knight
d73e394ea7 Allow implicit last expression results for if/switch expressions
Allow implicitly treating the last expression of
the branch as the result, behind the experimental
feature `ImplicitLastExprResults`.
2024-02-07 18:14:22 +00:00
Guillaume Lessard
114f235d17 Merge pull request #71167 from vanvoorden/vanvoorden/inclusive-language
[Inclusive Language][Comments][Documentation] migrate "sanity" checks to "soundness" checks
2024-02-02 10:27:34 -08:00
Hamish Knight
deaf2dd372 [CS] Unify ReturnStmt handling
Unify the implementation between single-expression
and multi-statement closures. Because we're now
storing a contextual type for single expression
closure returns, update a code completion test to
bring its behavior inline with the multi-statement
case.
2024-01-31 20:26:20 +00:00
Alex Hoppen
7b6f45c59a Merge pull request #71228 from ahoppen/ahoppen/complete-in-guard
[CodeCompletion] Fix an issue that caused us to not produce any results for a `guard` condition inside a closure
2024-01-30 12:55:43 -08:00
Alex Hoppen
2016f095a2 [CodeCompletion] Fix an issue that caused us to not produce any results for a guard condition inside a closure
rdar://121406956
2024-01-29 16:34:41 -08:00
Hamish Knight
d022cf806b [CodeComplete] Avoid using an unresolved contextual type
This can occur for e.g multi-statement closure
returns (and soon for singe-expression closures
too), so fall back to evaluating the expression
type if it's not fully resolved.
2024-01-29 21:26:08 +00:00
Hamish Knight
3d06f0d7c0 [CodeComplete] Improve ExpectsNonVoid computation
If we know we have a Void expected type, don't set
`ExpectsNonVoid` to `true`.
2024-01-29 21:26:08 +00:00
Rick van Voorden
f8ae46b3f3 [inclusive-language] changed sanity to soundness 2024-01-25 18:18:02 -08:00
Doug Gregor
be6393b7ca Use any Error for caught error type of an exhaustive, non-throwing do..catch
Prior to the introduction of typed throws, a `do..catch` always had a caught
error type of `any Error`, even if there were no throwing sites within
the `do` body. With typed throws, such a `do..catch` would have a
caught error type of `Never`, because it never throws. Unfortunately,
this causes code like the following to produce an error, because
`Never` cannot be pattern-matched to `HomeworkError.forgot`:

    func test() {
      do {
        try nonthrowing()
      } catch HomeworkError.forgot {
      } catch {
      }
    }

For source-compatibility reasons, adjust the caught error type to
`any Error` in this case, so we continue to accept the code above.
Don't do this adjustment under `FullTypedThrows`, because it's only
there for compatibility.

Fixes rdar://121526201.
2024-01-24 14:42:56 -08:00
Alex Hoppen
c8424c1b7a [CodeComplete] Remove code for call pattern heuristics
These options weren’t used anymore, so we can remove them.
2024-01-22 19:57:12 -08:00
Alex Hoppen
ece521c12b Merge pull request #71046 from ahoppen/ahoppen/copyable-completion
[CodeComplete] Emit `Copyable` declaration instead of keyword
2024-01-22 17:22:51 -08:00
Alex Hoppen
4c4f3c004b Merge pull request #71063 from ahoppen/ahoppen/delete-dot-in-call
[CodeComplete] Delete `.` in completion suggestions of call pattern
2024-01-22 17:21:40 -08:00
Alex Hoppen
7087da9913 [CodeComplete] Emit Copyable declaration instead of keyword
Now that there is an actual declaration for `Copyable` we should be emitting that as a code completion result instead of a keyword, like we currently do.

rdar://109107817
2024-01-22 12:34:38 -08:00
Alex Hoppen
88275d48e6 [CodeComplete] Delete . in completion suggestions of call pattern
Previously, were were suggesting to add `()` after eg. `x.` if `x` has a function type, resulting in `x.()`, which is incorrect. We need to remove the `.` in the completion suggestion.

rdar://121155241
2024-01-22 12:29:05 -08:00
Alex Hoppen
695e69e09e [CodeComplete] Suggest single argument labels if code completion is invoked at start of function call with exiting parameters
This removes the distinction between argument completions and postfix expr paren completions, which was meaningless since solver-based completion.

It then determines whether to suggest the entire function call pattern (with all argument labels) or only a single argument based on whether there are any existing arguments in the call.

For this to work properly, we need to improve parser recovery a little bit so that it parsers arguments after the code completion token properly.

This should make call pattern heuristics obsolete.

rdar://84809503
2024-01-22 12:21:04 -08:00
Kuba Mracek
a3030d36df [embedded] Adjust IDE/complete_embedded.swift test for addition of Dictionary to the embedded stdlib 2024-01-16 13:40:13 -08:00
Doug Gregor
f316c5fcfe Update tests for map switching to typed throws 2024-01-12 10:17:59 -08:00
Doug Gregor
baaa8f3e5b Merge pull request #70677 from DougGregor/se-0413-typed-throws
Enable SE-0413 "Typed Throws" by default
2024-01-04 16:11:26 -08:00
Doug Gregor
87f97c5696 Temporarily hack test case involving code completion with "catch" clauses 2024-01-04 09:47:38 -08:00
Rintaro Ishizaki
b7a2bd33ca [Tests] IDE/complete_embedded.swift supports only macOS and Linux 2024-01-04 09:04:20 -08:00
Rintaro Ishizaki
a8ae8e4b8c [CodeCompletion] Check if stdlib decls exist
In some configurations e.g. 'Embedded', some stdlib types don't exist.
We cannot just assume they are always available.

rdar://119691781
2024-01-03 16:31:10 -08:00
Alex Hoppen
e56708c84f [CodeCompletion] Fix crash when completing inside a protocol that inherits from other protocol with extension
rdar://119408961
2023-12-13 14:27:50 -08:00
Slava Pestov
026d3f0078 Merge pull request #70311 from slavapestov/type-witness-system-inference-stdlib
Get the standard library to build with -enable-experimental-associated-type-inference
2023-12-10 17:50:33 -05:00
Slava Pestov
4bf0cc2490 Always build the stdlib with -enable-experimental-associated-type-inference 2023-12-10 11:21:35 -05:00
Sima Nerush
b6d0afba1f Merge pull request #67594 from simanerush/simanerush/pack-iteration-impl
[SE-0408] Enable Pack Iteration
2023-12-07 17:09:48 -08:00
Alex Hoppen
69d1c162ca Merge pull request #70225 from ahoppen/ahoppen/non-default-literal-completion
[CodeCompletion] Don’t increase score for non-default literal types when performing member completion on a literal
2023-12-06 14:22:33 -08:00
Alex Hoppen
485a06e503 [CodeCompletion] Don’t increase score for non-default literal types when performing member completion on a literal
Resolves rdar://118999423
2023-12-05 16:00:59 -08:00
Alex Hoppen
9cb2a248c6 [CodeCompletion] Add keyword completion for 'some', 'any', 'repeat', and 'each'
The implementation is not 100% perfect but I don’t think it’s worth putting too much effort into it passing more information down in the parser if 'repeat' and 'each' are valid if we are going to remove the current parser anyway.

rdar://95725895
2023-12-04 15:20:05 -08:00
Sima Nerush
a687032925 Add repeat code completion 2023-12-03 21:51:40 -08:00
Alex Hoppen
2428badc08 Merge pull request #70010 from ahoppen/ahoppen/prefer-call-if-reference-and-call-are-possible
[CodeComplete] Prefer function call if both reference and call are possible
2023-11-27 14:06:47 -08:00
Pavel Yaskevich
5bc6ec6184 Merge pull request #69890 from xedin/rdar-99758612
[ClangImporter] Add support for `swift_attr(“@Sendable”)` on ObjC protocols
2023-11-27 13:17:31 -08:00
Pavel Yaskevich
420e0af776 Merge pull request #69939 from xedin/issue-69936
[ConstraintSystem] Key path literals with completion tokens should be…
2023-11-27 13:16:48 -08:00
Nuri Amari
c12b6e2bd3 Merge pull request #69970 from NuriAmari/swift-ide-test-updates
[swift-ide-test] Add -enable-upcoming-feature ImportObjcForwardDeclarations support
2023-11-27 12:50:18 -08:00
Alex Hoppen
cf12f2bf1f [CodeComplete] Add test case for rdar://88883761
This test was already passing. Probably fixed by migrating to solver-based completions.

rdar://88883761
2023-11-23 11:05:53 -08:00
Alex Hoppen
adc9cc9c72 [CodeComplete] Prefer function call if both reference and call are possible
The real-world use case here is the `Task` initializer in the added test case. In general, we should only prefer to insert an unapplied function reference if it has a better type relation than calling the function because, in most cases, you want to call functions and not get unapplied references to them.

rdar://90456105
2023-11-23 10:44:17 -08:00
Nuri Amari
7fb7e42f37 [swift-ide-test] Tie ClangImporter fwd-decl option to chosen lang feature
Prviously swift-ide-test enabled importing of ObjC forward declarations
with the -enable-objc-forward-declarations option. The compiler enables
the same behavior via -enable-upcoming-feature.

Now that swift-ide-test also supports upcoming-features, make enabling
the ImportObjcForwardDeclarations language feature have the expected
effect in swift-ide-test.

The old flag is also removed.
2023-11-20 10:28:23 -08:00
Pavel Yaskevich
72bb74aa4f [ConstraintSystem] Key path literals with completion tokens should be marked as invalid
Capability couldn't be determined for expressions like that which
means that inference should be delayed until root becomes available.

Resolves: https://github.com/apple/swift/issues/69936
2023-11-16 15:48:46 -08:00
Rintaro Ishizaki
47f18d492e [ASTGen] Move regex literal parsing from SwiftCompilerSources to ASTGen
ASTGen always builds with the host Swift compiler, without requiring
bootstrapping, and is enabled in more places. Move the regex literal
parsing logic there so it is enabled in more host environments, and
makes use of CMake's Swift support. Enable all of the regex literal
tests when ASTGen is built, to ensure everything is working.

Remove the "AST" and "Parse" Swift modules from SwiftCompilerSources,
because they are no longer needed.
2023-11-16 10:59:23 -08:00
Pavel Yaskevich
ab4f8d0dc0 [RequirementMachine] Inherited requirements collection should account for synthesized protocols
ClangImporter adds `SynthesizedProtocolAttr` to model inheritance
from `Sendable` on protocols imported from Objective-C.
2023-11-16 10:58:34 -08:00
Yuta Saito
79b3d2d626 Add underscore prefix to extern attribute
It's already guarded by a feature flag, but it would be nice to signal
users that it's not stable yet by adding an underscore prefix.
2023-11-07 02:01:02 +00:00
hairyputtar
4f8ca976d6 fix typo 2023-10-25 18:33:16 +05:30
hairyputtar
ba9185f990 fix typo 2023-10-25 18:31:59 +05:30
Yuta Saito
69479933df [c-interop] Rename @_extern to @extern
Now the feature is gated by experimental feature flag.
It's not shipped in any language release, so this rename should be fine.
2023-10-20 17:37:43 +00:00
Alex Hoppen
90506909d3 Merge pull request #68603 from ahoppen/ahoppen/storage-attribute-completion
[CodeCompletion] Completion for `@storageRestrictions` attribute
2023-10-02 10:17:43 -07:00
Rintaro Ishizaki
d0dfd75341 [Tests] Mark macro test 'REQUIRES: swift_swift_parser'
rdar://116239522
2023-09-29 17:06:18 -07:00
Alex Hoppen
ee85314e6f [CodeCompletion] Add completion for @storageRestrictions 2023-09-27 09:33:38 -07:00
Alex Hoppen
9b31e9a69f Merge pull request #68595 from ahoppen/ahoppen/batch-completion
[tests] Add a `%batch-code-completion` lit substitution
2023-09-20 17:26:09 -07:00