Skip to content

Commit f0fbb80

Browse files
authored
Merge pull request swiftlang#40836 from angela-laar/smooth_operator
[Parser] Check for postfix operator in import paths
2 parents c18922c + 54a738b commit f0fbb80

File tree

3 files changed

+8
-0
lines changed

3 files changed

+8
-0
lines changed

include/swift/AST/DiagnosticsParse.def

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -315,6 +315,8 @@ ERROR(decl_expected_module_name,none,
315315
ERROR(expected_module_alias,none,
316316
"cannot refer to module as %0 because it has been aliased; use %1 "
317317
"instead", (Identifier, Identifier))
318+
ERROR(unexpected_operator_in_import_path,none,
319+
"cannot include postfix operator in import declaration",())
318320

319321
// Extension
320322
ERROR(expected_lbrace_extension,PointsToFirstBadToken,

lib/Parse/ParseDecl.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4873,6 +4873,11 @@ ParserResult<ImportDecl> Parser::parseDeclImport(ParseDeclOptions Flags,
48734873
/*diagnoseDollarPrefix=*/false,
48744874
diag::expected_identifier_in_decl, "import"))
48754875
return nullptr;
4876+
if (Tok.is(tok::oper_postfix)) {
4877+
diagnose(Tok, diag::unexpected_operator_in_import_path)
4878+
.fixItRemove(Tok.getLoc());
4879+
return nullptr;
4880+
}
48764881
HasNext = consumeIf(tok::period);
48774882
} while (HasNext);
48784883

test/decl/import/import.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ import func Swift.min
4949

5050
import var x // expected-error {{expected module name}}
5151
import struct Swift.nonexistent // expected-error {{struct 'nonexistent' does not exist in module 'Swift'}}
52+
import func SwiftUI.Text.++ // expected-error{{cannot include postfix operator in import declaration}}{{25-28=}}
5253

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

0 commit comments

Comments
 (0)