Skip to content

Commit a4a2755

Browse files
committed
Allow :: as an alias for . in imports
This is a first cut at how imports ought to adopt module selectors.
1 parent dc9a84d commit a4a2755

File tree

2 files changed

+8
-3
lines changed

2 files changed

+8
-3
lines changed

lib/Parse/ParseDecl.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6582,7 +6582,9 @@ ParserResult<ImportDecl> Parser::parseDeclImport(ParseDeclOptions Flags,
65826582
.fixItRemove(Tok.getLoc());
65836583
return nullptr;
65846584
}
6585-
HasNext = consumeIf(tok::period);
6585+
HasNext = consumeIf(tok::period) ||
6586+
(Context.LangOpts.hasFeature(Feature::ModuleSelector) &&
6587+
consumeIf(tok::colon_colon));
65866588
} while (HasNext);
65876589

65886590
if (Tok.is(tok::code_complete)) {

test/NameLookup/module_selector.swift

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
1-
// RUN: %target-typecheck-verify-swift -module-name main -I %S/Inputs -enable-experimental-feature ModuleSelector
1+
// RUN: %target-typecheck-verify-swift -sdk %clang-importer-sdk -module-name main -I %S/Inputs -enable-experimental-feature ModuleSelector
22

33
// Make sure the lack of the experimental flag disables the feature:
4-
// RUN: not %target-typecheck-verify-swift -module-name main -I %S/Inputs 2>/dev/null
4+
// RUN: not %target-typecheck-verify-swift -sdk %clang-importer-sdk -module-name main -I %S/Inputs 2>/dev/null
55

66
// REQUIRES: swift_feature_ModuleSelector
77

88
import ModuleSelectorTestingKit
99

10+
import ctypes::bits // FIXME: ban using :: with submodules?
11+
import struct ModuleSelectorTestingKit::A
12+
1013
let magnitude: Never = fatalError()
1114

1215
// Test correct code using `A`

0 commit comments

Comments
 (0)