Commit Graph

4571 Commits

Author SHA1 Message Date
swift-ci
0591c81677 Merge remote-tracking branch 'origin/master' into master-rebranch 2019-08-31 19:24:16 -07:00
Doug Gregor
9249966b8c [Source loader] Delay parsing and type checking for source imports.
Use the delayed parsing of function bodies for source imports, and
switch source imports over to lazy type checking. There's no point in
doing a full type check for them.
2019-08-31 16:27:45 -07:00
swift-ci
8f203f3930 Merge remote-tracking branch 'origin/master' into master-rebranch 2019-08-30 14:44:12 -07:00
Doug Gregor
11969847c4 Simplify lazy parsing of nominal and extension members.
Lazy parsing for the members of nominal types and extensions depends
only on information already present in
`IterableDeclContext`. Eliminate the use of PersistentParserState as
an intermediary and have the member-parsing request construct a new
`Parser` instance itself to handle parsing. Make this possible even
for ill-formed nominal types/extensions to simplify the code path.

Eliminate `LazyMemberParser` and all of its uses, because it was only
present for lazy member parsing, which no longer needs it.
2019-08-30 08:29:43 -07:00
Owen Voorhees
3a2547ce0c [Diagnostics][NFC] Allow column specification in -verify mode
To check the column a diagnostic is emitted at, use
expected-error@+x:y, or expected-error@:y to specify
a column without a line offset
2019-08-29 20:11:55 -07:00
swift-ci
f1318a890a Merge remote-tracking branch 'origin/master' into master-next 2019-08-29 14:10:41 -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
3ca9d535ae Merge remote-tracking branch 'origin/master' into master-rebranch 2019-08-28 15:04:18 -07:00
swift-ci
6567197d2d Merge remote-tracking branch 'origin/master' into master-next 2019-08-28 14:50:21 -07:00
swift-ci
33217941b7 Merge pull request #26902 from davidungar/lazy-cleanup 2019-08-28 14:47:27 -07:00
swift-ci
d5353b9007 Merge remote-tracking branch 'origin/master' into master-next 2019-08-28 12:10:22 -07:00
swift-ci
e46e7be52e Merge remote-tracking branch 'origin/master' into master-rebranch 2019-08-28 12:04:29 -07:00
David Ungar
1415f2f7f9 LazyASTScopes only matters when ASTScopes are enabled 2019-08-28 11:31:17 -07:00
Xi Ge
e7fdd67d4d test: enable -enable-library-evolution in compare-dump-interface-vs-binary.swift
Under `-enable-library-evolution`, a slight AST difference is still found when importing
from .swiftinterface and from .swiftmodule. The difference is whether @objc attribute
is inherited by a Swift class subclassing an Objc class.
2019-08-28 10:41:37 -07:00
Arnold Schwaighofer
02b908dca3 Merge remote-tracking branch 'origin/master' into master-next 2019-08-28 06:51:13 -07:00
swift-ci
ce527a1b3c Merge remote-tracking branch 'origin/master' into master-rebranch 2019-08-27 21:24:26 -07:00
Xi Ge
1e656662d9 Frontend: add a front-end option to specify module names for which we prefer to loading via interfaces
ABI checker imports Swift frameworks by using Swift interfaces for various
reasons. The existing way of controlling preferred importing mechanism is by
setting an environment variable (SWIFT_FORCE_MODULE_LOADING), which may lead
to performance issues because the stdlib could also be loaded in this way.

This patch adds a new front-end option to specify module names for
which we prefer to importing via Swift interface. The option currently is only
accessible via swift-api-digester.

