private static bool Matched( ITreeNode treeNode, string pattern, StructuralSearchEngine structuralSearchEngine, int placeholdersCount, out IStructuralMatchResult matchResult, out List <string> orderedPlaceholderNames) { matchResult = null; orderedPlaceholderNames = null; IStructuralSearchPattern structuralSearchPattern = structuralSearchEngine.GetFactory(CSharpLanguage.Instance).CreatePattern(pattern); if (!structuralSearchPattern.GuessPlaceholders() || structuralSearchPattern.Placeholders.Count != placeholdersCount) { return(false); } orderedPlaceholderNames = GetPatternOrderedPlaceholderNames(pattern); if (orderedPlaceholderNames.Count != placeholdersCount) { return(false); } IStructuralMatcher matcher = structuralSearchPattern.CreateMatcher(); matchResult = matcher.Match(treeNode); return(matchResult.Matched); }
public sealed override bool IsAvailable() { StructuralSearchEngine structuralSearchEngine = this.DataProvider.Solution.GetComponent <StructuralSearchEngine>(); IStructuralMatcher structuralMatcher = structuralSearchEngine.CreateMatcherWithPlaceholdersBindingObject( this.Pattern, CSharpLanguage.Instance, this.GetType(), GetAdditionalPlaceholders() ); if (structuralMatcher != null) { IStructuralMatchResult matchResult = structuralMatcher.IsTreeNodeOrParentsMatched(this.DataProvider.SelectedElement, this); if (matchResult.Matched) { this.MatchResult = matchResult; return(IsAvailableCore()); } } return(false); }
public static bool Matched <TPlaceholderValue>( this ITreeNode treeNode, string pattern, StructuralSearchEngine structuralSearchEngine, out TPlaceholderValue placeholderValue) where TPlaceholderValue : class { placeholderValue = null; bool matched = Matched( treeNode, pattern, structuralSearchEngine, 1 /* placeholdersCount */, out IStructuralMatchResult matchResult, out List <string> orderedPlaceholderNames ); if (matched) { placeholderValue = GetPlaceholderMatchedValue <TPlaceholderValue>(matchResult, orderedPlaceholderNames[0]); if (placeholderValue == null) { return(false); } return(true); } return(false); }
public static IStructuralMatcher CreateMatcherWithPlaceholdersBindingObject( this StructuralSearchEngine structuralSearchEngine, string pattern, PsiLanguageType languageType, Type placeholdersBindingObjectType, IPlaceholder[] additionalPlaceholders = null) { IStructuralSearcherFactory factory = structuralSearchEngine.GetFactory(languageType); List <IPlaceholder> placeholders = GetPlaceholdersFromBindingObjectType(placeholdersBindingObjectType); if (additionalPlaceholders != null) { placeholders.AddRange(placeholders); } return(factory.CreatePattern(pattern, placeholders.ToArray()).CreateMatcher()); }
private IExpression ParseEnumerableRecursive(IExpression enumerableExpression) { IExpression result = enumerableExpression; StructuralSearchEngine sse = this.DataProvider.Solution.GetComponent <StructuralSearchEngine>(); IExpression enu; ILambdaParameterDeclaration x; IExpression exp; if (enumerableExpression.Matched("$enu$.Select($x$ => $exp$)", sse, out enu, out x, out exp)) { result = ParseEnumerableRecursive(enu); _linqExpressions.Add(new SelectLinqExpression(x, exp)); } if (enumerableExpression.Matched("$enu$.Where($x$ => $arg$)", sse, out enu, out x, out exp)) { result = ParseEnumerableRecursive(enu); _linqExpressions.Add(new WhereLinqExpression(x, exp)); } return(result); }
public DictionaryContainsKeyIfStatementProblemAnalyzer(StructuralSearchEngine ssr) { }
public DictionaryContainsKeyConditionalTernaryExpressionProblemAnalyzer(StructuralSearchEngine ssr) { }