Commit Graph

462 Commits

Author SHA1 Message Date
Argyrios Kyrtzidis
a17b8a2d15 [IDE] SyntaxModelContext is intended to be used on a SourceFile not a module.
Swift SVN r12183
2014-01-11 01:09:32 +00:00
Sonny Falk
d1f0d9f7c6 [IDE] Give @attributes their own dedicated SyntaxNodeKind::Attribute.
Swift SVN r12138
2014-01-10 22:23:42 +00:00
Sonny Falk
2c3e2d469f [IDE] Add TypeRange to SyntaxStructureNode, and vend the type name for instance variables.
Swift SVN r12028
2014-01-08 01:33:33 +00:00
Jordan Rose
417b5d3982 Merge TranslationUnit into Module, and eliminate the term "translation unit".
This completes the FileUnit refactoring. A module consists of multiple
FileUnits, which provide decls from various file-like sources. I say
"file-like" because the Builtin module is implemented with a single
BuiltinUnit, and imported Clang modules are just a single FileUnit source
within a module.

Most modules, therefore, contain a single file unit; only the main module
will contain multiple source files (and eventually partial AST files).

The term "translation unit" has been scrubbed from the project. To refer
to the context of declarations outside of any other declarations, use
"top-level" or "module scope". To refer to a .swift file or its DeclContext,
use "source file". To refer to a single unit of compilation, use "module",
since the model is that an entire module will be compiled with a single
driver call. (It will still be possible to compile a single source file
through the direct-to-frontend interface, but only in the context of the
whole module.)

Swift SVN r10837
2013-12-05 01:51:15 +00:00
Jordan Rose
be12d86ddd Turn ClangModule into ClangModuleUnit.
Part of the FileUnit restructuring. A Clang module (whether from a framework
or a simple collection of headers) is now imported as a TranslationUnit
containing a single ClangModuleUnit.

One wrinkle in all this is that Swift very much wants to do searches on a
per-module basis, but Clang can only do lookups across the entire
TranslationUnit. Unless and until we get a better way to deal with this,
we're stuck with an inefficiency here. Previously, we used to hack around
this by ignoring the "per-module" bit and only performing one lookup into
all Clang modules, but that's not actually correct with respect to visibility.

Now, we're just taking the filtering hit for looking up a particular name,
and caching the results when we look up everything (for code completion).
This isn't ideal, but it doesn't seem to be costing too much in performance,
at least not right now, and it means we can get visibility correct.

In the future, it might make sense to include a ClangModuleUnit alongside a
SerializedASTFile for adapter modules, rather than having two separate
modules with the same name. I haven't really thought through this yet, though.

Swift SVN r10834
2013-12-05 01:51:11 +00:00
Dmitri Hrybenko
44147a9de3 Fix indentation
Swift SVN r10811
2013-12-04 23:16:38 +00:00
Sonny Falk
69a4cfb866 [IDE] Add InheritedTypeRanges to SyntaxStructureNode.
Add tests to cover name source range and inherited types to the structure tests.

Swift SVN r10767
2013-12-04 00:00:23 +00:00
Dmitri Hrybenko
81dc5deee8 Change 'def' keyword back to 'func'
Swift SVN r10522
2013-11-17 07:45:28 +00:00
Sonny Falk
2ba1d6cec9 [IDE] Remove IBAction / IBOutlet specific SyntaxStructureKind values, and pass through the DeclAttributes instead.
Swift SVN r10028
2013-11-07 19:35:30 +00:00
Sonny Falk
7594f89ac6 [IDE] Annotate IBAction/IBOutlet with their own SyntaxStructureKind.
Swift SVN r10009
2013-11-06 23:30:23 +00:00
Dmitri Hrybenko
91ce21666d Change 'func' keyword to 'def'
I tried hard find all references to 'func' in documentation, comments and
diagnostics, but I am sure that I missed a few.  If you find something, please
let me know.

rdar://15346654


Swift SVN r9886
2013-11-02 01:00:42 +00:00
Sonny Falk
f265135790 [IDE] Add Enum SyntaxStructure kind. Rename to spell out enum values in full form. Refactored to remove duplication.
Swift SVN r9824
2013-10-30 23:21:55 +00:00
Sonny Falk
7b8cd1c0e0 [IDE] Add support for a few more SyntaxStructure kinds, and add name range.
Swift SVN r9810
2013-10-30 21:01:35 +00:00
Dmitri Hrybenko
fb08372e10 Code completion tests: check declaration kind, it is computed with non-trivial logic now
These tests revealed this bug: rdar://15353073


