Commit Graph

3610 Commits

Author SHA1 Message Date
Ben Barham
4eb87bda74 Merge pull request #64197 from bnbarham/allow-at-or-pound
[CursorInfo] Handle @ and # position
2023-03-08 08:20:15 -08:00
Ben Barham
daa80bba4b [CursorInfo] Handle @ and # position
Allow clients to send the position of @ or #, rather than just the name.

Resolves rdar://106368511.
2023-03-07 18:00:15 -08:00
Alex Hoppen
614679f73d [IDE] Set solution-specific variable types as interface types
Setting the interface type of a variable, just to reset it to a null type is actually really gross. But quite a few methods further down in the generation of code completion results (such as USR generation) need to get a variable’s type and passing them along in a separate map would be really invasive. So this seems like the least bad solution to me.
2023-03-07 17:48:41 -08:00
Hamish Knight
37b0a6074f [Sema] Introduce ExprPatternMatchRequest
This replaces `synthesizeTildeEqualsOperatorApplication`,
and synthesizes the match expression and var
on-demand.

Additionally, it pushes the lookup logic into
pre-checking.
2023-03-07 15:16:35 +00:00
Hamish Knight
54c2fbf6f3 [CS] NFC: Add Solution::getTargetFor 2023-03-07 15:16:34 +00:00
Hamish Knight
2976edbe20 [CS] Rename SolutionApplicationTarget -> SyntacticElementTarget 2023-03-06 20:54:06 +00:00
Doug Gregor
af3b41625f Make the interface type of a generic macro into a GenericFunctionType.
This correctly models their type in the type system, and fixes the
redeclaration issue reported in rdar://104183961.
2023-03-05 22:38:08 -08:00
Doug Gregor
7177a16c4c [Code completion] Provide attached macro names after @ 2023-03-04 21:42:36 -08:00
Doug Gregor
af6fe8b383 [Code completion] Don't include non-freestanding macros in results. 2023-03-03 21:39:38 -08:00
Alexis Laferrière
6980cf211b [Serialization] Intro package-only module wide information and serialize it 2023-03-03 11:43:20 -08:00
Alexis Laferrière
4330921806 [Sema] Remove ImportFilterKind::SPIAccessControl
That filter wasn't needed in practice, we can remove it.
2023-03-03 11:42:59 -08:00
Doug Gregor
b82a0f54cb Merge pull request #64052 from DougGregor/se-382-macro-decls 2023-03-03 06:22:16 -08:00
Doug Gregor
7fc7040aad [Macros] Drop special code completions for built-in macros.
We don't need special completion logic for things like `#file` and
`#line` now that they are declared in the standard library. Drop it
and update tests.
2023-03-02 20:34:58 -08:00
Ben Barham
bb7760b9e0 [Refactor] Allow expanding nested macros
This adds a new `primary_file` key, which defaults to `sourcefile`. For
nested expansions, `primary_file` should be set to the containing file
and `sourcefile` to the name of the macro expansion buffer.
2023-03-02 14:04:46 -08:00
Holly Borla
b78b6b9a77 Merge pull request #63991 from hborla/materialize-pack-from-tuple
[ConstraintSystem] Implement type checking for converting a tuple to a pack using the `.element` syntax.
2023-03-01 16:19:33 -08:00
Doug Gregor
bd35cdb865 Merge pull request #63985 from DougGregor/expression-macros-effects 2023-03-01 06:52:43 -08:00
Holly Borla
509188630b [ConstraintSystem] Implement type checking for converting a tuple to a
pack using the `.element` syntax.
2023-02-28 22:56:59 -08:00
Doug Gregor
7a1c558899 Add more missing ASTWalker macro behavior entries 2023-02-28 19:13:02 -08:00
Doug Gregor
200f2340d9 [Macros] Be deliberate about walking macro arguments vs. expansions
Provide ASTWalker with a customization point to specify whether to
check macro arguments (which are type checked but never emitted), the
macro expansion (which is the result of applying the macro and is
actually emitted into the source), or both. Provide answers for the
~115 different ASTWalker visitors throughout the code base.

