Commit Graph

1356 Commits

Author SHA1 Message Date
swift_jenkins
84919f8012 Merge remote-tracking branch 'origin/master' into master-rebranch 2020-08-18 23:00:59 -07:00
Robert Widmann
a140a95c05 Merge pull request #33542 from CodaFi/pcs-ing-pcms
Add A Reproducer For rdar://48443680
2020-08-18 22:52:24 -07:00
Robert Widmann
57f2944aad Add A Reproducer For rdar://48443680
The ModuleManager in Clang maintains a mapping from FileEntry nodes to
ModuleFile data. Because FileEntry nodes are unique'd by underlying
inode number, an attacker can craft a collision by ensuring that two
different PCMs share an inode number.

This failure can be encountered with some regularity in a highly
concurrent compilation session on filesystems that use Orlov's Algorithm
to allocate inode numbers (like ext4 on Linux). Here, we use a much
simpler algorithm that forgets that PCMs have distinct inode numbers.

A future version of clang will increase the entropy of the key value to
take into account the mod time and size, which we also conveniently map
to 0 to throw it off our trail.
2020-08-18 18:30:36 -07:00
Nathan Hawes
f0c8b8e571 Manually merge remote-tracking branch 'upstream/master' into HEAD
Conflicts:
	include/swift/AST/PrettyStackTrace.h
2020-08-14 11:06:27 -07:00
Artem Chikin
70441d1906 Merge pull request #33430 from artemcm/ExplicitFrameworkBuild
[Explicit Module Builds] Distinguish whether an explicit module is a framework.
2020-08-14 09:11:11 -07:00
swift-ci
670f798134 Merge remote-tracking branch 'origin/master' into master-rebranch 2020-08-13 15:43:17 -07:00
swift-ci
d20e1731af Merge pull request #33356 from mikeash/concurrentreadablearray-multithreaded-test 2020-08-13 15:41:37 -07:00
Mike Ash
cbb1fd3f27 Add some comments to ConcurrentReadableArrayTest.MultiThreaded. Add a second test to stress the snapshot code. 2020-08-13 15:32:23 -04:00
Artem Chikin
40c1687fd2 [Fast Dependency Scanner] Produce information on whether an explicit module is a framework
In the fast dependency scanner, depending on whether a module intrface was found via the import search path or framework search path, encode into the dependency graph Swift module details, whether a given module is a framework.
2020-08-12 10:12:35 -07:00
Mike Ash
1ac565d6ef Add a multithreaded test for ConcurrentReadableArray. 2020-08-07 11:17:38 -04:00
Mike Ash
9134e65fca Move Mutex test's threading helpers to a separate header so other tests can use them. 2020-08-07 11:17:38 -04:00
swift-ci
1098fab5f9 Merge remote-tracking branch 'origin/master' into master-rebranch 2020-08-07 00:43:43 -07:00
Doug Gregor
6a5522f09a [Syntax] Fix type syntax tests for 'async'. 2020-08-06 14:04:25 -07:00
swift-ci
9c2deebbb0 Merge remote-tracking branch 'origin/master' into master-rebranch 2020-08-03 09:44:00 -07:00
Ben Langmuir
2680b0ce93 Merge pull request #33236 from benlangmuir/semantic-highlight-test-race3000
[sourcekitd] Fix potential race in semantic highlighting tests
2020-08-03 09:32:00 -07:00
Ben Langmuir
756ef4063c [sourcekitd] Fix potential race in semantic highlighting tests
In order to make range-shifting for semantic highlighting testable,
disable returning semantic information during an "open" request. This
has no real value anyway, since it only happens very rarely, and it
makes testing range shifting impossible to do deterministically.