Swift SVN r9800
2013-10-30 18:05:55 +00:00
Argyrios Kyrtzidis
76faca0269 [IDE] Enhance SourceEntityWalker to report walking of expressions.
Swift SVN r9760
2013-10-29 17:06:38 +00:00
Dmitri Hrybenko
a927afa412 Remove unused #includes
Swift SVN r9662
2013-10-24 22:54:34 +00:00
Dmitri Hrybenko
0cafcee4c0 Code completion: add more assertions
Swift SVN r9659
2013-10-24 22:20:05 +00:00
Dmitri Hrybenko
b7d3a23518 Code completion result cache: use libcache
Swift SVN r9653
2013-10-24 20:59:28 +00:00
Argyrios Kyrtzidis
d64313d169 [IDE] Use a switch to convert to CodeCompletionDeclKind, to make sure we cover every decl kind.
Also add the GenericTypeParam for kind.

Swift SVN r9640
2013-10-24 17:47:26 +00:00
Argyrios Kyrtzidis
881e646632 [IDE] Introduce CodeCompletionDeclKind enum to encapsulate a bit more info than the DeclKind (e.g. whether the function is an instance/static method).
Swift SVN r9635
2013-10-24 04:33:51 +00:00
Dmitri Hrybenko
8d8b60f973 Code completion: implement result caching per-imported module across muptiple
ASTContexts

This introduces swift::ide::CodeCompletionCache, which is a persistent code
completion result cache.

Right now REPL happens to use it (try importing Cocoa and doing code
completion), and the difference is noticeable.  But completion in REPL is
still slow, because Cocoa goes through the AST Verifier on every completion
(for unknown reasons).

This commit does not implement cache invalidation yet, and it does not use
libcache to evict cache entries under memory pressure.

This commit also introduces two regressions:
- We get fewer Cocoa results that expected.  Module::isModuleVisible in Clang
does not incorrectly reports that that ObjectiveC.NSObject submodule is not
visible from Cocoa.

- We are not implementing the decl hiding rules correctly.  We used to rely on
visible decl lookup to do it for us, but now we have a different data structure
we have real decls from the current module and we have a text-only cache, so we
are forced to reimplement this part of name lookup in code completion.


Swift SVN r9633
2013-10-24 02:13:34 +00:00
Sonny Falk
ff0a037ae6 [IDE] Add initial document structure annotation support.
Swift SVN r9597
2013-10-22 20:54:46 +00:00
Sonny Falk
fdb71c03d0 [IDE] Rename SyntaxColoring since it's about to handle more than coloring.
Swift SVN r9595
2013-10-22 19:49:29 +00:00
Dmitri Hrybenko
4ce90a83a9 Code completion: move result builder to a private header
Swift SVN r9485
2013-10-18 18:13:23 +00:00
Dmitri Hrybenko
4e29c56cdd Code completion: don't copy static strings into a separate allocator
Swift SVN r9484
2013-10-18 18:04:41 +00:00
Dmitri Hrybenko
0f93a9277d Code completion: complete '!' and '?' on Optional<T>
rdar://14848266


Swift SVN r9377
2013-10-15 21:36:42 +00:00
Jordan Rose
25deab5f31 Misc. cleanup related to use of TranslationUnit.
Swift SVN r9164
2013-10-10 19:49:32 +00:00
Argyrios Kyrtzidis
65fd2eed43 [IDE] Provide 'walk' method in SourceEntityWalker for SourceFiles.
Swift SVN r9136
2013-10-10 14:51:37 +00:00
Doug Gregor
939f24aa12 Code completion: Generic parameter name chunks have text.
Swift SVN r9108
2013-10-09 23:16:41 +00:00
Doug Gregor
f7b84d4f41 Code completion: add chunks for <, >, and generic parameters.
Swift SVN r9107
2013-10-09 23:11:42 +00:00
Jordan Rose
cba6b2cc70 Use SourceFile in REPL code completion.
Swift SVN r9074
2013-10-09 18:38:19 +00:00
Dmitri Hrybenko
6895c34741 Code completion: report "semantic context" for every code completion result
Semantic context describes the origin of the declaration and serves the same
purpose as opaque numeric "priority" in Clang -- to determine the most likely
completion.

