Commit Graph

1377 Commits

Author SHA1 Message Date
swift_jenkins
e9f94eac71 Merge remote-tracking branch 'origin/main' into next 2020-11-05 20:52:57 -08:00
Ben Barham
7cee600bcd [SILGen] Add flag to skip typechecking and SIL gen for function bodies
Adds a new flag "-experimental-skip-all-function-bodies" that skips
typechecking and SIL generation for all function bodies (where
possible).

`didSet` functions are still typechecked and have SIL generated as their
body is checked for the `oldValue` parameter, but are not serialized.
Parsing will generally be skipped as well, but this isn't necessarily
the case since other flags (eg. "-verify-syntax-tree") may force delayed
parsing off.
2020-11-06 12:08:19 +10:00
Slava Pestov
ceb8675ad1 Sema: (Mostly) check conformance availability
If a conformance is defined in an extension, we now look for
references to the conformance in types and expressions and
respect's the extension's availability (or deprecation, etc).

The conformance checker itself still needs to check conformance
availability of associated conformances and the like; that will
be a separate change.

Note that conformances defined on types don't require any
special handling, since they are as available as the
intersection of the conforming type and the protocol.

By default, we diagnose conformance availability violations
where the OS version is not sufficiently new as warnings, to
avoid breaking source compatibility. Stricter behavior where
these violations are diagnosed as errors is enabled by passing
the -enable-conformance-availability-errors flag. There are
test cases that run both with and without this flag. In the
future, we hope to make the stricter behavior the default,
since after all, violations here can result in link errors and
runtime crashes.

Uses of completely unavailable conformances are still always
diagnosed as errors, even when this flag is not passed in.

