Commit Graph

1528 Commits

Author SHA1 Message Date
Nathan Hawes
2ac1eeed3f Merge pull request #31964 from nathawes/fix-header-interface-lone-get-issue
[IDE][InterfaceGen] Always print the top-level decl in header file generated interfaces.
2020-05-22 12:37:36 -07:00
Nathan Hawes
5cb1f30994 [IDE][InterfaceGen] Always print the top-level decl in header file generated interface.
While the decls being printed for header file generated interfaces were mapped
from the top-level clang decls in that file, the Swift decls they correspond to
may not be top-level. E.g. top-level functions in the header file can be mapped
to property accessors on the Swift side, which were being printed simply as
"get" at the top level.

This updates header interface generation to map each decl to its top-level decl
before printing.

Resolves rdar://problem/63409659
2020-05-21 21:12:17 -07:00
swift_jenkins
5d16b82996 Merge remote-tracking branch 'origin/master' into master-next 2020-05-21 17:59:18 -07:00
Nathan Hawes
defac258ba Merge pull request #31941 from nathawes/pattern-binding-decl-indentation
[SourceKit/CodeFormat] Don't column-align PatternBindingDecl entries in certain cases.
2020-05-21 17:58:21 -07:00
Nathan Hawes
99edbf0e56 [SourceKit/CodeFormat] Don't column-align PatternBindingDecl entries in certain cases.
Don't column align PBD entries if any entry spans from the same line as
the var/let to another line. E.g.

```
// Previous behavior:
let foo = someItem
      .getValue(), // Column-alignment looks ok here, but...
    bar = otherItem
      .getValue()

getAThing()
  .andDoStuffWithIt()
let foo = someItem
      .getValue() // looks over-indented here, which is more common.
getOtherThing()
  .andDoStuffWithIt()

// New behavior
getAThing()
  .andDoStuffWithIt()
let foo = someItem
  .getValue() // No column alignment in this case...
doOtherThing()

let foo = someItem
   .getValue(), // Or in this case (unfortunate, but less common)...
   bar = otherItem
       .getValue()

let foo = someItem.getValue(),
    bar = otherItem.getValue() // but still column-aligned in this case.
```

Resolves rdar://problem/63309288
2020-05-21 11:49:35 -07:00
swift_jenkins
6d95937749 Merge remote-tracking branch 'origin/master' into master-next 2020-05-20 12:15:48 -07:00
Rintaro Ishizaki
c5280c80ca Merge pull request #31916 from rintaro/sourcekit-disabletest-rdar62923248
[CodeCompletion] Disable fast-completion dependecy checking test cases
2020-05-20 11:45:55 -07:00
swift_jenkins
3769c0e3e3 Merge remote-tracking branch 'origin/master' into master-next 2020-05-20 10:00:30 -07:00
Ben Langmuir
6d3a3dbe79 Merge pull request #31830 from DavidGoldman/compileopkind
[SourceKit] Include operation kind in compile notifications
2020-05-20 09:54:28 -07:00
Rintaro Ishizaki
6116f7d528 [CodeCompletion] Disable fast-completion dependecy checking test cases
while investigating.

rdar://problem/62923248
2020-05-20 09:07:00 -07:00
swift_jenkins
b4fd34bead Merge remote-tracking branch 'origin/master' into master-next 2020-05-19 12:19:26 -07:00
Dmitri Gribenko
b6d0ef5c81 Remove support for a broken std::regex in libstdc++ 4.8
Out of all operating systems ever supported by Swift, only Ubuntu 14.04
had libstdc++ 4.8, and Swift has sunset support for Ubuntu 14.04 for a
while now.
2020-05-19 17:20:55 +02:00
Ben Langmuir
ffc990f999 [driver/sourcekit] Avoid creating temporary output files in TMPDIR
When producing frontend arguments for sourcekitd, force the output mode
to -typecheck so that we do not create any temporary output files in the
driver. Previously, any sourcekitd operation that created a compiler
invocation would create 0-sized .o file inside $TMPDIR that would never
be cleaned up.

The new swift-driver project handles temporaries much better as
VirtualPath, and should not need this approach.

rdar://62366123
2020-05-18 16:52:41 -07:00
David Goldman
67a2fe494a Fix up compile operation kind
- `key.compile_operation` instead of `key.compileoperation`
- Make the operation kind optional (nothing emitted for perform sema)
2020-05-18 13:18:40 -04:00
Erik Eckstein
82a006be26 Merge remote-tracking branch 'origin/master' into master-next 2020-05-16 10:26:27 +02:00
David Goldman
40759df737 [SourceKit] Include operation kind in compile notifications
- Compile will start / did finish now includes the operation
  kind (perform sema or code complete).
