Commit Graph

3980 Commits

Author SHA1 Message Date
practicalswift
431e5a1440 [gardening] Use consistent end of namespace comments 2017-04-20 13:47:10 +02:00
Slava Pestov
f4b91cd118 AST: Remove unused 'resolver' argument from TypeBase::getSuperclass() 2017-04-20 00:37:38 -07:00
Joe Groff
595e0e4ede Merge branch 'master' into keypaths 2017-04-19 18:38:24 -07:00
Graydon Hoare
6a94c9fb9e Merge pull request #8735 from graydon/rdar-30959593-operators-defeat-incrementality
Attribute @_implements & deriving enum equality not-named ==
2017-04-19 11:18:55 -07:00
Graydon Hoare
3955f5ee66 Don't code-complete any ValueDecl that's not user accessible. 2017-04-18 23:21:43 -07:00
practicalswift
50ae5d1541 [gardening] Use consistent end-of-namespace comments 2017-04-18 19:21:26 +02:00
practicalswift
7eb7d5b109 [gardening] Fix 100 typos. 2017-04-18 17:01:42 +02:00
Maxwell Swadling
452e535ba4 Updated quick help XML to separate the comment data from the metadata 2017-04-17 14:53:57 -07:00
Xi Ge
ba33fd6236 swift-api-digester: Add a data structure APIDiffItemStore. (#8794)
This structure serves multiple purposes:
	a. Allow migrator to speak in the same language with swift-api-digester in terms of API changes.
	b. Serialize/Deserialize detected API change items in JSON format.
	c. Manage memory after deserializing API change items.
	d. Facilitate look up by USRs of APIs under migration.
The structure is tested by round-trip serialization and deserialization.
2017-04-17 13:04:02 -07:00
practicalswift
40cf4d183d [gardening] Use consistent spacing after if, for and while 2017-04-14 17:35:36 +02:00
practicalswift
6828ed9e1e [gardening] Use isa<T>(o) instead of dyn_cast<T>(o) when result is unused 2017-04-14 17:33:24 +02:00
practicalswift
d8d1693814 [gardening] Remove unused variables 2017-04-14 17:33:24 +02:00
Slava Pestov
d58f049608 AST: Introduce ASTContext::getAnyObjectType()
This replaces a number of usages of KnownProtocolKind::AnyObject,
which is soon going away.
2017-04-13 21:17:05 -07:00
Slava Pestov
d49f8fb6d9 AST: Introduce primitive AnyObject type
Add a 'hasExplicitAnyObject()' bit to ProtocolCompositionType
to represent canonical composition types containing '& AnyObject'.

Serialize this bit and take it into account when building
ExistentialLayouts.

Rename ProtocolCompositionType::getProtocols() to getMembers()
since it can contain classes now, and update a few usages that
need further attention with FIXMEs or asserts.

For now, nothing actually constructs these types, and they will
trigger arounds asserts. Upcoming patches will introduce support
for this.
2017-04-13 21:17:05 -07:00
Xi Ge
dbb71698e9 swift-api-digester: Extract/Expose API change descriptors to libIDE to allow visibility from libMigrator. NFC (#8766) 2017-04-13 18:31:41 -07:00
Xi Ge
00b4d518bf IDE: Rename Edit*Consumer to SourceEdit*Consumer. NFC (#8732) 2017-04-12 16:56:39 -07:00
swift-ci
5dbbeabf72 Merge pull request #8726 from nkcsgexi/edit-consumer 2017-04-12 14:35:33 -07:00
Xi Ge
cc29886987 IDE/Utils: Move edit consumers to IDE utilities to allow broader audience. NFC 2017-04-12 13:05:57 -07:00
Argyrios Kyrtzidis
2edefb2e40 [IDE/CodeCompletion] Replace some global variables with static functions, NFC 2017-04-12 12:54:10 -07:00
practicalswift
5e255e07d7 [gardening] Remove redundant logic 2017-04-11 23:04:55 +02:00
Joe Groff
85ad6b355e Merge branch 'master' into keypaths 2017-04-06 18:02:07 -07:00
Doug Gregor
5c89eb84f0 [AST] Drop substitutions from type witnesses.
Nobody is using the actual substitutions, but we sure did a lot of
work to cope with them.
2017-04-05 11:21:38 -07:00
Joe Groff
eb5d006e40 Rename ObjCKeyPathExpr -> KeyPathExpr.
We can use the same general shape of expression for native key paths.
2017-04-04 11:31:15 -07:00
Xi Ge
08c2aabc24 [cmake] swiftIDE should depend on swiftIndex. 2017-03-30 15:40:38 -07:00
Xi Ge
1a402c1c43 Index: compare interface types of potential witnesses to make sure we handle overloads properly. (#8434) 2017-03-30 11:49:54 -07:00
Xi Ge
0ccbfdb933 Index: Record override-of relationship between a decl in protocol extension and the protocol requirements it can provide default implementations for. (#8418) 2017-03-29 19:39:39 -07:00
Erik Eckstein
e427ded6c9 Mangling: refactoring: clean up tuple nodes
Replace VariadicTuple and NonVariadicTuple with a single Tuple node.
The variadic property is now part of the tuple element and not of the whole tuple.
2017-03-25 19:07:52 -07:00
Xi Ge
1827fb1436 RangeInfo: Report RValue type if a decl reference is of read-only LValue type. (#8300) 2017-03-23 15:52:54 -07:00
Xi Ge
8e0aaa6886 RangeInfo: fix a crash when a var decl doesn't have a patternbindingdecl as parent. (#8255) 2017-03-21 16:41:34 -07:00
Slava Pestov
99da2ea244 Merge pull request #8211 from practicalswift/use-is-instead-of-getas-where-appropriate
[gardening] Use .is<T>() instead of .getAs<T>() if the result is not needed
2017-03-21 00:39:23 -07:00
Slava Pestov
573e832f35 AST: Fix crash when attempting typo correction on class-bound archetype
Also clean up some of the badness here just a little bit.

Fixes <rdar://problem/31093620>.
2017-03-20 16:22:00 -07:00
practicalswift
83526fe224 [gardening] Use .is<T>() instead of .getAs<T>() if the result is not needed 2017-03-20 22:54:01 +01:00
Erik Eckstein
0f87b5efb2 Remove the useNewMangling function
NFC
2017-03-17 16:10:36 -07:00
Ben Langmuir
5434afc67b [codecompletion] Fix completion after 'let' inside a nominal type
Previously, we ignoring 'let', so you would get ridiculous completions:
  let var foo: Int
  override let func bar() {}

Now, will complete protocol requirements after 'let' the same way we do
for 'var'.  For instance property overrides, we only show them if the
'override' keyword is specified.  You can't actually override using a
'let', but if the keyword is present then the intention is clear and we
can let the user fix it afterwards when the compiler diagnoses it.

rdar://problem/31091172
2017-03-17 11:33:03 -07:00
Xi Ge
4df0d03e2b RangeInfo: Unbox brace statement to figure out the type it returns. (#8154) 2017-03-16 11:38:39 -07:00
Xi Ge
034170a348 RangeInfo: simplify some code by using STL extra. NFC 2017-03-15 20:46:06 -07:00
Hugh Bellamy
1680b922b1 Make stringWithFormat not invoke undefined behaviour with Visual Studio 2017
warning C4840: non-portable use of class
'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' as
an argument to a variadic function
2017-03-16 08:55:29 +07:00
Xi Ge
1ef97c0024 RangeInfo: Rework the criterion for valid selection of multiple statements, i.e. they should have a common brace statement as parent. (#8129) 2017-03-15 18:23:24 -07:00
swift-ci
60e54b9e53 Merge pull request #8131 from akyrtzi/img-tag-in-doc-comment 2017-03-15 17:21:07 -07:00
Argyrios Kyrtzidis
fa4b6095e1 [IDE] Use proper slash for closing an <img> tag in documentation comment XML.
rdar://24314778
2017-03-15 16:27:05 -07:00
Xi Ge
0e1cc083b5 DocComment API: ensure LineList does not outlive the MarkupContext and SourceManager it depends on. (#8102) 2017-03-15 00:05:56 -07:00
Xi Ge
ed56e493f1 RangeInfo: disallow expressions with non-void type at the start or the end of multi-statement selections. (#8092) 2017-03-14 16:59:28 -07:00
Xi Ge
0d97dd4992 [SourceKit] Add a new request to translate markup text to its XML equivalence. rdar://30587403 (#8088)
Required fields:
- "key.request": "source.request.convert.markup.xml"
- "key.sourcetext": "markup text"

Expected response:
- "key.sourcetext": "xml text"
2017-03-14 15:13:43 -07:00
Xi Ge
f76ed374a7 RangeInfo: Treat comments transparently when resolving a given range. rdar://30926193 (#8052) 2017-03-13 14:47:02 -07:00
Slava Pestov
162b2d252e AST: Include gardening to minimize dependencies on Expr.h
A lot of files transitively include Expr.h, because it was
included from SILInstruction.h, SILLocation.h and SILDeclRef.h.

However in reality most of these files don't do anything
with Exprs, especially not anything in IRGen or the SILOptimizer.

Now we're down to 171 files in the frontend which depend on
Expr.h, which is still a lot but much better than before.
2017-03-12 22:26:56 -07:00
Erik Eckstein
5e80555c9b demangler: put the demangler into a separate library
Previously it was part of swiftBasic.

The demangler library does not depend on llvm (except some header-only utilities like StringRef). Putting it into its own library makes sure that no llvm stuff will be linked into clients which use the demangler library.

This change also contains other refactoring, like moving demangler code into different files. This makes it easier to remove the old demangler from the runtime library when we switch to the new symbol mangling.

Also in this commit: remove some unused API functions from the demangler Context.

fixes rdar://problem/30503344
2017-03-09 13:42:43 -08:00
David Farler
7dba418fe7 [CodeCompletion] Delete expr type state after getting expr completions
When we are getting completions for an initializer at the open
parenthesis, as in:

class C {
  func foo<S: Sequence>(x: S) {
    String(#^A^#
  }
}

after getting all of the overloads for String.init or other applicable
completions for the expression, we leave the stateful expression type
set when performing the last part of code completion, which is getting
other visible declarations at that point.

In this example, C.foo is available to call. However, if the expression
type is left around, we will mistakenly try to use it to substitute
generics of the found declaration, which doesn't make sense, because
foo is a method on C, not String in this case.

We really need to make this part of the compiler less stateful in
the future, or at least formalize the state changes more. It might
also make sense to further separate different kinds of completions
and the mechanisms for getting types, as we reuse the same machinery
for methods and module functions, making a lot of fallback assumptions.

rdar://problem/30137466
2017-03-06 08:37:09 -08:00
swift-ci
af53cb9778 Merge pull request #7733 from rintaro/parse-ifconfig-refactoring 2017-02-28 19:10:59 -08:00
Erik Eckstein
7d7dc5aaac Demangler: Use a bump-pointer allocator for node allocation.
This makes the demangler about 10 times faster.
It also changes the lifetimes of nodes. Previously nodes were reference-counted.
Now the returned demangle  node-tree is owned by the Demangler class and it’s lifetime ends with the lifetime of the Demangler.

Therefore the old (and already deprecated) global functions demangleSymbolAsNode and demangleTypeAsNode are no longer available.

Another change is that the demangling for reflection now only supports the new mangling (which should be no problem because
we are generating only new mangled names for reflection).
2017-02-24 19:04:13 -08:00
Rintaro Ishizaki
136651e191 [AST] Merge IfConfigDeclClause and IfConfigStmtClause
into IfConfigClause<ElemTy>.
2017-02-24 11:07:27 +09:00