Commit Graph

63 Commits

Author SHA1 Message Date
Pavel Yaskevich
0ecedfa5ea Revert "[ConstraintSystem] Make it possible to infer subtype bindings through argument conversions"
Reverts apple/swift#30006. It caused a regression that we'd like to address before re-landing:

```swift
struct X {
  var cgf: CGFloat
}

func test(x: X?) {
  let _ = (x?.cgf ?? 0) <= 0.5
}
```

This reverts commit 0a6b444b49.
This reverts commit ed255596a6.
This reverts commit 3e01160a2f.
This reverts commit 96297b7e39.

Resolves: rdar://problem/60185506
2020-03-07 20:16:56 -08:00
Pavel Yaskevich
96297b7e39 [CSStep] Always attempt literal bindings in diagnostic mode
In case of contextual failures such bindings could produce
better solutions with fewer fixes.
2020-02-21 17:47:39 -08:00
Pavel Yaskevich
34f5b52db1 [Diagnostics] Diagnose ambiguities related to contextual type mismatch
If none of the candidates produce expected contextual type, record
all of the posibilities to produce a note per and diagnose this as
contextual type mismatch instead of a reference ambiguity.
2019-12-03 12:07:15 -08:00
Pavel Yaskevich
88c39db0c3 [Diagnostics] NFC: Fix improved test-cases related to argument-to-parameter mismatches 2019-09-13 22:35:53 -07:00
Maxim Moiseev
9a81ac7bbd Remove obsolete tests from FixedPointDiagnostics (again) 2019-01-29 16:26:46 -08:00
Brent Royal-Gordon
eb81efe369 Update two diagnostics in validation tests 2018-12-12 13:01:38 -08:00
Ben Cohen
fc7830a4ed Remove Swift 3-only Compatibility Shims (#21019) 2018-12-04 18:22:27 -08:00
gregomni
aeb96274d2 Apply the solution to the CS before diagnosing solution fixes. 2018-08-18 08:38:16 -07:00
Ben Cohen
6f91a4e3dd [stdlib] Migrate remaining stdlib tests from Swift 3 (#18740)
* Migrate remaining stdlib tests from Swift 3

* Fix misprunt

* Remove seemingly pointless loops
2018-08-16 08:44:04 -06:00
Pavel Yaskevich
3c7d7782db [Diagnostics] Don't try to diagnose missing conformance for any type of operator call
My original diagnostic changes included only `BinaryExpr` but there
are also postfix/prefix that I missed.
2018-08-13 18:06:49 -07:00
Slava Pestov
8d4b8e31aa Sema: Remove ScalarToTuple conversion
This either became dead shortly after the removal of Swift 3
compatibility mode from the constraint solver, or even earlier.

Note that the code completion test change is actually correct
because (Any) -> () is not convertible to () -> () in the
language.
2018-08-08 10:18:52 -07:00
Pavel Yaskevich
c2bf3d5ba9 [TypeChecker] NFC: Fix all of the diagnostics improved by conformance tracking 2018-08-02 21:55:16 -07:00
Pavel Yaskevich
84cd99a3eb [Diagnostics] Enable extraneous/incorrect label diagnostics via solver fixes
This builds on initial commit which added `RelabelArguments` fix
to the solver that only supported `missingLabels` at that moment,
but now it supports all three posibilities - missing/extraneous and
incorrect labels.
2018-07-25 14:34:26 -07:00
Dmitri Gribenko
486cab447d tests: replace 'rm -rf %t && mkdir -p %t' with '%empty-directory(%t)'
These changes were made using a script.
2017-06-04 11:08:39 -07:00
Max Moiseev
9b53efd72c Merge branch 'master' into new-integer-protocols 2017-04-17 09:53:44 -07:00
Max Moiseev
2e67c13d15 Fixing some tests 2017-04-14 16:19:06 -07:00
Mark Lacey
f2564109c0 Reinstate diagnostics for assignment from Int to unsigned types.
These had previously been removed in
9c2bc50acd because of differences in the
diagnostics being emitted across different platforms.

It looks like we're always emitting the same diagnostic now, so restore
a specific message.

Resolves: rdar://problem/19677545
2017-04-13 14:40:43 -07:00
Max Moiseev
6f6c2aee8c Fixing the rest of the tests 2017-03-22 16:06:10 -07:00
David Farler
b7d17b25ba Rename -parse flag to -typecheck
A parse-only option is needed for parse performance tracking and the
current option also includes semantic analysis.
2016-11-28 10:50:55 -08:00
Pavel Yaskevich
dd01b7e184 [Diagnostics] SR-2208: Improve failure diagnostics for apply expressions 2016-10-26 14:34:05 -07:00
Rintaro Ishizaki
1bdce7ced6 [lit] Add substitutions: %utils and %line-directive
%utils => ${SWIFT_SOURCE_DIR}/utils
%line-directive => ${SWIFT_SOURCE_DIR}/utils/line-directive
2016-06-11 02:41:15 +09:00
Trent Nadeau
0cc851568a Updated tests to use @discardableResult and _ = . 2016-05-11 22:53:38 -04:00
John McCall
e75dae491e Don't diagnose failures to call symmetrically-typed binary operators
as a failure to convert the individual operand, since the operator
is likely conceptually generic in some way and the choice of any
specific overload is probably arbitrary.

Since we now fall back to a better-informed diagnostics point, take
advantage of this to generate a specialized diagnostic when trying to
compare values of function type with ===.

Fixes rdar://25666129.

This reverts commit 073f427942,
i.e. it reapplies 35ba809fd0 with a
test fix to expect an extra note in one place.
2016-05-11 16:09:28 -07:00
Manav Gabhawala
7928140f79 [SE-0046] Implements consistent function parameter labels by discarding extraneous parameter names and adding _ where necessary 2016-04-06 20:21:58 -04:00
Max Moiseev
a49dab6bf8 Merge remote-tracking branch 'origin/master' into swift-3-api-guidelines 2016-02-29 12:08:52 -08:00
Chris Lattner
0aebc5da16 My diagnstics change agitated a validation test, grr. 2016-02-28 21:09:27 -08:00
Dmitri Gribenko
dd75aed67a Merge remote-tracking branch 'origin/master' into swift-3-api-guidelines 2016-02-17 14:40:05 -08:00
Chris Lattner
a7dea79553 update validation test for diagnostics change. 2016-02-12 17:41:21 -08:00
Max Moiseev
806be29941 Merge remote-tracking branch 'origin' into swift-3-api-guidelines 2015-12-14 12:05:35 -08:00
Arsen Gasparyan
52890e5c30 Replace if true {} with do {} 2015-12-13 10:54:54 +03:00
Maxim Moiseev
b702b1a903 more number type renames 2015-12-10 17:08:41 -08:00
Dmitri Gribenko
174d475833 stdlib: Remove unavavailable APIs that were left as migration aids
These APIs are from the Swift 1.2 => Swift 2.0 transition, and are not
relevant anymore.

Removing them reduces the surface area of the library that needs to be
reviewed.
2015-12-02 01:19:50 -08:00
Chris Lattner
b219c9b9ee Update validation test to reflect diagnostic changes. Have I ever mentioned
that it doesn't make sense for validation tests to be checking diagnostics?
2015-11-17 21:34:15 -08:00
Chris Lattner
afe762c882 remove diagnostic messages from expected- markers that change. If the specifics
being tested are important, they should be tested in the main testsuite.  Leave
the 'word' validation messages.


Swift SVN r30667
2015-07-26 22:26:59 +00:00
Dmitri Hrybenko
69531fd8f8 Restore FixedPointDiagnostics.swift.gyb, it is a useful test
1. We have complex logic in stdlib/public/core/FixedPoint.swift.gyb that emits
or hides certain initializers on integer types based on the bit width
combination.  We check that those APIs are indeed present or absent in cases we
expect.

All of [U]Int{8,16,32,64,} initializers, labelled and unlabelled.

(swift) UInt16(-10 as Int32)
<REPL Input>:1:1: error: integer overflows when converted from 'Int32' to 'UInt16'
UInt16(-10 as Int32)

(swift) UInt16(truncatingBitPattern: -10 as Int32)
// r3 : UInt16 = 65526

(swift) UInt16(truncatingBitPattern: -10 as Int16)
<REPL Input>:1:1: error: cannot invoke initializer for type 'UInt16' with an argument list of type '(truncatingBitPattern: Int16)'
UInt16(truncatingBitPattern: -10 as Int16)
<REPL Input>:1:1: note: overloads for 'UInt16' exist with these partially matching parameter lists: (Int16), (bitPattern: Int16)

A slight change in the type combination dramatically changes the available
overload set.  You can’t check this with one or two tests and be confident that
every source/destination combination is correct.

2. We check that the APIs above are present or absent regardless of the target
platform so that the code is portable (for example, because Int64 -> Int is a
truncating operation on at least one platform, the corresponding “truncating”
initializer is available for portability on 64-bit platforms, even though it is
not actually truncating there.)

3. We rely on ambiguity in the overload set of “+“ and “-“ for certain
combinations of arguments to disallow mixed-sign arithmetic.  Again, these
ambiguities rely on a tricky combination of protocols, associated types, the
way those associated types are defined by our integer types, and overload
resolution rules in the type checker.

4. The test also checks migration facilities for Word and UWord.

Swift SVN r30655
2015-07-26 06:56:47 +00:00
Chris Lattner
746e5aac49 remove this test, it isn't a good test.
Swift SVN r30627
2015-07-25 15:22:34 +00:00
Dmitri Hrybenko
7d61186d85 Revert "fix the validation test failure due to producing 'aka' more often."
... and actually fix the test.

Swift SVN r30625
2015-07-25 07:26:21 +00:00
Chris Lattner
57634fe8b9 fix the validation test failure due to producing 'aka' more often.
Swift SVN r30619
2015-07-25 03:59:18 +00:00
Dmitri Hrybenko
f5de8757e4 stdlib: remove Word and UWord
These types are leftovers from the early pre-1.0 times when Int and UInt
were always 64-bit on all platforms.  They serve no useful purpose
today.  Int and UInt are defined to be word-sized and should be used
instead.

rdar://18693488

Swift SVN r30564
2015-07-24 05:01:32 +00:00
Chris Lattner
7bcd2ebe84 Update validation test diagnostics for r30491
Swift SVN r30492
2015-07-22 06:15:56 +00:00
Arnold Schwaighofer
ec686f2861 FixedPointDiagnostics.swift.gyb update expected error/note output
Swift SVN r30070
2015-07-10 15:01:19 +00:00
Arnold Schwaighofer
21ce6cdaa0 XFAIL while I update the expected diagnostic strings
No radar - I am working on updating now.

Swift SVN r30069
2015-07-10 14:34:57 +00:00
Chris Lattner
ceeb309e47 update validation test for diagnostics change. I still think that these are massive overkill...
Swift SVN r30063
2015-07-10 05:09:19 +00:00
Chris Lattner
59527f0a0b Fix for 21643437. Because of weirdness in this test (tracked by 19434979), the diagnostics on these lines are
different on iOS and the Mac, so just relax the checks back to the way they were.


Swift SVN r29899
2015-07-02 21:15:28 +00:00
Andrew Trick
59b6dff24e Temporarily disableFixedPointDiagnostics test on iOS.
<rdar://problem/21643437> FixedPointDiagnostics regression on iOS

Swift SVN r29865
2015-07-01 23:52:30 +00:00
Chris Lattner
762cb3fa62 start loosening up getTypeOfIndependentSubExpression() to walk into more kinds of
expressions.  Broadening from callexpr to apply expr (picking up operators) improves
several diagnostics in the testsuite, and is important to avoid regressions from an 
upcoming patch.


Swift SVN r29821
2015-06-30 23:25:47 +00:00
Chris Lattner
77fce6b76c update notes to go with r29810
Swift SVN r29820
2015-06-30 23:20:24 +00:00
Chris Willmore
0e05470e5f Take care to preserve parentheses when opening generic types. Consider
lvalues when compiling list of partial-match overloads in diagnosis.
(This is a reapplication of commits r29462 and r29469.)

Also, fix the following tests:

    stdlib/FixedPointDiagnostics.swift.gyb
    stdlib/NumericDiagnostics.swift.gyb

<rdar://problem/17875634> can't append to array of tuples

Swift SVN r29493
2015-06-18 18:58:49 +00:00
Joe Groff
58af18748c Expect 'unused initialization' warnings in FixedPointDiagnostics.swift.gyb
Swift SVN r29347
2015-06-08 05:43:22 +00:00
Dave Abrahams
0fdc73bf43 [stdlib] Minimize and rename _UnsignedIntegerType
The protocol is still needed in order to make sure mixed signed/unsigned
arithmetic doesn't compile, but after pulling all its "real"
requirements into UnsignedIntegerType, that's now its only function.
Thus, rename it to _DisallowMixedSignArithmetic.

Swift SVN r28980
2015-05-24 02:09:14 +00:00