rdar://54559888
2019-08-27 19:40:58 -07:00
swift-ci
05b8e03fc8 Merge remote-tracking branch 'origin/master' into master-next 2019-08-26 18:50:36 -07:00
swift-ci
bb83c392ff Merge remote-tracking branch 'origin/master' into master-rebranch 2019-08-26 18:43:54 -07:00
David Ungar
7992e1c6c4 Lots of cleanups, renamings, etc. 2019-08-26 16:55:18 -07:00
swift-ci
e1d39198a9 Merge remote-tracking branch 'origin/master' into master-next 2019-08-20 14:50:23 -07:00
swift-ci
3869e829fa Merge remote-tracking branch 'origin/master' into master-rebranch 2019-08-20 14:43:57 -07:00
Doug Gregor
b4e80cfd90 [Constraint graph] Enable one-way constraints in function builders.
Enable one-way constraints by default for function builders, finishing
rdar://problem/50150793.
2019-08-19 22:49:15 -07:00
Jonas Devlieghere
5c5041235b Merge Swift & Clang VFS in the ClangImporter
The clang importer has to deal with two virtual file systems, one coming
from clang, and one coming from swift. Currently, if both are set, we
emit a diagnostic that we'll pick the swift one.

This commit changes that, by merging the two virtual file systems. The
motivation for this change is the reproducer infrastructure in LLDB,
which adds a third virtual file system to the mix.

(cherry picked from commit 94ef5431ff)
2019-08-19 16:53:03 -07:00
Jonas Devlieghere
b4d268e9e1 Migrate llvm::make_unique to std::make_unique
Now that we've moved to C++14, we no longer need the llvm::make_unique
implementation from STLExtras.h. This patch is a mechanical replacement
of (hopefully) all the llvm::make_unique instances in the swift repo.
2019-08-15 11:32:39 -07:00
swift-ci
032def3316 Merge remote-tracking branch 'origin/master' into master-next 2019-08-14 11:50:24 -07:00
adrian-prantl
7a62165e09 Merge pull request #26648 from adrian-prantl/rm-dwarfimporter
Move DWARFImporterDelegate into ClangImporter and remove DWARFImporter.
2019-08-14 11:31:05 -07:00
Adrian Prantl
c08a62764a Move DWARFImporterDelegate into ClangImporter and remove DWARFImporter.
This refactors DWARFImporter to become a part of ClangImporter, since
it needs access to many of its implementation details anyway. The
DWARFImporterDelegate is just another mechanism for deserializing
Clang ASTs and once we have a Clang AST, the processing is effectively
the same.
2019-08-14 10:28:50 -07:00
swift-ci
9a64b8dfc8 Merge remote-tracking branch 'origin/master' into master-next 2019-08-14 09:30:22 -07:00
Doug Gregor
7697611c15 Merge pull request #25983 from DougGregor/one-way-constraints
[Constraint solver] Introduce one-way binding constraints.
2019-08-14 09:19:11 -07:00
swift-ci
b3e07778cf Merge remote-tracking branch 'origin/master' into master-next 2019-08-14 08:09:50 -07:00
David Ungar
b02b4b00ef Cleanup and fixes, also 1st cut at lazy. 2019-08-13 17:48:06 -07:00
Doug Gregor
be73a9d641 [Function builders] Add one-way constraints when applying function builders
When we transform each expression or statement in a function builder,
introduce a one-way constraint so that type information does not flow
backwards from the context into that statement or expression. This
more closely mimics the behavior of normal code, where type inference
is per-statement, flowing from top to bottom.

This also allows us to isolate different expressions and statements
within a closure that's passed into a function builder parameter,
reducing the search space and (hopefully) improving compile times for
large function builder closures.

