···932932.
933933934934NsTransferSource<out bool hasWildcard, out QualifiedId qualifiedId>
935935- (. hasWildcard = false; .)
935935+ (. hasWildcard = false;
936936+ var qualIdPos = GetPosition();
937937+ qualifiedId = new("unknown");
938938+ .)
936939=
937940NsQualifiedIdImpl<true, out qualifiedId, out hasWildcard>
941941+| GlobalQualifiedId<out var gid> (. // This alternative covers a common but hard to spot mistake (`.` vs `::`)
942942+ // It tries to recover, but it's considered a hard error.
943943+ Loader.ReportMessage(Message.Error(
944944+ Resources.Parser_DoubleColonInNamespaceName,
945945+ qualIdPos, MessageClasses.UnexpectedDoubleColonInNamespaceName));
946946+ hasWildcard = false;
947947+ qualifiedId = new(gid.Split('.'));
948948+ .)
938949.
939950940951NsQualifiedIdImpl<bool allowWildcard, out QualifiedId qualifiedId, out bool hasWildcard>
···10911102 .)
10921103.
1093110410941094-NamespaceDeclaration (. QualifiedId fullNsId;
11051105+NamespaceDeclaration (. QualifiedId? fullNsId = null;
10951106 DeclarationScope scope = null;
10961107 ISourcePosition qualIdPos,exportPos;
10971108 List<SymbolTransferDirective> directives;
···11001111 .)
11011112= (. .)
11021113namespace (. qualIdPos = GetPosition(); .)
11031103-NsQualifiedId<out fullNsId> (. var declBuilder = _prepareDeclScope(fullNsId, qualIdPos); .)
11141114+( NsQualifiedId<out var outNsId> (. fullNsId = outNsId; .)
11151115+| GlobalQualifiedId<out var qid> (. // This alternative captures a common and hard to spot mistake (. vs ::)
11161116+ // It tries to recover, but it's considered a hard error.
11171117+ Loader.ReportMessage(Message.Error(
11181118+ Resources.Parser_DoubleColonInNamespaceName,
11191119+ qualIdPos, MessageClasses.UnexpectedDoubleColonInNamespaceName));
11201120+ // Best-effort recovery based on invalid namespace name
11211121+ fullNsId = new QualifiedId(qid.Split('.'));
11221122+ .)
11231123+) (. var declBuilder = _prepareDeclScope(fullNsId ?? new QualifiedId("unknown"), qualIdPos); .)
11041124[ (. ISourcePosition importKeywordPosition;
11051125 _pushLexerState(Lexer.Transfer);
11061126 .)
+1
Prexonite/Compiler/MessageClasses.cs
···6262 public const string UnexpectedWildcard = "P.UnexpectedWildcard";
6363 public const string QualifiedIdPartsAfterWildcard = "P.QualifiedIdPartsAfterWildcard";
6464 public const string NonTopLevelNamespaceImport = "P.NonTopLevelNamespaceImport";
6565+ public const string UnexpectedDoubleColonInNamespaceName = "P.UnexpectedDoubleColonInNamespaceName";
65666667 #endregion
6768
+3
Prexonite/Properties/Resources.resx
···436436 <data name="MetaEntry_EntryTypeUnknownToString" xml:space="preserve">
437437 <value>MetaEntry type {0} does not have a string representation.</value>
438438 </data>
439439+ <data name="Parser_DoubleColonInNamespaceName" xml:space="preserve">
440440+ <value>Double colon (`::`) not allowed in namespace name.</value>
441441+ </data>
439442</root>