Commit Graph

1419 Commits

Author SHA1 Message Date
Davide Italiano
cd80f8369a [SourceKit] Make explicitly we're casting away a qualifier.
This fixes a clang warning introduced with this code. NFCI.
2017-12-01 13:19:45 -08:00
David Ungar
04c16cdebd Incorperate advice from review.
Change “have” routines to “has”.
Use more consistent casing.
Remove spurious “DelayedFunctionParsing” option.
Move debugFail routines to top lexical level.
Rename and reorder declaration of functions in FrontendArgsToOptionsConverter.
Move, reword, and doxygenate comments for some of those functions.
Fix casing on some more setUp* functions.
Return NoneAction instead of existing RequestedAction in FrontendArgsToOptionsConverter::determineRequestedAction.
Remove test names and put in FIXME’s.
Remove “Jordan” from comments & reword.
Reorder if-then arms of FrontendArgsToOptionsConverter::computeOutputFilenames for readability.
Test for empty string instead of equality with “”.
Use hasUnusedModuleDocOutputPath.
Remove optionality from return type of getOutputFilenamesFromCommandLineOrFilelist.
Rename isPrimaryInputAFileAt to isThereAPrimaryInputWithAFilenameAt.
Added a FIXME in doesActionProduceOutput to reflect that some actions actually do not produce output.
2017-11-30 17:28:15 -08:00
Nathan Hawes
3ce741ac30 Merge pull request #13130 from nathawes/rdar31378113-rename-of-swift-subscript-not-working
[Refactoring] Fix subscript rename
2017-11-29 14:04:49 -08:00
Nathan Hawes
c326ec46c7 [Refactoring] Fix subscript rename
Adds support for renaming subscripts with external names, e.g.
subscript(x y: Int), and introduces a noncollapsible parameter name range for
subscript parameters, since these shouldn't be collapsed with an argument label
of the same name as function parameter names are.
2017-11-28 19:45:29 -08:00
Ben Langmuir
f373ef36f1 [sourcekitd] Make code-completion obey the semantic-editor-delay
These are semantic requests and should obey the delay to ensure we don't
trigger too many crashes.

rdar://18326221
2017-11-28 14:44:20 -08:00
Ben Langmuir
692dd86a90 [sourcekitd] Be more aggresive with the semantic editor delay
Set a minimum delay of 10 seconds for the semantic editor instead of
starting from 0/1 second.  This helps prevent us from being throttled by
the system if we have multiple crashes in a row, which allows us to keep
syntactic requests working.

rdar://18326221
2017-11-28 14:44:20 -08:00
David Ungar
83ee8cb7f0 Merge pull request #12920 from davidungar/Move-input-conversion
Move input conversion
2017-11-27 17:13:48 -08:00
David Ungar
26537ea26c Address Jordan’s comments:
- Also be consistent about has vs have for Input predicates

Fix bug.
2017-11-18 14:00:32 -08:00
Nathan Hawes
01e538951f [SourceKit][DocInfo] Avoid outputing identifier annotations for ranges already covered by parameter/argument annotations
Resolves rdar://problem/20799943
2017-11-16 18:25:03 -08:00
swift-ci
cf949cb353 Merge pull request #12982 from nkcsgexi/code-expand-fix 2017-11-16 17:22:37 -08:00
Xi Ge
3160446a8c SourceKitd: fix a placeholder expanding issue. rdar://34230324
When expanding placeholders, we analyze the surrounding context of a
placeholder to decide whether to expand the placeholder to a trailing
closure. This analysis assumes CallExpr is the only AST node with argument;
however UnresolvedMemberExpr can have argument as well. This commit
teaches the analysis logic to handle both.
2017-11-16 16:31:50 -08:00
Ben Langmuir
c58cc4ee39 [sourcekitd] Fix a race in EditableTextBuffer::getSnapshot()
Found by TSan!

This was found while trying to reproduce a test failure on a linux bot
while running the test/Misc/stats.swift test.  Hopefully this was the
underlying issue.

