Skip to content

Commit e63ac0f

Browse files
authored
Merge pull request #4019 from harlanhaskins/imported-goods
Improve nonexistent decl diagnostic
2 parents 73c4d69 + 5557ec2 commit e63ac0f

File tree

4 files changed

+10
-5
lines changed

4 files changed

+10
-5
lines changed

include/swift/AST/DiagnosticsSema.def

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -595,8 +595,10 @@ ERROR(unsupported_existential_type,none,
595595
"protocol %0 can only be used as a generic constraint because it has "
596596
"Self or associated type requirements", (Identifier))
597597

598-
ERROR(no_decl_in_module,none,
599-
"no such decl in module", ())
598+
ERROR(decl_does_not_exist_in_module,none,
599+
"%select{**MODULE**|type|struct|class|enum|protocol|variable|function}0 "
600+
"%1 does not exist in module %2",
601+
(/*ImportKind*/ unsigned, Identifier, Identifier))
600602
ERROR(imported_decl_is_wrong_kind,none,
601603
"%0 was imported as '%1', but is a "
602604
"%select{**MODULE**|type|struct|class|enum|protocol|variable|function}2",

lib/Sema/NameBinding.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,10 @@ void NameBinder::addImport(
227227
/*resolver*/nullptr, &SF);
228228

229229
if (decls.empty()) {
230-
diagnose(ID, diag::no_decl_in_module)
230+
diagnose(ID, diag::decl_does_not_exist_in_module,
231+
static_cast<unsigned>(ID->getImportKind()),
232+
declPath.front().first,
233+
ID->getModulePath().front().first)
231234
.highlight(SourceRange(declPath.front().second,
232235
declPath.back().second));
233236
return;

test/NameBinding/accessibility.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import has_accessibility
1616
#endif
1717

1818
// This deliberately has the wrong import kind.
19-
import var has_accessibility.zz // expected-error {{no such decl in module}}
19+
import var has_accessibility.zz // expected-error {{variable 'zz' does not exist in module 'has_accessibility'}}
2020

2121
func markUsed<T>(_ t: T) {}
2222

test/decl/import/import.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ import var import_builtin.x
4141
import func Swift.min
4242

4343
import var x // expected-error {{expected module name}}
44-
import struct Swift.nonexistent // expected-error {{no such decl in module}}
44+
import struct Swift.nonexistent // expected-error {{struct 'nonexistent' does not exist in module 'Swift'}}
4545

4646
import Swift.import.abc // expected-error {{expected identifier in import declaration}}
4747
// expected-error @-1 {{keyword 'import' cannot be used as an identifier here}}

0 commit comments

Comments
 (0)