rdar://problem/66386179
2020-07-31 13:51:08 -07:00
swift-ci
0d8e3e1d71 Merge remote-tracking branch 'origin/master' into master-rebranch 2020-07-29 09:14:39 -07:00
Doug Gregor
3cfe390a51 [Concurrency] Add Syntax support for 'async'.
Add 'async' to the syntax tree for types, function declarations, and
the "arrow" expression.
2020-07-28 16:41:17 -07:00
swift-ci
ab77a0c56f Merge remote-tracking branch 'origin/master' into master-rebranch 2020-07-23 09:03:55 -07:00
Suyash Srijan
42779d66c7 [NFC] Remove some dead variadic tuple code (#33059)
* [ASTDemangler] Remove 'isVariadic' parameter from 'createTupleType'

* [TypeDecoder] Remove 'variadic' argument from 'createTupleType' call

* [Reflection] Remove support for variadic from TupleTypeRef

* [Remote] Remove 'variadic' argument from 'createTupleType' call

* [Runtime] Remove 'variadic' parameter from createTupleType in MetadataLookup

* [Test] Remove variadic tuple typeref tests

* [Reflection] Restore accidentally deleted code from 'visitFunctionTypeRef'
2020-07-23 17:02:16 +01:00
Ben Langmuir
589b919ad1 Merge pull request #33063 from benlangmuir/racing-edit
[sourcekitd] Fix range shifting vs semantic update timing issues
2020-07-23 08:58:23 -07:00
Ben Langmuir
8e352b8006 [sourcekitd] Fix range shifting "race" with a fast semantic update
If a semantic update finishes fast enough, the token snapshot may be
identical to the edit snapshot, but because of getBufferForSnapshot
consolidating edits into a new buffer, we were not detecting that case
properly, and it could cause an assertion failure (or potentially
incorrect range shifting in a release build). This would have reproduced
very rarely in practice, but I can reproduce it by putting `sleep(2)`
calls right before we read the semantic info in open and edit requests.

Incidentally, fix sourcekit-test and unit tests for the (rare) case
where an open or edit already has updated semantic info.
2020-07-22 17:50:08 -07:00
Ben Langmuir
9c08fc0ddd [test] Fix annotation test to have same behaviour before and after update
The goal of the test is to test the behaviour when the edit is
range-shifted, but in the (rare) case where the document update happens
before the edit finishes, we need the ranges to be the same. In
particular, using separate statements ensures that the tokens not
touched by the edit are not affected by the edit.

Re-enable the test disabled on ASan, since this seems to be the
underlying issue.

rdar://65934938
2020-07-22 17:39:26 -07:00
swift-ci
d57ca9cdaf Merge remote-tracking branch 'origin/master' into master-rebranch 2020-07-22 11:44:20 -07:00
Mike Ash
6d1c7f6baf Merge pull request #33050 from benlangmuir/disable-asan-EditTest.AnnotationsRangeShiftingAfterEditReplaceEnd
[asan] Temporarily disable EditTest.AnnotationsRangeShiftingAfterEdit…
2020-07-22 14:31:22 -04:00
Ben Langmuir
53b87714d7 [asan] Temporarily disable EditTest.AnnotationsRangeShiftingAfterEditReplaceEnd
This started failing in one CI job that has asan, but it's unclear
whether there is a sanitizer issue or if it's a timing issue, etc.
Disabling while we investigate the root cause.

rdar://65934938
2020-07-22 11:09:31 -07:00
swift-ci
404800266f Merge remote-tracking branch 'origin/master' into master-rebranch 2020-07-21 09:24:22 -07:00
Ben Langmuir
e9c3157ef6 Merge pull request #33020 from benlangmuir/editing-fun
[sourcekitd] Fix annotation range-shifting after edit
2020-07-21 09:11:05 -07:00
Ben Langmuir
01b5cf7c6f [sourcekitd] Fix annotation range-shifting after edit
When performing an insertion (replacement length = 0) inside an existing
annotation, we were forming a closed range instead of a half-open range,
causing us to shift the effected token instead of throwing it out. There
were also no tests for this functionality, so add a bunch of annotations
tests.

One area thing that is not tested is what if there have been multiple
edits since the tokens were created. This is difficult to engineer,
because right now making an edit immediately removes the semantic tokens
and returns them. It could happen if the AST build takes longer than the
edits, but there is no way to guarantee that in the current API.

rdar://65748892
2020-07-20 16:56:49 -07:00
Nathan Hawes
9d4ed5f39c Manually merge remote-tracking branch 'upstream/master' into manually-merge-master-to-master-rebranch 2020-07-20 16:09:55 -07:00
tbkka
868425be8a More Python3 lint fixes (#32967)
* More Python3 lint fixes

Some of the issues addressed include:
* Don't use `l` as a variable name (confusable with `1` or `I`)
* `print` statement does not exist in Py3, use `print` function instead
* Implicit tuple deconstruction in function args is no longer supported,
  use explicit splat `*` at the call site instead
* `xrange` does not exist in Py3, use `range` instead

* Better name per review feedback
2020-07-19 21:44:13 -07:00
tbkka
3181dd1e4c Fix a bunch of python lint errors (#32951)
* Fix a bunch of python lint errors

* adjust indentation
2020-07-17 14:30:21 -07:00
David Ungar
6171c4105b Remove bogus assertion with explanation. 2020-07-14 15:09:04 -07:00
swift_jenkins
8024203420 Merge remote-tracking branch 'origin/master' into master-next 2020-06-24 08:39:30 -07:00
Tony Allevato
5b1daa9055 Conditionally wrap (de)mangling symbols in an inline namespace.
Since libDemangling is included in the Swift standard library,
ODR violations can occur on platforms that allow statically
linking stdlib if Swift code is linked with other compiler
libraries that also transitively pull in libDemangling, and if
the stdlib version and compiler version do not match exactly
(even down to commit drift between releases). This lets the
runtime conditionally segregate its copies of the libDemangling
symbols from those in the compiler using an inline namespace
without affecting usage throughout source.
2020-06-19 11:20:56 -07:00
swift_jenkins
20ba5d3171 Merge remote-tracking branch 'origin/master' into master-next 2020-06-16 21:38:08 -07:00
Robert Widmann
057097a6c3 [NFC] Hide LoadedModules From Clients of ASTContext
There's no reason clients need to be able to access this data directly.
It obscures where module loading is actually happening, and makes it too
easy to accidentally register a module with the wrong identifier in the
context.

Hide the registration operations behind opaque accessors.
2020-06-16 15:09:19 -07:00
swift_jenkins
73e4e60598 Merge remote-tracking branch 'origin/master' into master-next 2020-06-10 10:20:02 -07:00
Robert Widmann
3228a5903a [NFC] Rename Flags
-enable-experimental-private-intransitive-dependencies -> -enable-direct-intramodule-dependencies
-disable-experimental-private-intransitive-dependencies -> -disable-direct-intramodule-dependencies

While we're here, rename DependencyCollector::Mode's constants and clean
up the documentation.
2020-06-09 16:00:59 -07:00
Karoy Lorentey
57ea964f2c Merge commit '3eb82c183662945687f48e11c09828f551b34858' into master-next
# Conflicts:
#	include/swift/Frontend/FrontendInputsAndOutputs.h
2020-06-08 16:58:37 -07:00
Karoy Lorentey
68351d2110 Revert "Merge remote-tracking branch 'origin/master-next'"
This reverts commit 1c9b0908e6, reversing
changes made to 3eb82c1836.
2020-06-08 16:48:38 -07:00
Karoy Lorentey
1c9b0908e6 Merge remote-tracking branch 'origin/master-next'
# Conflicts:
#	include/swift/Frontend/FrontendInputsAndOutputs.h
2020-06-08 16:43:40 -07:00
Hamish Knight
81483cc050 Merge pull request #32161 from hamishknight/pipeline-parse 2020-06-08 10:56:28 -07:00
David Ungar
da14e3119c Fix tests to correspond 2020-06-06 11:17:09 -07:00
Hamish Knight
f57299a587 Formalize some SourceFile parsing outputs
Currently when parsing a SourceFile, the parser
gets handed pointers so that it can write the
interface hash and collected tokens directly into
the file. It can also call `setSyntaxRoot` at
the end of parsing to set the syntax tree.

In preparation for the removal of
`performParseOnly`, this commit formalizes these
values as outputs of `ParseSourceFileRequest`,
ensuring that the file gets parsed when the
interface hash, collected tokens, or syntax tree
is queried.
2020-06-03 11:03:56 -07:00
Hamish Knight
60eae88fd1 Sink some parsing options into SourceFile::ParsingFlags
Sink the `BuildSyntaxTree` and
`CollectParsedTokens` bits into
`SourceFile::ParsingFlags`, with a static method
to get the parsing options from the lang opts.

Also add a parsing flag for enabling the interface
hash, which can be used instead of calling
`enableInterfaceHash`.
2020-06-03 11:03:55 -07:00
Robert Widmann
e7f38db235 [NFC] Have Evaluator's Constructor Read LangOptions
It's a touch cleaner to do this than passing around a pile of bools.
2020-06-02 09:51:04 -07:00
swift_jenkins
6b044ebeaf Merge remote-tracking branch 'origin/master' into master-next 2020-06-01 08:38:20 -07:00
Saleem Abdulrasool
fb58228f62 runtime: extract swiftDemangling into a support library
`swiftDemangling` was built three times:
1. swiftc
2. swiftRuntime
3. swiftReflection

Fold the last two instances into a single build, sharing the objects
across both the target libraries.  This ensures that `swiftDemangling`
is built with the same compiler as the target libraries and that the
target library build remains self-contained.
2020-05-30 12:26:57 -07:00
swift_jenkins
7406c8a983 Merge remote-tracking branch 'origin/master' into master-next 2020-05-25 17:58:30 -07:00