Commit Graph

32761 Commits

Author SHA1 Message Date
Mike Ash
7f4f5734d2 [Test] Upgrade the all backtrace tests to use not.py and %target-run.
rdar://problem/50863395
2019-05-20 13:10:26 -04:00
Ben Langmuir
aa9f041b4b Merge pull request #24877 from benlangmuir/cant-validate-slow-if-we-dont-validate
[clang-importer] Fix option -disable-modules-validate-system-headers
2019-05-20 08:21:59 -07:00
Joe Groff
a83349bcab Merge pull request #24875 from jckarter/opaque-type-subst-assertion
AST: Cut a different corner when building GenericEnvironments for OpaqueTypeArchetypeTypes.
2019-05-20 08:12:54 -07:00
Michael Gottesman
08c25da322 [cast-opt] Fix another code path in the cast optimizer for ownership and add an additional run of cast_folding_objc.swift with stripping ownership after serialization. 2019-05-20 00:51:26 -07:00
Brent Royal-Gordon
91146d5293 Merge pull request #24881 from brentdax/crouching-module-hidden-method
Allow inheritance from resilient classes with missing members
2019-05-19 15:47:11 -07:00
David Ungar
7a8b3c8383 Add trailing quote location to interpolated string literal. 2019-05-19 15:26:34 -07:00
Michael Gottesman
d4d3d9f150 Fix the i386 build by signing the temp dylib linked to by a test. 2019-05-19 00:55:54 -07:00
Michael Gottesman
902c821c7e Merge pull request #24895 from gottesmm/pr-cc3e82b30e1bd90538341f497c03daa8e7680288
[cast-opt] Change one pathway through the cast-optimizer to use highe…
2019-05-18 20:08:08 -07:00
Michael Gottesman
35c3a0fce3 [cast-opt] Change one pathway through the cast-optimizer to use higher level constructs that are both ossa and non-ossa compatible 2019-05-18 18:32:31 -07:00
Slava Pestov
e6c31d1743 Merge pull request #24872 from slavapestov/lazy-nserror-bridging-conformances
Remove useBridgedNSErrorConformances()
2019-05-18 20:14:09 -04:00
Michael Gottesman
5910829830 [constant-prop] When replacing uses of destructure_tuple, only RAUW if we actually have uses since we may not delete the actual destructure.
The specific case where this happened here is:

```
  // Worklist = [
  %0 = struct $Int (...)
  %1 = $Klass
  %2 = tuple (%0, %1)
  (%3, %4) = destructure_tuple %2
  store %3 to [trivial] %3stack
  store %4 to [init] %4stack
```

What would happen is we would visit the destructure_tuple, replace %3 with %0
but fail to propagate %4:

```
  %0 = struct $Int (...)
  %1 = $Klass
  %2 = tuple (%0, %1)
  (%3, %4) = destructure_tuple %2
  store %0 to [trivial] %3stack
  store %4 to [init] %4stack
```

This then causes the tuple to be added to the worklist. When we visit the tuple,
we see that we have a destructure_tuple that is a user of the tuple, we see that
it still has that Struct as a user despite us having constant propagated that
component of the tuple. This then causes us to add the struct back to the
worklist despite that tuple component having no uses. Then when we visit the
struct. Which causes us to visit the tuple, etc.

rdar://49947112
2019-05-18 15:26:25 -07:00
Michael Gottesman
1e032ad0e0 Merge pull request #24809 from gottesmm/pr-da73ada7a54b312b7e1fc21910cd9593ad94348b
[silgenpattern] When binding values, use a ManagedValue instead of an…
2019-05-18 14:11:54 -07:00
Arnold Schwaighofer
5c3a4d329b Fix dynamic replacement of some type when used with associated types
rdar://50638228
2019-05-18 10:34:52 -07:00
Rintaro Ishizaki
5057cb27a6 Merge pull request #24867 from rintaro/ide-completion-subscript-rdar28874899
[CodeCompletion] Implement call pattern completion for subscript
2019-05-18 09:12:45 -07:00
Slava Pestov
83a3bd2f4b SILGen: Simplify delayed function emission
Just as with conformances, we can detect that a delayed function
needs to be added to the queue from 'first principles' rather than
walking the ExternalDefinitions list.

This completely eliminates the ExternalDefinitions walk from SILGen,
which has several advantages:

- It fixes a source of quadratic behavior. In batch mode, type checking
  produces a list of external definitions shared across all primary
  files. Then, SILGen runs once per primary file, building a delayed
  emission map every time.

- It allows SILGen to emit external definitions which only come into
  existence as a result of lazy conformance checking. Previously,
  anything that was added after SILGen performed its walk over the
  external definitions list would not be emitted.
2019-05-18 11:35:05 -04:00
Slava Pestov
d832fb9823 SILOptimizer: Fix crash on invalid in invalid escaping captures pass
An inout capture of 'self' is not lowered as a SIL argument inside
an initializer, so add a new check to handle this case.

