Commit Graph

4990 Commits

Author SHA1 Message Date
Ben Barham
c54c9c7079 [Gardening] Extract basic source info structs from RawComment.h 2021-04-14 10:05:27 +10:00
Ben Barham
299df93a7f Merge pull request #36807 from bnbarham/use-original-locs
Replace uses of presumed locations where they do not make sense
2021-04-13 08:48:23 +10:00
Ben Barham
20f45ec284 Replace uses of presumed locations where they do not make sense
Various uses of `getPresumedLineAndColumnForLoc` were likely added when
that function was the very misleading name `getLineAndColumn`. Change
these to use `getLineAndColumnForBuffer` instead where appropriate, ie.
we want the underlying file rather than the location to display to the
user.

There were also some cases where the buffer identifier had been swapped
to use the display name instead, under the assumption that the presumed
location was needed. Updated those as well.

SingleRawComment: Lines are only used when merging comments, where the
original location is fine to use.

Index: Doesn't store the file set in #sourceLocation, so using the
presumed line would end up pointing to a location that makes no sense.

Editor functionality: Formatting and refactoring are on the current
file. Using the presumed location would result in incorrect
replacements.
2021-04-10 09:49:31 +10:00
Arnold Schwaighofer
9286ece71c Revert "Enable import of the _Concurrency module by default." 2021-04-09 13:20:30 -07:00
QuietMisdreavus
07dc2a987e Merge pull request #36785 from apple/QuietMisdreavus/quiet-symbolgraph
[SymbolGraphGen] silence symbolgraph-extract output without -v flag
2021-04-09 08:43:04 -06:00
Doug Gregor
9ba0647a58 Merge pull request #36767 from DougGregor/implicit-concurrency-import 2021-04-08 18:32:45 -07:00
Argyrios Kyrtzidis
a4d4ab6da8 Merge pull request #36797 from ahoppen/pr/stdlib-loaded
[SourceKit] Verify the stdlib is loaded before creating an AST
2021-04-07 13:10:05 -07:00
Victoria Mitchell
ba2b92be4e call it PrintMessages instead 2021-04-07 08:58:20 -06:00
Alex Hoppen
4107d02759 [SourceKit] Verify the stdlib is loaded before creating an AST
We have seen a couple of crashes that look like they are being caused by `sourcekitd` being unable to load the Swift stdlib. Emit a proper error message explaining the issue instead of crashing.

This change assumes that all sourcekitd requests that create an AST require the stdlib. IMHO this is a reasonable assumption.

Fixes rdar://75740572 by catching the crash in the new check.
2021-04-07 14:25:25 +02:00
Alex Hoppen
294977534c [libSyntax] Remove incremental JSON transfer option
We were only keeping track of `RawSyntax` node IDs to incrementally transfer a syntax tree via JSON. However, AFAICT the incremental JSON transfer option has been superceeded by `SyntaxParseActions`, which are more efficient.

So, let’s clean up and remove the `RawSyntax` node ID and JSON incremental transfer option.

In places that still need a notion of `RawSyntax` identity (like determining the reused syntax regions), use the `RawSyntax`’s pointer instead of the manually created ID.

In `incr_transfer_round_trip.py` always use the code path that uses the `SyntaxParseActions` and remove the transitional code that was still using the incremental JSON transfer but was never called.
2021-04-07 10:01:34 +02:00
Victoria Mitchell
0c5955b7fa silence symbolgraph-extract output without -v flag
rdar://72630103
2021-04-06 16:40:38 -06:00
Doug Gregor
95fd3ede09 Update tests and testing tools for implicit _Concurrency import 2021-04-06 14:08:41 -07:00
Nathan Hawes
08250f058a [SourceKit/CursorInfo] Report the set of decls referenced in the symbol graph's "declarationFragments" field.
Resolves rdar://75809521
2021-04-03 09:42:54 +10:00
Varun Gandhi
cb6b1ea07b Merge pull request #36677 from varungandhi-apple/vg-emit-irgen
[Frontend] Add -emit-irgen option to driver and frontend.
2021-03-31 16:17:54 -07:00
Varun Gandhi
cc14992281 [Frontend] Add -emit-irgen option to driver and frontend.
Fixes SR-14389, fixes rdar://75715690.
2021-03-31 11:56:36 -07:00
Ben Barham
3ea9bed415 [SourceKit/CursorInfo] Add constructor to call results
Cursor info for a constructor would previously give the cursor info for
the containing type only. It now also adds cursor info for the
constructor itself in a "secondary_symbols" field.

