/// <summary> /// Compiles a <see cref="UvssNavigationExpression"/> from the specified syntax node. /// </summary> private static UvssNavigationExpression CompileNavigationExpression(UvssNavigationExpressionSyntax node) { var navigationProperty = GetPropertyName(node.PropertyName); var navigationPropertyType = node.TypeNameIdentifier.Text; var navigationPropertyIndex = (default(Int32?)); if (node.Indexer != null) { navigationPropertyIndex = node.Indexer.GetValue(); } return(new UvssNavigationExpression(navigationProperty, navigationPropertyType, navigationPropertyIndex)); }
/// <inheritdoc/> public override SyntaxNode VisitNavigationExpression(UvssNavigationExpressionSyntax node) { var unchanged = true; var newPipeToken = (SyntaxToken)Visit(node.PipeToken); if (newPipeToken != node.PipeToken) { unchanged = false; } var newPropertyName = (UvssPropertyNameSyntax)Visit(node.PropertyName); if (newPropertyName != node.PropertyName) { unchanged = false; } var newIndexer = (UvssNavigationExpressionIndexerSyntax)Visit(node.Indexer); if (newIndexer != node.Indexer) { unchanged = false; } var newAsKeyword = (SyntaxToken)Visit(node.AsKeyword); if (newAsKeyword != node.AsKeyword) { unchanged = false; } var newTypeNameIdentifier = (UvssIdentifierBaseSyntax)Visit(node.TypeNameIdentifier); if (newTypeNameIdentifier != node.TypeNameIdentifier) { unchanged = false; } return(unchanged ? node : new UvssNavigationExpressionSyntax( newPipeToken, newPropertyName, newIndexer, newAsKeyword, newTypeNameIdentifier)); }
/// <summary> /// Visits the specified navigation expression node. /// </summary> /// <param name="node">The node to visit.</param> /// <returns>A node which should replace the visited node, or a reference to the visited node /// itself if no changes were made.</returns> public virtual SyntaxNode VisitNavigationExpression(UvssNavigationExpressionSyntax node) { return(VisitSyntaxNode(node)); }
/// <summary> /// Visits a navigation expression node. /// </summary> /// <param name="navigationExpression">The navigation expression node to visit.</param> private void VisitNavigationExpression(UvssNavigationExpressionSyntax navigationExpression) { Style(navigationExpression.TypeNameIdentifier, typeUvssTypeName); }