Fixes <rdar://problem/50412872>.
2019-05-18 00:24:13 -04:00
Slava Pestov
d80b554866 AST: Fix crash when calling subst() on types involving member types of UnresolvedType
UnresolvedType needs to go away, but for now, don't crash.

Fixes <rdar://problem/50370326>, <https://bugs.swift.org/browse/SR-10595>.
2019-05-17 23:09:15 -04:00
Brent Royal-Gordon
9117c5728a Allow inheritance from resilient classes with missing members
When a class has missing vtable entries, we don’t allow it to be subclassed. This is unnecessarily restrictive for resilient classes, and @_implementationOnly imports now make missing vtable entries much more common. This commit carves out an exception to that rule for resilient classes.

Fixes <rdar://problem/50902125>.
2019-05-17 20:05:19 -07:00
Pavel Yaskevich
54672320ce Merge pull request #24873 from xedin/diag-missing-contextual-conformances-fixed
[ConstraintSystem] Use `missing conformance` fix to diagnose contextual failures
2019-05-17 17:52:09 -07:00
Ben Langmuir
2210d24b48 [clang-importer] Fix option -disable-modules-validate-system-headers
This option stopped working when clang changed its default behaviour to
-fmodules-validate-system-headers; we now need to explicitly disable it
to preserve the behaviour of our flag.

rdar://problem/50908762
2019-05-17 16:22:37 -07:00
Joe Groff
eeeb46956f AST: Cut a different corner when building GenericEnvironments for OpaqueTypeArchetypeTypes.
Because opaque types are currently limited so that they only have immediate
protocol constraints, and therefore don't interact with the outer generic
parameters at all, we can get away without adding same-type constraints for
the outer generic parameters to their substitutions in the generic signature
builder when setting up the environment for an opaque archetype. This
avoids the strict assertion that opaque types not appear in other decls'
interface types. rdar://problem/50509030

Adding where clauses would break this hack.
2019-05-17 16:19:13 -07:00
David Smith
7561f95134 Test foreign strings on invalid content more thoroughly 2019-05-17 16:18:34 -07:00
Suyash Srijan
9ae2c85991 [Typechecker] Use CallArgs for checking duplicate label & add new test cases 2019-05-17 23:38:34 +01:00
Pavel Yaskevich
e76ae9c343 [ConstraintSystem] Use missing protocol fix for sequence element mismatches related to protocols 2019-05-17 14:32:04 -07:00
Xi Ge
9437adca15 Merge pull request #24871 from nkcsgexi/rename-arg-digester
api-digester: rename argument `-compare-sdk` to `-generate-migration-script`. SR-10489
2019-05-17 14:23:58 -07:00
Rintaro Ishizaki
1b688d5e21 [CodeCompletion] Implement call signature completion for subscript
rdar://problem/28874899
2019-05-17 14:20:28 -07:00
Saleem Abdulrasool
e932198cac Merge pull request #24849 from compnerd/msvc-runtime-library
Driver: introduce new `-libc` option for Windows
2019-05-17 13:55:35 -07:00
Xi Ge
bfed404c7c api-digester: rename argument -compare-sdk to -generate-migration-script. SR-10489 2019-05-17 12:54:13 -07:00
Pavel Yaskevich
17643a30e0 [ConstraintSystem] Move missing contextual protocol detection to matchExistentialTypes 2019-05-17 12:53:27 -07:00
Pavel Yaskevich
d4e8d583ae Revert "[ConstraintSystem] Use missing conformance fix to diagnose contextual failures" 2019-05-17 12:45:55 -07:00
Xi Ge
f25925fc84 Parser: suppress diagnostics when parsing inside inactive code 2019-05-17 12:36:34 -07:00
Xi Ge
c8dd6a9ba1 Parser: avoid skipping inactive code if we are building syntax trees.
If syntax trees are requested, we shouldn't skip inactive code. Notice the
inactive code won't be skipped in SwiftSyntax because we always set
PerformConditionEvaluation false for the in-process parser.

This is mostly needed for testing purposes where we add -verify-syntax-tree
to regular compiler invocations.

rdar://50837165
2019-05-17 12:32:10 -07:00
Slava Pestov
ddf6492d63 Remove -target from test/Interpreter/SDK/archive_attributes.swift
It was broken on 10.9, again...

Fixes <rdar://problem/50897660>.
2019-05-17 15:28:06 -04:00
Mike Ash
c93c8e44a1 [Test] Fix backtrace.swift to use %target-run.
rdar://problem/50863395
2019-05-17 15:13:16 -04:00
Slava Pestov
1ca80f93f4 test/Interpreter/SDK/archive_attributes.swift only work on the host or simulator
Fixes <rdar://problem/50897246>.
2019-05-17 15:07:39 -04:00
Pavel Yaskevich
5fb3a8ba30 Merge pull request #24754 from xedin/diag-missing-contextual-conformances
[ConstraintSystem] Use `missing conformance` fix to diagnose contextual failures
2019-05-17 11:40:49 -07:00
Jordan Rose
96e8d56878 [Serialization] Add recovery for structs with non-loadable constraints
That is, if a struct's generic requirements can't be deserialized,
drop the struct. This is the same logic that's already in play for
enums and (as of the previous commit) classes, so it should be pretty
well tested by now. (Hence the sole test I'm adding here, snuck into
superclass.swift because it's a superclass /constraint/ being tested.)

I don't know of any outstanding issues caused by this, but it was
weird to have it for enums and classes but not structs, so here we
are.
2019-05-17 10:25:01 -07:00
Jordan Rose
ff7c6f6702 [Serialization] Drop a class if the superclass can't be found
...instead of crashing. Also drop the class if its generic
requirements depend on a type that can't be loaded (instead of
crashing).

