Commit Graph

1419 Commits

Author SHA1 Message Date
Nathan Hawes
6b9690ac5c [syntax-coloring] Rework the syntax map to use offset+length rather than start/end line+column and simplify the delta logic
This patch changes the syntax map data structure it uses to be offset based
rather than line/col based in order to avoid calling getLineAndColumn for the
start and end offset of every token. This removes the 30% of time spent in
getLineAndColumn for this request in large files (rdar://problem/28965123).

The logic for returning the affected range and the token ranges to highlight
following an edit also made several assumptions that no longer hold. This
patch changes it to compare the syntax maps from before and after the edit,
find the first mismtaching tokens from the start and end of the syntax maps
and return the tokens in that range (adjusted to line boundaries). This fixes
syntax highlighting issues with interpolated multi-line strings
(rdar://problem/32148117) and block comments.

With the above changes the per-keystroke time spent for syntax highlighting
(with sematic info disabled) dropped from ~80ms to just under 50ms for a
12KLOC file.
2017-09-14 21:34:21 -07:00
Davide Italiano
3b800aa11f [gardening] Remove unused lambda capture(s). NFCI. 2017-09-10 21:44:38 -07:00
Xi Ge
34e2aec662 Parser: use parser to generate a refined token stream to help syntax coloring. (#11809)
This patch allows Parser to generate a refined token stream to satisfy tooling's need. For syntax coloring, token stream from lexer is insufficient because (1) we have contextual keywords like get and set; (2) we may allow keywords to be used as argument labels and names; and (3) we need to split tokens like "==<". In this patch, these refinements are directly fulfilled through parsing without additional heuristics. The refined token vector is optionally saved in SourceFile instance.
2017-09-08 10:28:19 -07:00
swift-ci
fa76c56996 Merge pull request #11613 from CodaFi/refined-imported-goods 2017-08-30 20:48:24 -07:00
Ben Langmuir
53a5389daa Merge pull request #11693 from benlangmuir/cc-filter-non-postfix
[code-completion] Filter out non-postfix results from inner operators
2017-08-30 14:49:21 -07:00
Ben Langmuir
798a8c7abf [code-completion] Filter out non-postfix results from inner operators
With broken code you can end up with non-postfix completions when
searching for inner operators, which you never want because you end up
creating compound results like "fooUIColor".

rdar://problem/34145229
2017-08-30 14:27:13 -07:00
Xi Ge
7f29b362d6 SourceKitd: Rename SemaToken to ResolvedCursorInfo. NFC (#11680) 2017-08-29 15:34:15 -07:00
Robert Widmann
75a83da03e Implement SE-0075: CanImport
This implementation required a compromise between parser
performance and AST structuring.  On the one hand, Parse
must be fast in order to keep things in the IDE zippy, on
the other we must hit the disk to properly resolve 'canImport'
conditions and inject members of the active clause into the AST.
Additionally, a Parse-only pass may not provide platform-specific
information to the compiler invocation and so may mistakenly
activate or de-activate branches in the if-configuration decl.

The compromise is to perform condition evaluation only when
continuing on to semantic analysis.  This keeps the parser quick
and avoids the unpacking that parse does for active conditions
while still retaining the ability to see through to an active
condition when we know we're moving on to semantic analysis anyways.
2017-08-28 18:35:06 -04:00
swift-ci
0bae2e5aa6 Merge pull request #11660 from nkcsgexi/code-expand-trailing 2017-08-28 14:24:35 -07:00
Xi Ge
5c9099b07e SourceKitd: Properly record enclosing statement to ensure expanding to trailing closures consistently. rdar://33477177 2017-08-28 13:43:13 -07:00
Jordan Rose
449cd98997 Excise "Accessibility" from the compiler (3/3)
"Accessibility" has a different meaning for app developers, so we've
already deliberately excised it from our diagnostics in favor of terms
like "access control" and "access level". Do the same in the compiler
now that we aren't constantly pulling things into the release branch.

Rename AccessibilityAttr to AccessControlAttr and
SetterAccessibilityAttr to SetterAccessAttr, then track down the last
few uses of "accessibility" that don't have to do with
NSAccessibility. (I left the SourceKit XPC API alone because that's
supposed to be more stable.)
2017-08-28 13:27:59 -07:00
Jordan Rose
1c651973c3 Excise "Accessibility" from the compiler (2/3)
"Accessibility" has a different meaning for app developers, so we've
already deliberately excised it from our diagnostics in favor of terms
like "access control" and "access level". Do the same in the compiler
now that we aren't constantly pulling things into the release branch.

This commit changes the 'Accessibility' enum to be named 'AccessLevel'.
2017-08-28 11:34:44 -07:00
Jordan Rose
5f30eac288 Excise "Accessibility" from the compiler (1/3)
"Accessibility" has a different meaning for app developers, so we've
already deliberately excised it from our diagnostics in favor of terms
like "access control" and "access level". Do the same in the compiler
now that we aren't constantly pulling things into the release branch.

This commit changes the names of methods, fields, a few local
variables, and even a swift-ide-test flag. The full list is below.

accessibilityForDiagnostics -> accessLevelForDiagnostics
checkAccessibility -> checkAccess
checkGenericParamAccessibility -> checkGenericParamAccess
checkTypeAccessibility -> checkTypeAccess
checkWitnessAccessibility -> checkWitnessAccessibility
computeAccessibility -> computeAccessLevel
computeDefaultAccessibility -> computeDefaultAccessLevel
fixItAccessibility -> fixItAccess
getAccessibilityString -> getAccessLevelString
getAccessibilityStrictly -> getAccessLevelStrictly
getAccessibilityUID -> getAccessLevelUID
getActualAccessibility -> getActualAccessLevel
getDefaultAccessibility -> getDefaultAccessLevel
getMaxAccessibility -> getMaxAccessLevel
getOverridableAccessibility -> getOverridableAccessLevel
getRawStableAccessibility -> getRawStableAccessLevel
getSetterAccessibility -> getSetterFormalAccess
hasAccessibility -> hasAccess
hasDefaultAccessibility -> hasDefaultAccessLevel
inferAccessibility -> inferAccessLevel
inferDefaultAccessibility -> inferDefaultAccessLevel
inferSetterAccessibility -> inferSetterAccessLevel
overwriteAccessibility -> overwriteAccess
overwriteSetterAccessibility -> overwriteSetterAccess
printAccessibility -> printAccess
requiredAccessibilityForDiagnostics -> requiredAccessForDiagnostics
resolveAccessibility -> resolveAccessControl
setAccessibility -> setAccess
setSetterAccessibility -> setSetterAccess
setDefaultAndMaxAccessibility -> setDefaultAndMaxAccess
validateAccessibility -> validateAccessControl

Accessibility -> AccessLevel
AccessibilityFilter -> AccessFilter
IgnoreAccessibility -> IgnoreAccessControl
NL_IgnoreAccessibility -> NL_IgnoreAccessControl
PrintAccessibility -> PrintAccess
PrintInternalAccessibilityKeyword -> PrintInternalAccessKeyword
SetterAccessibility -> SetterAccessLevel

setterAccessibility -> setterAccess
storedPropertyAccessibility -> storedPropertyAccess

-print-accessibility -> -print-access
2017-08-28 11:11:57 -07:00
Ben Langmuir
0241a10a9f Merge pull request #11622 from benlangmuir/sourcekit-thinning
[sourcekitd] Remove calls to llvm::Initialize*
2017-08-28 10:14:43 -07:00
swift-ci
c64e7f7dd9 Merge pull request #11489 from marcelofabri/associatedtype-structure 2017-08-25 11:40:10 -07:00
Ben Langmuir
6a40655817 [sourcekitd] Remove calls to llvm::Initialize*
rdar://problem/31902757
2017-08-25 10:23:48 -07:00
Argyrios Kyrtzidis
60a91bb736 [refactoring] Upstreaming the implementation for Swift local refactoring (#11568)
[refactoring] Upstreaming the implementation for Swift local refactoring
2017-08-22 16:50:16 -07:00
Argyrios Kyrtzidis
8e9c172f81 [sourcekitd] Fix crash in the document structure request when a class name starts with a number
rdar://33817431
2017-08-22 12:22:50 -07:00
Marcelo Fabri
8b9b49fdf3 [SourceKit] Add associatedtype to doc structure (SR-5700) 2017-08-16 23:40:36 +02:00
Marcelo Fabri
40b054b642 [SourceKit] Add local variables to structure (SR-5057) (#11431) 2017-08-11 13:43:05 -07:00
Rintaro Ishizaki
eb6914ccfc Merge pull request #11346 from rintaro/rip-cfor
Eliminate C-style ForStmt
2017-08-08 07:49:42 -07:00
Rintaro Ishizaki
b754b9e9b6 [IDE] Remove support for C-style ForStmt 2017-08-04 23:27:22 +09:00
swift-ci
747f79ca3b Merge remote-tracking branch 'origin/master' into master-next 2017-08-02 13:49:09 -07:00
Marcelo Fabri
d16cce3a94 [SourceKit] Add documentation range in structure (SR-2487) (#11264) 2017-08-02 13:39:49 -07:00
swift-ci
eb00130f0d Merge remote-tracking branch 'origin/master' into master-next 2017-08-01 21:28:52 -07:00
Harlan
4ff07077bc Rename DEPENDS to LINK_LIBS throughout SourceKit (#11228)
Currently, SourceKit's CMake functions all use DEPENDS to specify
libraries the targets will link with. This is confusing as it doesn't
behave the same way that add_swift behaves, and implies that
dependencies are created when there aren't.
2017-08-01 21:25:19 -07:00
swift-ci
d189132667 Merge remote-tracking branch 'origin/master' into master-next 2017-08-01 09:28:54 -07:00
Harlan Haskins
dc4bc169a5 Make SourceKitSupport depend on swift-syntax-generated-headers 2017-08-01 09:17:35 -07:00
swift-ci
9e7004b45a Merge remote-tracking branch 'origin/master' into master-next 2017-07-31 16:49:09 -07:00
Marcelo Fabri
c4dad0c321 [SourceKit] Add subscript to doc structure (SR-5035) 2017-08-01 00:00:20 +02:00
swift-ci
261bc2b849 Merge remote-tracking branch 'origin/master' into master-next 2017-07-31 14:29:37 -07:00
Marcelo Fabri
8a8f7c827e [SourceKit] Add accessibility in extension structure (SR-4823) (#11260) 2017-07-31 14:14:25 -07:00
Chris Bieneman
9c35042ae6 Merge remote-tracking branch 'origin/master' into master-next 2017-07-28 09:51:36 -07:00
Harlan
4b83c16c07 Make SourceKitSwiftLang depend on swift-syntax-generated-headers (#11226) 2017-07-27 13:24:55 -07:00
Chris B
762841ffa8 Merge pull request #11177 from llvm-beanz/swift-cmake-cross-compile
Support CMake's built-in cross compilation mechanisms, and LLVM's native tools configuration.
2017-07-26 15:44:59 -07:00
swift-ci
dec8050c1a Merge remote-tracking branch 'origin/master' into master-next 2017-07-26 10:09:14 -07:00
John Fairhurst
1f94eca80c [SourceKit] Add typealias to doc structure (#11143)
From https://bugs.swift.org/browse/SR-4828
2017-07-26 09:59:06 -07:00
swift-ci
0ce8483aa6 Merge remote-tracking branch 'origin/master' into master-next 2017-07-25 18:48:50 -07:00
Harlan
a5098e6b69 Generate libSyntax API (#10926)
* Generate libSyntax API

This patch removes the hand-rolled libSyntax API and replaces it with an
API that's entirely automatically generated. This means the API is
guaranteed to be internally stylistically and functionally consistent.
2017-07-25 18:19:58 -07:00
Chris Bieneman
3003bf6f9e Don't override CMAKE_* variables if CMAKE_CROSSCOMPILING is set
This patch allows Swift to build correctly when using CMake's cross compiling facilities instead of hacking around them.
2017-07-25 13:49:02 -07:00
swift-ci
238e75bebd Merge remote-tracking branch 'origin/master' into master-next 2017-07-21 18:29:06 -07:00
Xi Ge
7595ed353e [RangeInfo] Address Argyrios' code review comments. NFC (#11114) 2017-07-21 18:10:52 -07:00
swift-ci
bc13c03bfb Merge remote-tracking branch 'origin/master' into master-next 2017-07-21 16:29:01 -07:00
Xi Ge
ac348b597a [RangeInfo] Using the underlying token array reference to represent the content of a range under selection. (#11106)
Comparing to CharSourceRange, token stream is a better way because we can preserve comment information at the start of the range.

Needed for rdar://33437855
2017-07-21 16:19:25 -07:00
swift-ci
0535f36f1f Merge remote-tracking branch 'origin/master' into master-next 2017-07-19 17:08:59 -07:00
Ben Langmuir
93d22c9ff0 [code-completion] Add a new custom completion context for a for-each sequence
For normal completions it behaves the same as PostfixExprBeginning, but
it provides a hook for clients to provide a custom completion for this
position.  For example, you might want to a x ..< y snippet in this
position.

rdar://problem/29910383
2017-07-19 13:29:36 -07:00
swift-ci
f79b640686 Merge remote-tracking branch 'origin/master' into master-next 2017-07-19 13:09:13 -07:00
Ben Langmuir
0258839815 [code-completion] Add leading-dot completion for enums
When using completion options that will allow the lone "." completion,
provide that result when in contexts that expect an enum type.  Note:
this is a crappy approximationg for whether the type can have "implicit
member expression" syntax, since uninhabited enums should not support
it, and many non-enum types should.  However, it is currently expensive
to compute the accurate answer and this approximation is good enough for
some clients.

rdar://problem/31260505
2017-07-19 11:34:01 -07:00
swift-ci
30a7bd1844 Merge remote-tracking branch 'origin/master' into master-next 2017-07-19 01:28:52 -07:00
Slava Pestov
fb9d410350 AST: Rename UnqualifiedLookupResult => LookupResultEntry
There's a similar LookupResult::Result type in Sema, and I'd like
to combine the two.
2017-07-18 22:09:02 -07:00