Exemplo n.º 1
0
        public RootSingleNamespaceDeclaration(
            bool hasGlobalUsings,
            bool hasUsings,
            bool hasExternAliases,
            SyntaxReference treeNode,
            ImmutableArray <SingleNamespaceOrTypeDeclaration> children,
            ImmutableArray <ReferenceDirective> referenceDirectives,
            bool hasAssemblyAttributes,
            ImmutableArray <Diagnostic> diagnostics,
            QuickAttributes globalAliasedQuickAttributes)
            : base(string.Empty,
                   treeNode,
                   nameLocation: new SourceLocation(treeNode),
                   children: children,
                   diagnostics: diagnostics)
        {
            Debug.Assert(!referenceDirectives.IsDefault);

            _referenceDirectives         = referenceDirectives;
            _hasAssemblyAttributes       = hasAssemblyAttributes;
            _hasGlobalUsings             = hasGlobalUsings;
            _hasUsings                   = hasUsings;
            _hasExternAliases            = hasExternAliases;
            GlobalAliasedQuickAttributes = globalAliasedQuickAttributes;
        }
        private void AddName(string name, QuickAttributes newAttributes)
        {
#if DEBUG
            Debug.Assert(!_sealed);
#endif
            var currentValue = QuickAttributes.None;
            _nameToAttributeMap.TryGetValue(name, out currentValue);

            QuickAttributes newValue = newAttributes | currentValue;
            _nameToAttributeMap[name] = newValue;
        }
        public override SingleNamespaceOrTypeDeclaration VisitCompilationUnit(CompilationUnitSyntax compilationUnit)
        {
            if (_syntaxTree.Options.Kind != SourceCodeKind.Regular)
            {
                return(CreateScriptRootDeclaration(compilationUnit));
            }

            _nonGlobalAliasedQuickAttributes = GetNonGlobalAliasedQuickAttributes(compilationUnit);

            var children = VisitNamespaceChildren(compilationUnit, compilationUnit.Members, ((Syntax.InternalSyntax.CompilationUnitSyntax)(compilationUnit.Green)).Members);

            return(CreateRootSingleNamespaceDeclaration(compilationUnit, children, isForScript: false));
        }
        public bool IsPossibleMatch(AttributeSyntax attr, QuickAttributes pattern)
        {
#if DEBUG
            Debug.Assert(_sealed);
#endif
            string          name = attr.Name.GetUnqualifiedName().Identifier.ValueText;
            QuickAttributes foundAttributes;

            // We allow "Name" to bind to "NameAttribute"
            if (_nameToAttributeMap.TryGetValue(name, out foundAttributes) ||
                _nameToAttributeMap.TryGetValue(name + "Attribute", out foundAttributes))
            {
                return((foundAttributes & pattern) != 0);
            }

            return(false);
        }
Exemplo n.º 5
0
        internal SingleTypeDeclaration(
            DeclarationKind kind,
            string name,
            int arity,
            DeclarationModifiers modifiers,
            TypeDeclarationFlags declFlags,
            SyntaxReference syntaxReference,
            SourceLocation nameLocation,
            ImmutableSegmentedDictionary <string, VoidResult> memberNames,
            ImmutableArray <SingleTypeDeclaration> children,
            ImmutableArray <Diagnostic> diagnostics,
            QuickAttributes quickAttributes)
            : base(name, syntaxReference, nameLocation, diagnostics)
        {
            Debug.Assert(kind != DeclarationKind.Namespace);

            _kind           = kind;
            _arity          = (ushort)arity;
            _modifiers      = modifiers;
            MemberNames     = memberNames;
            _children       = children;
            _flags          = declFlags;
            QuickAttributes = quickAttributes;
        }