Refactor `passCursorInfoForDecl` to use a single allocator rather than
keeping track of positions in a buffer and assigning everything at the
end of the function.

Refactor the various available refactoring gathering functions to take a
SmallVectorImpl and to not copy strings where they don't need to.

Resolves rdar://75385556
2021-03-30 13:23:59 +10:00
Becca (née Brent) Royal-Gordon
3df5ca6636 Merge pull request #36409 from beccadax/behave-yourself
Soften errors for invalid @objc attributes added by access notes
2021-03-25 15:44:22 -07:00
Ben Barham
8948a034c8 Merge pull request #36508 from bnbarham/static-dynamic-flag
[SourceKit/CursorInfo] Mark dynamic calls
2021-03-23 15:27:37 +10:00
Saleem Abdulrasool
714eaefc78 Importer: remove ImportAsMember support
This functionality is not actively in use and the last usage of this has
been removed.  Remove the infrastructure that is no longer in need.
2021-03-22 08:53:56 -07:00
Ben Barham
19f23130d0 [SourceKit/CursorInfo] Mark dynamic calls
Adds two new fields to the cursor info response:
  1. is_dynamic: whether a call is dynamic
  2. receivers: receivers of the call (USRs)

Users of the CursorInfo request can use "is_dynamic" to decide whether
to lookup overrides or not, and then the "receivers" as the starting
point of the lookup.

Resolves rdar://75385900
2021-03-20 13:57:01 +10:00
Steven Wu
7b3287410e Merge pull request #36520 from cachemeifyoucan/eng/SR-14311
[SR-14311] Error out when swift-api-extract failed to load module
2021-03-19 14:28:18 -07:00
Steven Wu
9904f9bb9c [SR-14311] Error out when swift-api-extract failed to load module
Emit diagnostics and error out when swift-api-extract failed to load
module.
2021-03-19 10:55:59 -07:00
Nathan Hawes
839500867c Merge pull request #36486 from nathawes/add-language-to-cursor-info
[SourceKit][CursorInfo] Add a field for the source language the symbol was originally defined in
2021-03-19 13:47:09 +10:00
Becca Royal-Gordon
d7c385571f [NFC] Add -access-notes-path to swift-ide-test 2021-03-18 17:22:57 -07:00
Nathan Hawes
e1a4c5f846 [SourceKit][CursorInfo] Add a field for the source language the symbol was originally defined in
Resolves rdar://75446903
2021-03-18 18:49:25 +10:00
Artem Chikin
2a46f5fbe6 Merge pull request #36452 from artemcm/NewDriverDummyOptFirst
[Driver] Emit the `-new-driver-path` option before actual compiler arguments
2021-03-16 19:03:47 -07:00
Alex Hoppen
fece895cb9 Merge pull request #36417 from ahoppen/pr/libsyntax-performance-improvements
[libSyntax] Several small improvements to libSyntax parsing
2021-03-16 23:53:22 +01:00
Artem Chikin
d4fae29e0e [Driver] Emit the -new-driver-path option before actual compiler arguments.
Otherwise, if it is last then it will come after the input input source-file arguments. And in immediate (`swift`) mode, things that come after input source-file arguments are considered to be arguments to the underlying script and are placed after the `--`.