- See also
  https://forums.swift.org/t/sourcekit-lsp-file-status-ux/35947
2020-05-15 17:16:30 -04:00
Rintaro Ishizaki
29398b1737 [ASTPrinter] Don't print inferred opaque result type witness
Opaque result type syntax is not usable except the declaration of
itself. In other places, users need to let them inferred. If they are
inferred associated type, they need to reffered by the name of the
associated type.

rdar://problem/59817674
2020-05-15 12:15:53 -07:00
Erik Eckstein
bdd337cd17 Merge remote-tracking branch 'origin/master' into master-next 2020-05-15 20:13:50 +02:00
Robert Widmann
43d1ba9ed9 [Gardening] Shepherd a Fix To SetAlgebra Docs 2020-05-14 11:50:35 -07:00
swift_jenkins
b63d3e68fb Merge remote-tracking branch 'origin/master' into master-next 2020-05-13 08:58:54 -07:00
Rintaro Ishizaki
14ff43e72b Merge pull request #31741 from rintaro/ide-completion-fastifconfig
[CodeCompletion] Inherit options when parsing new buffer
2020-05-13 08:51:39 -07:00
swift_jenkins
0cf8f30cd4 Merge remote-tracking branch 'origin/master' into master-next 2020-05-12 20:58:50 -07:00
Argyrios Kyrtzidis
64241a1379 Merge pull request #31742 from akyrtzi/sr-12631-print-if-let-variable-fix
[ASTPrinter] Fix issue where printing if-let variables shows their type as optional
2020-05-12 20:42:27 -07:00
Argyrios Kyrtzidis
b4baf420b4 [ASTPrinter] Fix issue where printing if-let variables shows their type as optional
Fixes
https://bugs.swift.org/browse/SR-12631
rdar://62894516
2020-05-12 16:39:09 -07:00
Rintaro Ishizaki
ec0c9484ab [CodeCompletion] Inherit options when parsing new buffer
for fast completions. Options may affect the parsing result.
Also, don't collect interface hash tokens inside inactive blocks.
2020-05-12 15:43:24 -07:00
swift_jenkins
101a3b4dce Merge remote-tracking branch 'origin/master' into master-next 2020-05-12 12:59:11 -07:00
swift_jenkins
fa28b24695 Merge remote-tracking branch 'origin/master' into master-next 2020-05-11 22:58:52 -07:00
Rintaro Ishizaki
7086ffb79f [CodeCompletion] Annotated result type
Introduced 'TypeAnnotationBegin' chunk kind for grouping the result type
name chunks.

rdar://problem/62617558
2020-05-11 22:56:22 -07:00
Rintaro Ishizaki
f80fdfca83 [CodeCompletion] Simplify a FileCheck test
Only check lines we really care about.
2020-05-11 14:48:28 -07:00
Rintaro Ishizaki
75a0c9f819 [CodeCompletion] Add 'IsSystem' flag to code completion result item
'key.is_system: 1' is added if the associated declaration is from a
system module.

rdar://problem/62617558
2020-05-11 12:24:36 -07:00
swift_jenkins
d4f39f3eaa Merge remote-tracking branch 'origin/master' into master-next 2020-05-06 19:26:08 -07:00
Owen Voorhees
70140a0170 Merge pull request #31521 from owenv/sourcekit-find-edu-notes
[SourceKit] Discover diagnostic documentation relative to sourcekitd
2020-05-06 19:54:02 -05:00
swift_jenkins
e6e25df038 Merge remote-tracking branch 'origin/master' into master-next 2020-05-06 14:35:31 -07:00
John McCall
6a0bd67dfb Merge pull request #31052 from apple/unbraced-multiple-trailing-closures
[SE-0279] Add support for an unbraced syntax for multiple trailing closures
2020-05-06 15:54:13 -04:00
Nathan Hawes
709dd35c3f Merge pull request #31589 from nathawes/doc-info-missing-submodule-decls
[IDE][DocSupport] Fix DocInfo missing decls when generated for clang submodules
2020-05-06 12:40:19 -07:00
Nathan Hawes
34098a75f5 [IDE][DocSupport] Fix DocInfo missing decls when generated for clang submodules.
Out handling of clang submodules was handled differently between DocInfo and
InterfaceGen. For InterfaceGen submodules were mapped back to their top-level
clang modules (or their Swift overlay if it had one) before being passed
into printSubmoduleInterface, along with the dot separated name of the submodule.

