Skip to content

Commit c9ecbe9

Browse files
committed
ExistentialTypeSyntaxChecker: Fix any fix-it for IUO
1 parent 7164003 commit c9ecbe9

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
@@ -6042,6 +6042,7 @@ class ExistentialTypeSyntaxChecker : public ASTWalker {
60426042
static bool anySyntaxNeedsParens(TypeRepr *parent) {
60436043
switch (parent->getKind()) {
60446044
case TypeReprKind::Optional:
6045+
case TypeReprKind::ImplicitlyUnwrappedOptional:
60456046
case TypeReprKind::Protocol:
60466047
return true;
60476048
case TypeReprKind::Metatype:
@@ -6056,7 +6057,6 @@ class ExistentialTypeSyntaxChecker : public ASTWalker {
60566057
case TypeReprKind::UnqualifiedIdent:
60576058
case TypeReprKind::QualifiedIdent:
60586059
case TypeReprKind::Dictionary:
6059-
case TypeReprKind::ImplicitlyUnwrappedOptional:
60606060
case TypeReprKind::Inverse:
60616061
case TypeReprKind::Tuple:
60626062
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)