For now, put this functionality behind the compiler flag
`-enable-function-builder-one-way-constraints` for testing purposes;
we still have both optimization and correctness work to do to turn
this on by default.
2019-08-13 12:38:46 -07:00
swift-ci
4c74733cfc Merge remote-tracking branch 'origin/master' into master-next 2019-08-13 10:10:24 -07:00
Slava Pestov
39cf99c13b Frontend: PersistentParserState needs to outlive performSema()
We want SILGen and IRGen to also be able to trigger delayed parsing if
necessary, so tweak things here a bit. For now this is NFC, since name
lookup triggers delayed parsing of all types and extensions the first
time a name lookup is performed -- but that is about to change.
2019-08-12 17:15:51 -04:00
swift-ci
45a68771f4 Merge remote-tracking branch 'origin/master' into master-next 2019-08-09 15:50:33 -07:00
Harlan Haskins
7f07db5466 Merge pull request #26481 from owenv/print_diag_names
Add -debug-diagnostic-names frontend flag
2019-08-09 15:44:26 -07:00
swift-ci
1f7008421e Merge remote-tracking branch 'origin/master' into master-next 2019-08-07 13:10:52 -07:00
David Ungar
f336eec948 Merge pull request #26531 from davidungar/print-which-lookup
Add frontend flag `-warn-if-astscope-lookup` with test
2019-08-07 13:09:11 -07:00
Jonas Devlieghere
2b5d641a81 Merge remote-tracking branch 'origin/master' into master-next
Conflicts:
	lib/ClangImporter/ClangImporter.cpp
2019-08-07 10:39:10 -07:00
David Ungar
09342dfa47 Add frontend flag -warn-if-astscope-lookup w/ test 2019-08-06 23:17:49 -07:00
Adrian Prantl
9b045d555b Introduce a DWARFImporter delegate that can look up clang::Decls by name.
Traditionally a serialized binary Swift module (as used in debug info)
can only be imported if all of its Clang dependencies can be imported
*from source*.

- Swift's ClangImporter imports Clang modules by converting Clang AST
  types into Swift AST types.

- LLDB knows how to find Clang types in DWARF or other debug info and
  can synthesize a Clang AST from that information.

This patch introduces a DWARFImporter delegate that is implemented by
LLDB to connect these two components. With this, a Clang type can be
found (by name) in the debug info and handed over to ClangImporter to
create a Swift type from it.  This path has lower fidelity than
importing the Clang modules from source, since it is missing out on
Swiftication annotations and other metadata that is not serialized in
DWARF, but it's invaluable as a fallback mechanism for the debugger
when source code for the Clang modules isn't available or the modules
are otherwise not buildable.

rdar://problem/49233932
2019-08-06 18:05:46 -07:00
Owen Voorhees
e7a1a1cc3d Add -debug-diagnostic-names frontend flag
This flag adds diagnostic names to the end of their messages, e.g. 'error: cannot convert value of type '[Any]' to specified type '[Int]' [cannot_convert_initializer_value]'. It's intended to be used for debugging purposes when working on the compiler.
2019-08-05 18:54:21 -07:00
swift-ci
a8387dab9e Merge remote-tracking branch 'origin/master' into master-next 2019-08-04 20:10:01 -07:00
Davide Italiano
d441798b32 [IDE/CodeCompletion] Register the request evaluator. 2019-08-02 15:57:57 -07:00
swift-ci
7f46a4a7fb Merge remote-tracking branch 'origin/master' into master-next 2019-07-22 16:10:11 -07:00
Jordan Rose
493c07f718 Merge pull request #26228 from jrose-apple/einstein
[ModuleInterface] Honor -disable-modules-validate-system-headers
2019-07-22 15:51:54 -07:00
swift-ci
9cbb87abb2 Merge remote-tracking branch 'origin/master' into master-next 2019-07-22 14:09:39 -07:00
Xi Ge
77ba3a21b4 IDE+Evaluator: refactor the implementation of two type checker utilities to evaluator requests. NFC
IDE functionality needs some internal type checking logics, e.g. checking
whether an extension is applicable to a concrete type. We used to directly
expose an header from sema called IDETypeChecking.h so that IDE functionalities
could invoke these APIs. The goal of the commit and following commits is to
expose evaluator requests instead of directly exposing function entry points from
sema so that we could later move IDETypeChecking.h to libIDE and implement these functions
by internally evaluating these requests.
2019-07-22 12:49:36 -07:00