For DocInfo, they were not, and only the rightmost component of their name was
passed. The call to retrieve the decls from a ModuleDecl doesn't work if the
ModuleDecl wraps a clang submodule, so we were missing these decls.

InterfaceGen for submodules also shouldn't have been mapping the module back to
the overlay of top-level clang module, as that meant we ended up printing
import decls from the Swift overlay in the submodule's interface.

Resolves rdar://problem/57338105
2020-05-06 09:28:00 -07:00
Ben Langmuir
37b98af4e6 [CodeCompletion] Pre-expand closures in argument completion
When completing a single argument for a trailing closure, pre-expand the
closure expression syntax instead of using a placeholder. It's not valid
to pass a non-closure anyway.

rdar://62189182
2020-05-06 01:56:41 -04:00
Ben Langmuir
2bf014dc74 [expand-placeholder] Add support for multiple-trailing closures
Since placeholder expansion works with a single placeholder, which is
somewhat at odds with multiple-trailing closures, we eagerly attempt to
expand all consecutive placeholders of closure type. That is, if the API
has multiple closure parameters at the end, expanding any one of them
will transform all of them to the new syntax.

Example

```
foo(a: <#T##()->()#>, b: <#T##()->()#>)
```

expanding *either* parameter will produce the following:

```
foo {
  <#code#>
} b: {
  <#code#>
}
```

(caveat: the indentation is not part of placeholder expansion, but it's
added here for clarity)

At least for now we do not attempt to corral an existing closure into
the new syntax, so for

```
foo(a: { bar() }, b: <#T##()->()#>)
```

The exansion will be

```
foo(a: { bar() }) {
  <#code#>
}
```

as it was before.

rdar://59688632
2020-05-06 01:56:41 -04:00
Ben Langmuir
feaaf39206 [sourcekitd-test] Make expand-placeholder iterative
Instead of getting all edits up front using the same source code, apply
each replacement before calculating the next. Placeholder expansion is
sensitive the surrounding code, so expanding multiple closures
separately can give different results from doing so in order. To allow
testing that, add a magic placeholder identifier __skip__ to skip
expansion during testing.

This is also required for handling multiple trailing closures.
2020-05-06 01:56:41 -04:00
Nathan Hawes
58859f5699 [SourceKit/CodeFormat] Update indentation for braceless multiple trailing closures. 2020-05-06 01:56:41 -04:00
swift_jenkins
de47192c11 Merge remote-tracking branch 'origin/master' into master-next 2020-05-05 13:19:09 -07:00
Rintaro Ishizaki
71f4cfc68c Merge pull request #31474 from rintaro/sourcekit-completion-invalidtyperelation-rdar57726512
[CodeCompletion] Dont mark type mismatching items 'not recommended'
2020-05-05 13:14:51 -07:00
Rintaro Ishizaki
e9c438cdd5 [CodeCompletion] Dont mark type mismatching items 'not recommended'
func foo() {}
let a: Int = #^HERE^#

Previously, we marked 'foo()' as 'NotRecommented' because 'Void' doesn't
have any member hence it cannot be 'Int'. But it wass confusing with
'deprecated'.

Now that we output 'typerelation' which is 'invalid' in this case. So clients
can deprioritize results, or even filter them out.

rdar://problem/57726512
2020-05-05 10:40:05 -07:00
swift_jenkins
e2a5f13755 Merge remote-tracking branch 'origin/master' into master-next 2020-05-04 20:37:17 -07:00
Rintaro Ishizaki
1f6c3be665 Merge pull request #31388 from rintaro/ide-completion-fastcheckdep-rdar62336432
[CodeCompletion] Give up fast-completion if dependent files are modified
2020-05-04 20:18:29 -07:00
Rintaro Ishizaki
af5daed144 [CodeCompletion] Tweak fast completion dependency checking
- Detect same file with bufferID instead of the file name
- Compare virtual in-memory filesystem content with hash value
2020-05-04 16:35:41 -07:00
swift_jenkins
6253fd4753 Merge remote-tracking branch 'origin/master' into master-next 2020-05-04 14:57:15 -07: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
Rintaro Ishizaki
e32de789ff [Tests] Mark check dependency tests cases 'REQUIRES: shell'
These test cases use shell variables etc.
2020-05-04 13:02:09 -07:00
Rintaro Ishizaki
df8fa09d8e [CodeCompletion] Added check dependency test for complete.open 2020-05-04 13:02:09 -07:00