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; }
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); } }
public void VisitImport(ImportStatement.Import import) { }
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); }
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; }