コード例 #1
0
 public override void Visit(DOM.AliasDefinition aliasDefinition)
 {
     _namespaceResolver.EnterAliasDef((AliasDefinition)aliasDefinition);
     ProcessInterpolation((IPairWithInterpolation)aliasDefinition);
     base.Visit(aliasDefinition);
     Visit(aliasDefinition.PairValue);
 }
コード例 #2
0
        private NsInfo ResolveAliasesInAliasDefinition(DOM.AliasDefinition aliasDef)
        {
            _currentModuleMember = aliasDef;
            var aliasDefNsInfo = CurrentModuleMemberNsInfo;

            if (aliasDefNsInfo.AliasesResolved)
            {
                return(aliasDefNsInfo);
            }

            return(ResolveAliasesInAliasDefinition(aliasDefNsInfo));
        }
コード例 #3
0
        public override void Visit(DOM.AliasDefinition aliasDefinition)
        {
            CheckPairValue(aliasDefinition);

            _blockStateUnknown = true;
            CheckAliasDefNameUniqueness(aliasDefinition);
            var choiceInfo = new ChoiceInfo(null, null);

            _choiceStack.Push(choiceInfo);
            Visit(aliasDefinition.NamespaceDefinitions);
            Visit(aliasDefinition.Entities);
            _choiceStack.Pop();
            if (choiceInfo.Children == null && choiceInfo.Errors != null)
            {
                foreach (var error in choiceInfo.Errors)
                {
                    Context.AddError(error);
                }
            }
        }
コード例 #4
0
        private void CheckAliasDefNameUniqueness(DOM.AliasDefinition aliasDefinition)
        {
            var sameNameAliasDef =
                _namespaceResolver.ModuleMembersNsInfo.FindAll(
                    n =>
                    (n.ModuleMember is DOM.AliasDefinition &&
                     ((DOM.AliasDefinition)n.ModuleMember).Name == aliasDefinition.Name));

            if (sameNameAliasDef.Count > 1)
            {
                if (sameNameAliasDef.Count == 2)
                {
                    //Reporting error for 2 documents (existing and new)
                    var prevAliasDef = (DOM.AliasDefinition)sameNameAliasDef[0].ModuleMember;
                    Context.AddError(CompilerErrorFactory.DuplicateAliasDefName((AliasDefinition)prevAliasDef,
                                                                                prevAliasDef.Module.FileName));
                }
                Context.AddError(CompilerErrorFactory.DuplicateAliasDefName((AliasDefinition)aliasDefinition,
                                                                            _currentModule.FileName));
            }
        }