Commit Graph

1230 Commits

Author SHA1 Message Date
Xi Ge
09a19bb230 [SourceKit] Avoid expanding the last argument as trailing closure if there are other closures in the tuple. rdar://23428366 (#3408)
SourceKit invariantly expands the last argument in a function call as trailing closure,
if it is of function type. However, there are situations when inline closures
are preferred; for example, when the last argument is not the only closure in the function
call. This patch modifies SourceKit so that when the argument contains multiple closures,
the last argument is expanded as inline closure.
2016-07-07 18:25:55 -07:00
Xi Ge
64efa48c65 [SourceKit][DocInfo] When the underlying type of a type alias decl exists, report the conformances of the underlying type. rdar://26408167 (#3394)
Showing only the conforming associated types provides
little information to doc viewers. This patch digs the
underlying type of an associated type to report the
conformance info of those.
2016-07-07 16:24:01 -07:00
Jordan Rose
aee92ff612 SE-0025: Parsing and basic completion for 'fileprivate'. (#3391)
Right now 'fileprivate' is parsed as an alias for 'private' (or
perhaps vice versa, since the semantics of 'private' haven't changed
yet). This allows us to migrate code to 'fileprivate' without waiting
for the full implementation.
2016-07-07 15:20:41 -07:00
Xi Ge
3e03b78b77 [SyntaxColoring] Tolerating empty spaces between doc-comment openning… (#3373)
* [SyntaxColoring] Tolerating empty spaces between doc-comment opennings and field keywords. rdar://26310081

* [test] Update test for SourceKit.
2016-07-06 22:41:58 -07:00
Xi Ge
500fdd22d1 [Syntax] Avoid highlighting keyword-like labels in call arguments as … (#3369)
* [Syntax] Avoid highlighting keyword-like labels in call arguments as keywords. rdar://24460689

* [test] Update test for SourceKit.
2016-07-06 22:40:44 -07:00
Xi Ge
2ed177046e [SourceKit] Check location validity before getting the line number to fix a crash. rdar://26756189 (#3364) 2016-07-06 21:26:09 -07:00
Ben Langmuir
79f6d1d492 [SourceKit] Narrow the test-disabling in cursor_info.swift
Only one availability test is failing (because of
rdar://problem/27144738), so re-enable the rest of the test.

rdar://problem/26121117
2016-07-05 13:33:30 -07:00
Ben Langmuir
e8b33b7bd4 [SourceKit] Re-enable tests that are passing again on master-next
rdar://problem/26121117
2016-07-05 13:33:29 -07:00
Michael Gottesman
8e0fcda35c Disable more tests that are hit by upstream availability issues until Devin looks at them.
rdar://27144738
2016-07-05 13:08:07 -07:00
Chris Lattner
ffcafd7c00 fix the AST printer to stop omitting parens around "simple enough" parameter
lists.
2016-07-02 20:24:58 -07:00
Chris Lattner
45f2cfaaa0 Implement SE-0099, but where the migration diagnostics are left as warnings
for now.  I'll upgrade them to errors in a week or two to give downstream
projects a chance to update.
2016-07-02 15:44:57 -07:00
Michael Gottesman
3c603ab18b Merge remote-tracking branch 'origin/master' into master-next 2016-07-01 18:44:21 -07:00
swift-ci
7e7d1dbf21 Merge pull request #2538 from IngmarStein/master 2016-06-29 16:57:16 -07:00
Ben Langmuir
7578ccaae0 [ASTPrinter] Don't print internal @rethrows attribute
This attribute is an implementation detail of how 'rethrows' works, and
you can't actually mark declarations @rethrows directly.  So hide it
from cursor info, and other places that use the ASTPrinter.

rdar://problem/26638597
2016-06-29 16:07:52 -07:00
Ingmar Stein
4f800f8a21 [ClangImporter] Import preprocessor constants with a cast
Addresses SR-1509 by adding a heuristic to import numeric literals with a
type cast. Two new cases have been added for macros with 4 or 5 tokens
to cover cases with or without sign tokens.
2016-06-29 23:01:30 +02:00
Jordan Rose
7574fbc7d6 Revert "Temporarily disable test due to assert failure."
This reverts 23e283f and caeefd6 now that the underlying issue is fixed.

rdar://problem/26099576
2016-06-27 22:14:13 -07:00
Michael Gottesman
8d00a6cb59 Merge remote-tracking branch 'origin/master' into master-next
Conflicts:
	stdlib/public/SDK/GameplayKit/CMakeLists.txt
	test/DebugInfo/bound-namealiastype.swift
	test/DebugInfo/structs.swift
	test/IRGen/c_globals.swift
	test/SourceKit/DocSupport/doc_clang_module.swift
	test/SourceKit/Indexing/index_with_clang_module.swift
	utils/update-checkout
2016-06-25 01:13:50 -07:00
Ben Langmuir
f72bd5453f [CodeCompletion] Fix a crash when completing typealiases for protocol conformance
The index may be at the end of the ArrayRef of chunks if the completion
ends with a simple parameter with no type annotation.  Check that the
index is in-bounds before adding text.

rdar://problem/26273906
2016-06-21 16:56:29 -07:00
Ben Langmuir
3c9c52010b [CodeCompletion] Add image and color literals to results
Surface these results in the codecomplete code path (they're already
there in the codecomplete.open code path) so we can use them from IDEs.
For now, just use ad-hoc filtering to show them when the type matches
(or there is no expected type).  Ideally we would make this filtering
configurable like we do in the codecomplete.open code path.

rdar://problem/25836544
2016-06-21 11:41:15 -07:00
Brian Croom
79efc2895b Merge pull request #3084 from briancroom/more-sourcekit-test-annotations
[SourceKit] Mark more tests as needing Obj-C interop
2016-06-21 08:03:08 -04:00
Brian Croom
69b277d31e [SourceKit] Fix a syntax error in the index_is_test_candidate_objc test 2016-06-20 10:40:09 -04:00
Brian Croom
29af9f889a Fix ObjC-interop logic in the isTestCandidate indexing method
A compile-time conditional had previously been introduced to prevent
`private` test methods from being considered test candidates. This
conditional was not working as intended, however, because the header
providing the required preprocessor flag was not being included.

Several number of issues with the non-Objc-interop test case have also
been fixed.
2016-06-20 10:40:09 -04:00
Brian Croom
b9b565aaed [SourceKit] Mark more tests as needing ObjC interop 2016-06-20 10:35:27 -04:00
Doug Gregor
e2632c1cfa [Code completion] Teach code completion to use declarations for postfix completions.
Code completion had the ability to use declarations to provide better
code completion results for postfix completions, e.g., calls to
functions/methods, but it wasn't trying to get these declarations from
anywhere. Now, get these declarations from the solution to the
constraint system.

The impetus for this is to use default-argument information from the
declaration rather than the type, but plumbing this information
through also means that we get proper "rethrows" annotations, covered
by <rdar://problem/21010193>, and more specific completions in a
number of other places.

Fixes <rdar://problem/21010193>.
2016-06-16 11:44:42 -07:00
Dmitri Gribenko
9ad2ea9402 Merge pull request #3019 from briancroom/annotate-sourcekit-tests
[SourceKit] Annotate some tests that fail on Linux.
2016-06-14 22:43:31 -07:00
Mishal Shah
87b7bcfd3e Update master to build with Xcode 8 beta 1, OS X 10.12, iOS 10, tvOS 10, and watchOS 3 SDKs. 2016-06-14 14:53:55 -07:00
Brian Croom
98e3ca8bc4 Annotate some SourceKit tests that fail on Linux.
* A bunch of them require objc_interop because they import code containing
  Objective-C.
* Many others fail on Ubuntu 14.04 because the C++ there doesn't have a
  functional std::regex implementation which is required by the
  `complete-test` tool.

It may be possible to adjust some of these tests in the future to not
need these extra requirements, but this is a straightforward way to
clean up Linux test results for now.
2016-06-14 08:55:48 -04:00
Dmitri Gribenko
d5157c85da Fix test SourceKit/DocSupport/doc_clang_module.swift 2016-06-09 07:57:28 -07:00
Arnold Schwaighofer
f9e1d53523 Disable failing test for now
This started failing after one of the two commits:

[stdlib] Add missing discardableResult attribute
Fixes SR-1695: Option Set insert needs @discardableResult

[gardening] Remove unused diagnostic
attr_warn_unused_result_mutable_variable

These commits seem harmless so I disabled the test pending further
investigation.

rdar://26718415
2016-06-09 07:09:18 -07:00
Trent Nadeau
b9db36cda5 Removed last uses of @warn_unused_result 2016-06-06 19:12:51 -04:00
Ben Langmuir
4600b1dd12 [CodeCompletion] Fix incorrect upper bound for assertion
This assertion was bogus if there were fewer results than N.
2016-06-04 18:22:18 -07:00
Brian Gesiak
73202fcca2 Merge pull request #2518 from modocache/sourcekit-is-test-candidate-accessibility
[SR-710][Index] isTestCandidate access for Linux
2016-06-03 14:50:50 -04:00
Alex Martini
73f0e938d3 Merge pull request #2745 from natecook1000/nc-doc-initreturns
[stdlib] Documentation consistency for OptionSet initializers
2016-06-01 10:19:29 -07:00
Jordan Rose
7bfdd4a20b Provide fix-its when overriding a bridged type with the old type.
This is support for SE-0069: Mutability and Foundation Value Types.
In cases where someone has overridden a method that takes, e.g.
'NSURL', the override will no longer be valid, because the system
class will now use the value type 'URL' instead. If an override's
full name matches exactly, the compiler will offer fix-its for any
uses of reference types where value types are now preferred.
(This must be a direct match; subclasses, including the mutable
variants of many Foundation types, will need to be updated by hand.)

One wrinkle here is the use of generics. In Swift 2, Objective-C
generics weren't imported at all, so it's unlikely that the overriding
method will have the correct generic arguments. Simple migration
might insert the "bound" type, but it can't know what specific type
might be more appropriate. Therefore, the logic to add the fix-it
ignores generic arguments, assuming the parent's type is correct.

rdar://problem/26183575
2016-05-27 10:58:14 -07:00
Nate Cook
8e2ec66bdc [stdlib] Remove 'Returns' fields from initializers
This includes an updated fixture for `SourceKit/DocSupport/
doc_clang_module.swift', which depends on the OptionSet documentation.
2016-05-27 10:10:56 -05:00
Ben Langmuir
122350d450 [CodeCompletion] Apply filter rules directly to inner results
... and don't try to filter the extended results.  Once the results are
extended with the common prefix they will not match identifier filter
rules, which will create differences between completions depending on
whether they had a filter text or were a postfix expression.  Also,
allow filtering by name directly on the inner operator name for inner
operators.

rdar://problem/26312235
2016-05-25 12:07:17 -07:00
David Farler
05235956fc SourceKit: Include up to closing paren in object literals
rdar://problem/26451674
2016-05-24 18:29:01 -07:00
David Farler
6c726620c0 SourceKit: Clean up syntax map switch
When creating the token map for highlighting, there is some glitchy
behavior that needed to be cleaned up:

- New image literal syntax wasn't getting highlighted as an object
  literal keyword.
- Other #-prefixed keywords had no data
- #line would appear as a build config ("brown") at the start of a line
- #available showed up as a build config. However, this should be a keyword
  because it is a runtime check, not a build configuration.

Add some test cases for these.

Fixes:
rdar://problem/26451674
2016-05-24 17:34:22 -07:00
Ben Langmuir
54966d5700 Merge pull request #2675 from benlangmuir/return-completion
[CodeCompletion] Show 'return' completion by default when appropriate
2016-05-24 14:02:10 -07:00
Ben Langmuir
5615b38040 [CodeCompletion] Show 'return' completion by default when appropriate
Ideally we would have precise completion for all our keywords; for now,
just imporove handling of 'return', which we can do by checking if the
current context is a function/closure/init/subscript/etc.

rdar://problem/26307555
2016-05-24 11:01:22 -07:00
Argyrios Kyrtzidis
d10220920b [IDE/format] Disable the sibling check for dictionary/array literal elements.
This ends up creating too much indentation in some common cases.
This effectively get us back to indentation behavior of Swift 2.2.

Addresses rdar://26290643.
2016-05-23 17:23:40 -07:00
Nate Cook
dee12dca75 [stdlib] Update tests for new String documentation
In addition to a new test fixture for 'SourceKit/DocSupport/
doc_clang_module.swift', this removes the check for an ASCII-only
generated standard library interface from 'SourceKit/InterfaceGen/
gen_stdlib.swift'.
2016-05-22 03:11:00 -05:00
John McCall
3fc2291733 Add basic typo correction for unqualified lookup.
There's a lot of room for better QoI / performance here.
2016-05-20 11:04:58 -07:00
Jordan Rose
2fa3da4089 Drop the notion of "alias" names for CF types.
Previously we imported a Core Foundation type "CCFooRef" as "CCFoo",
but also provided a typealias "CCFooRef". In Swift 3, we decided to
mark "CCFooRef" unavailable to force developers to consistently use
"CCFoo". Now that we have infrastructure to mark /all/ renamed
declarations as unavailable, just use that to track the renaming,
i.e. pretend that "CCFooRef" was the "Swift 2" name for the type.

This doesn't change the conflict resolution behavior: if there's
another name "CCFoo" in the same module, the CF type will be
imported as just "CCFooRef".

Groundwork cleanup for rdar://problem/26347297, which notes that our
import-as-member fix-its use the "Ref" names rather than the short
names.
2016-05-19 13:21:47 -07:00
Nate Cook
982e3d09f8 [stdlib] Revise documentation for new indexing model
This revises and expands on documentation for the new collection methods
for working with indices and the revised Swift 3 set APIs. In addition,
it includes documentation for the new range types.
2016-05-19 10:16:14 -05:00
Dmitri Gribenko
9aece73efb stdlib: add migration aids for SetAlgebra API
rdar://problem/26227732
2016-05-17 20:06:59 -07:00
Brian Gesiak
22fb093525 [SR-710][Index] isTestCandidate access for Linux
The goal for https://bugs.swift.org/browse/SR-710 is to automatically
generate a list of tests to run for XCTest on Linux. The prevailing
approach is to generate this list using SourceKit, which is to be
ported to Linux.

SourceKit uses libIndex's concept of `isTestCandidate` to determine
what constitutes a test. `isTestCandidate` is tested via
`test/SourceKit/Indexing/index.swift`.

On Linux, however, the list of tests to be run will be generated by
some tool and placed in a file that is separate from the source file
that defines the test method. Therefore, the test method must not be
"private", since it needs to be accessed from a separate file.

This commit adds two test files: one that verifies the behavior on
Linux, and one that verifies the behavior on platforms with Objective-C
interop. It also (1) simplifies the `isTestCandidate` function, and (2)
adds the interop-specific logic.

This commit does not remove the existing `isTestCandidate` tests in
`test/SourceKit/Indexing/index.swift`; that is left for a future commit.
2016-05-13 18:30:34 -04:00
Trent Nadeau
0cc851568a Updated tests to use @discardableResult and _ = . 2016-05-11 22:53:38 -04:00
Trent Nadeau
6e327b4ddb Updated stdlib to use @discardableResult and _ = . 2016-05-11 22:53:37 -04:00
Ben Langmuir
c77af6907e [CodeCompletion] Switch filter-rules and popular api to follow SE-0021 naming
We want inputs for function names to follow SE-0021 with the exception
that a function with no arguments is spelled `foo()` instead of `foo`,
because we have no type to disambiguate with and it's not ambiguous with
a call in this context.

Internally, we use a filter name without underscores because we don't
want to introduce spurious matches to the `_` character which might be
part of identifiers.

For now, continue to accept the old names to ease the transition.

rdar://problem/24350800
2016-05-10 11:13:46 -07:00