Commit Graph

1899 Commits

Author SHA1 Message Date
Slava Pestov
220bc64064 ClangImporter: Directly track constructors imported into a nominal type
This avoids a re-entrant lookup while doing lazy member loading,
and eliminates a usage of LookupDirectFlags::IgnoreNewExtensions,
and the last usage of NominalTypeDecl::makeMemberVisible().
2019-09-03 22:39:36 -04:00
Slava Pestov
c87e1a23db Sema: Try harder not to page in all members of imported classes 2019-09-03 22:39:35 -04:00
Slava Pestov
22cb6f1176 AST: Introduce ProtocolDecl::get{AssociatedType,ProtocolRequirement}() 2019-09-03 22:39:35 -04:00
Robert Widmann
87047d067e Requestify Inferring Generic Requirements
Unify a bunch of quasi-independent callsites into a single request that
builds up a generic signature from a variety of inference sources.  This
draws the extension typealias workaround for SE-0229 into TypeCheckDecl
where we can better work on refactoring it.  The goal is to use this as
a springboard to requests that compute generic environments for various
and sundry decls.
2019-09-03 09:56:21 -07:00
swift-ci
0591c81677 Merge remote-tracking branch 'origin/master' into master-rebranch 2019-08-31 19:24:16 -07:00
Doug Gregor
d8b745db77 Add a request to lazily parse function bodies.
Rework the lazy function body parsing mechanism to use the
request-evaluator, so that asking for the body of a function will
initiate parsing. Clean up a number of callers to
AbstractFunctionDecl::getBody() that don't actually need the body, so
we don't perform unnecessary parsing.

This change does not delay parsing of function bodies in the general
case; rather, it sets up the infrastructure to always delay parsing of
function bodies.
2019-08-31 16:23:08 -07:00
swift-ci
a9cb82e5e5 Merge remote-tracking branch 'origin/master' into master-rebranch 2019-08-31 03:44:11 -07:00
eeckstein
903eeb220b Revert "Add a request to lazily parse function bodies." 2019-08-31 12:29:01 +02:00
swift-ci
0449301870 Merge remote-tracking branch 'origin/master' into master-rebranch 2019-08-30 22:04:20 -07:00
Doug Gregor
2ab05a6835 Add a request to lazily parse function bodies.
Rework the lazy function body parsing mechanism to use the
request-evaluator, so that asking for the body of a function will
initiate parsing. Clean up a number of callers to
AbstractFunctionDecl::getBody() that don't actually need the body, so
we don't perform unnecessary parsing.