Progress on <rdar://problem/35158274>.
2020-11-05 17:51:45 -05:00
swift_jenkins
d73adae0f2 Merge remote-tracking branch 'origin/main' into next 2020-10-29 18:01:19 -07:00
Alejandro Alonso
424802fb34 Revert SE-0283 (#34492)
Reverted despite build failures.
2020-10-29 17:32:06 -07:00
David Smith
0180aca9fc Merge branch 'main' into david/fix-merge-conflict 2020-10-27 13:05:20 -07:00
Azoy
df9778e2e8 [Compatibility53] Add compatibility library for 5.3 and backport tuple Equatable conformance
Fix some comments

Unnecessary cast
2020-10-22 18:27:03 -04:00
Holly Borla
1e0038c3be [ConstraintSystem] Remove implementation of operator designated types
in the solver.
2020-10-14 16:05:54 -07:00
swift_jenkins
9acf6daff8 Merge remote-tracking branch 'origin/main' into next 2020-10-08 09:37:09 -07:00
Alexis Laferrière
fa6f1b6b96 Merge pull request #33439 from xymus/expand-avail
[Sema] Define availability specification macros with a frontend flag
2020-10-08 09:25:32 -07:00
Alexis Laferrière
c6fc53e844 [Sema] Define availability via compiler flag
Introduce availability macros defined by a frontend flag.
This feature makes it possible to set the availability
versions at the moment of compilation instead of having
it hard coded in the sources. It can be used by projects
with a need to change the availability depending on the
compilation context while using the same sources.

The availability macro is defined with the `-define-availability` flag:

swift MyLib.swift -define-availability "_iOS8Aligned:macOS 10.10, iOS 8.0" ..

The macro can be used in code instead of a platform name and version:
@available(_iOS8Aligned, *)
public func foo() {}

rdar://problem/65612624
2020-10-06 11:25:20 -07:00
swift_jenkins
7c5560ed3b Merge remote-tracking branch 'origin/main' into next 2020-10-04 12:00:54 -07:00
Slava Pestov
989b825f9d Frontend: Disable parse-time name lookup by default 2020-10-03 21:53:33 -04:00
Erik Eckstein
69edd5020a Merge remote-tracking branch 'origin/main' into next 2020-10-03 21:10:11 +02:00
Slava Pestov
854e1e482f Frontend: Add -enable-parser-lookup flag
This is for re-enabling it once it is turned off by default.
2020-10-03 09:37:55 -04:00
swift_jenkins
8963fd93b1 Merge remote-tracking branch 'origin/main' into next 2020-10-02 12:06:07 -07:00
Robert Widmann
964f640636 Drop "Private Deps" Flag
In order for type body fingerprints to work, these declarations must always be included. Drop the ability to turn this off.
2020-10-01 14:40:45 -07:00
Robert Widmann
74765a8ba8 Remove Type Body Fingerprints Flags
This infrastructure has more than proven itself. Drop the code paths and tests supporting the status quo.
2020-10-01 13:09:00 -07:00
swift_jenkins
b1fa15fe87 Merge remote-tracking branch 'origin/main' into next 2020-09-29 23:14:40 -07:00
Varun Gandhi
37efac9ff8 Manually merge origin/main into origin/next.
Resolved conflict in lib/ClangImporter/ImportType.cpp.
2020-09-23 08:10:08 -07:00
Slava Pestov
4bbdb95f4f Frontend: Remove no-op -stress-astscope-lookup flag 2020-09-23 01:26:06 -04:00
Varun Gandhi
7b967a8030 Merge pull request #33085 from varungandhi-apple/vg-clang-types-in-sil-retry
Propagate Clang function types through SIL
2020-09-22 08:48:34 -07:00
swift_jenkins
7220ae3d2e Merge remote-tracking branch 'origin/master' into master-next 2020-09-21 13:26:46 -07:00
Robert Widmann
8c913e385e Remove LegacyCascadingDependencies 2020-09-21 10:42:33 -06:00
swift_jenkins
fa85356b82 Merge remote-tracking branch 'origin/master' into master-next 2020-09-17 20:44:00 -07:00
Michael Gottesman
4cbc07c6c6 [ownership] Add a frontend option to stop optimizing right before we lower ownership.
Specifically the option: -sil-stop-optzns-before-lowering-ownership. This makes
it possible to write end-to-end tests on OSSA passes. Before one would have to
pattern match after ownership was lowered, losing the ability to do finegrained
FileCheck pattern matching on ossa itself.
2020-09-17 18:02:33 -05:00
Varun Gandhi
983399c1e7 [Printer] Conditionally print Clang types in emitted SIL. 2020-09-16 10:34:43 -07:00
swift_jenkins
9fad113519 Merge remote-tracking branch 'origin/master' into master-next 2020-09-15 17:33:17 -07:00
Saleem Abdulrasool
507ffe6832 Merge pull request #32690 from compnerd/grand-unified-module-theory
Unified Swift Module Layout
2020-09-15 17:23:15 -07:00
Pavel Yaskevich
dd374a1d52 Merge remote-tracking branch 'origin/master' into fix-merge-master-master-next 2020-09-15 11:44:10 -07:00
Saleem Abdulrasool
bdb3da805c Frontend: allow directory layout for Swift on non-Darwin platforms
Adjust the serialized module loader to allow directory layouts for the
Swift module on non-Darwin targets, unifying the layout across all the
platforms.  It also eases cross-architecture and cross-platform
development by having the same layout, which can enable more similar
flag usage.
2020-09-13 10:55:38 -07:00
Robert Widmann
9b89c0ca52 [NFC] Consolidate SIL LangOpts Parsing 2020-09-11 22:28:58 -06:00
Robert Widmann
9fd5918786 Swap InputFileKind for ParseInputMode
Tying InputFile to this option meant that every input that was not one of the explictly-blessed kinds was modeled as a Swift file.

With the new InputFile that infers file kinds, we no longer need CompilerInvocation::setInputKind
2020-09-11 22:28:58 -06:00
Robert Widmann
c3e33bec7a [NFC] Drop getSourceFileKind 2020-09-11 21:24:26 -06:00
swift_jenkins
558ba84349 Merge remote-tracking branch 'origin/master' into master-next 2020-09-11 15:33:53 -07:00
Robert Widmann
d4b2e167ac Model ObjCHeader Inputs
These inputs were previously modeled as Swift files, which would lead to bizarre situations where parts of the pipeline expecting Swift inputs actually wound up parsing Objective-C.
2020-09-11 13:55:48 -06:00
swift_jenkins
17864d5dd2 Merge remote-tracking branch 'origin/master' into master-next 2020-09-06 16:55:16 -07:00
Slava Pestov
713b57becb Frontend: Remove -lazy-astscopes flag 2020-09-05 01:16:21 -04:00
swift_jenkins
0562396b04 Merge remote-tracking branch 'origin/master' into master-next 2020-09-04 19:54:17 -07:00
Slava Pestov
0310a701d9 AST: Remove EnableASTScope flag and force it to always be on 2020-09-04 16:15:36 -04:00
Nathan Hawes
e882f15a1a Manually merge remote-tracking branch 'upstream/master' into HEAD
Conflicts:
	lib/Frontend/CompilerInvocation.cpp
	lib/Frontend/ModuleInterfaceLoader.cpp
	lib/Serialization/ModuleFile.cpp
2020-09-03 11:31:12 -07:00
Xi Ge
e107182f1a Merge remote-tracking branch 'apple/master' into master-rebranch 2020-09-02 18:36:37 -07:00
swift_jenkins
83745d90e0 Merge remote-tracking branch 'origin/master' into master-next 2020-09-02 13:50:40 -07:00
Kuba (Brecka) Mracek
5bf15f81b1 Add a -ignore-always-inline frontend flag which ignores @inline(__always) attributes. (#33466) 2020-09-01 20:20:09 -07:00
swift_jenkins
258b72273c Merge remote-tracking branch 'origin/master' into master-rebranch 2020-08-24 21:36:02 -07:00
swift_jenkins
adf903d271 Merge remote-tracking branch 'origin/master' into master-next 2020-08-24 20:52:27 -07:00
Brent Royal-Gordon
8fbd449501 Merge pull request #33114 from brentdax/check-your-interfaces-at-the-door
Verify that just-emitted module interfaces parse and typecheck
2020-08-24 20:33:58 -07:00
swift_jenkins
21c2e0ebac Merge remote-tracking branch 'origin/master' into master-rebranch 2020-08-20 20:54:07 -07:00
swift_jenkins
ba4b0bf393 Merge remote-tracking branch 'origin/master' into master-next 2020-08-20 20:09:45 -07:00
Xi Ge
29e655bac0 DependenciesScanner: implement protocol for batch module dependencies scan
This scanning mode allows swift-driver to query module dependencies in a batch
and in a more granular way. In short term, it could help solve a problem that
clang module dependencies may vary if target triple changes. In a longer term,
we could break a holistic dependencies graph into smaller pieces for better caching
and reusing.

This change doesn't include the implementation of using the specified scanner
arguments to set up Clang dependencies scanner. It will come in later commits.
2020-08-20 14:06:47 -07:00