Commit Graph

189 Commits

Author SHA1 Message Date
Doug Gregor
a66df57aaf [Mangling] Update SILGen and IRGen tests for mangling change. 2018-06-19 23:24:38 -07:00
Slava Pestov
5d2752f7d2 Run tests with -swift-version 4 by default
Some test now fail, so add an explicit -swift-version 3.
2018-06-19 23:24:19 -07:00
Xi Ge
859d918a78 Re-apply "[migrator] migrator: avoid inserting base name while renaming
if users' member access doesn't specify the base name. rdar://40373279"

Previously, we saw that unconditionally omitting type names can lead to
build errors (rdar://40458118). This revised fix omits type names only when
the new member name is identical to the old one.
2018-06-19 12:46:02 -07:00
Xi Ge
90303d12a6 migrator: handle the reversion of raw representable changes. rdar://39498127 2018-06-15 16:51:57 -07:00
Xi Ge
6433bc59e7 migrator: avoid migrating synthesized initializer calls. rdar://40860228 2018-06-11 15:30:38 -07:00
Xi Ge
55495ec267 migrator: avoid inserting round-trip conversion functions.
By postponing the insertion of conversion function calls, we can filter
out the expressions that require more than one helper function wrapper.

resolves: rdar://40979943
2018-06-11 15:08:26 -07:00
Mark Lacey
6fc63bc93f Merge pull request #16930 from rudkx/re-enable-wrap_optional
[Migrator] Re-enable wrap_optional.swift test.
2018-06-01 07:50:21 -07:00
Mark Lacey
01ae11769c [Migrator] Re-enable wrap_optional.swift test.
This had to be reworked a bit to deal with the fact that IUOs are no
longer a distinct type and there were uses of IUOs that are not
supported after SE-0054.

Fixes: rdar://problem/37040141
2018-05-31 14:43:11 -07:00
Nathan Hawes
42b22fbe38 [migrator] Add -api-diff-data-dir option to override the default location for the migrator's platform + version specific api diff json files
This is useful for testing the migrator with different versions of the api diff data.
2018-05-31 09:23:24 -07:00
Xi Ge
7312fea3b2 migrator: emit error messages when migration scripts are missing.
We used to assert migration scripts exist. This patch further
decouples these scripts and the compiler by treating missing scripts
as a regular compiler error.

Related: rdar://40538097
2018-05-25 11:25:32 -07:00
Huon Wilson
ba150e9240 Merge pull request #16786 from huonw/tbdgen
More TBDGen: force-load, conformance witness details, test header clean-up, more purposeful handling of accessors.
2018-05-24 12:37:15 +10:00
Huon Wilson
250eb97af0 [test] Avoid defining symbols in headers.
This is incorrect, and also breaks TBD validation.
2018-05-23 15:39:21 +10:00
Xi Ge
c8752d1570 [migrator] Revert "migrator: avoid inserting base name while renaming if users' member access doesn't specify the base name. rdar://40373279"
We've seen cases where using dot member names cause build errors. Thus, we revert this QOL fix.

rdar://40458118
2018-05-22 13:58:08 -07:00
Xi Ge
27b1621f90 migrator: avoid inserting base name while renaming if users' member access doesn't specify the base name. rdar://40373279 2018-05-18 12:36:10 -07:00
Xi Ge
15b7d3af3c Merge pull request #16664 from nathawes/rdar40170377-wrong_argument_labels-fixit-not-migrator-friendly
[migrator] Filter out diag::wrong_argument_labels for the fixit pass
2018-05-16 18:57:10 -07:00
Xi Ge
6a83c51cf8 migrator: use raw type names from migration scripts instead of hard-coding them. 2018-05-16 17:56:48 -07:00
Nathan Hawes
9ee3c35186 [migrator] Filter out diag::wrong_argument_labels for the fixit pass
The migrator only applies changes from the APIDiffMigratorPass in the primary
file. This means that if a nominal type was renamed, for example, any members
users have added in an extension in a separate file won't be visible, because
the extension would still have the old name. This can result in 'wrong argument
label' errors with fixits to change the argument labels that, when applied by
the fixit pass, completely change which function was being called and cause
post-migration errors.

This patch updates the fixit pass to ignore diag::wrong_argument_labels.
diag::extra_argument_labels and diag::missing_argument_labels were already
filtered out for other reasons.

Resolves rdar://problem/40170377
2018-05-16 15:49:00 -07:00
Nathan Hawes
61d7193814 [migrator] Treat the top-level argument parens of function types as an index level in the ChildIndexFinder
The APIDiffMigrator pass was ignoring them in all cases, but function type
argument parens are significant and the API differ includes them as an index
level in the generated json. This was causing a segmentation fault when trying
to migrate anything inside a function type argument. E.g given the function
below:

func member(_ x: ([Any]?) -> Void) {}

to migrate Any to Int, the API differ produces an index into the signauture of
1:1:0:0:0, meant to indicate Any. The APIDiffMigratorPass was interpreting this
incorrectly, however:

1: The type of first parameter of member: ([Any]?) -> Void
   Migrator agreed.
1: The type of the function type's argument: ([Any]?)
   Migrator saw this as [Any]? due to the parens not being an index level
0: The 0th child of the paren type: [Any]?
   Migrator saw the 0th child of the optional, [Any]
0: the 0th child of the optional type, [Any]
   Migrator saw the 0th child of the array, Any
0: the 0th child of the array type, Any
  Migrator tried to look up the 0th child of Any, causing a crash.

Resolves rdar://problem/40225476.
2018-05-15 12:05:21 -07:00
swift-ci
aa5cb47fec Merge pull request #16598 from nkcsgexi/migrator-arg-rename-hoist 2018-05-14 12:31:48 -07:00
Xi Ge
343d84ba35 migrator: handle argument renames when a global function is hoisted to a static member function. rdar://40145590 2018-05-14 11:33:25 -07:00
Xi Ge
0f71331d73 migrator: avoid inserting helper function call for nil expression. rdar://40173366 2018-05-11 17:24:52 -07:00
swift-ci
9aead6bff3 Merge pull request #16507 from nkcsgexi/avoid-reinsert-function 2018-05-10 13:54:57 -07:00
Xi Ge
b302bd30db migrator: avoid inserting helper functions if a function with the same name exists in the source file. rdar://40108285 2018-05-10 13:20:47 -07:00
Xi Ge
d89b716cf1 migrator: handle composite changes that're necessary to both side of an assignment expression. rdar://40106370 2018-05-10 12:08:00 -07:00
Xi Ge
ca3bf34daf Merge pull request #16479 from nkcsgexi/api-digester-type-change-diff
swift-api-digester: we should further detect if the declared type of a hoisted variable has been changed. rdar://40076924
2018-05-09 17:34:06 -07:00
Xi Ge
740e336e02 migrator: make sure we can handle the composite change of rename and string representable update. radr://40076924 2018-05-09 15:53:51 -07:00
Ben Langmuir
2e1f3afe05 Merge pull request #16460 from benlangmuir/mig-type-rename
[migrator] Handle simple renames for TypeDecl
2018-05-08 16:01:47 -07:00
swift-ci
ba6fdd99cb Merge pull request #16457 from nkcsgexi/nested-type-init-call 2018-05-08 15:21:30 -07:00
Ben Langmuir
1bceacf7b8 [migrator] Handle simple renames for TypeDecl
Previously we only handle VarDecl, but it ought to work for types as
well.
2018-05-08 14:32:15 -07:00
Xi Ge
aef79e9b03 migrator: update type name in constructor call if the type becomes nested. rdar://40042252 2018-05-08 14:28:00 -07:00
Xi Ge
33e0570fda migrator: ignore return value rewritten for constructors. rdar://40041102 2018-05-08 11:26:25 -07:00
Nathan Hawes
d5d058a768 [migrator] Only enable Swift 3 ObjC inference warnings when migrating from Swift 3
They were always enabled, meaning migrating from Swift 4 -> 4.2 would pick up
the associated fixits and add @objc unnecessarily in many places.

Resolves rdar://problem/39951671
2018-05-03 13:34:45 -07:00
Xi Ge
82a2c2c644 migrator: ignore migration scripts with underscored new names. rdar://39877447
Updating something to underscored names is hardly correct. This patch
disallows picking up such migration scripts.
2018-05-01 16:06:06 -07:00
Rintaro Ishizaki
ec3a3df023 [Migrator] Use RewriteBuffer::InsertText() for applying insertion
Apparently, ReplaceText() on the same location replaces the replaced
text. Using InsertText() fixes the problem.

rdar://problem/39518867
2018-04-26 19:40:38 +09:00
Xi Ge
3ee07be5ba migrator: handle the migration of string enum variable references. 2018-04-18 14:24:19 -07:00
Xi Ge
5db971de0e migrator: handle assignment of attribute dictionary and others.
When users' codebase assigns an attribute dictionary that used to be of
type [String: Any], this migration inserts a helper function call on the source of
the assignment to bridge the type.
2018-04-18 11:11:27 -07:00
Xi Ge
6a4df3e820 migrator: handle return value migration introduced by string enum changes.
This patch migrates the function call whose return type used to "String" and
now becomes "StringRepresentableStruct".
2018-04-17 15:18:33 -07:00
Xi Ge
7cf8bf4d55 migrator: correct a typo in the inserted helper function. NFC 2018-04-16 13:36:00 -07:00
Xi Ge
65eaccb2fa migrator: teach the tool to handle ArrayMemberUpdate and OptionalArrayMemberUpdate attributes emitted from swift-api-digester.
This bridges the function call arguments that used to be of type [String] and
now become [StringRepresentableStruct].
2018-04-16 13:30:53 -07:00
Xi Ge
a138744e45 migrator: teach the tool to handle OptionalDictionaryKeyUpdate attributes emitted from swift-api-digester.
For a function call used to take [String: Any]? as argument and now
takes [StringRepresentableStruct: Any]?, a helper function is inserted
to help the bridging of types.
2018-04-16 10:57:36 -07:00
Xi Ge
4c10f16c0e migrator: teach the tool to handle DictionaryKeyUpdate attribute on arguments.
When a user's code calls a function that used to take [String: Any] as
argument and now takes [StringRepresentableStruct: Any], this migration
inserts a helper function to convert the argument to the
expected type.
2018-04-13 16:55:19 -07:00
Xi Ge
4c4e4d2b79 migrator: handle simple attribute assignment and reference.
This patch migrates simple attribute assignment and reference when the
attribute used to be of type String and later became StringRepresentable struct.

Related: rdar://38192995
2018-04-12 11:54:28 -07:00
Xi Ge
916e162b8d migrator: remove stale migration scripts and tests. (#15663) 2018-04-01 08:37:00 -07:00
Xi Ge
991cc77d48 migrator: teach the driver to support multiple migration script sets. (#15637)
To support migration from both Swift 3 and 4, this patch
teaches the driver to pick up the right set of migration scripts
according to the given Swift version. We also pushed some placeholder script
files for migration from Swift 4. This patch also brings the migrator
up-to-date by avoiding migration if the Swift version is already 4.2.
2018-03-31 12:37:49 -07:00
Sho Ikeda
a08fef219e [gardening] Change static public to public static for consistency 2018-03-11 18:06:01 +09:00
Ben Langmuir
ff8f3c09e2 [migrator] Fix test no_duplicate_aarch64_use_tbi
This was broken by a recent commit, but because it only runs with
arch=arm64 it was missed (it can be run with lit parameter
swift_test_mode=only_non_executable).

rdar://38248707
2018-03-09 10:54:46 -08:00
Saleem Abdulrasool
b67d5f0cf7 test: convert rm -rf && mkdir -p into %empty-directory
This converts the instances of the pattern for which we have a proper
substitution in lit.  This will make it easier to replace it
appropriately with Windows equivalents.
2018-03-06 14:30:54 -08:00
Arnold Schwaighofer
d981bb1d96 Mangling: noescape functions will be trivial and no longer compatible with escape function types.
Mangle escapeness as part of the type.

Part of:
SR-5441
rdar://36116691
2018-02-06 08:51:43 -08:00
Mark Lacey
e43ff7164c Merge pull request #14299 from rudkx/iuo-remove-the-type
IUO: Generate Optional<T> rather than ImplicitlyUnwrappedOptional<T>
2018-02-01 21:58:37 -08:00
David Ungar
c6b4e8bc2b Change tests to specify same number of -o's as primary inputs. 2018-02-01 13:41:00 -08:00