Commit Graph

9699 Commits

Author SHA1 Message Date
John Holdsworth
4da8cbe655 Implement SE-0200 (extended escaping in string literals)
Supports string literals like #"foo"\n"bar"#.
2018-09-06 15:19:52 -07:00
Mike Ash
0c2d874bf8 Merge pull request #18920 from mikeash/willthrow-error-register
[Runtime][ABI] Have swift_willThrow take the error value in the return register.
2018-09-06 18:00:43 -04:00
Brent Royal-Gordon
df22ea1bfb Revert "[Parse] Implementation for SE-200 (raw strings)" 2018-09-06 12:22:41 -07:00
swift-ci
192587c98a Merge pull request #17668 from johnno1962a/master 2018-09-06 11:47:36 -07:00
Harlan
ad7e1d0e67 [InterfaceGen] Print private/internal properties (#19127)
* [Interface] Print private/internal properties

All properties which contribute to the storage of a type should be
printed, and their names should be hidden from interfaces. Print them
with '_' as their name, and teach the parser to recognize these special
patterns when parsing interface files.

Partially resolves rdar://43810647

* Address review comments

* Disable accessor generation for nameless vars

* Test to ensure interface files preserve type layout

* Ignore attribute differences on Linux
2018-09-06 09:58:33 -07:00
Hamish Knight
42dc4ca342 [GSB] Remove getColonLoc() and getEqualLoc() in favour of getSeparatorLoc()
Most callers aren't concerned about the difference between the two (and those that are are already exercising the appropriate assertions with e.g the use of `getFirstType()`).
2018-09-06 16:40:07 +01:00
Doug Gregor
cffe3869a6 Merge pull request #19034 from DougGregor/protocol-override
Introduce overrides of protocol members and drop them from witness tables
2018-09-05 20:57:21 -07:00
Jordan Rose
5dace224a0 Merge pull request #18623 from dingobye/sr8453
[Sema] Warn for redundant access-level modifiers on setters or used in an extension.
2018-09-05 17:44:26 -07:00
Xi Ge
24b0eac9a4 Parser: parse members in extension decls incrementally. 2018-09-05 17:00:39 -07:00
Slava Pestov
36c25c167a AST: Remove AbstractStorageDecl::configureAccessor() 2018-09-05 16:25:51 -07:00
Slava Pestov
cdadee8173 AST: Fix layering violations in DefaultAndMaxAccessLevelRequest
Our walk over the requirement interface types meant that
computing the access level of an extension member depended
on type resolution and the GSB.

Fix this by adding a new request that simply collects all
TypeDecls referenced from a TypeRepr, and compute the
extension's maximum access level using that.

If we use Structural rather than Interface type resolution when
walking the extension's requirements, we don't have to build its
generic signature first.
2018-09-05 16:18:54 -07:00
Doug Gregor
fafa9ed2d5 [GSB] ‘override’ keyword suppresses redeclaration warnings for assoc types. 2018-09-05 13:51:26 -07:00
John Holdsworth
f0f08e1e86 Remove zero width detection for now 2018-09-05 21:51:19 +01:00
Arnold Schwaighofer
73df12c09f Remove dead constant_string_literal
constant_string_literal was added to support a one word representation
of String that never materialized.
2018-09-05 12:13:57 -07:00
Mark Lacey
039d10b709 Add support for parsing designated protocols in operator declarations.
The support is gated by a frontend option,
-enable-operator-designated-protocols.

This means that in an operator declaration we can declare a protocol
which has one or more requirements specifying this operator. The
operators from that designated protocol will be the first ones we try
when type checking an expression. If we successfully typecheck using
the operators specified in that protocol, we do not attempt any other
overloads of the same operator.

This makes it possible to dramatically speed up successful
typechecking.
2018-09-05 11:58:43 -07:00
Doug Gregor
e670ac42d9 Add command-line option -warn-implicit-overrides.
When provided, this flag warns about implicit overrides, where a
declaration overrides another declaration but is not marked with the
‘override’ keyword. The warning can be suppressed by either providing
‘override’ or ‘@_nonoverride’.

At present, this only happens with overrides in protocols.
2018-09-04 16:42:06 -07:00
Doug Gregor
7bed169620 @_nonoverride is a user inaccessible attribute.
If we introduce this, it will be with a real spelling (and probably not
be an attribute).
2018-09-04 16:42:06 -07:00
Doug Gregor
4903cf9985 Add @_nonoverride attribute to disable override checking.
@_nonoverride is the opposite of override, disabling all override checking
for the given declaration. This can be used to suppress diagnostics related
to declarations that are almost overrides but shouldn’t be or to 
intentionally break the override chain; in each case, we’ll end up with
an overload rather than an override.
2018-09-04 16:42:06 -07:00
Doug Gregor
0972111c60 [Type checker] Start tracking overrides of protocol requirements.
When a protocol that inherits another protocol restates a requirement
from its inherited protocol, track that as an override in the AST.
2018-09-04 16:42:06 -07:00
John Holdsworth
999bb40294 New diagnostic for closing delimiter 2018-09-04 20:21:20 +01:00
John Holdsworth
dc96342368 Response to xwu's review 2018-09-02 11:37:02 +01:00
Graydon Hoare
388e357218 [Stats] Add UnifiedStatsReporter tracing/profiling machinery to request-evaluator. 2018-09-02 02:00:07 -07:00
John Holdsworth
3fc43bcb80 Check for zero-width characters in delimiters 2018-09-01 21:54:54 +01:00
Harlan
dc1bc823e6 [InterfaceGen] Remove #ifs from default arguments (#19075)
* [InterfaceGen] Remove #ifs from default args

This patch removes all #if configs form the bodies of default arguments,
which can contain multiline closures, while preserving the bodies of the
clauses that are active.

This code is generalized and should "just work" for inlinable function
bodies, which will come in a later patch.

* Address review comments

* Fix and test CharSourceRange.overlaps

* Fix CharSourceRange::print to respect half-open ranges
2018-08-31 20:18:48 -07:00
Jordan Rose
78560c7aa8 Merge pull request #18895 from dingobye/sr8598
[Parser] Improve diagnostics for special platforms in available attribute.
2018-08-31 17:24:40 -07:00
Mike Ash
940c0fd1ba Merge branch 'master' into willthrow-error-register 2018-08-31 17:21:55 -04:00
Slava Pestov
dad44cdd4a IRGen: Introduce 'method descriptor' mangling 2018-08-31 00:20:38 -06:00
Ding Ye
3dca923371 Add a fix-it and rephrase some warning messages. 2018-08-31 08:40:19 +10:00
Ding Ye
b790eb5dcf [Parser] Improve diagnostics for special platforms in available attribute.
This patch adds warnings when a version number is used
on the non-specific '*' platform. In addition, it fixes
some misleading warning messages on 'swift' platform.

Resolves: SR-8598.
2018-08-31 08:40:19 +10:00
Slava Pestov
542ed54c79 Merge pull request #19042 from slavapestov/match-call-arguments
Refactor matchCallArguments() to take arrays of AnyFunctionType::Param instead of argument tuples
2018-08-29 17:16:05 -07:00
Xi Ge
3510f082e3 Merge pull request #19035 from nkcsgexi/refactor-graph-viz
[Evaluator] Refactor evaluator's GraphViz output to the destructor of the ASTContext. NFC
2018-08-29 10:49:54 -07:00
Xi Ge
81151da764 Merge pull request #19005 from nkcsgexi/request-usr-gen
IDE: refactor USR generation to request evaluator model.
2018-08-29 10:49:34 -07:00
Slava Pestov
d4ee7138c4 AST: Introduce AnyFunctionType::relabelParams() 2018-08-28 22:36:02 -07:00
Slava Pestov
52707b52aa AST: Use getPlainType() in AnyFunctionType::Param::operator== 2018-08-28 22:36:02 -07:00
Slava Pestov
61152e6585 Sema: Move getUnlabeledType() to CSRanking and simplify it 2018-08-28 22:36:02 -07:00
Xi Ge
ce29c64964 [Evaluator] Refactor evaluator's GraphViz output to the destructor of the evaluator. NFC
This allows us to output dependency-graph while using the compiler in
other tools, like swift-ide-test, sourcekitd-test, etc.
2018-08-28 18:16:44 -07:00
John McCall
b3120907d5 Merge pull request #15691 from rjmccall/max-alignment-16
Cap the alignment of all types in Swift at 16
2018-08-28 21:14:23 -04:00
Slava Pestov
05c557a488 AST: Remove {Generic,}FunctionType::getOld() 2018-08-28 14:40:56 -07:00
Slava Pestov
765b8844cf Sema: Move removeArgumentLabels() to a method on TypeBase 2018-08-28 14:40:56 -07:00
John McCall
c1f99b5fdb Cap type alignment in Swift at 16.
rdar://31411216
2018-08-28 16:13:50 -04:00
Xi Ge
dd5f21b1d2 IDE: refactor USR generation to request evaluator model.
We refactor the existing USR generation code to use the request evaluator
model. Most part of this patch is NFC, however a slight difference is
using this model allows us to cache the calculated USRs in the evaluator.
2018-08-28 11:03:25 -07:00
Mike Ash
1abf0d83c4 Merge branch 'master' into willthrow-error-register 2018-08-28 10:57:25 -04:00
Slava Pestov
53d82f7c49 AST: Remove SubscriptDecl::getIndicesInterfaceType() 2018-08-27 21:15:38 -07:00
John McCall
140ee562d3 Merge pull request #18840 from rjmccall/dematerializeForSet
Replace materializeForSet with the modify coroutine
2018-08-27 21:02:24 -04:00
Chéyo Jiménez
a527e53e17 Renamed DictionaryLiteral to KeyValuePairs (#16577)
* renamed DictionaryLiteral to KeyValuePairs per SE-0214

* renamed DictionaryLiteral type tests to KeyValuePairs

* [SE-0214] Move changelog entry (Swift 4.2 => 5.0)

* [SE-0214] Update comment in AST/Expr.h

* [SE-0214] Use generic typealias

See also <https://github.com/apple/swift/pull/17711>

* [SE-0214] Update source-stability.swift.expected
2018-08-27 10:51:12 -07:00
Hamish Knight
7c5fbf2710 NFC: Remove a few unnecessary TypeLoc::withoutLoc()s 2018-08-27 13:23:42 +01:00
John Holdsworth
4209b72a66 Delimiter specific diagnostic 2018-08-27 10:15:50 +01:00
John McCall
b80618fc80 Replace materializeForSet with the modify coroutine.
Most of this patch is just removing special cases for materializeForSet
or other fairly mechanical replacements.  Unfortunately, the rest is
still a fairly big change, and not one that can be easily split apart
because of the quite reasonable reliance on metaprogramming throughout
the compiler.  And, of course, there are a bunch of test updates that
have to be sync'ed with the actual change to code-generation.

This is SR-7134.
2018-08-27 03:24:43 -04:00
John McCall
768450dd0e Add a convenience getter for a Param's parameter type; NFC. 2018-08-26 00:23:16 -04:00
Slava Pestov
95c035fe3f Merge pull request #18985 from slavapestov/lazy-self-param
Consolidate code for creating 'self' parameter and only create it when needed
2018-08-25 12:23:32 -07:00