Commit Graph

201 Commits

Author SHA1 Message Date
David Zarzycki
654234ad64 [Testing] Unbreak minimal Swift builds
For various reasons, it can be useful/interesting to create builds of
Swift that minimize dependencies. Let's try to keep that working as long
as we can.
2021-04-16 17:39:01 -04:00
Alex Hoppen
341b8708f3 Merge pull request #36909 from ahoppen/pr/index-generic-params-in-extensions
[Index] Index generic parameters used inside extensions
2021-04-16 10:43:30 +02:00
Alex Hoppen
053a4d7ec8 [Index] Index generic parameters used inside extensions
Extensions redeclare all generic parameters of their extended type to add their additional restrictions. There are two issues with this model for indexing:
 - The generic paramter declarations of the extension are implicit so we wouldn't report them in the index. Any usage of the generic param in the extension references this implicit declaration so we don't include it in the index either.
 - The implicit re-declarations have their own USRs so any usage of a generic parameter inside an extension would use a different USR than declaration of the param in the extended type.

To fix these issues, we replace the reference to the implicit generic parameter defined in the extension by a reference to the generic paramter defined in the extended type.
2021-04-15 08:55:47 +02:00
Doug Gregor
568e943115 Enable import of the _Concurrency module by default. 2021-04-13 23:14:06 -07: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
Doug Gregor
95fd3ede09 Update tests and testing tools for implicit _Concurrency import 2021-04-06 14:08:41 -07:00
Ben Barham
39bb0d0d39 [Index] Add the dynamic role for calls to class methods
`class` functions can be overridden in subclasses but did not have the
`Dynamic` role added to their calls. Also add the `ReceivedBy` relation
in the simple case of an open archetype, leaving the more complicated
general generic case for now.
2021-03-19 09:11:04 +10:00
Nathan Hawes
117f03b2f5 [Driver][Index] Add driver support to specify an overriding output path to record in the index data
The frontend supports this via new options -index-unit-output-path and
-index-unit-output-path-filelist that mirror -o and -output-filelist. These are
intended to allow sharing index data across builds in separate directories (so
different -o values) that are otherwise equivalent as far as the index data is
concerned (e.g. an ASAN build and a non-ASAN build) by supplying the same
-index-unit-output-path for both.

This change updates the driver to add these new options to the frontend
invocation 1) when a new "index-unit-output-path" entry is specified for one
or more input files in the -output-file-map json or 2) if -index-file is
specified, when a new -index-unit-output-path driver option is passed.

Resolves rdar://problem/74816412
2021-03-06 13:44:14 +10:00
Nathan Hawes
821345c834 [Frontend] Add a new -index-unit-ouput-path and filelist equivalent to the frontend
These new options mirror -o and -output-filelist and are used instead
of those options to supply the output file path(s) to record in the
index store. This is intended to allow sharing index data across
builds in separate directories that are otherwise equivalent as far
as the index data is concered (e.g. an ASAN build and a non-ASAN build)
by supplying the same -index-unit-output-path for both.

Resolves rdar://problem/74816412
2021-02-27 13:06:22 +10:00
Ben Langmuir
9fcb5ac6d8 [test] Update cross_langauge index test for mangling change 2020-10-28 13:07:37 -07:00
Doug Gregor
6d41524fe6 [SE-0289] Finish renaming source code, tests to "result builders" 2020-10-20 22:18:51 -07:00
Doug Gregor
6a40a3a8aa [SE-0289] Add support for @resultBuilder.
"Function builders" are being renamed to "result builders". Add the
corresponding `@resultBuilder` attribute, with `@_functionBuilder` as
an alias for it, Update test cases to use @resultBuilder.
2020-10-20 13:24:51 -07:00
Alexis Laferrière
f6931c8905 [Index] Test records of extensions in sources and modules 2020-10-18 15:02:31 -07:00
Slava Pestov
fa4f7dd664 Parse: Don't create PatternBindingDecls with overlapping source ranges
This was happening in the error recovery path when parsing accessors
on a pattern binding declaration that does not bind any variables, eg

let _: Int { 0 }
2020-09-22 00:16:54 -04:00
Nathan Hawes
ef6c374516 [Sema/Index] Resolve #keyPath components so they can be indexed
Unlike \keypath expressions, only the property components of #keypath
expressions were being resolved, so index wouldn't pick up references for their
qualifying types.

