public override object Build(IPsiSourceFile sourceFile, bool isStartup) { var file = sourceFile.GetPrimaryPsiFile().NotNull(); if (!file.Language.Is <CSharpLanguage>()) { return(null); } var stepDefinitions = new SpecflowStepsDefinitionsCacheEntries(); foreach (var type in GetTypeDeclarations(file)) { if (!(type is IClassDeclaration classDeclaration)) { continue; } var hasSpecflowBindingAttribute = HasSpecflowBindingAttribute(classDeclaration); if (!hasSpecflowBindingAttribute && !classDeclaration.IsPartial) { continue; } stepDefinitions.Add(BuildBindingClassCacheEntry(classDeclaration, hasSpecflowBindingAttribute)); } return(stepDefinitions); }
// Note that some searchers (such as ReferenceSearchProcessorBase) will filter by word index before calling this. // Words come from IDomainSpecificSearcherFactory.GetAllPossibleWordsInFile public bool ProcessProjectItem <TResult>(IPsiSourceFile sourceFile, IFindResultConsumer <TResult> consumer) { if (sourceFile.GetPrimaryPsiFile() is IYamlFile yamlFile) { return(ProcessElement(yamlFile, consumer)); } return(false); }
public bool ProcessProjectItem <TResult>(IPsiSourceFile sourceFile, IFindResultConsumer <TResult> consumer) { if (!(sourceFile.GetPrimaryPsiFile() is ShaderLabFile shaderLabFile)) { return(false); } return(ProcessElement(shaderLabFile, consumer)); }
public override object Build(IPsiSourceFile sourceFile, bool isStartup) { var file = sourceFile.GetPrimaryPsiFile().NotNull(); if (!file.Language.Is <CSharpLanguage>()) { return(null); } if (!(file is ICSharpFile cSharpFile)) { return(null); } if (!cSharpFile.Imports.Any(x => x.ImportedSymbolName.QualifiedName == "TechTalk.SpecFlow")) { return(null); } var stepDefinitions = new SpecflowStepsDefinitionsCacheEntries(); foreach (var type in GetTypeDeclarations(file)) { if (!(type is IClassDeclaration classDeclaration)) { continue; } if (classDeclaration.Attributes.Count == 0) { continue; } // Optimization: do not resolve all attribute. We are looking for `TechTalk.SpecFlow.BindingAttribute` only var potentialBindingAttributes = classDeclaration.Attributes.Where(x => x.Arguments.Count == 0).ToList(); if (potentialBindingAttributes.Count == 0) { continue; } var bindingAttributeFound = false; foreach (var potentialBindingAttribute in potentialBindingAttributes.Select(x => x.GetAttributeInstance())) { if (potentialBindingAttribute.GetClrName().FullName == "TechTalk.SpecFlow.BindingAttribute") { bindingAttributeFound = true; } } if (bindingAttributeFound) { stepDefinitions.Add(BuildBindingClassCacheEntry(classDeclaration)); } } return(stepDefinitions); }
public bool Navigate(ISolution solution, PopupWindowContextSource windowContext, bool transferFocus, TabOptions tabOptions = TabOptions.Default) { var psiFile = mySourceFile.GetPrimaryPsiFile(); if (psiFile == null || !psiFile.Language.Is <JsonLanguage>()) { return(false); } var range = TextRange.FromLength(myNavigationTreeOffset, myName.Length); return(mySourceFile.Navigate(range, transferFocus, tabOptions, windowContext)); }
private LinkedNamesData GetLinkData(IPsiSourceFile sourceFile) { var linkedNamesData = new LinkedNamesData(); foreach (var sourceType in GetTypeDeclarations(sourceFile.GetPrimaryPsiFile().NotNull())) { for (var i = 0; i < _linkedTypesProviders.Count; i++) { var linkedNames = _linkedTypesProviders[i].GetLinkedNames(sourceType); foreach (var x in linkedNames) { linkedNamesData.Add(sourceType.DeclaredName, x); } } } return(linkedNamesData); }
public override object Build(IPsiSourceFile sourceFile, bool isStartup) { var file = sourceFile.GetPrimaryPsiFile().NotNull(); if (!file.Language.Is <GherkinLanguage>()) { return(null); } if (!(file is GherkinFile gherkinFile)) { return(null); } var stepUsages = new SpecflowStepsUsagesCacheEntries(); var steps = gherkinFile.GetChildrenInSubtrees <GherkinStep>(); stepUsages.AddRange(steps.Select(step => new SpecflowStepUsageCacheEntry(step.GetStepKind(), step.GetStepText()))); return(stepUsages); }
public IList <IDeclaration> GetDeclarations() { if (!(mySourceFile.GetPrimaryPsiFile() is IShaderLabFile psi)) { return(EmptyList <IDeclaration> .InstanceList); } var node = psi.FindNodeAt(TreeTextRange.FromLength(new TreeOffset(TreeOffset), 1)); while (node != null && !(node is IDeclaration)) { node = node.Parent; } if (node == null) { return(EmptyList <IDeclaration> .Instance); } return(new[] { (IDeclaration)node }); }