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; }
/// <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); } }
public void AddUnresolvedMemberDeclaration(UnboundMemberDeclaration unresolvedMemberDeclaration) { _unresolvedMemberDeclarations.Add(unresolvedMemberDeclaration); }