public ImportStatementCompletionProvider(
			ICompletionDataGenerator gen, 
			ImportStatement.Import imp)
			: base(gen)
		{
			this.imp = imp;
		}
 public ImportStatementCompletionProvider(
     ICompletionDataGenerator gen,
     ImportStatement.Import imp)
     : base(gen)
 {
     this.imp = imp;
 }
		public ImportStatementCompletionProvider(
			ICompletionDataGenerator gen, 
			ImportStatement.ImportBindings imbBind)
			: base(gen)
		{
			this.impBind = imbBind;
			imp = impBind.Module;
		}
Exemple #4
0
 public ImportStatementCompletionProvider(
     ICompletionDataGenerator gen,
     ImportStatement.ImportBindings imbBind)
     : base(gen)
 {
     this.impBind = imbBind;
     imp          = impBind.Module;
 }
Exemple #5
0
        bool HandleNonAliasedImport(ImportStatement.Import imp, MemberFilter VisibleMembers)
        {
            if (imp == null || imp.ModuleIdentifier == null)
            {
                return(false);
            }

            DModule mod;
            var     thisModuleName = (ctxt.ScopedBlock != null && (mod = ctxt.ScopedBlock.NodeRoot as DModule) != null) ? mod.ModuleName : string.Empty;

            if (string.IsNullOrEmpty(thisModuleName))
            {
                return(false);
            }

            var moduleName = imp.ModuleIdentifier.ToString();

            List <string> seenModules = null;

            if (!scannedModules.TryGetValue(thisModuleName, out seenModules))
            {
                seenModules = scannedModules[thisModuleName] = new List <string>();
            }
            else if (seenModules.Contains(moduleName))
            {
                return(false);
            }
            seenModules.Add(moduleName);

            var scAst = ctxt.ScopedBlock == null ? null : ctxt.ScopedBlock.NodeRoot as DModule;

            if (ctxt.ParseCache != null)
            {
                foreach (var module in ctxt.ParseCache.LookupModuleName(moduleName))                 //TODO: Only take the first module? Notify the user about ambigous module names?
                {
                    if (module == null || (scAst != null && module.FileName == scAst.FileName && module.FileName != null))
                    {
                        continue;
                    }

                    //ctxt.PushNewScope(module);

                    if (ScanImportedModule(module as DModule, VisibleMembers))
                    {
                        //ctxt.Pop();
                        return(true);
                    }

                    //ctxt.Pop();
                }
            }
            return(false);
        }
 public override void VisitImport(ImportStatement.Import i)
 {
     if (IsIncompleteDeclaration(i.ModuleIdentifier))
     {
         prv  = new ImportStatementCompletionProvider(cdgen, i);
         halt = true;
     }
     else
     {
         curImport = i;
         base.VisitImport(i);
     }
 }
Exemple #7
0
 public void VisitImport(ImportStatement.Import import)
 {
 }
Exemple #8
0
		ImportStatement.Import _Import()
		{
			var import = new ImportStatement.Import();
			LastParsedObject = import;

			// ModuleAliasIdentifier
			if (Lexer.CurrentPeekToken.Kind == Assign)
			{
				if(Expect(Identifier))
					import.ModuleAlias = new IdentifierDeclaration(t.Value) { Location = t.Location, EndLocation = t.EndLocation };
				Step();
			}

			import.ModuleIdentifier = ModuleFullyQualifiedName();

			if (!IsEOF)
				LastParsedObject = null;

			return import;
		}
 public ulong VisitImport(ImportStatement.Import import)
 {
     return(1000303);
 }
Exemple #10
0
        bool HandleNonAliasedImport(ImportStatement.Import imp, MemberFilter VisibleMembers)
        {
            if (imp == null || imp.ModuleIdentifier == null)
            {
                return(false);
            }

            var thisModuleName = ctxt.ScopedBlock.NodeRoot is IAbstractSyntaxTree ? (ctxt.ScopedBlock.NodeRoot as IAbstractSyntaxTree).ModuleName : string.Empty;
            var moduleName     = imp.ModuleIdentifier.ToString();

            List <string> seenModules = null;

            if (!scannedModules.TryGetValue(thisModuleName, out seenModules))
            {
                seenModules = scannedModules[thisModuleName] = new List <string>();
            }
            else if (seenModules.Contains(moduleName))
            {
                return(false);
            }
            seenModules.Add(moduleName);

            if (ctxt.ParseCache != null)
            {
                foreach (var module in ctxt.ParseCache.LookupModuleName(moduleName))
                {
                    var scAst = ctxt.ScopedBlock.NodeRoot as IAbstractSyntaxTree;
                    if (module == null || (scAst != null && module.FileName == scAst.FileName && module.FileName != null))
                    {
                        continue;
                    }

                    if (HandleItem(module))
                    {
                        return(true);
                    }

                    var ch = PrefilterSubnodes(module);
                    if (ch != null)
                    {
                        foreach (var i in ch)
                        {
                            var dn = i as DNode;
                            if (dn != null)
                            {
                                // Add anonymous enums' items
                                if (dn is DEnum &&
                                    string.IsNullOrEmpty(i.Name) &&
                                    dn.IsPublic &&
                                    !dn.ContainsAttribute(DTokens.Package) &&
                                    CanAddMemberOfType(VisibleMembers, i))
                                {
                                    if (HandleItems((i as DEnum).Children))
                                    {
                                        return(true);
                                    }
                                    continue;
                                }

                                if (dn.IsPublic && !dn.ContainsAttribute(DTokens.Package) &&
                                    CanAddMemberOfType(VisibleMembers, dn))
                                {
                                    if (HandleItem(dn))
                                    {
                                        return(true);
                                    }
                                }
                            }
                            else
                            if (HandleItem(i))
                            {
                                return(true);
                            }
                        }
                    }

                    if (HandleDBlockNode(module as DBlockNode, VisibleMembers, true))
                    {
                        return(true);
                    }
                }
            }
            return(false);
        }
 public SelectiveImportCompletionProvider(ICompletionDataGenerator gen, ImportStatement.Import imp) : base(gen)
 {
     import = imp;
 }