This change does not delay parsing of function bodies in the general
case; rather, it sets up the infrastructure to always delay parsing of
function bodies.
2019-08-30 16:48:23 -07:00
swift-ci
86bdfeb467 Merge remote-tracking branch 'origin/master' into master-rebranch 2019-08-29 14:04:23 -07:00
Doug Gregor
d8f7c9e72c [Parser] Introduce a request for parsing type and extension members.
Ensure that lazy parsing of the members of nominal type definitions
and extensions is handled through a request. Most of the effort here
is in establishing a new request zone for parser requests.
2019-08-28 21:39:56 -07:00
swift-ci
7c8b08501e Merge remote-tracking branch 'origin/master' into master-rebranch 2019-08-27 17:44:26 -07:00
Robert Widmann
441eba1e19 Requestify Operator Decl Attachment 2019-08-27 11:29:22 -07:00
swift-ci
5c025a7b77 Merge remote-tracking branch 'origin/master' into master-rebranch 2019-08-27 11:23:51 -07:00
Robert Widmann
36765687b9 Merge pull request #26844 from CodaFi/extension-intervention
Requestify Extension Type Validation
2019-08-27 11:23:18 -07:00
swift-ci
2352f3f3ed Merge remote-tracking branch 'origin/master' into master-rebranch 2019-08-27 00:04:30 -07:00
Dan Zheng
f44064cbbc [SE-0253] Introduce callables. (#24299)
Introduce callables: values of types that declare `func callAsFunction`
methods can be called like functions. The call syntax is shorthand for
applying `func callAsFunction` methods.

```swift
struct Adder {
  var base: Int
  func callAsFunction(_ x: Int) -> Int {
    return x + base
  }
}
var adder = Adder(base: 3)
adder(10) // desugars to `adder.callAsFunction(10)`
```

`func callAsFunction` argument labels are required at call sites.
Multiple `func callAsFunction` methods on a single type are supported.
`mutating func callAsFunction` is supported.

SR-11378 tracks improving `callAsFunction` diagnostics.
2019-08-26 23:56:36 -07:00
Robert Widmann
8d22702a22 Use Integrated Caching
Replumb the TypeLoc for the extended type as a TypeRepr instead. Fixup
the myriad callsites this touches in the process.
2019-08-26 11:48:29 -07:00
swift-ci
89367dd880 Merge remote-tracking branch 'origin/master' into master-rebranch 2019-08-24 19:43:03 -07:00
Suyash Srijan
bb85ecb8b5 [Typechecker] Diagnose @dynamicMemberLookup subscript when it lacks an explicit argument label 2019-08-25 00:03:07 +01:00
swift-ci
da3fbf87b9 Merge remote-tracking branch 'origin/master' into master-rebranch 2019-08-23 11:23:53 -07:00
Robert Widmann
2187fb20d5 Merge pull request #26794 from apple/whats-old-is-new-again
Requestify Class Ancestry Flags
2019-08-23 11:11:14 -07:00
Robert Widmann
6297a596aa Requestify Class Ancestry Flags 2019-08-22 15:22:48 -07:00
swift-ci
630d7e3a7e Merge remote-tracking branch 'origin/master' into master-rebranch 2019-08-22 12:43:13 -07:00
Slava Pestov
b92918889f AST: Don't cache NominalTypeDecl::getDeclaredTypeInContext() 2019-08-22 01:46:50 -04:00
swift-ci
3869e829fa Merge remote-tracking branch 'origin/master' into master-rebranch 2019-08-20 14:43:57 -07:00
Slava Pestov
62f18a52c0 Sema: Move attribute checking to typeCheckDecl() 2019-08-20 14:47:52 -04:00
swift-ci
5341b84127 Merge remote-tracking branch 'origin/master' into master-rebranch 2019-08-19 13:24:00 -07:00
Jordan Rose
94d1e5efe6 Avoid reserved names in C++ code: "__Consuming" (#26720)
Double-underscored names are reserved for the C++ "implementation"
(language and standard library). Even though "__Consuming" isn't
likely to be part of the C++ standard any time soon, we should follow
the rules.

Note that the API digester will continue to use the string
"__Consuming" for now, even though the underscores aren't really
significant, to avoid invalidating existing dumps.

No functionality change.
2019-08-19 13:06:53 -07:00
swift-ci
b6e97a229e Merge remote-tracking branch 'origin/master' into master-rebranch 2019-08-15 19:24:21 -07:00
Slava Pestov
70bcd74ed0 Sema: Introduce IsImplicitlyUnwrappedOptionalRequest 2019-08-15 18:41:42 -04:00
Slava Pestov
1c3ac86796 AST: Banish OptionalTypeKind to ClangImporter.h
The only place this was used in Decl.h was the failability kind of a
constructor.

I decided to replace this with a boolean isFailable() bit. Now that
we have isImplicitlyUnwrappedOptional(), it seems to make more sense
to not have ConstructorDecl represent redundant information which
might not be internally consistent.

Most callers of getFailability() actually only care if the result is
failable or not; the few callers that care about it being IUO can
check isImplicitlyUnwrappedOptional() as well.
2019-08-15 18:41:42 -04:00
Slava Pestov
19d283d9dc AST: Replace ImplicitlyUnwrappedOptionalAttr with Decl::{is,set}ImplicitlyUnwrappedOptional() 2019-08-15 18:41:41 -04:00
swift-ci
0cdd51d28c Merge remote-tracking branch 'origin/master' into master-rebranch 2019-08-13 21:44:25 -07:00
John McCall
eeb7b050e6 Merge pull request #26616 from varungandhi-apple/vg-add-isGeneric-doc-example
Add a couple of examples to the isGeneric() documentation.
2019-08-14 00:30:17 -04:00
Varun Gandhi
bc09a4a061 Add a couple of examples to the isGeneric() documentation. 2019-08-12 12:26:24 -07:00
swift-ci
380670fd01 Merge remote-tracking branch 'origin/master' into master-rebranch 2019-08-09 17:44:26 -07:00
Slava Pestov
9dd835c71b Sema: Replace the finalizeDecl() mechanism with ClassDecl::getEmittedMembers()
The only thing remaining in finalizeDecl() is synthesis of
certain class members. Let's turn that into a request.
2019-08-09 19:08:47 -04:00
Slava Pestov
0063f158be AST: Request-ify synthesis of the implicit destructor 2019-08-09 19:08:47 -04:00
Brent Royal-Gordon
fb20b503ba Merge branch 'master' into master-rebranch
# Conflicts:
#	lib/ClangImporter/ClangImporter.cpp
#	test/IRGen/builtins.swift
#	test/IRGen/enum.sil
#	tools/driver/autolink_extract_main.cpp
#	utils/build-presets.ini
2019-08-08 17:07:59 -07:00
David Zarzycki
f40c5cf046 NFC: Fix -Wdocumentation warning 2019-08-07 07:55:37 +01:00
Slava Pestov
6c5ecb5fc9 AST: Introduce AbstractStorageDecl::visit{Parsed,Emitted}Accessors() 2019-08-06 16:30:13 -04:00
Slava Pestov
e0cc652616 AST: Replace AbstractStorageDecl::hasAnyAccessors() with hasParsedAccessors() 2019-08-06 16:21:55 -04:00
David Ungar
e3d6e6b844 Merge pull request #26416 from davidungar/pbd-sourcerange
[ASTScope lookup] Fix PatternBindingEntry initializer getters and rectify its source range
2019-08-05 14:48:47 -07:00
David Ungar
b38076490b Address review comments re clarity
setOrigInit -> setOriginalInit
2019-08-05 13:42:35 -07:00
Slava Pestov
0c5d52d860 AST: Introduce AbstractStorageDecl::get{Parsed,Opaque}Accessor()
Also, change visitOpaqueAccessors() to call getOpaqueAccessor() instead of
asserting if the expected accessor does not exist.
2019-08-02 19:34:43 -04:00
David Ungar
1011998a97 Fix PatternBindingEntry::getSourceRange 2019-08-01 16:59:40 -07:00
Slava Pestov
64c32c695b AST: Remove a few utility methods from AbstractStorageDecl
Since the return value of getAccessor() depends on mutable state, it
does not make sense in the request evaluator world. Let's begin by
removing some utility methods derived from getAccessor(), replacing
calls to them with calls to getAccessor().
2019-08-01 18:31:58 -04:00
Slava Pestov
9c5bd44f8e AST: Push ValueDecl::isSettable() down to AbstractStorageDecl 2019-07-31 21:26:02 -04:00