Fixes rdar://104042945, which concerns checking of effects in
macro arguments---which we shouldn't do.
2023-02-28 17:48:23 -08:00
Alex Hoppen
47607f630c [IDE] Don't set LeaveClosureBodiesUnchecked for solver-based cursor info 2023-02-28 17:28:01 +01:00
Alex Hoppen
0ed6deea9b Merge pull request #63712 from ahoppen/ahoppen/completion-misc
[CodeCompletion] Collection of minor changes to prepare migrating remaining completion kinds to solver-based
2023-02-28 16:02:58 +01:00
Alex Hoppen
ababdcaa0d Merge pull request #63859 from ahoppen/ahoppen/typecontextinfo-solver-based
[IDE] Migrate TypeContextInfo to solver-based
2023-02-27 23:12:27 +01:00
Ben Barham
ba377d7fb4 Merge pull request #63765 from bnbarham/add-generated-name-to-expansions
[SourceKit] Add an optional path and name to refactoring edits
2023-02-23 09:15:58 -08:00
Alex Hoppen
39668a8ac8 [IDE] Migrate TypeContextInfo to solver-based 2023-02-23 14:14:09 +01:00
Ben Barham
f7aaf02065 [SourceKit] Add an optional path and name to refactoring edits
Add two new fields to refactoring edits:
  - A file path if the edit corresponds to a buffer other than the
    original file
  - A buffer name when the edit is actually source of generated buffer

Macro expansions allow the former as a macro could expand to member
attributes, which may eg. add accessors to each member. The attribute
itself is inside the expansion, but the edit is to the member in the
original source.

The latter will later allow clients to send requests with these names to
allow semantic functionality inside synthesized buffers.
2023-02-22 16:24:02 -08:00
Alex Hoppen
989b69fc1d [IDE] Add debug output if we use fallback type checking for code completion 2023-02-22 22:33:42 +01:00
Alex Hoppen
470dcde915 [CodeCompletion] Don't show call pattern completions for overridden functions 2023-02-22 22:33:42 +01:00
Alex Hoppen
390d7a6882 [CodeCompletion] Compute type relations for the function calls selected by ArgumentCompletion 2023-02-22 22:33:40 +01:00
Alex Hoppen
f4986f9b3e [CodeCompletion] Don't consider calls to initializers on metatypes in argument completion 2023-02-22 22:31:08 +01:00
Alex Hoppen
062eccbbbb [CodeCompletion] Hide underscored code completion results in argument completion 2023-02-22 22:31:08 +01:00
Alex Hoppen
24f64b8aea Merge pull request #63752 from ahoppen/ahoppen/property-wrapper-relationship
[IDE] Compute type relations for attributes for generic property wrapper types
2023-02-21 08:21:52 +01:00
Alex Hoppen
61e8882568 [IDE] Compute type relations for attributes for generic property wrapper types
The existing logic to check whether a type is a valid property wrapper only worked for nominal types, not generic types. Also consider generic types.
2023-02-17 19:32:39 +01:00
Ben Barham
9e40280bda Merge pull request #63738 from bnbarham/macros-everywhere
[AST] Allow ignoring macro expansions
2023-02-17 10:18:56 -08:00
Alex Hoppen
16af937919 Merge pull request #63515 from ahoppen/ahoppen/look-through-optional
[CodeCompletion] Look through optional when determining the function type of a called overload
2023-02-17 17:24:19 +01:00
Ben Barham
0c3f538822 [AST] Allow ignoring macro expansions
Various requests expect to be walking over the current source file.
While we could add checks to all these to skip decls outside of the
current buffer, it's a little nicer to handle this during the walk
instead.

