protected override QuickInfoModel CreateModel(SemanticModel semanticModel, SourceLocation position, ScalarTypeSyntax node) { if (!node.SourceRange.ContainsOrTouches(position)) { return(null); } if (node.TypeTokens.Any(x => !x.Span.IsInRootFile)) { return(null); } var symbol = semanticModel.GetSymbol(node); if (symbol == null) { return(null); } var textSpan = (node.TypeTokens.Count > 1) ? TextSpan.Union(node.TypeTokens[0].Span, node.TypeTokens[1].Span) : node.TypeTokens[0].Span; return(QuickInfoModel.ForSymbol(semanticModel, textSpan, symbol)); }
protected override QuickInfoModel CreateModel(SemanticModel semanticModel, SourceLocation position, VariableDeclarationSyntax node) { foreach (var declarator in node.Variables) { if (!declarator.Identifier.SourceRange.ContainsOrTouches(position)) { continue; } if (!declarator.Identifier.Span.IsInRootFile) { continue; } if (declarator.Identifier.MacroReference != null) { continue; } var symbol = semanticModel.GetDeclaredSymbol(declarator); if (symbol == null) { break; } return(QuickInfoModel.ForSymbol(semanticModel, declarator.Identifier.Span, symbol)); } return(null); }
protected override QuickInfoModel CreateModel(SemanticModel semanticModel, int position, CommonTableExpressionColumnNameSyntax node) { var symbol = semanticModel.GetDeclaredSymbol(node); return(symbol == null ? null : QuickInfoModel.ForSymbol(semanticModel, node.Span, symbol)); }
protected override QuickInfoModel CreateModel(SemanticModel semanticModel, int position, NameExpressionSyntax node) { var symbol = semanticModel.GetSymbol(node); return(symbol == null ? null : QuickInfoModel.ForSymbol(semanticModel, node.Span, symbol)); }
private static void AssertIsMatch(QuickInfoModel expectedModel, QuickInfoModel actualModel) { Assert.NotNull(actualModel); Assert.Equal(expectedModel.SemanticModel, actualModel.SemanticModel); Assert.Equal(expectedModel.Span, actualModel.Span); Assert.Equal(expectedModel.Glyph, actualModel.Glyph); Assert.Equal(expectedModel.Markup, actualModel.Markup); }
protected override QuickInfoModel CreateModel(SemanticModel semanticModel, int position, ExpressionSelectColumnSyntax node) { if (node.Alias == null || !node.Alias.Identifier.Span.ContainsOrTouches(position)) { return(null); } var symbol = semanticModel.GetDeclaredSymbol(node); return(symbol == null ? null : QuickInfoModel.ForSymbol(semanticModel, node.Alias.Identifier.Span, symbol)); }
protected override QuickInfoModel CreateModel(SemanticModel semanticModel, int position, DerivedTableReferenceSyntax node) { if (!node.Name.Span.ContainsOrTouches(position)) { return(null); } var symbol = semanticModel.GetDeclaredSymbol(node); return(symbol == null ? null : QuickInfoModel.ForSymbol(semanticModel, node.Name.Span, symbol)); }
protected override QuickInfoModel CreateModel(SemanticModel semanticModel, int position, MethodInvocationExpressionSyntax node) { if (!node.Name.Span.ContainsOrTouches(position)) { return(null); } var symbol = semanticModel.GetSymbol(node); return(symbol == null ? null : QuickInfoModel.ForSymbol(semanticModel, node.Name.Span, symbol)); }
protected override QuickInfoModel CreateModel(SemanticModel semanticModel, SourceLocation position, DefineDirectiveTriviaSyntax node) { if (!node.MacroName.SourceRange.ContainsOrTouches(position)) { return(null); } if (!node.MacroName.Span.IsInRootFile) { return(null); } return(QuickInfoModel.ForMacroDefinition(semanticModel, node.MacroName.Span, node)); }
protected override QuickInfoModel CreateModel(SemanticModel semanticModel, SourceLocation position, MatrixTypeSyntax node) { if (!node.SourceRange.ContainsOrTouches(position)) return null; if (!node.TypeToken.Span.IsInRootFile) return null; var symbol = semanticModel.GetSymbol(node); if (symbol == null) return null; return QuickInfoModel.ForSymbol(semanticModel, node.TypeToken.Span, symbol); }
protected override QuickInfoModel CreateModel(SemanticModel semanticModel, int position, WildcardSelectColumnSyntax node) { var tableName = node.TableName; if (tableName == null || !tableName.Span.ContainsOrTouches(position)) { return(null); } var tableInstanceSymbol = semanticModel.GetTableInstance(node); return(tableInstanceSymbol == null ? null : QuickInfoModel.ForSymbol(semanticModel, tableName.Span, tableInstanceSymbol)); }
private FrameworkElement GetContent(QuickInfoModel model) { if (model.Markup.Tokens.Length == 0) { return(null); } var glyph = GetGlyph(model.Glyph); var textBlock = GetTextBlock(model.Markup); var stackPanel = new StackPanel(); stackPanel.Orientation = Orientation.Horizontal; stackPanel.Children.Add(glyph); stackPanel.Children.Add(textBlock); return(stackPanel); }
protected override QuickInfoModel CreateModel(SemanticModel semanticModel, SourceLocation position, SyntaxToken node) { if (node.MacroReference == null) { return(null); } var nameToken = node.MacroReference.NameToken; if (!nameToken.SourceRange.ContainsOrTouches(position)) { return(null); } if (!nameToken.Span.IsInRootFile) { return(null); } return(QuickInfoModel.ForMacroReference(semanticModel, nameToken.Span, node.MacroReference)); }
protected override QuickInfoModel CreateModel(SemanticModel semanticModel, SourceLocation position, NumericConstructorInvocationExpressionSyntax node) { if (!node.Type.SourceRange.ContainsOrTouches(position)) { return(null); } if (!node.Type.GetTextSpanSafe().IsInRootFile) { return(null); } var symbol = semanticModel.GetSymbol(node); if (symbol == null) { return(null); } return(QuickInfoModel.ForSymbol(semanticModel, node.Type.GetTextSpanRoot(), symbol)); }
protected override QuickInfoModel CreateModel(SemanticModel semanticModel, SourceLocation position, LiteralExpressionSyntax node) { if (!node.Token.SourceRange.ContainsOrTouches(position)) { return(null); } if (!node.Token.Span.IsInRootFile) { return(null); } var symbol = semanticModel.GetExpressionType(node); if (symbol == null) { return(null); } return(QuickInfoModel.ForSymbol(semanticModel, node.Token.Span, symbol)); }
protected override QuickInfoModel CreateModel(SemanticModel semanticModel, SourceLocation position, IdentifierNameSyntax node) { if (!node.Name.SourceRange.ContainsOrTouches(position)) { return(null); } if (!node.Name.Span.IsInRootFile) { return(null); } var symbol = semanticModel.GetSymbol(node); if (symbol == null) { return(null); } return(QuickInfoModel.ForSymbol(semanticModel, node.Name.Span, symbol)); }
protected override QuickInfoModel CreateModel(SemanticModel semanticModel, SourceLocation position, FunctionInvocationExpressionSyntax node) { var actualName = node.Name.GetUnqualifiedName().Name; if (!actualName.SourceRange.ContainsOrTouches(position)) { return(null); } if (!actualName.Span.IsInRootFile) { return(null); } var symbol = semanticModel.GetSymbol(node); if (symbol == null) { return(null); } return(QuickInfoModel.ForSymbol(semanticModel, actualName.Span, symbol)); }
protected override QuickInfoModel CreateModel(SemanticModel semanticModel, int position, NamedTableReferenceSyntax node) { var symbol = semanticModel.GetDeclaredSymbol(node); if (symbol == null) { return(null); } if (node.TableName.Span.ContainsOrTouches(position)) { var span = node.TableName.Span; return(QuickInfoModel.ForSymbol(semanticModel, span, symbol.Table)); } if (node.Alias != null && node.Alias.Identifier.Span.ContainsOrTouches(position)) { var span = node.Alias.Identifier.Span; return(QuickInfoModel.ForSymbol(semanticModel, span, symbol)); } return(null); }
private void GetModels(string query, Func <DataContext, DataContext> dataContextModifer, out SemanticModel semanticModel, out QuickInfoModel startModel, out QuickInfoModel middleModel, out QuickInfoModel endModel) { TextSpan span; var compilation = CompilationFactory.CreateQuery(query, out span); if (dataContextModifer != null) { compilation = compilation.WithDataContext(dataContextModifer(compilation.DataContext)); } semanticModel = compilation.GetSemanticModel(); var start = span.Start; var middle = span.Start + span.Length / 2; var end = span.End; var provider = CreateProvider(); var providers = new[] { provider }; startModel = semanticModel.GetQuickInfoModel(start, providers); middleModel = semanticModel.GetQuickInfoModel(middle, providers); endModel = semanticModel.GetQuickInfoModel(end, providers); }