Resolves rdar://75039518
2021-03-16 13:48:42 -07:00
swift-ci
3bd26d0a38 Merge pull request #36381 from owenv/api-digester-as-frontend-tool 2021-03-15 23:26:26 -07:00
Xi Ge
2a1a7a8bca Merge pull request #36388 from nkcsgexi/75275788
driver: prefer a new driver name as swift-driver instead of swift-driver-new
2021-03-15 12:04:30 -07:00
Xi Ge
5e2bd57d90 driver: prefer a new driver name as swift-driver instead of swift-driver-new
rdar://75275788
2021-03-13 22:07:26 -08:00
Alex Hoppen
b20683252b [libSyntax] Eliminate loop and memory allocation translating ParsedRawSyntaxNode to RecordedOrDeferredNode 2021-03-12 08:47:08 +01:00
Alex Hoppen
f7410ff0e7 Merge pull request #36385 from ahoppen/pr/no-range-in-parsedrawsyntaxnode
[libSyntax] Only keep track of range in ParsedRawSyntaxNode if verifying element ranges
2021-03-12 08:16:56 +01:00
Alex Hoppen
350ac1514c [libSyntax] Only keep track of range in ParsedRawSyntaxNode if verifying element ranges
This makes ParsedRawSyntaxNode a zero-cost wrapper around RecordedOrDeferredNode in the case that ranges are not verified.
2021-03-11 19:58:59 +01:00
Owen Voorhees
77efd77d23 [APIDigester] Build the API digester as a frontend tool instead of a standalone executable 2021-03-10 19:30:10 -08:00
Ben Langmuir
454f0c434b Merge pull request #36370 from benlangmuir/refactor-import-depth
Lift ImportDepth utility out of SourceKit into IDE (NFC)
2021-03-10 09:09:04 -08:00
Alex Hoppen
a47bd7089e [libSyntax] Don't create dedicated deferred nodes in SyntaxTreeCreator
We have finally reached our goal of optimising deferred node creation
for SyntaxTreeCreator. Instead of creating dedicated deferred nodes and
copying the data into a RawSyntax node when recording, we always create
RawSyntax nodes. Recording a deferred node is thus a no-op, since we
have already created a RawSyntax node. Should a deferred node not be
recorded, it stays alive in the SyntaxArena without any reference to it.
While this means, we are leaking some memory for such nodes, most nodes
do get recorded, so the overhead should be fine compared to the
performance benefit.
2021-03-10 08:48:18 +01:00
Alex Hoppen
beadd4a34a Merge pull request #36277 from ahoppen/pr/deferred-nodes-in-syntax-parse-actions
[libSyntax] Create deferred nodes in SyntaxParseActions
2021-03-09 22:57:46 +01:00
Ben Langmuir
222e2c7f4c Lift ImportDepth utility out of SourceKit into IDE (NFC) 2021-03-09 13:52:56 -08:00
Alex Hoppen
efb91f70a1 [libSyntax] Handle deferred node data in SyntaxParseActions
By now ParsedRawSyntaxNode does not have any knowledge about deferred
node data anymore, which frees up SyntaxParseActions (and, in
particular its sublass SyntaxTreeCreator) to perform optimisations to
more efficiently create and record deferred nodes.
2021-03-09 14:26:08 +01:00
Owen Voorhees
318e1b9e07 Port swift-symbolgraph extract argument parsing from llvm::cl to llvm::opt 2021-03-08 22:40:37 -08:00
Rintaro Ishizaki
682f3a7d38 Merge pull request #36249 from ahoppen/pr/range-in-token-data
[libSyntax] Store range in token_data in C lib parse actions
2021-03-08 13:03:53 -08:00
QuietMisdreavus
2159908e06 [SymbolGraph] don't scan every available module for cross-import overlays (#36303)
rdar://74928853
2021-03-08 13:05:11 -07:00
Alex Hoppen
a48713717e [libSyntax] Store range in token_data in C lib parse actions
We don't actually need the range for layout nodes, so just store it
for token nodes. This will also make deferred node handling easier
later on, because we don't need to keep track of layout node ranges.
2021-03-08 18:40:42 +01:00
Rintaro Ishizaki
631013cd6e Merge pull request #36316 from rintaro/sourcekit-editnowait-rdar74984613
[sourcekit] Response 'edit' immediately if client needs nothing
2021-03-06 09:29:12 -08:00
Rintaro Ishizaki
40dc8e1bd4 [sourcekit] Response "edit" immediately if client needs nothing
If the client doesn't want anything as the response of
'editor.replacetext' requests, we don't even need parsing.

rdar://problem/74984613
2021-03-05 13:18:11 -08:00
Alex Hoppen
dd9e831ba7 [libSyntax] Explicitly pass source file length to c parse actions
Previously, the passed in source file was implicitly terminated by the
first null character. The source file might, however, contain a null
character in the middle and we shouldn't stop parsing at it.
2021-03-04 22:20:11 +01:00
Alex Hoppen
dc8eed4279 [libSyntax] Delete discardRecordedNode
It doesn't do anything anymore and we shouldn't have it, so let's just
remove it.
2021-03-02 20:07:26 +01:00
Alex Hoppen
76fbae1526 [libSyntax] Change OpaqueSyntaxNode to be a const void *
The data of an OpaqueSyntaxNode should never be modified. Also, this
allows us to get rid of two const_casts.
2021-03-02 20:07:26 +01:00
Alex Hoppen
96cb75608c Merge pull request #36165 from ahoppen/pr/dont-ref-count-rawsyntax
[libSyntax] Don't reference count RawSyntax
2021-03-02 17:40:17 +01:00