Skip to content

Commit 6aca4f2

Browse files
committed
ExistentialTypeSyntaxChecker: Fix any fix-it for IUO
1 parent 7dc65a3 commit 6aca4f2

File tree

3 files changed

+15
-1
lines changed

3 files changed

+15
-1
lines changed

lib/Sema/TypeCheckType.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5995,6 +5995,7 @@ class ExistentialTypeSyntaxChecker : public ASTWalker {
59955995
static bool anySyntaxNeedsParens(TypeRepr *parent) {
59965996
switch (parent->getKind()) {
59975997
case TypeReprKind::Optional:
5998+
case TypeReprKind::ImplicitlyUnwrappedOptional:
59985999
case TypeReprKind::Protocol:
59996000
return true;
60006001
case TypeReprKind::Metatype:
@@ -6009,7 +6010,6 @@ class ExistentialTypeSyntaxChecker : public ASTWalker {
60096010
case TypeReprKind::UnqualifiedIdent:
60106011
case TypeReprKind::QualifiedIdent:
60116012
case TypeReprKind::Dictionary:
6012-
case TypeReprKind::ImplicitlyUnwrappedOptional:
60136013
case TypeReprKind::Inverse:
60146014
case TypeReprKind::Tuple:
60156015
case TypeReprKind::Fixed:

test/type/explicit_existential.swift

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -419,6 +419,13 @@ func testAnyFixIt() {
419419
let _: (HasAssoc)?
420420
// expected-error@+1 {{constraint that suppresses conformance requires 'any'}}{{11-20=any ~Copyable}}
421421
let _: (~Copyable)?
422+
// expected-error@+1 {{use of protocol 'HasAssoc' as a type must be written 'any HasAssoc'}}{{10-18=(any HasAssoc)}}
423+
let _: HasAssoc!
424+
// expected-error@+2 {{type '(any Copyable)?' cannot be suppressed}}
425+
// expected-warning@+1 {{using '!' is not allowed here; treating this as '?' instead}}
426+
let _: ~Copyable!
427+
// expected-error@+1 {{constraint that suppresses conformance requires 'any'}}{{11-20=any ~Copyable}}
428+
let _: (~Copyable)!
422429
// expected-error@+1 {{use of protocol 'HasAssoc' as a type must be written 'any HasAssoc'}}{{10-23=(any HasAssoc.Type)}}
423430
let _: HasAssoc.Type?
424431
// expected-error@+1 {{constraint that suppresses conformance requires 'any'}}{{10-26=(any (~Copyable).Type)}}

test/type/explicit_existential_swift6.swift

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -451,6 +451,13 @@ func testAnyFixIt() {
451451
let _: (HasAssoc)?
452452
// expected-error@+1 {{constraint that suppresses conformance requires 'any'}}{{11-20=any ~Copyable}}
453453
let _: (~Copyable)?
454+
// expected-error@+1 {{use of protocol 'HasAssoc' as a type must be written 'any HasAssoc'}}{{10-18=(any HasAssoc)}}
455+
let _: HasAssoc!
456+
// expected-error@+2 {{type '(any Copyable)?' cannot be suppressed}}
457+
// expected-warning@+1 {{using '!' is not allowed here; treating this as '?' instead}}
458+
let _: ~Copyable!
459+
// expected-error@+1 {{constraint that suppresses conformance requires 'any'}}{{11-20=any ~Copyable}}
460+
let _: (~Copyable)!
454461
// expected-error@+1 {{use of protocol 'HasAssoc' as a type must be written 'any HasAssoc'}}{{10-23=(any HasAssoc.Type)}}
455462
let _: HasAssoc.Type?
456463
// expected-error@+1 {{constraint that suppresses conformance requires 'any'}}{{10-26=(any (~Copyable).Type)}}

0 commit comments

Comments
 (0)