rdar://35537968
2017-11-16 14:39:31 -08:00
David Ungar
3f3d784144 Factor code from tools & move input conversion. 2017-11-14 20:48:59 -08:00
Slava Pestov
a70a1f0d36 IDE: Fix bug in SourceEntityWalker subscript handling
We weren't passing the lvalue access kind to the subscript.
This was causing a test to fail with the next patch.
2017-11-13 22:19:25 -08:00
Slava Pestov
0715eaeaed AST: Move SourceEntityWalker to IDE 2017-11-13 22:10:41 -08:00
swift-ci
6d9a4b52ef Merge pull request #12841 from benlangmuir/sourcekit-v-flag 2017-11-09 12:10:05 -08:00
Ben Langmuir
d4ae8f611f [sourcekitd] Filter out -v flag
We really need to use the driver for this and stop doing ad-hoc
filtering (rdar://17897287), for for now keep limping along...

rdar://35424741
2017-11-09 11:33:09 -08:00
Alex Hoppen
746bfc6d59 [Refactoring] Add refactoring action to move type members to extension (#12795)
This implements SR-6297.
2017-11-09 11:08:34 -08:00
Davide Italiano
60967c4582 [SourceKit] Don't drop const qualifiers. 2017-11-08 18:00:33 -08:00
Xi Ge
6af5d3c0bf libSyntax: rename KeepTokensInSourceFile to KeepSyntaxInfoInSourceFile. 2017-11-03 18:39:01 -07:00
Adam Nemet
9b9805420d Add optimization remarks
This allows reporting successful and unsuccessful optimizations similar to
clang/llvm.

This first patch adds support for the
options -Rpass=<pass-name-regex> -Rpass-missed=<pass-name-regex>.  These allow
reporting successful/unsuccessful optimization on the compiler output for passes
specified by the regex.  I've also added one missed and one passed remark type
to the inliner to test the infrastructure.

Clang also has the option of collecting these records in an external YAML data
file.  This will be added in a later patch.

A few notes:
* The goal is to use this facility for both user-lever "performance" warnings
and expert-level performance analysis.  There will probably be a flag in the
future differentiating the verbosity.

* The intent is match clang/llvm as much as it makes sense.  On the other hand I
did make some changes.  Unlike in llvm, the emitter is not a pass which
simplifies things.  Also the remark class hierarchy is greatly simplified since
we don't derive from DiagnosticInfo.  We also don't derive from Diagnostic to
support the streaming API for arbitrary named-value pairs.

* Currently function names are printed mangled which should be fixed.
2017-10-20 12:41:37 -07:00
Doug Gregor
cd3c63cbfd [AST] Stop including GenericSignature.h in other headers.
Except GenericEnvironment.h, because you can't meaningfully use a
GenericEnvironment without its signature. Lots less depends on
GenericSignature.h now. NFC
2017-10-12 14:23:46 -07:00
swift-ci
5e13094e8f Merge pull request #12400 from compnerd/dispatch-make-program 2017-10-12 13:13:26 -07:00
Saleem Abdulrasool
f1d8f94b6d Merge pull request #12372 from compnerd/shims
build: add a dependency on SwiftShims for libdispatch
2017-10-12 08:31:23 -07:00
Saleem Abdulrasool
429a368ef3 build: pass along CMAKE_BUILD_PROGRAM to sub-build
Pass along our `CMAKE_BUILD_PROGRAM` to the libdispatch build which is
done as part of the build for SourceKit.
2017-10-12 08:28:32 -07:00
Marcelo Fabri
ba39c7b235 [SourceKit] Include AccessLevel attributes in structure (SR-5978) (#12086) 2017-10-11 20:57:09 -07:00
Saleem Abdulrasool
e6a0655a9c build: add a dependency on SwiftShims for libdispatch
During a parallel build, this was noticed:
  <unknown>:0: error: missing required module 'SwiftShims'

Ensure that we have a dependency on the SwiftShims target for
libdispatch.
2017-10-10 15:05:25 -07:00
David Ungar
7d637c856c Merge pull request #12335 from davidungar/primaryFilesMode-Inputs-rebased
NFC: First step (refactoring) towards speeding up compilation w/ >1 primary file
2017-10-10 12:55:55 -07:00
David Ungar
47ee930a50 git-clang-format'ed 2017-10-08 23:56:03 -07:00
David Ungar
c1821755de NFC: First step (refactoring) towards speeding up compilation by having multiple primary files: Creates new class, FrontendInputs, to encapsulate InputFilenames, InputBuffers, and PrimaryInput, which were formerly in FrontendOptions. Add new instance variable, Inputs, to FrontendOptions in order to hold FrontendInputs.
Encapsulate uses of the variables in FrontendInputs with intention-describing functions. Move some code that sets these variables into FrontendInputs and FrontendOptions classes.

Create new FrontendInputs class to encapsulate InputFilenames, InputBuffers and PrimaryInput, which were formerly in Frontend.

Includes one change in SwiftEditor.cpp to resolve a merge conflict.
2017-10-08 10:20:37 -07:00
Saleem Abdulrasool
a192e67ae9 build: force rebuild of libdispatch always
This pays a small penalty in build times by invoking an extra call to
ninja.  However, unless there is a change in libdispatch, no actions
will be taken other than ensuring that it is up-to-date.  Should ensure
that the buildbots switching between builds DTRT.
2017-10-07 11:06:59 -07:00
Ben Langmuir
9c7d9235de [sourcekitd] Add a request to get statistics from the service
... and add a few basic statistics about the number of requests, ASTs
built, etc.  The Statistic type is loosely based on the one from LLVM,
but suitable for using without DEBUG macros and using SourceKit UIdents
to identify the statistic.  The easiest way to add a new statistic is to
add it to SwiftStatistics.def in the SwiftLangSupport.
2017-10-05 12:34:49 -07:00
Saleem Abdulrasool
fa500dad85 Merge pull request #12098 from compnerd/libdispatch
build: improve SourceKit handling of libdispatch
2017-10-04 13:40:00 -07:00
Saleem Abdulrasool
e69c44352b Update CMakeLists.txt 2017-10-03 22:01:19 -07:00
Saleem Abdulrasool
9fff09d817 build: improve SourceKit handling of libdispatch
Avoid overwriting the `swiftCore` target in the SourceKit build.
Instead, link to the explicit variant of the swiftCore.  This tracks the
dependency better and enables multiple parallel cross-compilations of
the stdlib.

Implicitly link against swiftCore when linking against libdispatch.
Remove the extraneous link against the Blocks runtime on Linux.  The
`add_sourcekit_executable` call already handles this.  Ensure that we
enable the swift SDK overlay for libdispatch by sending it the path to
the swift compiler.
2017-10-02 21:40:29 -07:00
Ben Langmuir
4e6831d485 [SourceKit] Disable automatic rebuilding of dependent-ASTs
After modifying a file, don't rebuild the ASTs for every file that
(might) depend on it.  This is very expensive if there are a lot of open
documents and we don't yet provide a way for clients to distinguish
documents that they want to update from any other documents that e.g.
are just open because they haven't been saved yet.

rdar://problem/34415818
2017-10-02 10:21:01 -07:00
Marcelo Fabri
95383df793 [SourceKit] Introduce "source.lang.swift.expr.tuple" (SR-5977) (#12089) 2017-09-27 10:08:27 -07:00
Michael Gottesman
8aab4541c9 Merge pull request #12033 from gottesmm/pr-3a6774f1c0091400a7dd99e5023d241aa0cf4089
[cmake] Move the 'routines' of SourceKit's cmake into a cmake module.
2017-09-24 22:22:29 -07:00
Michael Gottesman
963051c6f3 [gardening] Remove unused file.
I checked with ArgyriosK before I did this.
2017-09-20 20:35:27 -07:00
Michael Gottesman
a05c4dda07 [cmake] Move the 'routines' of SourceKit's cmake into a cmake module.
This is a NFC change that makes it easier to read SourceKit's main
CMakeLists.txt file since you only see "actions" rather than also this huge list
of helper routines.
2017-09-20 20:33:16 -07:00
Marcelo Fabri
2bf49b0151 [SourceKit] Add range for attributes in a structure (SR-5587) (#11750) 2017-09-20 15:54:42 -07:00
Saleem Abdulrasool
0ebee3f699 Merge pull request #10670 from compnerd/dispatch-cmake
build: switch libdispatch build to cmake
2017-09-18 14:23:11 -07:00
Saleem Abdulrasool
8d3c30e2fa build: switch libdispatch build to cmake
Use the cmake based build system for building libdispatch now that it is
able to build Linux, android, and even possible to cross-compile to
Windows.
2017-09-17 17:01:28 -07:00
Zheng Li
ad154c8328 [SourceKit] Remove duplicated kind definition. (#11968)
Compared to `CodeCompletionKeyword`, `CodeCompletionCodeCompleteKeyword` have the same string value and not used anywhere.
By inspecting PR #10604 where it is introduced, I think that is just a typo and can be removed safely.
2017-09-17 09:43:44 -07:00
Nathan Hawes
d12d7c1b12 [SyntaxColoring] Address review feedback for rdar://problem/33463141 NFC 2017-09-14 21:36:22 -07:00
Nathan Hawes
5b82a25240 [SyntaxColoring] Fix losing syntax highlighting for a type or function declaration following an incomplete function decl missing a closing parenthesis
If an edit didn't intersect with an existing highlighted tokens but caused a
later highlighted token to change kind, syntax highlighting would be lost
between the edit and that token.

Resolves rdar://problem/33463141.
2017-09-14 21:36:13 -07:00
Nathan Hawes
c0ee62be93 [syntax-coloring|test] Update test cases for new behaviour and address review comments 2017-09-14 21:34:22 -07:00
Nathan Hawes
f64a19bbbe [syntax-coloring] Relax the requirement that the reported affected range extends to line boundaries
The editor is now assumed to handle affected ranges that don't fall on line boundaries.
2017-09-14 21:34:22 -07:00
Nathan Hawes
13874d3f12 [syntax-coloring] Remove early exit from delta logic when there are no new highlighted tokens but are removed ones, and take account of the range of the mismatching token in the previous syntax map
We still need to adjust the affected range to the line boundaries and return all
tokens on the line when there are no new tokens, as the client will clear all
tokens on that line in its copy of the syntax map leaving the other tokens
unhighlighted. We also need to extend the affected range to include the ranges
of the mismatched tokens from the previous syntaxmap, so their highlighting will
be cleared.

Also add more comments to better document the new syntax map structure and
behaviour.
2017-09-14 21:34:22 -07:00
Nathan Hawes
77d502cb39 [syntax-coloring] Fix incorrectly reporting a no-op when a token is removed 2017-09-14 21:34:21 -07:00