Commit Graph

1582 Commits

Author SHA1 Message Date
Pavel Yaskevich
fcd0069d8d [ConstraintSolver] NFC: Increase default shrinking termination threshold
We've found in practice that multiple different types of expressions
are still going to benefit from shrinking continuing even when it
couldn't simplify up to 10 sub-expressions.
2017-09-08 14:37:20 -07:00
swift-ci
2a867dd9d3 Merge remote-tracking branch 'origin/master' into master-next 2017-09-08 10:29:01 -07:00
Xi Ge
34e2aec662 Parser: use parser to generate a refined token stream to help syntax coloring. (#11809)
This patch allows Parser to generate a refined token stream to satisfy tooling's need. For syntax coloring, token stream from lexer is insufficient because (1) we have contextual keywords like get and set; (2) we may allow keywords to be used as argument labels and names; and (3) we need to split tokens like "==<". In this patch, these refinements are directly fulfilled through parsing without additional heuristics. The refined token vector is optionally saved in SourceFile instance.
2017-09-08 10:28:19 -07:00
swift-ci
f0fb66b5e6 Merge remote-tracking branch 'origin/master' into master-next 2017-08-30 20:49:04 -07:00
swift-ci
fa76c56996 Merge pull request #11613 from CodaFi/refined-imported-goods 2017-08-30 20:48:24 -07:00
swift-ci
c4625d3fe9 Merge remote-tracking branch 'origin/master' into master-next 2017-08-30 09:29:07 -07:00
Jordan Rose
f8b7db4e76 Excise the terms "blacklist" and "whitelist" from Swift source. (#11687)
The etymology of these terms isn't about race, but "black" = "blocked"
and "white" = "allowed" isn't really a good look these days. In most
cases we weren't using these terms particularly precisely anyway, so
the rephrasing is actually an improvement.
2017-08-30 09:28:00 -07:00
Robert Widmann
75a83da03e Implement SE-0075: CanImport
This implementation required a compromise between parser
performance and AST structuring.  On the one hand, Parse
must be fast in order to keep things in the IDE zippy, on
the other we must hit the disk to properly resolve 'canImport'
conditions and inject members of the active clause into the AST.
Additionally, a Parse-only pass may not provide platform-specific
information to the compiler invocation and so may mistakenly
activate or de-activate branches in the if-configuration decl.

The compromise is to perform condition evaluation only when
continuing on to semantic analysis.  This keeps the parser quick
and avoids the unpacking that parse does for active conditions
while still retaining the ability to see through to an active
condition when we know we're moving on to semantic analysis anyways.
2017-08-28 18:35:06 -04:00
swift-ci
b95d234c7a Merge remote-tracking branch 'origin/master' into master-next 2017-08-26 02:49:00 -07:00
Slava Pestov
771584a269 AST/Basic: Add isSwiftVersionAtLeast() check
Recently support was added for '-swift-version 5' to the frontend.

Right now we only have an isSwiftVersion3() check which returns 'true'
if the version is 3, and returns 'false' if it is 4 or 5. This was used
during Swift 4.0 development to guard various legacy behaviors that we
wish to deprecate.

Going forward, when do not want to add isSwiftVersion4() and
isSwiftVersion5() checks, because they're too fragile; if a new
behavior is introduced in Swift 5 that we wish to disable in Swift 3
and Swift 4 mode, checking for isSwiftVersion5() is insufficient,
because eventually Swift 6 will roll around, and presumably one would
expect the new behavior to take effect in Swift 6 mode as well.

I think a better solution is a 'isSwiftVersionAtLeast()' check, which
checks if the major version number is greater than or equal to the
given value.

We could refactor the existing 'isSwiftVersion3()' checks to instead
do '!isSwiftVersionAtLeast(4)', but I'm going to hold off on doing that
for now.
2017-08-26 01:18:15 -07:00
swift-ci
c62ef5c9d7 Merge remote-tracking branch 'origin/master' into master-next 2017-08-25 19:48:51 -07:00
John McCall
fa9de8068f Remove operator* from RelativePointer so we can use T=void. 2017-08-25 20:02:57 -04:00
swift-ci
433a3c3dac Merge remote-tracking branch 'origin/master' into master-next 2017-08-24 14:49:47 -07:00
Graydon Hoare
f236ee6278 Merge pull request #11570 from graydon/slocps
Add NumSourceLines{,PerSecond} counters, fix SourceFile counters for WMO mode
2017-08-24 14:44:47 -07:00
swift-ci
e18086beb5 Merge remote-tracking branch 'origin/master' into master-next 2017-08-24 10:30:27 -07:00
David Ungar
c3e3d45396 Instrument NominalTypeDecl::lookupDirect
Also implement RecursiveSharedTimer
2017-08-23 14:53:53 -07:00
Graydon Hoare
fecffc9c8b [Stats] Add NumSourceLines{,PerSecond} counters. 2017-08-22 16:39:00 -07:00
swift-ci
716b7c6907 Merge remote-tracking branch 'origin/master' into master-next 2017-08-18 17:49:41 -07:00
Ewa Matejska
93786d8e26 Removing isSwiftVersion4, isSwiftVersion5. We'll need to come up with a better way to conditionalize code based on language version. 2017-08-18 13:51:59 -07:00
Ewa Matejska
1272cd3aac Making master call itself 4.1, updating the swift 3 compatiblity mode to be 3.3 (from 3.2), adding ability to pass swift-version 5. Importer work not done yet. 2017-08-17 20:57:01 -07:00
John McCall
a5d328690d PointerLikeTypeTraits is now a struct, not a class.
We compile with a pedantic warning that complains about these things,
and the massive flood of warnings is actually causing problems for the
build infrastructure.
2017-08-17 17:01:17 -04:00
George Karpenkov
efe143c2f4 Adding support for -sanitize=fuzzer flag (#11381)
Similarly to Clang, the flag enables coverage instrumentation, and links
`libLLVMFuzzer.a` to the produced binary.
Additionally, this change affects the driver logic, and enables the
concurrent usage of multiple sanitizers.
2017-08-07 18:16:51 -07:00
George Karpenkov
8b368e92c3 Adding support for -sanitize=fuzzer flag. (#9450)
Similarly to Clang, the flag enables coverage instrumentation, and links
`libLLVMFuzzer.a` to the produced binary.
Additionally, this change affects the driver logic, and enables the
concurrent usage of multiple sanitizers.
2017-08-07 17:07:19 -07:00
Kuba (Brecka) Mracek
d046f3f959 Set _swift_reportFatalErrorsToDebugger to true by default and remove all the staging parts (frontend flag, irgen changes). (#11329) 2017-08-03 15:23:23 -07:00
Chris Bieneman
9c35042ae6 Merge remote-tracking branch 'origin/master' into master-next 2017-07-28 09:51:36 -07:00
John McCall
6e4c83d30b Remove the need for magic numbers when making an ExternalUnion. NFC. 2017-07-27 22:52:51 -04:00
Doug Gregor
469e9e08a5 SE-0157: Enable recursive protocol constraints by default.
We don't know if they work in general, but specific cases of recursive
protocol constraints are working, and enabling them doesn't break
anything.
2017-07-26 20:57:24 -07:00
Bob Wilson
5f02db4d3e Merge remote-tracking branch 'origin/master' into master-next 2017-07-20 21:59:23 -07:00
Pavel Yaskevich
4f8872598b [ConstraintSolver] NFC: Add option to control early termination of shrinking phase
Currently we have a number of unsolved disjunctions hard-coded to 5,
which breaks some existing code by terminating shrinking too early.
This patch makes it a command-line option so users have control over
what that threshold can be.

Resolves: rdar://problem/33433595
2017-07-20 12:44:48 -07:00
swift-ci
099e540ca7 Merge remote-tracking branch 'origin/master' into master-next 2017-07-14 23:48:49 -07:00
John McCall
2b71710794 Add ExternalUnion::resetToEmpty, which transitions the union from
a known-non-empty state to a known-empty state.
2017-07-15 01:12:55 -04:00
Bob Wilson
b87f9d0d4e master-next: Change TransformIterator to work with bidirectional iterators.
The custom DFS implementation for dominators in LLVM r307727 uses a reverse
iterator and so fails to build if SILBasicBlocks do not support that.
2017-07-14 10:40:15 -07:00
Mark Lacey
ed23eb3761 Revert "SE-0157: Enable recursive protocol constraints by default."
This reverts commit afbdbae9d9.

Commit ded45a6e1c more than triples the
type checking time when building Swift.o, so I am going to revert that ,
and it looks like this needs to be reverted as well if that commit is
reverted.
2017-07-13 16:05:03 -07:00
Doug Gregor
afbdbae9d9 SE-0157: Enable recursive protocol constraints by default.
We don't know if they work in general, but specific cases of recursive
protocol constraints are working, and enabling them doesn't break
anything.
2017-07-13 13:01:11 -07:00
swift-ci
cfc6eeede4 Merge remote-tracking branch 'origin/master' into master-next 2017-07-12 16:48:52 -07:00
Doug Gregor
70b75491a0 SE-0157: Add a frontend flag -enable-recursive-constraints.
Introduce `-enable-recursive-constraints` to disable the error about
direct recursion within a protocol definition. The implementation of
recursive protocol constraints is incomplete, but might be useful for
experimentation.
2017-07-12 14:55:55 -07:00
swift-ci
c33d8667ae Merge remote-tracking branch 'origin/master' into master-next 2017-07-11 12:49:08 -07:00
swift-ci
e98182387b Merge remote-tracking branch 'origin/master' into master-next 2017-07-11 12:23:35 -07:00
John McCall
7f22faf968 Substantially rework how SILGen handles bridging as part of laying the
ground work for the syntactic bridging peephole.

- Pass source and dest formal types to the bridging routines in addition
  to the dest lowered type.  The dest lowered type is still necessary
  in order to handle non-standard abstraction patterns for the dest type.

- Change bridging abstraction patterns to store bridged formal types
  instead of the formal type.

- Improve how SIL type lowering deals with import-as-member patterns.

- Fix some AST bugs where inadequate information was being stored in
  various expressions.

- Introduce the idea of a converting SGFContext and use it to regularize
  the existing id-as-Any conversion peephole.

- Improve various places in SILGen to emit directly into contexts.
2017-07-11 12:45:13 -04:00
Doug Gregor
f03685b6d0 Introduce a command-line option to limit the # of typo corrections.
Typo correction can be particularly expensive, so introduce a
command-line flag to limit the number of typo corrections we will
perform per type-checker instance. Default this limit to 10.

Addresses rdar://problem/28469270 to some extent.
2017-07-10 11:40:35 -07:00
John McCall
65d8c9c9c6 Build fix on systems without std::is_trivially_copyable. 2017-07-09 01:05:06 -04:00
John McCall
dbfc48218f Allow ArrayRefViews to opt in to a getOriginalArray() accessor. 2017-07-08 21:38:13 -04:00
John McCall
0efcc0860e Minor enhancements to ExternalUnion, NFC:
- add the ability to assert triviality
- add the ability to construct via list-initialization (T{x,y})
2017-07-08 21:38:13 -04:00
Ben Langmuir
4ce33ced0d Fix sys::Cache for ref-counted values which caused memory leaks in SourceKit
Our libcache implementation of swift::sys::Cache was broken for
ref-counted values (which are used by e.g. the SourceKit ASTManager).
It would always `retain(value)` in `set(key, value)`, but under the hood
libcache shares values, so we would only get one `release(value)` if the
same value was used across multiple keys, or if the same value *and* key
were set multiple times.

This was causing us to never release ASTs cached by SourceKit even when
the underlying libcache purged itself under memory pressure.

rdar://problem/21619189
2017-07-06 13:56:58 -07:00
swift-ci
052653d9c7 Merge remote-tracking branch 'origin/master' into master-next 2017-06-29 09:29:03 -07:00
Kuba (Brecka) Mracek
4b88da2a2c Use the debugger hook, reportToDebugger, for all calls to _swift_stdlib_reportFatalError[InFile]. Only do this when a hidden frontend flag, -report-errors-to-debugger, is used. (#10617) 2017-06-29 09:12:26 -07:00
swift-ci
848072d50e Merge remote-tracking branch 'origin/master' into master-next 2017-06-15 10:29:07 -07:00
David Farler
8450d952bc [Migrator] Integrate diff-match-patch into the Migrator pipeline
After both the syntactic and fix-it passes have run, perform
a diff of the start and end states' texts and output the remap
file.

rdar://problem/30926019
2017-06-14 14:21:50 -07:00
Bob Wilson
1d40a955d9 Adjust for new LLVM BinaryFormat library in r304864. 2017-06-12 10:53:06 -07:00
Jordan Rose
485ebefba7 Merge pull request #10083 from jrose-apple/nscoding-diags-take-2
Update and re-enable the diagnostics for unstable runtime names
2017-06-05 19:51:01 -07:00