Allow ignoring nodes that are from macro expansions and add that flag to
the various walks that expect it.

Also add a new `getOriginalAttrs` that filters out attributes in
generated source.
2023-02-16 18:04:56 -08:00
Holly Borla
60ae1b1fdf Merge pull request #63703 from hborla/resolve-macro-decl-context
[Macros] Don't invoke `ResolveMacroRequest` for the same custom attribute with different `DeclContext`s.
2023-02-16 08:08:53 -08:00
Holly Borla
85f2a1a234 [Macros] Factor calls to ResolveMacroRequest into Decl::getResolvedMacro.
This prevents call-sites from making the mistake of passing an incorrect
DeclContext to the request, which can cause re-typechecking issues.
2023-02-15 18:52:02 -08:00
Holly Borla
f1953f311f [Macros] Don't invoke ResolveMacroRequest for the same custom attribute with
different DeclContexts.
2023-02-15 14:58:24 -08:00
Alex Hoppen
f210a8e25f Merge pull request #63612 from ahoppen/ahoppen/resolved-cursor-info-by-reference
[SourceKit] Pass `ResolvedCursorInfo` as shared pointer instead of by value
2023-02-15 22:44:04 +01:00
Holly Borla
c33c925e81 [Macros] Remove the macro role argument to ResolveMacroRequest.
The macro role argument presented an opportunity for callers to accidentally
invoke this request twice for the same macro with slightly different macro
roles passed in, which resulted in re-typechecking the macro arguments.
Instead, derive the corresponding macro roles from the macro reference syntax.
2023-02-14 22:38:53 -08:00
Alex Hoppen
ee26b4b299 [SourceKit] Pass ResolvedCursorInfo as shared pointer instead of by value
This allows us to model the `ResolvedCursorInfo` types as a proper type hierarchy instead of having to store all values in the base `ResolvedCursorInfo` type.

rdar://102853071
2023-02-14 22:40:45 +01:00
Alex Hoppen
754e9d7d54 [CodeCompletion] Fix issue when completing inside a switch in a closure 2023-02-14 09:40:56 +01:00
Alex Hoppen
ff7e11c83f [CodeComplete] Fix crash when completing in a string literal in a result builder 2023-02-14 09:40:56 +01:00
Alex Hoppen
9f4e1926b6 [CodeCompletion] Use type from solution to determine actor isolation 2023-02-14 09:40:56 +01:00
Alex Hoppen
26e237c4ae [CodeCompletion] Disallow void when code completion expr is a solution application target whose result is not unused
This happens if the code completion expression initializes a variable in a multi-statement closure that doesn’t have LeaveClosureBodiesUnchecked set.
2023-02-14 09:40:55 +01:00
Doug Gregor
96380624db [SourceKit] Implement macro expansion for (some) attached macros.
Extend the macro-expansion refactoring to work with member and
member-attribute attached macros. These expansions can return several
different changes, e.g., adding new members, sprinkling member
attributes around, and so on.
2023-02-11 11:23:28 -08:00
Alex Hoppen
fd039f4344 Merge pull request #62478 from ahoppen/ahoppen/solver-based-cursor-info
[CursorInfo] Implement a few expression references as solver-based
2023-02-10 16:49:37 +01:00
Doug Gregor
04eca73d60 [Macros] Stop parsing the ": <type>" syntax. We always require parameters 2023-02-09 22:11:23 -08:00
Alex Hoppen
a9cba5457c [CursorInfo] Fix a bug that caused solver-based cursor info to crash if invoked on a symbol from a different module 2023-02-09 23:29:07 +01:00
Alex Hoppen
e7ee839189 [CursorInfo] A few miscellaneous fixes to the AST-based cursor info and new test cases
In these cases the solver-based and AST-based cursor info differed in their results. Fix the AST-based cursor info to return the correct results and add test cases to make sure the solver-based implementation doesn’t regress them.
2023-02-09 23:29:07 +01:00