Esempio n. 1
0
        public ModuleState(ConcurrentDictionary <Declaration, byte> declarations)
        {
            Declarations = declarations;
            UnresolvedMemberDeclarations = new ConcurrentDictionary <UnboundMemberDeclaration, byte>();
            TokenStream = null; UnboundMemberDeclaration
                ParseTree = null;

            if (declarations.Any() && declarations.ElementAt(0).Key.QualifiedName.QualifiedModuleName.Component != null)
            {
                State = ParserState.Pending;
            }
            else
            {
                State = ParserState.Pending;
            }

            ModuleContentHashCode = 0;
            Comments             = new List <CommentNode>();
            Annotations          = new List <IAnnotation>();
            ModuleException      = null;
            ModuleAttributes     = new Dictionary <Tuple <string, DeclarationType>, Attributes>();
            HasReferenceToModule = new ConcurrentDictionary <QualifiedModuleName, byte>();
            IsReferencedByModule = new HashSet <QualifiedModuleName>();

            IsNew = true;
        }
Esempio n. 2
0
        /// <summary>
        /// Adds the specified <see cref="UnboundMemberDeclaration"/> to the collection (replaces existing).
        /// </summary>
        public void AddUnresolvedMemberDeclaration(UnboundMemberDeclaration declaration)
        {
            var key          = declaration.QualifiedName.QualifiedModuleName;
            var declarations = _moduleStates.GetOrAdd(key, new ModuleState(new ConcurrentDictionary <Declaration, byte>())).UnresolvedMemberDeclarations;

            if (declarations.ContainsKey(declaration))
            {
                while (!declarations.TryRemove(declaration, out var _))
                {
                    Logger.Warn("Could not remove existing unresolved member declaration for '{0}' ({1}). Retrying.", declaration.IdentifierName, declaration.DeclarationType);
                }
            }
            while (!declarations.TryAdd(declaration, 0) && !declarations.ContainsKey(declaration))
            {
                Logger.Warn("Could not add unresolved member declaration '{0}' ({1}). Retrying.", declaration.IdentifierName, declaration.DeclarationType);
            }
        }
Esempio n. 3
0
 public void AddUnresolvedMemberDeclaration(UnboundMemberDeclaration unresolvedMemberDeclaration)
 {
     _unresolvedMemberDeclarations.Add(unresolvedMemberDeclaration);
 }