This is the initial implementation.  There are a few opportunities to bump the
priority of a certain decl by giving it SemanticContextKind::ExprSpecific
context that are not implemented yet.


Swift SVN r9052
2013-10-09 02:08:05 +00:00
Dmitri Hrybenko
6f4cb05603 Code completion: basic support for completing memebrs of DynamicLookup (id)
Only tested with functions (instance/class functions) declared in swift
classes.  Need more testcases.


Swift SVN r8800
2013-10-01 02:14:25 +00:00
Argyrios Kyrtzidis
efe3d94e6b [AST] Introduce DeclContext::walkContext(), used for ASTWalking a DeclContext.
Swift SVN r8776
2013-09-30 15:43:09 +00:00
Argyrios Kyrtzidis
f32167d166 [AST] Introduce a walk() method for TranslationUnit.
Swift SVN r8729
2013-09-27 17:24:35 +00:00
Argyrios Kyrtzidis
e68201fa66 [IDE] Replace ide::findSemanticSourceEntities() with a more general SourceEntityWalker abstract class.
Swift SVN r8699
2013-09-26 21:36:03 +00:00
Argyrios Kyrtzidis
e287701749 [IDE] Fix annotation of constructors.
Swift SVN r8688
2013-09-26 01:43:35 +00:00
Argyrios Kyrtzidis
1d27584ef8 [swift-ide-test] Rename option '-terminal-output' -> '-terminal'.
Swift SVN r8619
2013-09-25 01:35:38 +00:00
Argyrios Kyrtzidis
0fe6d45e62 [IDE] Introduce semantic annotation functionality and test.
Swift SVN r8618
2013-09-25 01:35:36 +00:00
Ted Kremenek
8f5b8ccb02 Rename "This" to "Self" and "this" to "self".
This was not likely an error-free change.  Where you see problems
please correct them.  This went through a fairly tedious audit
before committing, but comments might have been changed incorrectly,
not changed at all, etc.

Swift SVN r7631
2013-08-27 21:58:27 +00:00
Sonny Falk
417a162f2c Rename enum class SyntaxColor to SyntaxNodeKind, since this represents more than color.
Set the size for SyntaxNodeKind to uint_8_t, since we're packing it together with length in a 32-bit value in SourceKit.
Add SyntaxNodeKind::Identifier.



Swift SVN r7609
2013-08-26 23:49:03 +00:00
Dmitri Hrybenko
2786c30dd8 Code completion: add a parser hook to inform code completion about generic
parameters while parsing the function signature.  Generic parameters are not
accessible at that time through the AST node, because the FuncDecl AST node was
not constructed yet.


Swift SVN r7222
2013-08-14 02:16:55 +00:00
Argyrios Kyrtzidis
0d7fc0aa1d [ide] Use the newly introduce CharSourceRange inside ide::SyntaxNode.
Swift SVN r7174
2013-08-12 20:58:20 +00:00
Dmitri Hrybenko
a6519a907d Code completion: implement code completion for dot member access on clang modules
Because we don't want FooModule.#^A^# to show completion results for other
clang modules, global completion cache was replaced with a per-module cache.


Swift SVN r6951
2013-08-06 21:15:23 +00:00
Argyrios Kyrtzidis
7c9831df88 [IDE] Handle string interpolation for syntax-coloring.
Swift SVN r6894
2013-08-05 15:21:58 +00:00
Argyrios Kyrtzidis
885c9ce119 [IDE] Highlight type identifiers.
Swift SVN r6862
2013-08-02 22:44:59 +00:00
Dmitri Hrybenko
99b626e8dd Fix indentation
Swift SVN r6844
2013-08-02 17:35:31 +00:00
Argyrios Kyrtzidis
df96177b36 [IDE] Add hasText() convenience method in the code-completion chunk.
Swift SVN r6839
2013-08-02 16:56:02 +00:00
Argyrios Kyrtzidis
49389348ac [IDE] Introduce the "syntax-coloring" action.
Swift SVN r6837
2013-08-02 02:50:32 +00:00
Argyrios Kyrtzidis
cff4cf4e16 [IDE] Add CodeCompletionResult::getKind().
Swift SVN r6835
2013-08-02 02:50:31 +00:00