Also fixes a code completion bug where it was reporting members from the Swift
rather than ObjC side of bridged types.

Resolves rdar://problem/61573935
2020-08-05 15:27:52 -07:00
Rintaro Ishizaki
00e4a76ef0 Revert "[Sema/Index] Resolve #keyPath components so they get handled by indexing, semantic highlighting, etc." 2020-08-04 12:51:52 -07:00
Nathan Hawes
4c7cd16c3f Merge pull request #33245 from nathawes/index-key-paths
[Sema/Index] Resolve #keyPath components so they get handled by indexing, semantic highlighting, etc.
2020-08-03 10:28:48 -07:00
Nathan Hawes
1d78fe1211 [Sema/Index] Resolve #keyPath components so they can be indexed
Unlike \keypath expressions, only the property components of #keypath
expressions were being resolved, so index wouldn't pick up references for their
qualifying types.

Also fixes a code completion bug where it was reporting members from the Swift
rather than ObjC side of bridged types.

Resolves rdar://problem/61573935
2020-07-31 17:11:23 -07:00
Rintaro Ishizaki
f2502b9f61 [Test] Add indexing test cases for ExplicitCastExpr 2020-07-23 10:01:33 -07:00
Doug Gregor
f71f6207b5 [CMake] Make swift-frontend the primary Swift binary.
Build swift-frontend as the primary Swift binary, and have
swift/swiftc/etc. symlink over to it. This is a step toward allowing
swift-driver to replace the swift and swiftc binaries.
2020-06-23 13:00:26 -07:00
Nathan Hawes
5311021764 Merge pull request #32024 from kastiglione/dl/index-apply--index-ignore-system-modules-to-clang-modules
[Index] Apply -index-ignore-system-modules to system clang modules
2020-06-03 22:54:41 -07:00
Nathan Hawes
1f01103cc1 [Index] Add regression test case for @dynamicMemberLookup on a protocol. 2020-06-03 13:39:11 -07:00
Dave Lee
258ceda02f rename test 2020-06-03 11:13:45 -07:00
Dave Lee
8eb5cbe6a3 add test by @nathawes 2020-06-03 11:04:28 -07:00
Bruno Rocha
286b6cbb8f Visit base first 2020-05-30 14:34:42 +02:00
Bruno Rocha
cd838963a0 Index objcdynamic 2020-05-29 23:44:42 +02:00
Nathan Hawes
0f132bf75c Merge pull request #31431 from nathawes/rename-with-backticks
[IDE][SourceKit] Support escaped identifiers for the syntactic rename and related idents requests.
2020-05-04 14:50:33 -07:00
Nathan Hawes
0f8619b943 [IDE][SourceKit] Support escaped identifiers for the syntactic rename and related idents requests.
Resolves rdar://problem/46409010
Resolves rdar://problem/48256383
2020-04-30 13:08:23 -07:00
Varun Gandhi
a1716fe2a6 [Diagnostics] Update compiler diagnostics to use less jargon. (#31315)
Fixes rdar://problem/62375243.
2020-04-28 14:11:39 -07:00
Nathan Hawes
f78c93009d [AST] Fix assertion hit in AutoClosureExpr::getUnwrappedCurryThunkExpr()
For DoubleCurryThunk cases it’s expecting an ApplyExpr directly within the
OpenExistentialExpr, but in some cases it contains an ErasureExpr (implicit
conversion) that wraps the ApplyExpr. This updates the method to look
through implicit conversions.

Resolves rdar://problem/61885996
2020-04-27 15:30:04 -07:00
Nathan Hawes
b3b7aa8ecf Merge pull request #30964 from nathawes/syntactic-rename-for-callAsFunction
[IDE][Refactoring] Handle 'callAsFunction' specially in syntactic rename
2020-04-13 11:36:53 -07:00
Bruno Rocha
160eb6cfd8 Update index test response to cover unavailable calls 2020-04-12 19:18:47 -07:00
Nathan Hawes
bce68fa4e5 [IDE][Refactoring] Handle 'callAsFunction' specially in syntactic rename.
This change makes us treat it exactly as we do 'init'. We don't allow renaming the base name,
and don't fail if the basename doesn't match for calls.

Also:
  - explicit init calls/references like `MyType.init(42)` are now reported with
    'init' as a keywordBase range, rather than nothing.
  - cursor info no longer reports rename as available on init/callAsFunction
    calls without arguments, as there's nothing to rename in that case.
  - Improved detection of when a referenced function is a call (rather than
    reference) across syntactic rename, cursor-info, and indexing.

Resolves rdar://problem/60340429
2020-04-12 17:14:15 -07:00
Saleem Abdulrasool
a8334dba30 test: fix after 45dc14a275
Fix the tests after 45dc14a275.
2020-03-26 15:36:51 -07:00
Nathan Hawes
45dc14a275 [Index][test] Fix test/Index/Store/cross-import-overly.swift to handle units being printed out of order.
c-index-test sorts the units by their file name, which for the modules in
in this test is just [target-triple].swiftinterface-[hash-of-full-output-path]
and so changes depending on where it's run.
2020-03-25 20:51:56 -07:00
Nathan Hawes
a785fa6cee [Frontend][Index] Add frontend option to skip indexing the stdlib (for test performance)
Several tests related to indexing system modules were taking a considerable
amount of time (100+ seconds in the worst case) indexing the standard library.
This adds a frontend option to skip it and updates those tests to pass it.
2020-03-25 14:36:23 -07:00
Nathan Hawes
8b03b05f1d [Index] Add index support for cross import overlays.
Resolves rdar://problem/59445445
2020-03-25 10:04:41 -07:00
Slava Pestov
4caa6d7003 IDE: Fix indexing for Sema-built curry thunks 2020-03-17 19:03:03 -04:00
Ben Langmuir
dbbe45e256 Merge pull request #30389 from benlangmuir/index-caf
[index] Add implicit callAsFunction reference to index
2020-03-13 14:44:26 -07:00
Ben Langmuir
3eff694bad [index] Add implicit callAsFunction reference to index
* Reference is marked "explicit", which may be unexpected - the reason
is that the *call* is explicit, so we want to find it with e.g. rename,
or looking up callers, even though the identifier callAsFunction is
implicit. This matches the behaviour of initializers.

* The source location is the same as the base name (e.g. in `add3(5)`,
it would be at `add3`), which matches the behaviour of initializers.

rdar://problem/60327632
2020-03-12 15:04:52 -07:00
Argyrios Kyrtzidis
24a7620a9b [test/Index] Add a test case for cross-language USR generation fix on the clang side
This is a Swift-side test case for https://github.com/apple/llvm-project/pull/887
Ensures Swift and Clang are in-sync on the USRs for exported properties.
2020-03-12 09:58:17 -07:00
Rintaro Ishizaki
5405a159df Revert "[test/Index] Add a test case for cross-language USR generation fix on the clang side" 2020-03-10 10:41:25 -07:00
Argyrios Kyrtzidis
1082678493 [test/Index] Add a test case for cross-language USR generation fix on the clang side
This is a Swift-side test case for https://github.com/apple/llvm-project/pull/887
Ensures Swift and Clang are in-sync on the USRs for exported properties.
2020-03-09 22:55:28 -07:00
Suyash Srijan
d62411535b [CSSimplify] Guard against null locator in isSelfRecursiveKeyPathDynamicMemberLookup (#29886) 2020-02-17 21:28:44 +00:00
swift-ci
5220905ec1 Merge remote-tracking branch 'origin/master' into master-rebranch 2020-02-03 15:02:53 -08:00
Argyrios Kyrtzidis
60522887d9 [Sema/CSApply] Make sure that the member type references created for a type(of: x).A expression are visible to the SourceEntityWalker
For code like

```
  _ = type(of: x).A.self
```

the `A` type reference is written explicitely by the user, but the AST created using `TypeExpr::createImplicitHack` is hiding such a reference,
making the reference invisible to semantic functionality like 'rename'.

rdar://56885871
2020-02-01 01:26:07 -08:00
swift-ci
442dedc24a Merge remote-tracking branch 'origin/master' into master-rebranch 2020-01-20 09:23:48 -08:00
Saleem Abdulrasool
bc84c29a43 test: adjust the test use to ls instead of find
Rely on the `ls` behaviour of returning a non-zero if there is no
matching pattern.  This should help make the test pass on Windows
and the other targets.
2020-01-19 09:07:37 -08:00
Joe Groff
fb34044408 Merge remote-tracking branch 'origin/master' into master-next 2019-12-10 12:46:41 -08:00