rdar://problem/50125674
2019-05-17 10:25:01 -07:00
Saleem Abdulrasool
7514adf66a Driver: introduce new -libc option for Windows
On Windows, there are multiple variants of the C runtime that must be
explicitly specified and consistently used from the runtime to the
application.  The new `-libc` option allows us to control the linking
phase by correctly embedding the requested library to be linked.  It is
made into a required parameter on Windows and will add in the
appropriate flags for the imported C headers as well.  This ensures that
the C library is not incorrectly linked.
2019-05-16 21:01:47 -07:00
Slava Pestov
49b19f5205 Merge pull request #24833 from slavapestov/cross-platform-stable-abi-tests
Run stable ABI tests on all Apple platforms
2019-05-16 21:09:49 -04:00
Suyash Srijan
505f8dba9f [test] Update test 2019-05-17 00:21:19 +01:00
swift-ci
64ce7b960d Merge pull request #24835 from eeckstein/fix-silcombine 2019-05-16 16:21:05 -07:00
Bob Wilson
a579af3d07 Merge pull request #24832 from bob-wilson/rdar50175915
[Test] Add availability to the ResilientNSObject test in objc_getClass.swift
2019-05-16 15:11:27 -07:00
Pavel Yaskevich
a20188bb27 Merge pull request #24826 from hamishknight/who-ya-gonna-callee
[CS] Consolidate logic forming locators to callees
2019-05-16 15:10:58 -07:00
Erik Eckstein
71b8c5617e SILCombine: fix a miscompile in dead alloc_existential_box removal
The miscompile results in a use-after-free crash.

rdar://problem/50759056
2019-05-16 15:05:44 -07:00
Slava Pestov
5d66bb810a Run stable ABI tests on all Apple platforms
A number of tests exercise features only available in Apple OSes that
shipped with Swift 5.0 in the OS; this includes the following versions:

- macOS 10.14.4
- iOS 12.2
- tvOS 12.2
- watchOS 5.2

Previously these tests were restricted to running on macOS only, with
an explicit -target x86_64-apple-macosx10.14.4. To get better test
coverage, add a new %target-stable-abi-triple substitution which
expands to a triple with the correct OS version on all Apple platforms.

On non-Apple platforms, this is the same as %target-variant-triple,
but for now any test that uses this exercises Apple platform features
anyway.

One caveat is that since iOS 12.2 does not have a 32-bit slice, we
have to skip any tests that use -target %target-stable-abi-triple
on this platform. A new swift_stable_abi feature flag can be tested
with 'REQUIRES: swift_stable_abi'. To get maximum test coverage,
I split off a 'stable_abi' version of a few tests that build with both
an old and new deployment target. This allows the old deployment
target case to still be tested on 32-bit iOS.
2019-05-16 17:02:06 -04:00
Jordan Rose
3b4bb1960d @_implementationOnly: fix over-eager checking for vars in extensions (#24629)
The logic I had here checked whether an extension used an
implementation-only type whenever there was a declaration within that
extension that needed checking...but unfortunately that included not
just PatternBindingDecls (whose access is filtered at a later step)
but things like IfConfigDecls (#if). Change this to only check
signatures of extensions with ABI-public members, something that is
tested once when visiting an ExtensionDecl.

Additionally, skip AccessorDecls entirely, since they'll be tested
as part of the corresponding subscript or var. This saves a duplicate
diagnostic.

rdar://problem/50541589
2019-05-16 13:13:48 -07:00
Bob Wilson
1e3317be78 [Test] Conditionalize KVOKeyPaths tests that only work with Swift 5.1
Some of the tests in KVOKeyPaths.swift check problems that were not fixed
until Swift 5.1 so they are not expected to pass when running with the
5.0 libraries.

rdar://problem/50173830
2019-05-16 12:57:25 -07:00
Michael Gottesman
adcfda6f6d [silgenpattern] When binding values, use a ManagedValue instead of an RValue to avoid implicitly exploding tuples.
In SILGenPattern, we need to be able to unforward cleanups when we explode
tuples. Thus we can't use RValue in SILGenPattern since it may implicitly
explode tuples (which without modifying RValue itself we can not
unforward). This patch removes a specific RValue usage that we can replace with
the use of a ManagedValue instead.

rdar://49903264
2019-05-16 12:41:08 -07:00
Andrew Trick
868156c069 Merge pull request #24773 from atrick/fix-accessopt-slow
Add AccessEnforcementOpts fast paths.
2019-05-16 10:59:02 -07:00